Separate styles from UI nodes
This commit is contained in:
@@ -12,7 +12,8 @@ typedef enum BzUISizeKind {
|
||||
BZ_UI_SIZE_NULL,
|
||||
BZ_UI_SIZE_PIXELS,
|
||||
BZ_UI_SIZE_FIT,
|
||||
BZ_UI_SIZE_PARENT_PERCENT,
|
||||
BZ_UI_SIZE_REL_PARENT,
|
||||
BZ_UI_SIZE_AS_PARENT,
|
||||
BZ_UI_SIZE_CHILD_SUM,
|
||||
BZ_UI_SIZE_CHILD_MAX,
|
||||
} BzUISizeKind;
|
||||
@@ -86,28 +87,67 @@ typedef struct BzUIStyle {
|
||||
enum {
|
||||
BZ_UI_NONE = 0,
|
||||
BZ_UI_CLICKABLE = (1 << 0),
|
||||
BZ_UI_DRAW_TEXT = (1 << 1),
|
||||
BZ_UI_DRAW_TEXT_SHADOW = (1 << 2),
|
||||
BZ_UI_DRAW_BACKGROUND = (1 << 1),
|
||||
BZ_UI_DRAW_BOX_SHADOW = (1 << 2),
|
||||
BZ_UI_DRAW_BORDER = (1 << 3),
|
||||
BZ_UI_DRAW_BACKGROUND = (1 << 4),
|
||||
//BZ_UI_DRAW_SPRITE = (1 << 5),
|
||||
BZ_UI_ALIGN_HORIZ_START = (1 << 6),
|
||||
BZ_UI_ALIGN_HORIZ_CENTER = (1 << 7),
|
||||
BZ_UI_ALIGN_HORIZ_END = (1 << 8),
|
||||
BZ_UI_ALIGN_VERT_START = (1 << 9),
|
||||
BZ_UI_ALIGN_VERT_CENTER = (1 << 10),
|
||||
BZ_UI_ALIGN_VERT_END = (1 << 11),
|
||||
BZ_UI_DRAW_TEXT = (1 << 4),
|
||||
BZ_UI_DRAW_TEXT_SHADOW = (1 << 5),
|
||||
BZ_UI_DRAW_SPRITE = (1 << 6),
|
||||
BZ_UI_ALIGN_HORIZ_START = (1 << 7),
|
||||
BZ_UI_ALIGN_HORIZ_CENTER = (1 << 8),
|
||||
BZ_UI_ALIGN_HORIZ_END = (1 << 9),
|
||||
BZ_UI_ALIGN_VERT_START = (1 << 10),
|
||||
BZ_UI_ALIGN_VERT_CENTER = (1 << 11),
|
||||
BZ_UI_ALIGN_VERT_END = (1 << 12),
|
||||
|
||||
BZ_UI_ALIGN_CENTER = BZ_UI_ALIGN_HORIZ_CENTER | BZ_UI_ALIGN_VERT_CENTER,
|
||||
};
|
||||
|
||||
typedef struct BzUIBackgroundStyle {
|
||||
f32 thickness;
|
||||
f32 roundness;
|
||||
Color normal;
|
||||
Color hover;
|
||||
Color active;
|
||||
} BzUIBackgroundStyle;
|
||||
|
||||
typedef struct BzUIBoxShadowStyle {
|
||||
f32 offset[BZ_UI_AXIS_COUNT];
|
||||
BzUIBackgroundStyle bg;
|
||||
} BzUIBoxShadowStyle;
|
||||
|
||||
typedef struct BzUIBorderStyle {
|
||||
f32 thickness;
|
||||
f32 roundness;
|
||||
Color normal;
|
||||
Color hover;
|
||||
Color active;
|
||||
} BzUIBorderStyle;
|
||||
|
||||
typedef struct BzUITextStyle {
|
||||
const char *text;
|
||||
|
||||
Font font;
|
||||
f32 fontSize;
|
||||
f32 fontSpacing;
|
||||
Color normal;
|
||||
Color hover;
|
||||
Color active;
|
||||
} BzUITextStyle;
|
||||
|
||||
typedef struct BzUITextShadowStyle {
|
||||
// Depends on BzUITextStyle
|
||||
f32 offset[BZ_UI_AXIS_COUNT];
|
||||
Color normal;
|
||||
Color hover;
|
||||
Color active;
|
||||
} BzUITextShadowStyle;
|
||||
|
||||
typedef struct BzUINode BzUINode;
|
||||
|
||||
typedef struct BzUINodeDesc {
|
||||
BzUILayout layout;
|
||||
BzUIStyle style;
|
||||
BzUIFlags flags;
|
||||
const char *string;
|
||||
|
||||
BzUISize semanticSize[BZ_UI_AXIS_COUNT];
|
||||
f32 padding[BZ_UI_AXIS_COUNT * 2];
|
||||
@@ -142,10 +182,27 @@ BzUINode *bzUIPushDiv(BzUI *ui, BzUISize x, BzUISize y);
|
||||
BzUINode *bzUIPushParent(BzUI *ui, BzUINode *node);
|
||||
BzUINode *bzUIPopParent(BzUI *ui);
|
||||
|
||||
// Styles
|
||||
|
||||
BzUIBackgroundStyle bzUIGetBackgroundStyle(const BzUI *ui, BzUINode *node);
|
||||
BzUIBoxShadowStyle bzUIGetBoxShadowStyle(const BzUI *ui, BzUINode *node);
|
||||
BzUITextStyle bzUIGetTextStyle(const BzUI *ui, BzUINode *node);
|
||||
BzUITextShadowStyle bzUIGetTextShadowStyle(const BzUI *ui, BzUINode *node);
|
||||
BzUIBorderStyle bzUIGetBorderStyle(const BzUI *ui, BzUINode *node);
|
||||
|
||||
void bzUISetBackgroundStyle(BzUI *ui, BzUINode *node, BzUIBackgroundStyle style);
|
||||
void bzUISetBoxShadowStyle(BzUI *ui, BzUINode *node, BzUIBoxShadowStyle style);
|
||||
void bzUISetTextStyle(BzUI *ui, BzUINode *node, BzUITextStyle style);
|
||||
void bzUISetTextShadowStyle(BzUI *ui, BzUINode *node, BzUITextShadowStyle style);
|
||||
void bzUISetBorderStyle(BzUI *ui, BzUINode *node, BzUIBorderStyle style);
|
||||
|
||||
BzUILayout bzUIGetLayout(const BzUI *ui, BzUINode *node);
|
||||
void bzUISetLayout(BzUI *ui, BzUINode *node, BzUILayout layout);
|
||||
|
||||
void bzUISetParentLayout(BzUI *ui, BzUILayout layout);
|
||||
|
||||
BzUIInteraction bzUIGetInteraction(BzUI *ui, BzUINode *node);
|
||||
|
||||
bool bzUIButton(BzUI *ui, const char *string, BzUIStyle *style);
|
||||
bool bzUIButton(BzUI *ui, const char *string);
|
||||
|
||||
#endif //BREEZE_UI_CORE_H
|
||||
|
||||
Reference in New Issue
Block a user