From 4251637742a8fb2660b8bdd0c26e0030106f0213 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 9 Aug 2021 05:39:36 -0500 Subject: [PATCH] random cleanup; fixed ui layering bug --- bin/onyx | Bin 413600 -> 409504 bytes .../immediate_mode/immediate_renderer.onyx | 7 ++ modules/ui/components/scrollable_region.onyx | 6 +- modules/ui/components/workspace.onyx | 2 +- modules/ui/ui.onyx | 24 +++++- src/onyxastnodes.c | 70 +++++++++++++++++- src/onyxchecker.c | 1 + src/onyxwasm.c | 12 +-- tests/aoc-2020/day17.onyx | 2 +- tests/aoc-2020/day25.onyx | 7 +- tests/aoc-2020/day3.onyx | 13 ++-- 11 files changed, 116 insertions(+), 28 deletions(-) diff --git a/bin/onyx b/bin/onyx index 27fc96e3b4c91a13a61076a871222134c81c0895..1e5eadc5611997a53af92b5029278488f0f152c8 100755 GIT binary patch delta 85914 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 EzZY4w$p8QV delta 88126 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 diff --git a/modules/immediate_mode/immediate_renderer.onyx b/modules/immediate_mode/immediate_renderer.onyx index 4f7e3cca..4cb38fde 100644 --- a/modules/immediate_mode/immediate_renderer.onyx +++ b/modules/immediate_mode/immediate_renderer.onyx @@ -515,3 +515,10 @@ push_matrix :: () do global_renderer->push_matrix(); pop_matrix :: () do global_renderer->pop_matrix(); identity :: () do global_renderer->identity(); apply_transform :: (transform: Transform) do global_renderer->apply_transform(transform); + + + +save_matrix :: #code { + (package immediate_mode).push_matrix(); + defer (package immediate_mode).pop_matrix(); +} \ No newline at end of file diff --git a/modules/ui/components/scrollable_region.onyx b/modules/ui/components/scrollable_region.onyx index 41ff29ec..edd9082b 100644 --- a/modules/ui/components/scrollable_region.onyx +++ b/modules/ui/components/scrollable_region.onyx @@ -21,13 +21,11 @@ scrollable_region_start :: (use r: Rectangle, x_scroll: ^f32, y_scroll: ^f32, si state := map.get(^scrollable_region_states, hash); mx, my := get_mouse_position(); - contained := false; if Rectangle.contains(r, mx, my) { - // if hot_item == 0 do set_hot_item(hash); - contained = true; + set_hot_item(hash); } - if contained { // is_hot_item(hash) { + if is_hot_item(hash) { speed :: 30.0f; @ThemeConfiguration if is_key_down(38) do state.transform.translation.y += speed; diff --git a/modules/ui/components/workspace.onyx b/modules/ui/components/workspace.onyx index 64558d2f..900952d8 100644 --- a/modules/ui/components/workspace.onyx +++ b/modules/ui/components/workspace.onyx @@ -24,7 +24,7 @@ workspace_start :: (use r: Rectangle, site := #callsite) { mx, my := get_mouse_position(); if Rectangle.contains(r, mx, my) { - if hot_item == 0 do set_hot_item(hash); + set_hot_item(hash); } if is_hot_item(hash) { diff --git a/modules/ui/ui.onyx b/modules/ui/ui.onyx index 92e06f09..3a6c4084 100644 --- a/modules/ui/ui.onyx +++ b/modules/ui/ui.onyx @@ -29,6 +29,7 @@ init_ui :: () { // This function should be called at the end of drawing a frame, after all of the UI elements // had a chance to interact with the hardware events. + end_frame :: () { mouse_state.left_button_just_up = false; mouse_state.left_button_just_down = false; @@ -47,7 +48,9 @@ end_frame :: () { keyboard_state.keys_down_this_frame = 0; keyboard_state.keys_up_this_frame = 0; + hot_item_depth_needed = hot_item_depth; if !hot_item_was_set do set_hot_item(0); + hot_item_depth = 0; hot_item_was_set = false; for ^s: keyboard_state.state { @@ -61,13 +64,26 @@ set_active_item :: (id: UI_Id) -> bool { return true; } -set_hot_item :: (id: UI_Id) -> bool { +#private_file hot_item_depth := 0; +#private_file hot_item_depth_needed := 0; + +set_hot_item :: (id: UI_Id, force := false) -> bool { if active_item != 0 do return false; - hot_item_was_set = true; + if force { + hot_item_was_set = true; + hot_item = id; + return true; + } - hot_item = id; - return true; + hot_item_depth += 1; + if hot_item_depth >= hot_item_depth_needed { + hot_item_was_set = true; + hot_item = id; + return true; + } else { + return false; + } } is_active_item :: (id: UI_Id) -> bool { diff --git a/src/onyxastnodes.c b/src/onyxastnodes.c index 9944f63a..5aef4393 100644 --- a/src/onyxastnodes.c +++ b/src/onyxastnodes.c @@ -58,7 +58,7 @@ static const char* ast_node_names[] = { "ARRAY ACCESS", "SLICE", "FIELD ACCESS", - "UNARY FIELD ACCESS" + "UNARY FIELD ACCESS", "PIPE", "METHOD_CALL", "RANGE", @@ -257,8 +257,6 @@ AstTyped* ast_reduce_unaryop(bh_allocator a, AstUnaryOp* unop) { AstNumLit* operand = (AstNumLit *) ast_reduce(a, unop->expr); unop->expr = (AstTyped *) operand; - // while (operand->kind == Ast_Kind_Alias) operand = (AstNumLit *) ((AstAlias *) operand)->alias; - if (operand->kind != Ast_Kind_NumLit) { return (AstTyped *) unop; } @@ -278,6 +276,72 @@ AstTyped* ast_reduce_unaryop(bh_allocator a, AstUnaryOp* unop) { } case Unary_Op_Bitwise_Not: REDUCE_UNOP_INT(~); + case Unary_Op_Cast: { + #if 0 + Type* from = operand->type; + Type* to = unop->type; + + if (from->kind == Type_Kind_Enum) from = from->Enum.backing; + if (to->kind == Type_Kind_Enum) to = to->Enum.backing; + + if (from->kind != Type_Kind_Pointer && from->kind != Type_Kind_Basic) return (AstTyped *) unop; + if (to->kind != Type_Kind_Pointer && to->kind != Type_Kind_Basic) return (AstTyped *) unop; + + b32 from_is_int=0, to_is_int=0; + i32 from_size, to_size; + + from_size = type_size_of(from); + to_size = type_size_of(to); + + if (from->kind == Type_Kind_Basic) from_is_int = (from->flags & (Basic_Flag_Integer | Basic_Flag_Pointer)) != 0; + if (to->kind == Type_Kind_Basic) to_is_int = (to->flags & (Basic_Flag_Integer | Basic_Flag_Pointer)) != 0; + + if (from->kind == Type_Kind_Pointer) from_is_int = 1; + if (to->kind == Type_Kind_Pointer) to_is_int = 1; + + if (from_is_int == to_is_int && from_size == to_size) { + // If they are already equal, nothing to do + return (AstTyped *) res; + } + + if (from_is_int && !to_is_int) { + if (from_size == to_size) { + if (from_size == 4) { + res->value.f = (f32) operand->value.i; + } + else if (from_size == 8) { + res->value.d = (f64) operand->value.l; + } + } else { + if (from_size == 4) { + res->value.d = (f64) operand->value.i; + } + else if (from_size == 8) { + res->value.f = (f32) operand->value.l; + } + } + } else { + if (from_size == to_size) { + if (from_size == 4) { + res->value.i = (i32) operand->value.f; + } + else if (from_size == 8) { + res->value.l = (i64) operand->value.d; + } + } else { + if (from_size == 4) { + res->value.l = (i64) operand->value.f; + } + else if (from_size == 8) { + res->value.i = (i32) operand->value.d; + } + } + } + break; + + #endif + } + default: return (AstTyped *) unop; } diff --git a/src/onyxchecker.c b/src/onyxchecker.c index ca848767..3cac3da8 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -1733,6 +1733,7 @@ CheckStatus check_insert_directive(AstDirectiveInsert** pinsert) { assert(code_block->kind == Ast_Kind_Code_Block); AstNode* cloned_block = ast_clone(context.ast_alloc, code_block->code); + cloned_block->next = insert->next; if (cloned_block->kind == Ast_Kind_Block) { AstNode* next = insert->next; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index e2e63bc9..0bc1cb45 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -3212,15 +3212,17 @@ static b32 emit_raw_data_(OnyxWasmModule* mod, ptr data, AstTyped* node) { Type* sl_type = sl->type; // ROBUSTNESS: Handle cases for slices and dynamic arrays - if (sl_type->kind != Type_Kind_Struct) { + if (sl_type->kind != Type_Kind_Struct && sl_type->kind != Type_Kind_Slice && sl_type->kind != Type_Kind_DynArray) { retval = 0; break; } - i32 i = 0; - bh_arr_each(AstTyped *, expr, sl->args.values) { - retval &= emit_raw_data_(mod, bh_pointer_add(data, sl_type->Struct.memarr[i]->offset), *expr); - i++; + i32 mem_count = type_structlike_mem_count(sl_type); + StructMember smem; + + fori (i, 0, mem_count) { + type_lookup_member_by_idx(sl_type, i, &smem); + retval &= emit_raw_data_(mod, bh_pointer_add(data, smem.offset), sl->args.values[i]); } break; diff --git a/tests/aoc-2020/day17.onyx b/tests/aoc-2020/day17.onyx index 6c6825f2..19c29ab9 100644 --- a/tests/aoc-2020/day17.onyx +++ b/tests/aoc-2020/day17.onyx @@ -41,7 +41,7 @@ main :: (args: [] cstr) { file := reader.make(contents); - cubes := map.make(CubePos, CubeState, .{}, 1021); + cubes := map.make(CubePos, CubeState, .{}, 2047); defer map.free(^cubes); z := 0; diff --git a/tests/aoc-2020/day25.onyx b/tests/aoc-2020/day25.onyx index 7806bede..443a1cb8 100644 --- a/tests/aoc-2020/day25.onyx +++ b/tests/aoc-2020/day25.onyx @@ -20,8 +20,7 @@ power_mod :: (base: u32, exp: u32, mod: u32) -> u32 { } dlp_bsgs :: (n: u32, a: u32, b: u32) -> u32 { - use package core.intrinsics.wasm { ceil_f64, sqrt_f64 } - m := cast(u32) ceil_f64(sqrt_f64(~~n)); + m := cast(u32) math.ceil(math.sqrt(cast(f64) n)); t := map.make(u32, u32, default=0, hash_count=m/2); defer map.free(^t); @@ -36,8 +35,8 @@ dlp_bsgs :: (n: u32, a: u32, b: u32) -> u32 { tmp = ~~b; for i: 0 .. m { - if map.has(^t, cast(u32) tmp) { - v := map.get(^t, cast(u32) tmp); + if map.has(^t, ~~tmp) { + v := map.get(^t, ~~tmp); return i * m + v; } diff --git a/tests/aoc-2020/day3.onyx b/tests/aoc-2020/day3.onyx index f494fe65..ad082a60 100644 --- a/tests/aoc-2020/day3.onyx +++ b/tests/aoc-2020/day3.onyx @@ -34,12 +34,13 @@ main :: (args: [] cstr) { for ch: line do array.push(^forest, ch); } - lis : [5] LineInterp; - lis[0] = .{ 0, 0, 1, 1 }; - lis[1] = .{ 0, 0, 3, 1 }; - lis[2] = .{ 0, 0, 5, 1 }; - lis[3] = .{ 0, 0, 7, 1 }; - lis[4] = .{ 0, 0, 1, 2 }; + lis := LineInterp.[ + .{ 0, 0, 1, 1 }, + .{ 0, 0, 3, 1 }, + .{ 0, 0, 5, 1 }, + .{ 0, 0, 7, 1 }, + .{ 0, 0, 1, 2 }, + ]; tree_prod: u64 = 1; -- 2.25.1