From 0ffaf7bb9387af9e8e1006525df3ca578d57470b Mon Sep 17 00:00:00 2001 From: Synthasmagoria Date: Wed, 29 Jul 2026 17:22:32 +0200 Subject: [PATCH] Started on ui --- program.odin | 43 +++++++++++++++++++++++++++++++++++++++---- utils.odin | 2 ++ 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/program.odin b/program.odin index d591988..16df22b 100644 --- a/program.odin +++ b/program.odin @@ -97,12 +97,47 @@ program_init :: proc(allocator := context.allocator) { } program_update :: proc() { - + ui_elements := program_build_ui() + program_render_ui(ui_elements) } -program_build_ui :: proc() { +program_build_ui :: proc() -> []ui.Element { + container_margin: f32 = 4.0 + container_config := ui.ElementConfiguration { + margin = V2_ONE * container_margin, + } + + ui.start(&program.ui_context, {0, 0}, {WINDOW_WIDTH, WINDOW_HEIGHT}) + top_bar_container := ui.container_begin({ui.Size_Percentage(1.0), ui.Size_Pixels(64.0)}, container_config) + top_bar_inner_height := ui.get_element_inner_area(top_bar_container^).height + top_bar_button_dimensions := ui.Dimensions {ui.Size_Pixels(top_bar_inner_height), ui.Size_Pixels(top_bar_inner_height)} + top_bar_button_config := ui.ElementConfiguration {margin = {4.0, 4.0}} + { + config := top_bar_button_config + config.label = "+" + ui.button(top_bar_button_dimensions, config) + config.label = "-" + ui.same_line() + ui.button(top_bar_button_dimensions, config) + } + ui.container_end() + + side_bar_container := ui.container_begin({ui.Size_Percentage(0.3), ui.Size_Percentage(1.0)}, container_config) + ui.container_end() + return ui.end() } -program_render_ui :: proc() { - +program_render_ui :: proc(elements: []ui.Element) { + for element in elements { + area := rl.Rectangle(element.area) + switch element.type { + case .Container: + rl.GuiGroupBox(area, element.label) + case .Button: + rl.GuiButton(area, element.label) + case .Slider: + data := element.data.float_input_data + rl.GuiSlider(area, element.label, "", data.value, data.min, data.max) + } + } } diff --git a/utils.odin b/utils.odin index e7111cd..07b27e9 100644 --- a/utils.odin +++ b/utils.odin @@ -70,6 +70,8 @@ irect2 :: struct {x, y, width, height: i32} tri2 :: [3]v2 Bezier :: [3]v2 +V2_ONE :: v2{1.0, 1.0} + /// ### MISCELANIOUS ### /// enum_to_raygui_options_string :: proc($T: typeid, allocator: mem.Allocator) -> cstring where intrinsics.type_is_enum(T) { b := strings.builder_make(allocator)