//////////////////////////////////////////////////////////// //~ Label helpers UI_Key UI_BuildLabel(String text) { UI_Key parent = UI_UseTop(Parent); GC_FontKey font = UI_UseTop(Font); f32 font_size = UI_UseTop(FontSize); Vec4 tint = UI_UseTop(Tint); UI_Alignment alignment = UI_UseTop(ChildAlignment); UI_Key key = ZI; UI_PushCP(UI_NilKey); { UI_PushDefaults(); UI_Push(Parent, parent); UI_SetNext(Tint, tint); UI_SetNext(Font, font); UI_SetNext(FontSize, font_size); UI_SetNext(Width, UI_SHRINK(0, 1)); UI_SetNext(Height, UI_SHRINK(0, 1)); UI_SetNext(Text, text); UI_SetNext(ChildAlignment, alignment); UI_SetNext(Flags, UI_BoxFlag_DrawText); key = UI_BuildBox(); } UI_PopCP(UI_TopCP()); return key; } UI_Key UI_BuildLabelF_(char *fmt_cstr, ...) { TempArena scratch = BeginScratchNoConflict(); String str = ZI; { va_list va; va_start(va, fmt_cstr); str = FormatStringV(scratch.arena, StringFromCstrNoLimit(fmt_cstr), va); va_end(va); } UI_Key key = UI_BuildLabel(str); EndScratch(scratch); return key; } //////////////////////////////////////////////////////////// //~ Spacing helpers UI_Key UI_BuildSpacer(UI_Size size, Axis axis) { UI_Key parent = UI_UseTop(Parent); UI_Key key = ZI; UI_PushCP(UI_NilKey); { UI_PushDefaults(); UI_Push(Parent, parent); UI_Push(Tint, 0); UI_Push(AxisSize, UI_GROW(1, 0), .axis = !axis); UI_Push(AxisSize, size, .axis = axis); key = UI_BuildBox(); } UI_PopCP(UI_TopCP()); return key; } UI_Key UI_BuildDivider(UI_Size size, Vec4 color, Axis axis) { UI_Key key = ZI; UI_Key parent = UI_UseTop(Parent); Vec4 tint = UI_UseTop(Tint); UI_PushCP(UI_NilKey); { UI_PushDefaults(); UI_Push(Parent, parent); UI_Push(Tint, tint); UI_Push(BackgroundColor, color); UI_Push(AxisSize, UI_GROW(1, 0), .axis = !axis); UI_Push(AxisSize, size, .axis = axis); key = UI_BuildBox(); } UI_PopCP(UI_TopCP()); return key; } //////////////////////////////////////////////////////////// //~ Layout helpers UI_Key UI_BuildColumnEx(UI_Key key) { UI_SetNext(ChildLayoutAxis, Axis_Y); return UI_BuildBoxEx(key); } UI_Key UI_BuildRowEx(UI_Key key) { UI_SetNext(ChildLayoutAxis, Axis_X); return UI_BuildBoxEx(key); }