diff --git a/libraries/snths_ui b/libraries/snths_ui index 6c8479f..1e00b97 160000 --- a/libraries/snths_ui +++ b/libraries/snths_ui @@ -1 +1 @@ -Subproject commit 6c8479f922438d73fbecfffbd6a70abb36068192 +Subproject commit 1e00b977d4a3c21bc007f218e1ec46cc6ab50274 diff --git a/program.odin b/program.odin index 16df22b..b73cd17 100644 --- a/program.odin +++ b/program.odin @@ -111,7 +111,7 @@ program_build_ui :: proc() -> []ui.Element { 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}} + top_bar_button_config := ui.ElementConfiguration {margin = V2_ONE * 4} { config := top_bar_button_config config.label = "+" @@ -122,11 +122,46 @@ program_build_ui :: proc() -> []ui.Element { } ui.container_end() - side_bar_container := ui.container_begin({ui.Size_Percentage(0.3), ui.Size_Percentage(1.0)}, container_config) + ui.container_begin({ui.SIZE_AUTO, ui.Size_PercentageRemainder(1.0)}, container_config) + { + mat: matrix[3, 3]f32 + container_config := ui.ElementConfiguration{margin = V2_ONE * 4.0, label = ""} + container_dimensions := ui.Dimensions {ui.SIZE_AUTO, ui.SIZE_AUTO} + config := container_config + config.label = "Matrix 0" + ui_mat3(&mat, 0.0, 1000.0, container_dimensions, container_config) + } ui.container_end() return ui.end() } +ui_mat3 :: proc(mat: ^mat3, min, max: f32, dimensions: ui.Dimensions, config: ui.ElementConfiguration) { + ui.container_begin({ui.SIZE_AUTO, ui.SIZE_AUTO}, config) + matrix_input_config := ui.ElementConfiguration {margin = V2_ONE * 4.0} + matrix_input_dimensions := ui.Dimensions {ui.Size_Pixels(96.0), ui.Size_Pixels(48.0)} + matrix_input_data := ui.ElementData_FloatInput {value = nil, min = min, max = max} + data := matrix_input_data + data.value = &mat[0, 0] + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + ui.same_line() + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + ui.same_line() + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + ui.same_line() + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + ui.same_line() + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + ui.same_line() + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + ui.same_line() + ui.input_float(matrix_input_dimensions, matrix_input_config, data) + ui.container_end() +} + program_render_ui :: proc(elements: []ui.Element) { for element in elements { area := rl.Rectangle(element.area) @@ -138,6 +173,10 @@ program_render_ui :: proc(elements: []ui.Element) { case .Slider: data := element.data.float_input_data rl.GuiSlider(area, element.label, "", data.value, data.min, data.max) + case .InputFloat: + data := element.data.float_input_data + str: cstring = " " + rl.GuiTextBox(area, str, i32(len(str) - 1), false) } } }