/* date = June 24th 2023 9:43 pm */ #ifndef VN_UI_UTILS_H #define VN_UI_UTILS_H //- sixten: Rows and columns. inline void UI_RowBegin(u32 Flags = 0, string Name = StrLit("")); inline void UI_RowEnd(void); inline void UI_ColumnBegin(u32 Flags = 0, string Name = StrLit("")); inline void UI_ColumnEnd(void); #define UI_Row(...) DeferLoop(UI_RowBegin(__VA_ARGS__), UI_RowEnd()) #define UI_Column(...) DeferLoop(UI_ColumnBegin(__VA_ARGS__), UI_ColumnEnd()) //- sixten: Compositions inline void UI_PushAxisSize(axis2 Axis, ui_size Size); inline void UI_PopAxisSize(axis2 Axis); inline void UI_SetNextAxisSize(axis2 Axis, ui_size Size); #define UI_AxisSize(Axis, Size) DeferLoop(UI_PushAxisSize(Axis, Size), UI_PopAxisSize(Axis)) #define UI_WidthFill UI_Width(UI_Percent(1, 0)) #define UI_HeightFill UI_Height(UI_Percent(1, 0)) #define UI_Size(Width, Height) UI_Width(Width) UI_Height(Height) #define UI_PushSize(Width, Height) UI_PushWidth(Width); UI_PushHeight(Height) #define UI_PopSize() UI_PopWidth(); UI_PopHeight() #define UI_SetNextSize(Width, Height) UI_SetNextWidth(Width); UI_SetNextHeight(Height) #define UI_Offset(x, y) UI_OffsetX(x) UI_OffsetY(y) #define UI_PushOffset(x, y) UI_PushOffsetX(x); UI_PushOffsetY(y) #define UI_PopOffset() UI_PopOffsetX(); UI_PopOffsetY() #define UI_SetNextOffset(x, y) UI_SetNextOffsetX(x); UI_SetNextOffsetY(y) #define UI_PushCornerRadius(x) UI_PushCornerRadii(V4R32(x, x, x, x)) #define UI_PopCornerRadius() UI_PopCornerRadii() #define UI_SetNextCornerRadius(x) UI_SetNextCornerRadii(V4R32(x, x, x, x)) #define UI_CornerRadius(x) UI_CornerRadii(V4R32(x, x, x, x)) #define UI_FixedP(Value) UI_FixedX(Value.x) UI_FixedY(Value.y) #define UI_SetNextFixedP(Value) UI_SetNextFixedX((Value).x); UI_SetNextFixedY((Value).y) //- sixten: Spacing static ui_box *UI_NamedSpacer(ui_size Size, string String); static ui_box *UI_NamedSpacerF(ui_size Size, char *Format, ...); #define UI_Padding(Size) DeferLoop(UI_Spacer(Size), UI_Spacer(Size)) #define UI_FillPadding UI_Padding(UI_Percent(1, 0)) //- sixten: Scrollable regions static void UI_ScrollBegin(r32 *X, r32 *Y, ui_box_flags Flags=UI_BoxFlag_Clip|UI_BoxFlag_DrawBorder, string Name = StrLit("Scrollable Region Container")); static void UI_ScrollEnd(r32 *X, r32 *Y, ui_box_flags Flags=UI_BoxFlag_Clip|UI_BoxFlag_DrawBorder, string Name = StrLit("Scrollable Region Container")); #define UI_Scroll(...) DeferLoop(UI_ScrollBegin(__VA_ARGS__), UI_ScrollEnd(__VA_ARGS__)) //- sixten: Common widgets static ui_box *UI_Label(string String); static ui_box *UI_LabelF(char *Format, ...); static ui_signal UI_Button(string String); static ui_signal UI_ButtonF(char *Format, ...); static ui_signal UI_Checkbox(b32 *Checked, string String); static r32 UI_Slider(r32 Value, range1_r32 Range); static void UI_TooltipLabel(string Label, v2_r32 P); static b32 UI_LineEdit(text_edit_state *State, u64 BufferSize, u8 *Buffer, u64 *BufferUsed, string String, b32 Focused); #endif //VN_UI_UTILS_H