blob: e41971a77b0164a2c990bb021b7229c86f92444f [file] [log] [blame]
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
/**
* Constants shared by multiple CSS Box Alignment properties
*
* These constants match Gecko's `NS_STYLE_ALIGN_*` constants.
*/
typedef struct {
uint8_t bits;
} StyleAlignFlags;
/**
* 'auto'
*/
#define StyleAlignFlags_AUTO (StyleAlignFlags){ .bits = (uint8_t)0 }
/**
* 'normal'
*/
#define StyleAlignFlags_NORMAL (StyleAlignFlags){ .bits = (uint8_t)1 }
/**
* 'start'
*/
#define StyleAlignFlags_START (StyleAlignFlags){ .bits = (uint8_t)(1 << 1) }
/**
* 'end'
*/
#define StyleAlignFlags_END (StyleAlignFlags){ .bits = (uint8_t)(1 << 2) }
#define StyleAlignFlags_ALIAS (StyleAlignFlags){ .bits = (uint8_t)(StyleAlignFlags_END).bits }
/**
* 'flex-start'
*/
#define StyleAlignFlags_FLEX_START (StyleAlignFlags){ .bits = (uint8_t)(1 << 3) }
#define StyleAlignFlags_MIXED (StyleAlignFlags){ .bits = (uint8_t)(((1 << 4) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
#define StyleAlignFlags_MIXED_SELF (StyleAlignFlags){ .bits = (uint8_t)(((1 << 5) | (StyleAlignFlags_FLEX_START).bits) | (StyleAlignFlags_END).bits) }
/**
* An arbitrary identifier for a native (OS compositor) surface
*/
typedef struct {
uint64_t _0;
} StyleNativeSurfaceId;
/**
* A special id for the native surface that is used for debug / profiler overlays.
*/
#define StyleNativeSurfaceId_DEBUG_OVERLAY (StyleNativeSurfaceId){ ._0 = UINT64_MAX }
typedef struct {
StyleNativeSurfaceId surface_id;
int32_t x;
int32_t y;
} StyleNativeTileId;
/**
* A special id for the native surface that is used for debug / profiler overlays.
*/
#define StyleNativeTileId_DEBUG_OVERLAY (StyleNativeTileId){ .surface_id = StyleNativeSurfaceId_DEBUG_OVERLAY, .x = 0, .y = 0 }
void root(StyleAlignFlags flags, StyleNativeTileId tile);