diff --git a/build_file.c b/build_file.c index cea9902..521745f 100644 --- a/build_file.c +++ b/build_file.c @@ -60,9 +60,9 @@ int main(int argc, char **argv) { } if (win32_target) { - os_delete_file(s8_lit("win32_app.pdb")); + os_delete_file(s8_lit("app_win32.pdb")); ok = os_systemf( - "cl ../src/wasm_app/main.c -Fe:win32_app.exe -Fd:win32_app.pdb" + "cl ../src/wasm_app/main.c -Fe:app_win32.exe -Fd:app_win32.pdb" " -I ../src" " /Zi /FC /nologo /Oi" " /WX /W3 /wd4200 /diagnostics:column" diff --git a/src/core/core.h b/src/core/core.h index 2c2e7e3..d3f61fd 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -64,6 +64,8 @@ typedef double f64; #define zero_struct(x) memory_zero((x), sizeof(*(x))) + +#define defer_if(begin, cond_end) for (b32 PASTE(_i_, __LINE__) = !!begin; PASTE(_i_, __LINE__); PASTE(_i_, __LINE__) = (cond_end, 0)) #define defer_block(begin, end) for (i32 PASTE(_i_, __LINE__) = (begin, 0); !PASTE(_i_, __LINE__); PASTE(_i_, __LINE__) += (end, 1)) #define STACK(type, size) struct { type data[size]; i32 len; } #define STACK_PUSH(stack, ...) (assert((stack).len < lengthof((stack).data)), (stack).data[(stack).len++] = __VA_ARGS__) diff --git a/src/wasm_app/main.c b/src/wasm_app/main.c index c476c85..edc5887 100644 --- a/src/wasm_app/main.c +++ b/src/wasm_app/main.c @@ -44,36 +44,30 @@ fn b32 app_update(app_frame_t *frame) { ui_begin_frame(frame); defer_block(ui_begin_build(), ui_end_build()) { defer_block(ui_push_list_container(), ui_pop_parent()) { - if (ui_push_expander("app_event_t")) { - + defer_if (ui_push_expander("app_event_t"), ui_pop_expander()) { if (r2f32_contains(r2f32(0, 0, 200, 200), frame->mouse_pos)) { - if (ui_push_expander("mouse_wheel_delta: v3f64_t")) { + defer_if (ui_push_expander("mouse_wheel_delta: v3f64_t"), ui_pop_expander()) { ui_label("x: f64 = value"); ui_label("y: f64 = value"); ui_label("z: f64 = value"); - ui_pop_expander(); } } ui_label("kind: app_event_kind_t = value"); ui_label("ctrl: b8 = value"); ui_label("shift: b8 = value"); - if (ui_push_expander("pos: v2f64_t")) { - if (ui_push_expander("inner_pos: v2f64_t")) { + defer_if (ui_push_expander("pos: v2f64_t"), ui_pop_expander()) { + defer_if (ui_push_expander("inner_pos: v2f64_t"), ui_pop_expander()) { ui_label("x_: f64 = value"); ui_label("y_: f64 = value"); - ui_pop_expander(); } ui_label("y__: f64 = value"); - if (ui_push_expander("_inner_pos: v2f64_t")) { + defer_if (ui_push_expander("_inner_pos: v2f64_t"), ui_pop_expander()) { ui_label("x____: f64 = value"); ui_label("y____: f64 = value"); - ui_pop_expander(); } - ui_pop_expander(); } ui_label("alt: b8 = value"); ui_label("meta: b8 = value"); - ui_pop_expander(); } } } diff --git a/src/wasm_app/ui.c b/src/wasm_app/ui.c index 9e58e81..5dfdde7 100644 --- a/src/wasm_app/ui.c +++ b/src/wasm_app/ui.c @@ -49,6 +49,18 @@ struct ui_box_t { r2f32_t rect; }; +// @todo: +typedef struct ui_signal ui_signal; +struct ui_signal { + b8 clicked; + b8 double_clicked; + b8 right_clicked; + b8 pressed; + b8 released; + b8 dragging; + b8 hovering; +}; + typedef struct ui_t ui_t; struct ui_t { ma_arena_t *box_arena; // required to be only used for boxes @@ -303,8 +315,6 @@ void ui_draw(void) { sb8_printf(sb, "%S\n", it.box->string); } s8_t iter_string = sb8_serial_end(scratch.arena, sb); - debugf("%S", recursive_string); - debugf("ITER:\n%S", iter_string); assert(s8_equal(recursive_string, iter_string));