From 68683c02187a547879c2ff0c85115336d357ff38 Mon Sep 17 00:00:00 2001 From: Krzosa Karol Date: Sat, 18 Jan 2025 11:41:18 +0100 Subject: [PATCH] min max tweaks --- src/wasm_app/ui.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/wasm_app/ui.c b/src/wasm_app/ui.c index 343ec5b..c1f9210 100644 --- a/src/wasm_app/ui.c +++ b/src/wasm_app/ui.c @@ -506,7 +506,7 @@ fn void ui_serial_type(void *p, type_t *type) { ui_serial_subtype(p, type, type->name); } -app_event_t ui_test_event; +gb app_event_t ui_test_event; fn void ui_demo_update(app_frame_t *frame) { for (app_event_t *ev = frame->first_event; ev; ev = ev->next) { ui_begin_build(UILOC, ev, window_rect_from_frame(frame)); @@ -523,7 +523,21 @@ fn void ui_demo_update(app_frame_t *frame) { defer_block(ui_push_top(item_box), ui_pop_top()) { for (i32 i = 0; i < lengthof(tweak_table); i += 1) { mt_tweak_t *tweak = tweak_table + i; - ui_serial_subtype(tweak->ptr, tweak->type, tweak->name); + if (tweak->type->kind == type_kind_b32) { + b32 *n = (b32 *)tweak->ptr; + if (ui_list_button("%S: %s##slider%S", tweak->name, *n ? "true" : "false", tweak->name).clicked) { + *n = !*n; + } + } else if (tweak->type->kind == type_kind_f32) { + f32 *n = (f32 *)tweak->ptr; + ui_signal_t signal = ui_list_button("%S: %f##slider%S", tweak->name, *n, tweak->name); + if (signal.dragging) { + f32 size = tweak->max - tweak->min; + v2f32_t string_size = rn_measure_string(&rn_state.main_font, signal.box->string); + f32 delta = (ui->event->mouse_delta.x / string_size.x) * size; + *n = CLAMP(*n + delta, tweak->min, tweak->max); + } + } else_is_invalid; } ui_serial_type(&ui_test_event, type(app_event_t)); defer_if (ui_begin_expander("app_event_t").clicked, ui_end_expander()) {