From c9709a7eac2d3fdd2a2961f06340d973886d1364 Mon Sep 17 00:00:00 2001 From: PS Date: Thu, 7 Apr 2022 15:48:16 +0200 Subject: [PATCH] ui elements + layout --- .../intel/debug/lumenarium_first_win32.obj | Bin 439282 -> 450459 bytes src_v2/editor/lumenarium_editor.cpp | 26 +++ src_v2/editor/lumenarium_editor_ui.cpp | 185 +++++++++++++----- src_v2/editor/lumenarium_editor_ui.h | 41 +++- src_v2/lumenarium_types.h | 1 + 5 files changed, 198 insertions(+), 55 deletions(-) diff --git a/run_tree/win32/intel/debug/lumenarium_first_win32.obj b/run_tree/win32/intel/debug/lumenarium_first_win32.obj index a1f03174444ba1f278b233da4c3b35ca29e4a473..a60b65b42de5e3e0d04fbe4b00a1967adefe2e02 100644 GIT binary patch delta 93269 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 IhPe&?54EP~tN;K2 delta 83114 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 diff --git a/src_v2/editor/lumenarium_editor.cpp b/src_v2/editor/lumenarium_editor.cpp index 96edf05..7329a79 100644 --- a/src_v2/editor/lumenarium_editor.cpp +++ b/src_v2/editor/lumenarium_editor.cpp @@ -155,6 +155,32 @@ ed_frame_prepare(App_State* state) internal void ed_frame(App_State* state) { + UI* ui = &state->editor->ui; + + UI_Layout layout = {}; + layout.bounds_min = v2{ 500, 200 }; + layout.bounds_max = v2{ 700, 500 }; + layout.row_height = ui->font_ascent + ui->font_descent + ui->font_line_gap + 15; + layout.row_gap = 2; + layout.col_gap = 2; + layout.at = layout.bounds_min; + ui->layout = &layout; + + + ui_text(ui, lit_str("Hi there!")); + show = ui_toggle(ui, lit_str("my toggle"), show); + if (show) + { + ui_layout_row_begin(ui, 2); + { + ui_button(ui, lit_str("Sup")); + ui_button(ui, lit_str("you there")); + } + ui_layout_row_end(ui); + } + + ui_button(ui, lit_str("Hi there my good sir")); + edr_render_begin(state); ui_draw(&state->editor->ui); edr_render(state); diff --git a/src_v2/editor/lumenarium_editor_ui.cpp b/src_v2/editor/lumenarium_editor_ui.cpp index 5e397cf..647919b 100644 --- a/src_v2/editor/lumenarium_editor_ui.cpp +++ b/src_v2/editor/lumenarium_editor_ui.cpp @@ -80,6 +80,7 @@ ui_create(u32 widget_pool_cap, u32 verts_cap, Input_State* input, Allocator* a) }; ui_sprite_register(&result, (u8*)white_sprite, 4, 4, WHITE_SPRITE_ID); + ui_create_default_style_sheet(); return result; } @@ -166,7 +167,7 @@ ui_sprite_char_get_draw_cmd(UI* ui, v3 at, u32 codepoint) }; result.pmin = at; result.pmin.XY += sprite.draw_offset; - result.pmin = v3_floor(result.pmin); + result.pmin.XY = v2_floor(result.pmin.XY); result.pmax = result.pmin + dim; result.baseline_after = v3{ result.pmax.x, at.y, at.z }; @@ -208,47 +209,6 @@ global bool show = false; internal void ui_draw(UI* ui) { - UI_Widget_Desc d0 = { - { - (UIWidgetStyle_Bg), - WHITE_V4, - BLACK_V4, - WHITE_SPRITE_ID, - }, - lit_str("Hi there!"), - v2{ 32.0f, 32.0f }, - v2{ 128.0f, 64.0f }, - }; - UI_Widget_Result r0 = ui_widget_push(ui, d0); - - UI_Widget_Desc d1 = d0; - d1.style.flags |= UIWidgetStyle_Outline | UIWidgetStyle_MouseClick | UIWidgetStyle_Text; - d1.style.color_bg = PINK_V4;//{ 0.1f, 0.1f, 0.1f, 1.0f }; // - d1.style.color_fg = GREEN_V4; - d1.p_min = v2{ 512, 32 }; - d1.p_max = v2{ 640, 128 }; - d1.string = lit_str("Hello there my friend, what's going on?"); - UI_Widget_Result r1 = ui_widget_push(ui, d1); - bool clicked_r1 = has_flag(r1.flags, UIWidgetResult_MouseLeft_WentUp); - if (clicked_r1) show = !show; - - UI_Widget_Result r2 = {}; - if (show) - { - UI_Widget_Desc d2 = d1; - d1.string = lit_str("Hello There"); - d1.p_min = v2{ 560, 64 }; - d1.p_max = v2{ 700, 256 }; - r2 = ui_widget_push(ui, d1); - } - - bool clicked_r2 = has_flag(r2.flags, UIWidgetResult_MouseLeft_WentUp); - assert( - (!clicked_r1 && !clicked_r2) || - (clicked_r1 && !clicked_r2) || - (!clicked_r1 && clicked_r2) - ); - u32 widget_count = ui->widgets.free_len; r32 range_min = -10; r32 range_max = -1; @@ -434,21 +394,22 @@ ui_widgets_to_geometry_recursive(UI* ui, UI_Widget* widget, r32 z_start, r32 z_s if (has_flag(child->desc.style.flags, UIWidgetStyle_Outline)) { ui_sprite_push(ui, bg_min, bg_max, WHITE_SPRITE_ID, color_fg); - bg_min += v3{ 3, 3, 0}; - bg_max -= v3{ 3, 3, 0}; + z_at += z_step; + bg_min += v3{ 1, 1, 0}; + bg_max -= v3{ 1, 1, 0}; + } if (has_flag(child->desc.style.flags, UIWidgetStyle_Bg)) { - z_at += z_step; bg_min.z = z_at; bg_max.z = z_at; ui_sprite_push(ui, bg_min, bg_max, desc.style.sprite, color_bg); + z_at += z_step; } - if (has_flag(child->desc.style.flags, UIWidgetStyle_Text)) + if (has_flag(child->desc.style.flags, UIWidgetStyle_TextWrap | UIWidgetStyle_TextClip)) { - z_at += z_step + z_step; r32 space_width = ui->font_space_width; r32 to_baseline = ui->font_line_gap + ui->font_ascent; v3 line_offset = { 5, 3 + to_baseline, 0 }; @@ -471,6 +432,8 @@ ui_widgets_to_geometry_recursive(UI* ui, UI_Widget* widget, r32 z_start, r32 z_s if (cmd.baseline_after.x >= desc.p_max.x - 5) { + if (has_flag(child->desc.style.flags, UIWidgetStyle_TextClip)) break; + baseline.x = baseline_x_start; baseline.y += ui->font_ascent + ui->font_descent + ui->font_line_gap; cmd = ui_sprite_char_get_draw_cmd(ui, baseline, (u32)at); @@ -495,12 +458,101 @@ ui_widgets_to_geometry_recursive(UI* ui, UI_Widget* widget, r32 z_start, r32 z_s } /////////////////////////////////////////// -// Specific Widget Implementations +// Layout Manager -global UI_Style_Sheet ui_default_style_sheet = { +internal void +ui_layout_row_begin(UI_Layout* layout, u32 cols) +{ + layout->mode = UILayout_Rows; + layout->cols = cols; +} +internal void +ui_layout_row_begin(UI* ui, u32 cols) { ui_layout_row_begin(ui->layout, cols); } + +internal void +ui_layout_row_end(UI_Layout* layout) +{ + layout->mode = UILayout_Columns; +} +internal void +ui_layout_row_end(UI* ui) { ui_layout_row_end(ui->layout); } + +internal UI_Layout_Bounds +ui_layout_get_next(UI_Layout* layout) +{ + UI_Layout_Bounds result = {}; + switch (layout->mode) { + case UILayout_Columns: + { + result.min = layout->at; + result.max = v2{ layout->bounds_max.x, layout->at.y + layout->row_height }; + layout->at = v2{ layout->bounds_min.x, result.max.y + layout->row_gap}; + } break; + case UILayout_Rows: + { + r32 col_width = (layout->bounds_max.x - layout->bounds_min.x) / layout->cols; + col_width -= (layout->cols - 1) * layout->col_gap; + result.min = layout->at; + result.max = v2{ layout->at.x + col_width, layout->at.y + layout->row_height }; + layout->at = v2{ result.max.x + layout->col_gap, layout->at.y }; + if (layout->at.x >= layout->bounds_max.x) + { + layout->at = v2{ + layout->bounds_min.x, + layout->at.y + layout->row_height + layout->row_gap + }; + } + } break; + + invalid_default_case; } + return result; +} +internal UI_Layout_Bounds +ui_layout_get_next(UI* ui) { return ui_layout_get_next(ui->layout); } + + +/////////////////////////////////////////// +// Specific Widget Implementations +// +// These all rely on a layout manager to make calling them simpler + +global UI_Style_Sheet ui_default_style_sheet = {}; + +internal void +ui_create_default_style_sheet() +{ + ui_default_style_sheet.styles[UIWidget_Text] = { + (UIWidgetStyle_TextWrap), v4{0,0,0,0}, WHITE_V4, WHITE_SPRITE_ID + }; + ui_default_style_sheet.styles[UIWidget_Button] = { + (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseClick), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID + }; + ui_default_style_sheet.styles[UIWidget_Toggle] = { + (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_MouseClick), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID + }; + ui_default_style_sheet.styles[UIWidget_Menu] = ui_default_style_sheet.styles[UIWidget_Toggle]; + ui_default_style_sheet.styles[UIWidget_Dropdown] = ui_default_style_sheet.styles[UIWidget_Toggle]; + + ui_default_style_sheet.styles[UIWidget_HSlider] = { + (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseDrag), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID + }; + ui_default_style_sheet.styles[UIWidget_VSlider] = { + (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseDrag), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID + }; + ui_default_style_sheet.styles[UIWidget_HScroll] = { + (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseDrag), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID + }; + ui_default_style_sheet.styles[UIWidget_VScroll] = { + (UIWidgetStyle_TextClip | UIWidgetStyle_Bg | UIWidgetStyle_Outline | UIWidgetStyle_MouseDrag), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID + }; + + ui_default_style_sheet.styles[UIWidget_Window] = { + (UIWidgetStyle_TextWrap), BLACK_V4, WHITE_V4, WHITE_SPRITE_ID + }; + }; internal UI_Widget_Style @@ -510,15 +562,46 @@ ui_get_style(UI* ui, UI_Widget_Kind kind) return ui_default_style_sheet.styles[kind]; } +internal UI_Widget_Desc +ui_layout_next_widget(UI* ui, UI_Widget_Kind kind) +{ + UI_Layout_Bounds b = ui_layout_get_next(ui); + UI_Widget_Desc d = {}; + d.p_min = b.min; + d.p_max = b.max; + d.style = ui_get_style(ui, kind); + return d; +} + internal void ui_text(UI* ui, String string) { - + UI_Widget_Desc d = ui_layout_next_widget(ui, UIWidget_Text); + d.string = string; + ui_widget_push(ui, d); } internal bool ui_button(UI* ui, String string) { - return false; + UI_Widget_Desc d = ui_layout_next_widget(ui, UIWidget_Button); + d.string = string; + UI_Widget_Result r = ui_widget_push(ui, d); + return has_flag(r.flags, UIWidgetResult_MouseLeft_WentUp); } +internal bool +ui_toggle(UI* ui, String string, bool value) +{ + UI_Widget_Desc d = ui_layout_next_widget(ui, UIWidget_Button); + if (value) { + v4 t = d.style.color_fg; + d.style.color_fg = d.style.color_bg; + d.style.color_bg = t; + } + d.string = string; + UI_Widget_Result r = ui_widget_push(ui, d); + bool result = value; + if (has_flag(r.flags, UIWidgetResult_MouseLeft_WentUp)) result = !result; + return result; +} diff --git a/src_v2/editor/lumenarium_editor_ui.h b/src_v2/editor/lumenarium_editor_ui.h index 23eadc8..cd8be05 100644 --- a/src_v2/editor/lumenarium_editor_ui.h +++ b/src_v2/editor/lumenarium_editor_ui.h @@ -32,10 +32,11 @@ enum { UIWidgetStyle_None = 0, UIWidgetStyle_Bg = 1, - UIWidgetStyle_Text = 2, - UIWidgetStyle_Outline = 4, - UIWidgetStyle_MouseClick = 8, - UIWidgetStyle_MouseDrag = 16, + UIWidgetStyle_TextClip = 2, + UIWidgetStyle_TextWrap = 4, + UIWidgetStyle_Outline = 8, + UIWidgetStyle_MouseClick = 16, + UIWidgetStyle_MouseDrag = 32, }; // akin to a css class, could be used to style multiple @@ -119,6 +120,34 @@ struct UI_Widget_Pool UI_Widget* active_parent; }; +enum UI_Layout_Mode +{ + // each element takes up a whole row + UILayout_Columns, + + // each element takes up one column in the row. If you overflow, + // the layout manager overflows to the next row + UILayout_Rows, +}; + +struct UI_Layout +{ + v2 bounds_min; + v2 bounds_max; + r32 row_height; + r32 row_gap; + r32 col_gap; + v2 at; + UI_Layout_Mode mode; + u32 cols; +}; + +struct UI_Layout_Bounds +{ + v2 min; + v2 max; +}; + struct UI { UI_Vertex* verts; @@ -138,6 +167,8 @@ struct UI UI_Widget_Id widget_next_hot; UI_Widget_Id widget_hot; + UI_Layout* layout; + // frames since these values were set u16 widget_next_hot_frames; u16 widget_hot_frames; @@ -162,6 +193,8 @@ internal void ui_draw(UI* ui); // Widgets +internal void ui_create_default_style_sheet(); + internal UI_Widget_Id ui_widget_id_create(u32 index_in_parent, String string); internal bool ui_widget_id_equals(UI_Widget_Id a, UI_Widget_Id b); internal bool ui_widget_id_is_valid(UI_Widget_Id h); diff --git a/src_v2/lumenarium_types.h b/src_v2/lumenarium_types.h index bf829e9..91dc9c1 100644 --- a/src_v2/lumenarium_types.h +++ b/src_v2/lumenarium_types.h @@ -244,6 +244,7 @@ hash_table_find(u32* ids, u32 cap, u32 value) // Vector Extensions #define v2_to_v3(xy,z) v3{(xy).x, (xy).y, (z)} +#define v2_floor(v) v2{ floorf(v.x), floorf(v.y) } #define v3_floor(v) v3{ floorf(v.x), floorf(v.y), floorf(v.z) } //////////////////////////////////////////////