ceil final box dimensions

This commit is contained in:
jacob 2025-11-05 20:49:34 -06:00
parent f8f6ea9729
commit 0ab934c4bb
8 changed files with 66 additions and 30 deletions

View File

@ -59,6 +59,22 @@ Inline u64 HashFnv64(u64 seed, String s)
return hash; return hash;
} }
#define HashF(fmt_cstr, ...) HashF_(StringFromCstrNoLimit(fmt_cstr), __VA_ARGS__, FmtEnd)
u64 HashF_(String fmt, ...)
{
TempArena scratch = BeginScratchNoConflict();
u64 result = 0;
va_list args;
va_start(args, fmt);
{
String str = FormatStringV(scratch.arena, fmt, args);
result = HashFnv64(Fnv64Basis, str);
}
va_end(args);
EndScratch(scratch);
return result;
}
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Mergesort utils //~ Mergesort utils

View File

@ -929,9 +929,9 @@ JobDef(Build, _, __)
PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4189")); /* local variable is initialized but not referenced */ PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4189")); /* local variable is initialized but not referenced */
PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4200")); /* nonstandard extension used: zero-sized array in struct/union */ PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4200")); /* nonstandard extension used: zero-sized array in struct/union */
PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4702")); /* unreachable code */ PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4702")); /* unreachable code */
PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4305")); /* 'initializing': truncation from 'double' to 'f32' */
// PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4127")); /* conditional expression is constant */ // PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4127")); /* conditional expression is constant */
// PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4305")); /* 'initializing': truncation from 'double' to 'f32' */
// PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4820")); /* bytes padding added after data member */ // PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4820")); /* bytes padding added after data member */
// PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4464")); /* relative include path contains '..' */ // PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4464")); /* relative include path contains '..' */
// PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4061")); /* enumerator is not explicitly handled by a case label */ // PushStringToList(arena, &cp.warnings_msvc, Lit("-wd4061")); /* enumerator is not explicitly handled by a case label */

View File

@ -785,12 +785,12 @@ void PP_UpdateUser(void)
UI_Box *pp_root_box = 0; UI_Box *pp_root_box = 0;
{ {
UI_PushCP(UI_BuildRow(Zstr)); UI_PushCP(UI_BuildRow(0));
{ {
UI_BuildSpacer(UI_FILL(1, 0)); UI_BuildSpacer(UI_FILL(1, 0));
{ {
UI_SetNext(Width, UI_PIX(g->ui_size.x, 1)); UI_SetNext(Width, UI_PIX(g->ui_size.x, 1));
UI_PushCP(UI_BuildColumn(Zstr)); UI_PushCP(UI_BuildColumn(0));
{ {
UI_BuildSpacer(UI_FILL(1, 0)); UI_BuildSpacer(UI_FILL(1, 0));
{ {
@ -801,7 +801,7 @@ void PP_UpdateUser(void)
} }
UI_SetNext(ChildLayoutAxis, Axis_Y); UI_SetNext(ChildLayoutAxis, Axis_Y);
UI_SetNext(Height, UI_PIX(g->ui_size.y, 1)); UI_SetNext(Height, UI_PIX(g->ui_size.y, 1));
pp_root_box = UI_BuildBox(Lit("pp root")); pp_root_box = UI_BuildBox(HashF("pp root"));
} }
UI_BuildSpacer(UI_FILL(1, 0)); UI_BuildSpacer(UI_FILL(1, 0));
} }
@ -1984,7 +1984,7 @@ void PP_UpdateUser(void)
UI_Push(ChildLayoutAxis, Axis_Y); UI_Push(ChildLayoutAxis, Axis_Y);
UI_Push(FloatingPos, g->lister_pos); UI_Push(FloatingPos, g->lister_pos);
UI_SetNext(Flags, UI_BoxFlag_Floating); UI_SetNext(Flags, UI_BoxFlag_Floating);
UI_Box *lister_box = UI_PushCP(UI_BuildBox(Lit("lister"))); g->lister_key = UI_PushCP(UI_BuildBox(HashF("lister")))->key;
{ {
/* Title bar */ /* Title bar */
UI_PushCP(0); UI_PushCP(0);
@ -1995,31 +1995,51 @@ void PP_UpdateUser(void)
UI_Push(ChildLayoutAxis, Axis_X); UI_Push(ChildLayoutAxis, Axis_X);
UI_Push(Width, UI_FILL(1, 0)); UI_Push(Width, UI_FILL(1, 0));
UI_Push(Height, UI_FNT(2, 0)); UI_Push(Height, UI_FNT(2, 0));
UI_PushCP(UI_BuildBox(Zstr)); UI_PushCP(UI_BuildBox(0));
{ {
UI_Push(Width, UI_FILL(1, 0)); UI_Push(Width, UI_FILL(1, 0));
// /* Left title box */ /* Left title box */
UI_BuildRow(Zstr); UI_BuildRow(0);
/* Title box */ /* Title box */
UI_SetNext(ChildAlignment, UI_Alignment_Center); UI_SetNext(ChildAlignment, UI_Alignment_Center);
UI_SetNext(Width, UI_FIT(1)); UI_SetNext(Width, UI_FIT(1));
UI_SetNext(Text, Lit("Titleeee")); UI_SetNext(Text, Lit("Titleeeeeeeeeeeeeee"));
UI_SetNext(Flags, UI_BoxFlag_DrawText); UI_SetNext(Flags, UI_BoxFlag_DrawText);
UI_BuildBox(Zstr); UI_BuildBox(0);
// /* Right title box */ /* Right title box */
UI_BuildBox(Zstr); UI_BuildRow(0);
} }
UI_PopCP(); UI_PopCP();
} }
UI_PopCP(); UI_PopCP();
}
UI_BuildDivider(UI_PIX(1, 0));
UI_SetNext(Tint, 0);
UI_SetNext(Rounding, 0);
UI_PushCP(UI_BuildColumn(0));
{
for (u32 i = 0; i < 10; ++i)
{
UI_SetNext(BorderColor, 0);
UI_SetNext(BackgroundColor, 0);
UI_SetNext(Rounding, UI_RPIX(2));
UI_SetNext(Width, UI_FILL(1, 0));
UI_SetNext(Height, UI_FNT(1.5, 0));
UI_SetNext(Text, Lit("btn"));
UI_SetNext(Flags, UI_BoxFlag_DrawText);
UI_SetNext(ChildAlignment, UI_Alignment_Center);
UI_BuildBox(HashF("btn%F", FmtSint(i)));
}
UI_BuildDivider(UI_PIX(1, 0));
} }
UI_PopCP(); UI_PopCP();
g->lister_key = lister_box->key;
UI_PopCP();
} }
UI_PopCP(); UI_PopCP();
} }
@ -2037,7 +2057,7 @@ void PP_UpdateUser(void)
UI_SetNext(Width, UI_FIT(1)); UI_SetNext(Width, UI_FIT(1));
UI_SetNext(Height, UI_FIT(1)); UI_SetNext(Height, UI_FIT(1));
UI_SetNext(Tint, 0); UI_SetNext(Tint, 0);
UI_PushCP(UI_BuildBox(Lit("dbg"))); UI_PushCP(UI_BuildBox(HashF("dbg")));
{ {
UI_Push(BackgroundColor, 0); UI_Push(BackgroundColor, 0);
UI_Push(BorderColor, 0); UI_Push(BorderColor, 0);

View File

@ -54,7 +54,7 @@ UI_Box *PP_BuildDebugConsole(b32 minimized)
UI_SetNext(Width, UI_FILL(1, 0)); UI_SetNext(Width, UI_FILL(1, 0));
UI_SetNext(Height, UI_FIT(1)); UI_SetNext(Height, UI_FIT(1));
} }
console_box = UI_BuildColumn(Lit("Console box")); console_box = UI_BuildColumn(HashF("Console box"));
UI_PushCP(console_box); UI_PushCP(console_box);
{ {
/* Gather display logs */ /* Gather display logs */
@ -117,7 +117,7 @@ UI_Box *PP_BuildDebugConsole(b32 minimized)
UI_Push(Rounding, UI_RPIX(0)); UI_Push(Rounding, UI_RPIX(0));
UI_Push(Border, 1); UI_Push(Border, 1);
UI_Push(ChildAlignment, UI_Alignment_Left); UI_Push(ChildAlignment, UI_Alignment_Left);
UI_PushCP(UI_BuildRow(Zstr)); UI_PushCP(UI_BuildRow(0));
{ {
// UI_SetNext(Height, UI_PIX(100, 0)); // UI_SetNext(Height, UI_PIX(100, 0));
UI_BuildSpacer(UI_PIX(10, 0)); UI_BuildSpacer(UI_PIX(10, 0));
@ -127,7 +127,7 @@ UI_Box *PP_BuildDebugConsole(b32 minimized)
UI_Push(Width, UI_FILL(1, 0)); UI_Push(Width, UI_FILL(1, 0));
UI_Push(Height, UI_FIT(1)); UI_Push(Height, UI_FIT(1));
UI_Push(Flags, UI_BoxFlag_DrawText); UI_Push(Flags, UI_BoxFlag_DrawText);
UI_BuildBox(Zstr); UI_BuildBox(0);
} }
UI_PopCP(); UI_PopCP();
} }

View File

@ -6,7 +6,7 @@ UI_Box *UI_BuildLabel(String text)
UI_SetNext(Height, UI_FIT(1)); UI_SetNext(Height, UI_FIT(1));
UI_SetNext(Text, text); UI_SetNext(Text, text);
UI_SetNext(Flags, UI_BoxFlag_DrawText); UI_SetNext(Flags, UI_BoxFlag_DrawText);
UI_Box *box = UI_BuildBox(Zstr); UI_Box *box = UI_BuildBox(0);
return box; return box;
} }
@ -39,7 +39,7 @@ UI_Box *UI_BuildSpacer(UI_Size size)
UI_Push(Parent, old_parent); UI_Push(Parent, old_parent);
UI_Push(AxisSize, UI_FILL(1, 0), .axis = !axis); UI_Push(AxisSize, UI_FILL(1, 0), .axis = !axis);
UI_Push(AxisSize, size, .axis = axis); UI_Push(AxisSize, size, .axis = axis);
box = UI_BuildBox(Zstr); box = UI_BuildBox(0);
} }
UI_PopStack(); UI_PopStack();
return box; return box;
@ -60,7 +60,7 @@ UI_Box *UI_BuildDivider(UI_Size size)
UI_Push(BackgroundColor, old_border_color); UI_Push(BackgroundColor, old_border_color);
UI_Push(AxisSize, UI_FILL(1, 0), .axis = !axis); UI_Push(AxisSize, UI_FILL(1, 0), .axis = !axis);
UI_Push(AxisSize, size, .axis = axis); UI_Push(AxisSize, size, .axis = axis);
box = UI_BuildBox(Zstr); box = UI_BuildBox(0);
} }
UI_PopStack(); UI_PopStack();
return box; return box;
@ -69,14 +69,14 @@ UI_Box *UI_BuildDivider(UI_Size size)
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Layout helpers //~ Layout helpers
UI_Box *UI_BuildColumn(String seed) UI_Box *UI_BuildColumn(u64 seed)
{ {
UI_SetNext(ChildLayoutAxis, Axis_Y); UI_SetNext(ChildLayoutAxis, Axis_Y);
UI_Box *box = UI_BuildBox(seed); UI_Box *box = UI_BuildBox(seed);
return box; return box;
} }
UI_Box *UI_BuildRow(String seed) UI_Box *UI_BuildRow(u64 seed)
{ {
UI_SetNext(ChildLayoutAxis, Axis_X); UI_SetNext(ChildLayoutAxis, Axis_X);
UI_Box *box = UI_BuildBox(seed); UI_Box *box = UI_BuildBox(seed);

View File

@ -14,5 +14,5 @@ UI_Box *UI_BuildDivider(UI_Size size);
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Layout helpers //~ Layout helpers
UI_Box *UI_BuildColumn(String seed); UI_Box *UI_BuildColumn(u64 seed);
UI_Box *UI_BuildRow(String seed); UI_Box *UI_BuildRow(u64 seed);

View File

@ -376,7 +376,7 @@ UI_Style UI_PopStyle(UI_StyleDesc desc)
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Box //~ Box
UI_Box *UI_BuildBox(String seed) UI_Box *UI_BuildBox(u64 seed)
{ {
UI_SharedState *g = &UI_shared_state; UI_SharedState *g = &UI_shared_state;
@ -389,12 +389,12 @@ UI_Box *UI_BuildBox(String seed)
UI_Box *box = PushStruct(g->build_arena, UI_Box); UI_Box *box = PushStruct(g->build_arena, UI_Box);
/* Calculate key */ /* Calculate key */
if (seed.len > 0) if (seed != 0)
{ {
UI_Key key = ZI; UI_Key key = ZI;
key.hash = RandU64FromSeeds(key.hash, parent->key.hash); key.hash = RandU64FromSeeds(key.hash, parent->key.hash);
key.hash = RandU64FromSeeds(key.hash, tag.hash); key.hash = RandU64FromSeeds(key.hash, tag.hash);
key.hash = HashFnv64(key.hash, seed); key.hash = RandU64FromSeeds(key.hash, seed);
box->key = key; box->key = key;
} }
@ -1047,7 +1047,7 @@ i64 UI_EndFrame(UI_Frame frame)
/* Submit position */ /* Submit position */
box->p0 = RoundVec2(final_pos); box->p0 = RoundVec2(final_pos);
box->p1 = RoundVec2(AddVec2(final_pos, dims_vec)); box->p1 = RoundVec2(AddVec2(final_pos, CeilVec2(dims_vec)));
box->report.screen_p0 = box->p0; box->report.screen_p0 = box->p0;
box->report.screen_p1 = box->p1; box->report.screen_p1 = box->p1;
} }

View File

@ -393,7 +393,7 @@ UI_Style UI_PopStyle(UI_StyleDesc desc);
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
//~ Box //~ Box
UI_Box *UI_BuildBox(String seed); UI_Box *UI_BuildBox(u64 seed);
void UI_SetBackgroundTexture(UI_Box *box, GPU_Resource *texture, Vec2 uv0, Vec2 uv1); void UI_SetBackgroundTexture(UI_Box *box, GPU_Resource *texture, Vec2 uv0, Vec2 uv1);
b32 UI_IsPointInBox(UI_Box *box, Vec2 point); b32 UI_IsPointInBox(UI_Box *box, Vec2 point);