Add text shadow, fix font issues

This commit is contained in:
2023-12-22 08:28:15 +01:00
parent dbb5ac5382
commit a0291d0523
2 changed files with 32 additions and 18 deletions

View File

@@ -133,7 +133,7 @@ static void calculateAxisSizePreorder(const BzUIAxis axis, BzUINode *node) {
break; break;
case BZ_UI_SIZE_FIT: case BZ_UI_SIZE_FIT:
BZ_ASSERT(node->string); BZ_ASSERT(node->string);
Vector2 size = MeasureTextEx(GetFontDefault(), node->string, node->style.fontSize, 2); Vector2 size = MeasureTextEx(node->style.font, node->string, node->style.fontSize, node->style.fontSpacing);
compSize = (axis == BZ_UI_AXIS_X) ? size.x : size.y; compSize = (axis == BZ_UI_AXIS_X) ? size.x : size.y;
break; break;
case BZ_UI_SIZE_PARENT_PERCENT: case BZ_UI_SIZE_PARENT_PERCENT:
@@ -357,11 +357,20 @@ static void renderNode(BzUI *ui, BzUINode *node) {
if (inter->down) color = style->borderActiveColor; if (inter->down) color = style->borderActiveColor;
DrawRectangleRoundedLines(rect, style->roundness, 0, style->borderThickness, color); DrawRectangleRoundedLines(rect, style->roundness, 0, style->borderThickness, color);
} }
if (node->flags & BZ_UI_DRAW_TEXT_SHADOW) {
Color color = style->textShadowColor;
if (inter->hovering) color = style->textShadowHoverColor;
if (inter->down) color = style->textShadowActiveColor;
DrawTextEx(style->font, node->string, (Vector2){
drawRect.x + style->shadowOffset[BZ_UI_AXIS_X],
drawRect.y + style->shadowOffset[BZ_UI_AXIS_Y]
}, style->fontSize, style->fontSpacing, color);
}
if (node->flags & BZ_UI_DRAW_TEXT) { if (node->flags & BZ_UI_DRAW_TEXT) {
Color color = style->textColor; Color color = style->textColor;
if (inter->hovering) color = style->textHoverColor; if (inter->hovering) color = style->textHoverColor;
if (inter->down) color = style->textActiveColor; if (inter->down) color = style->textActiveColor;
DrawTextEx(GetFontDefault(), node->string, (Vector2){drawRect.x, drawRect.y}, style->fontSize, 1, color); DrawTextEx(style->font, node->string, (Vector2){drawRect.x, drawRect.y}, style->fontSize, style->fontSpacing, color);
} }
node->changed = false; node->changed = false;

View File

@@ -54,15 +54,26 @@ typedef struct BzUILayout {
BzUIFlags flags; BzUIFlags flags;
} BzUILayout; } BzUILayout;
typedef enum BzUIAxis {
BZ_UI_AXIS_X,
BZ_UI_AXIS_Y,
BZ_UI_AXIS_COUNT,
} BzUIAxis;
typedef struct BzUIStyle { typedef struct BzUIStyle {
Font font; Font font;
f32 fontSize; f32 fontSize;
f32 fontSpacing; f32 fontSpacing;
f32 borderThickness; f32 borderThickness;
f32 roundness; f32 roundness;
f32 shadowOffset[BZ_UI_AXIS_COUNT];
Color textColor; Color textColor;
Color textHoverColor; Color textHoverColor;
Color textActiveColor; Color textActiveColor;
Color textShadowColor;
Color textShadowHoverColor;
Color textShadowActiveColor;
Color bgColor; Color bgColor;
Color bgHoverColor; Color bgHoverColor;
Color bgActiveColor; Color bgActiveColor;
@@ -72,26 +83,20 @@ typedef struct BzUIStyle {
} BzUIStyle; } BzUIStyle;
typedef enum BzUIAxis {
BZ_UI_AXIS_X,
BZ_UI_AXIS_Y,
BZ_UI_AXIS_COUNT,
} BzUIAxis;
enum { enum {
BZ_UI_NONE = 0, BZ_UI_NONE = 0,
BZ_UI_CLICKABLE = (1 << 0), BZ_UI_CLICKABLE = (1 << 0),
BZ_UI_DRAW_TEXT = (1 << 1), BZ_UI_DRAW_TEXT = (1 << 1),
BZ_UI_DRAW_BORDER = (1 << 2), BZ_UI_DRAW_TEXT_SHADOW = (1 << 2),
BZ_UI_DRAW_BACKGROUND = (1 << 3), BZ_UI_DRAW_BORDER = (1 << 3),
//BZ_UI_DRAW_SPRITE = (1 << 4), BZ_UI_DRAW_BACKGROUND = (1 << 4),
BZ_UI_ALIGN_HORIZ_START = (1 << 5), //BZ_UI_DRAW_SPRITE = (1 << 5),
BZ_UI_ALIGN_HORIZ_CENTER = (1 << 6), BZ_UI_ALIGN_HORIZ_START = (1 << 6),
BZ_UI_ALIGN_HORIZ_END = (1 << 7), BZ_UI_ALIGN_HORIZ_CENTER = (1 << 7),
BZ_UI_ALIGN_VERT_START = (1 << 8), BZ_UI_ALIGN_HORIZ_END = (1 << 8),
BZ_UI_ALIGN_VERT_CENTER = (1 << 9), BZ_UI_ALIGN_VERT_START = (1 << 9),
BZ_UI_ALIGN_VERT_END = (1 << 10), BZ_UI_ALIGN_VERT_CENTER = (1 << 10),
BZ_UI_ALIGN_VERT_END = (1 << 11),
BZ_UI_ALIGN_CENTER = BZ_UI_ALIGN_HORIZ_CENTER | BZ_UI_ALIGN_VERT_CENTER, BZ_UI_ALIGN_CENTER = BZ_UI_ALIGN_HORIZ_CENTER | BZ_UI_ALIGN_VERT_CENTER,
}; };