Matrix input

This commit is contained in:
Synthasmagoria 2026-07-30 12:43:42 +02:00
commit f35e331bcd
2 changed files with 42 additions and 3 deletions

@ -1 +1 @@
Subproject commit 6c8479f922438d73fbecfffbd6a70abb36068192
Subproject commit 1e00b977d4a3c21bc007f218e1ec46cc6ab50274

View file

@ -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)
}
}
}