diff --git a/src/pp/pp.c b/src/pp/pp.c index 3c46702f..11458ec6 100644 --- a/src/pp/pp.c +++ b/src/pp/pp.c @@ -795,10 +795,23 @@ void PP_UpdateUser(void) UI_Box *pp_root_box = 0; { - UI_SetNext(Width, UI_PIX(g->ui_size.x, 1)); - UI_SetNext(Height, UI_PIX(g->ui_size.y, 1)); - UI_SetNext(Padding, UI_PADALL(UI_FILL(1, 0))); - pp_root_box = UI_BuildBox(Lit("pp root")); + UI_PushCP(UI_BuildRow(Zstr)); + { + UI_BuildSpacer(UI_FILL(1, 0)); + { + UI_SetNext(Width, UI_PIX(g->ui_size.x, 1)); + UI_PushCP(UI_BuildColumn(Zstr)); + { + UI_BuildSpacer(UI_FILL(1, 0)); + UI_SetNext(Height, UI_PIX(g->ui_size.y, 1)); + pp_root_box = UI_BuildBox(Lit("pp root")); + UI_BuildSpacer(UI_FILL(1, 0)); + } + UI_PopCP(); + } + UI_BuildSpacer(UI_FILL(1, 0)); + } + UI_PopCP(); } PP_PushGameUiStyle(); @@ -1974,47 +1987,38 @@ void PP_UpdateUser(void) UI_Push(LayoutAxis, Axis_Y); UI_Push(FloatingPos, g->lister_pos); UI_SetNext(Flags, UI_BoxFlag_Floating); - UI_Box *lister_box = UI_BuildBox(Lit("lister")); - UI_PushCP(lister_box); + UI_Box *lister_box = UI_PushCP(UI_BuildBox(Lit("lister"))); { /* Title bar */ - UI_Push(BackgroundColor, 0); - UI_Push(BorderColor, 0); - UI_Push(Rounding, UI_RPIX(0)); - UI_Push(LayoutAxis, Axis_X); - UI_Push(Width, UI_FILL(1, 0)); - UI_Push(Height, UI_FNT(2, 0)); - UI_Box *title_bar = UI_BuildBox(Zstr); - - UI_Push(BorderColor, window_border_color); - { - UI_BuildDivider(UI_PIX(1, 0)); - } - UI_Pop(BorderColor); - - UI_PushCP(title_bar); + UI_PushCP(0); { + UI_Push(BackgroundColor, 0); + UI_Push(BorderColor, 0); + UI_Push(Rounding, UI_RPIX(0)); + UI_Push(LayoutAxis, Axis_X); UI_Push(Width, UI_FILL(1, 0)); - UI_Push(Padding, 0); - UI_Box *left_box = UI_BuildBox(Zstr); - UI_Box *center_box = UI_BuildBox(Zstr); - UI_Box *right_box = UI_BuildBox(Zstr); - - /* Centered title bar */ - UI_PushCP(center_box); + UI_Push(Height, UI_FNT(2, 0)); + UI_PushCP(UI_BuildBox(Zstr)); { - /* Title label */ - { - UI_SetNext(Width, UI_FIT(1)); - UI_SetNext(Text, Lit("Titleeee")); - UI_SetNext(Flags, UI_BoxFlag_DrawText); - UI_SetNext(Padding, UI_PADALL(UI_FILL(1, 0))); - UI_Box *title_box = UI_BuildBox(Zstr); - } + UI_Push(Width, UI_FILL(1, 0)); + + /* Left title box */ + UI_BuildRow(Zstr); + + /* Title box */ + UI_SetNext(Width, UI_FIT(1)); + UI_SetNext(Text, Lit("Titleeee")); + UI_SetNext(Flags, UI_BoxFlag_DrawText); + UI_BuildBox(Zstr); + + /* Right title box */ + UI_BuildBox(Zstr); } UI_PopCP(); } UI_PopCP(); + + UI_BuildDivider(UI_PIX(1, 0)); } UI_PopCP(); g->lister_key = lister_box->key; @@ -2035,12 +2039,10 @@ void PP_UpdateUser(void) UI_SetNext(Width, UI_FIT(0)); UI_SetNext(Height, UI_FIT(1)); UI_SetNext(Tint, 0); - UI_Box *dbg_box = UI_BuildBox(Lit("dbg")); - UI_PushCP(dbg_box); + UI_PushCP(UI_BuildBox(Lit("dbg"))); { UI_Push(BackgroundColor, 0); UI_Push(BorderColor, 0); - // UI_Push(Padding, UI_PIX(5, 0)); UI_BuildLabelF("Blended world entities: %F/%F", FmtUint(g->ss_blended->num_ents_allocated), FmtUint(g->ss_blended->num_ents_reserved)); UI_BuildLabelF("Blended world tick: %F", FmtUint(g->ss_blended->tick)); diff --git a/src/pp/pp_widgets.c b/src/pp/pp_widgets.c index 14ed9389..ddef0a26 100644 --- a/src/pp/pp_widgets.c +++ b/src/pp/pp_widgets.c @@ -41,7 +41,6 @@ UI_Box *PP_BuildDebugConsole(b32 minimized) i64 now_ns = TimeNs(); UI_Box *console_box = 0; { - UI_SetNext(LayoutAxis, Axis_Y); UI_SetNext(Border, 0); if (minimized) { @@ -55,7 +54,7 @@ UI_Box *PP_BuildDebugConsole(b32 minimized) UI_SetNext(Width, UI_FILL(1, 0)); UI_SetNext(Height, UI_FIT(1)); } - console_box = UI_BuildBox(Lit("Console box")); + console_box = UI_BuildColumn(Lit("Console box")); UI_PushCP(console_box); { /* Gather display logs */ @@ -112,16 +111,15 @@ UI_Box *PP_BuildDebugConsole(b32 minimized) { u32 color = colors[log.level][log.level_id % 2]; UI_SetNext(BackgroundColor, color); - UI_SetNext(LayoutAxis, Axis_X); UI_SetNext(Width, UI_FILL(1, 0)); UI_SetNext(Height, UI_FIT(1)); UI_SetNext(BorderColor, Rgba32F(0.25, 0.25, 0.25, 1)); UI_SetNext(Rounding, UI_RPIX(0)); UI_SetNext(Border, 1); - UI_Box *log_box = UI_BuildBox(Zstr); - UI_PushCP(log_box); + UI_PushCP(UI_BuildRow(Zstr)); { - UI_SetNext(Padding, UI_PADALL(UI_FNT(0.25, 1))); + // UI_SetNext(Height, UI_PIX(100, 0)); + // UI_BuildSpacer(UI_PIX(1, 0)); UI_SetNext(BackgroundColor, 0); UI_SetNext(Border, 0); UI_SetNext(Text, text); @@ -129,7 +127,7 @@ UI_Box *PP_BuildDebugConsole(b32 minimized) UI_SetNext(Width, UI_FILL(1, 0)); UI_SetNext(Height, UI_FIT(1)); UI_SetNext(Flags, UI_BoxFlag_DrawText); - UI_Box *log_textbox = UI_BuildBox(Zstr); + UI_BuildBox(Zstr); } UI_PopCP(); } diff --git a/src/ui/ui_common.c b/src/ui/ui_common.c index fc576379..1add6a3e 100644 --- a/src/ui/ui_common.c +++ b/src/ui/ui_common.c @@ -36,7 +36,7 @@ UI_Box *UI_BuildSpacer(UI_Size size) UI_Size old_width = UI_UseTop(Width); UI_Size old_height = UI_UseTop(Height); - UI_PushStack(); + UI_PushEmptyStack(); { UI_Push(Tint, 0); UI_Push(Parent, old_parent); @@ -67,7 +67,7 @@ UI_Box *UI_BuildDivider(UI_Size size) f32 old_border = UI_UseTop(Border); u32 old_border_color = UI_UseTop(BorderColor); - UI_PushStack(); + UI_PushEmptyStack(); { UI_Push(Parent, old_parent); UI_Push(Tint, old_tint); @@ -87,3 +87,20 @@ UI_Box *UI_BuildDivider(UI_Size size) UI_PopStack(); return box; } + +//////////////////////////////////////////////////////////// +//~ Layout helpers + +UI_Box *UI_BuildColumn(String seed) +{ + UI_SetNext(LayoutAxis, Axis_Y); + UI_Box *box = UI_BuildBox(seed); + return box; +} + +UI_Box *UI_BuildRow(String seed) +{ + UI_SetNext(LayoutAxis, Axis_X); + UI_Box *box = UI_BuildBox(seed); + return box; +} diff --git a/src/ui/ui_common.h b/src/ui/ui_common.h index 7e909d93..c0f3155c 100644 --- a/src/ui/ui_common.h +++ b/src/ui/ui_common.h @@ -10,3 +10,9 @@ UI_Box *UI_BuildLabelF_(char *fmt_cstr, ...); UI_Box *UI_BuildSpacer(UI_Size size); UI_Box *UI_BuildDivider(UI_Size size); + +//////////////////////////////////////////////////////////// +//~ Layout helpers + +UI_Box *UI_BuildColumn(String seed); +UI_Box *UI_BuildRow(String seed); diff --git a/src/ui/ui_core.c b/src/ui/ui_core.c index bbb5b5f4..370467d2 100644 --- a/src/ui/ui_core.c +++ b/src/ui/ui_core.c @@ -62,7 +62,7 @@ UI_Box *UI_FrontBoxFromKey(UI_Key key) //////////////////////////////////////////////////////////// //~ Checkpoint helpers -void UI_PushCP(UI_Box *parent) +UI_Box *UI_PushCP(UI_Box *parent) { UI_SharedState *g = &UI_shared_state; UI_Stack *stack = g->top_stack; @@ -83,6 +83,7 @@ void UI_PushCP(UI_Box *parent) { UI_Push(Parent, parent); } + return parent; } void UI_PopCP(void) @@ -112,7 +113,7 @@ void UI_PopCP(void) //////////////////////////////////////////////////////////// //~ Style stack helpers -void UI_PushStack(void) +void UI_PushEmptyStack(void) { UI_SharedState *g = &UI_shared_state; UI_Stack *stack = PushStruct(g->build_arena, UI_Stack); @@ -210,15 +211,6 @@ void UI_PushStyle(UI_Style desc) { default: break; - case UI_StyleKind_Padding: - { - UI_Pad pad = desc.Padding; - UI_PushCopy(TopPadding, desc, pad.top); - UI_PushCopy(BottomPadding, desc, pad.bottom); - UI_PushCopy(LeftPadding, desc, pad.left); - UI_PushCopy(RightPadding, desc, pad.right); - } break; - case UI_StyleKind_AxisSize: { if (desc.AxisSize.axis == Axis_X) @@ -306,18 +298,7 @@ UI_Style UI_FetchStyle(UI_StyleKind kind, b32 use) result.kind = kind; if (kind >= UI_StyleKind_BeginVirtualStyles_) { - switch(kind) - { - default: break; - - case UI_StyleKind_Padding: - { - result.Padding.top = UI_FetchTop(TopPadding, use); - result.Padding.bottom = UI_FetchTop(BottomPadding, use); - result.Padding.left = UI_FetchTop(LeftPadding, use); - result.Padding.right = UI_FetchTop(RightPadding, use); - } break; - } + /* Do nothing */ } else { @@ -340,97 +321,7 @@ UI_Box *UI_BuildBox(String seed) { UI_SharedState *g = &UI_shared_state; - UI_Pad padding = UI_UseTop(Padding); - UI_BoxFlag flags = UI_UseTop(Flags); - UI_Size width = UI_UseTop(Width); - UI_Size height = UI_UseTop(Height); - - ////////////////////////////// - //- Build initial padding - UI_Box *parent = UI_UseTop(Parent); - Axis axis = parent->layout_axis; - UI_Size axis_size = width; - UI_Size non_axis_size = height; - UI_Size axis_start_padding = padding.left; - UI_Size axis_end_padding = padding.right; - UI_Size non_axis_start_padding = padding.top; - UI_Size non_axis_end_padding = padding.bottom; - if (axis == Axis_Y) - { - axis_size = height; - non_axis_size = width; - axis_start_padding = padding.top; - axis_end_padding = padding.bottom; - non_axis_start_padding = padding.left; - non_axis_end_padding = padding.right; - } - b32 has_axis_start_padding = !(axis_start_padding.kind == UI_SizeKind_Pixel && axis_start_padding.v == 0); - b32 has_axis_end_padding = !(axis_end_padding.kind == UI_SizeKind_Pixel && axis_end_padding.v == 0); - b32 has_non_axis_start_padding = !(non_axis_start_padding.kind == UI_SizeKind_Pixel && non_axis_start_padding.v == 0); - b32 has_non_axis_end_padding = !(non_axis_end_padding.kind == UI_SizeKind_Pixel && non_axis_end_padding.v == 0); - if (has_axis_start_padding || has_axis_end_padding || has_non_axis_start_padding || has_non_axis_end_padding) - { - UI_PushStack(); - UI_PushCP(parent); - { - if (has_non_axis_start_padding || has_non_axis_end_padding) - { - if (has_axis_start_padding) - { - UI_SetNext(AxisSize, UI_AXSIZE(axis, axis_start_padding)); - UI_SetNext(AxisSize, UI_AXSIZE(!axis, non_axis_size)); - UI_BuildBox(Zstr); - has_axis_start_padding = 0; - } - { - UI_Pad subpad = ZI; - if (has_axis_end_padding) - { - if (axis == Axis_X) - { - subpad.right = axis_end_padding; - } - else - { - subpad.bottom = axis_end_padding; - } - } - UI_SetNext(Padding, subpad); - UI_SetNext(AxisSize, UI_AXSIZE(axis, axis_size)); - UI_SetNext(AxisSize, UI_AXSIZE(!axis, UI_FIT(0))); - UI_SetNext(LayoutAxis, !axis); - parent = UI_BuildBox(Zstr); - } - axis = !axis; - axis_start_padding = non_axis_start_padding; - axis_end_padding = non_axis_end_padding; - has_axis_start_padding = has_non_axis_start_padding; - has_axis_end_padding = has_non_axis_end_padding; - { - UI_Size tmp = axis_size; - axis_size = non_axis_size; - non_axis_size = tmp; - } - } - } - UI_PopStack(); - } - - ////////////////////////////// - //- Build starting padding - - if (has_axis_start_padding) - { - UI_PushStack(); - UI_PushCP(parent); - { - UI_SetNext(AxisSize, UI_AXSIZE(axis, axis_start_padding)); - UI_SetNext(AxisSize, UI_AXSIZE(!axis, non_axis_size)); - UI_BuildBox(Zstr); - } - UI_PopStack(); - } ////////////////////////////// //- Create box @@ -482,9 +373,9 @@ UI_Box *UI_BuildBox(String seed) } /* Pull from style stack */ - box->flags = flags; - box->pref_size[Axis_X] = width; - box->pref_size[Axis_Y] = height; + box->flags = UI_UseTop(Flags); + box->pref_size[Axis_X] = UI_UseTop(Width); + box->pref_size[Axis_Y] = UI_UseTop(Height); box->layout_axis = UI_UseTop(LayoutAxis); box->background_color = UI_UseTop(BackgroundColor); box->border_color = UI_UseTop(BorderColor); @@ -509,21 +400,6 @@ UI_Box *UI_BuildBox(String seed) } } - ////////////////////////////// - //- Build ending padding - - if (has_axis_end_padding) - { - UI_PushStack(); - UI_PushCP(parent); - { - UI_SetNext(AxisSize, UI_AXSIZE(axis, axis_end_padding)); - UI_SetNext(AxisSize, UI_AXSIZE(!axis, non_axis_size)); - UI_BuildBox(Zstr); - } - UI_PopStack(); - } - return box; } @@ -734,7 +610,7 @@ UI_Frame UI_BeginFrame(UI_FrameFlag frame_flags) ////////////////////////////// //- Init style stack - UI_PushStack(); + UI_PushEmptyStack(); return frame; } diff --git a/src/ui/ui_core.h b/src/ui/ui_core.h index a644df74..9f3d433b 100644 --- a/src/ui/ui_core.h +++ b/src/ui/ui_core.h @@ -51,17 +51,6 @@ Enum(UI_Alignment) UI_Alignment_Right, }; -//////////////////////////////////////////////////////////// -//~ Padding types - -Struct(UI_Pad) -{ - UI_Size top; - UI_Size bottom; - UI_Size left; - UI_Size right; -}; - //////////////////////////////////////////////////////////// //~ Checkpoint types @@ -105,15 +94,10 @@ Enum(UI_BoxFlag) x(FontSize, u32) \ x(Text, String) \ x(TextAlignment, UI_Alignment) \ - x(LeftPadding, UI_Size) \ - x(RightPadding, UI_Size) \ - x(TopPadding, UI_Size) \ - x(BottomPadding, UI_Size) \ /* ----------------------------------- */ \ /* --------- Virtual styles --------- */ \ /* ----------------------------------- */ \ x(BeginVirtualStyles_, i8) \ - x(Padding, UI_Pad) \ x(AxisSize, UI_AxisSize) \ /* ------------------------------------------- */ @@ -333,13 +317,13 @@ UI_Box *UI_FrontBoxFromKey(UI_Key key); //////////////////////////////////////////////////////////// //~ Checkpoint helpers -void UI_PushCP(UI_Box *parent); +UI_Box *UI_PushCP(UI_Box *parent); void UI_PopCP(void); //////////////////////////////////////////////////////////// //~ Style stack helpers -void UI_PushStack(void); +void UI_PushEmptyStack(void); void UI_PopStack(void); void UI_PushStyle(UI_Style desc); @@ -381,12 +365,6 @@ UI_Style UI_FetchStyle(UI_StyleKind kind, b32 use); #define UI_RPIX(_v) UI_ROUND(UI_RoundKind_Pixel, (_v)) #define UI_RFILL(_v) UI_ROUND(UI_RoundKind_Fill, (_v)) -//////////////////////////////////////////////////////////// -//~ Padding helpers - -#define UI_PAD(...) ((UI_Pad) { __VA_ARGS__ }) -#define UI_PADALL(size) ((UI_Pad) { .top = size, .bottom = size, .left = size, .right = size }) - //////////////////////////////////////////////////////////// //~ Box