From d6b9de081756751d19d93394aa90bdf28786d6f2 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sun, 20 Jun 2021 13:26:38 -0500 Subject: [PATCH] bugfixes and added animation theme to ui module --- bin/onyx | Bin 409896 -> 409896 bytes modules/ui/components/button.onyx | 7 ++++--- modules/ui/components/checkbox.onyx | 7 ++++--- modules/ui/components/radio.onyx | 7 ++++--- modules/ui/components/slider.onyx | 5 +++-- modules/ui/components/textbox.onyx | 8 +++++--- modules/ui/ui.onyx | 8 ++++++-- src/onyxwasm.c | 4 ++-- tests/better_field_accesses.onyx | 2 +- 9 files changed, 29 insertions(+), 19 deletions(-) diff --git a/bin/onyx b/bin/onyx index b1ce16726ffed35a915b720812578387b2208bf3..3cdf33078f221ccec0230eb62cbeabdf107a06a3 100755 GIT binary patch delta 26728 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 delta 27049 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 diff --git a/modules/ui/components/button.onyx b/modules/ui/components/button.onyx index c647b2e3..0ba70b53 100644 --- a/modules/ui/components/button.onyx +++ b/modules/ui/components/button.onyx @@ -3,6 +3,7 @@ use package core Button_Theme :: struct { use text_theme := Text_Theme.{}; + use animation_theme := Animation_Theme.{}; background_color := gfx.Color4.{ 0.1, 0.1, 0.1 }; hover_color := gfx.Color4.{ 0.3, 0.3, 0.3 }; @@ -41,9 +42,9 @@ button :: (use r: Rectangle, text: str, theme := ^default_button_theme, site := } if is_hot_item(hash) { - move_towards(^animation_state.hover_time, 1.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 1.0f, theme.hover_speed); } else { - move_towards(^animation_state.hover_time, 0.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 0.0f, theme.hover_speed); } border_width := theme.border_width; @@ -65,7 +66,7 @@ button :: (use r: Rectangle, text: str, theme := ^default_button_theme, site := y0 + ~~ font.common.baseline * theme.font_size + (height - text_height) / 2, theme.font_size, theme.text_color); - move_towards(^animation_state.click_time, 0.0f, 0.08f); @ThemeConfiguration + move_towards(^animation_state.click_time, 0.0f, theme.click_decay_speed); if animation_state.click_time > 0 || animation_state.hover_time > 0 { map.put(^animation_states, hash, animation_state); diff --git a/modules/ui/components/checkbox.onyx b/modules/ui/components/checkbox.onyx index 6b84e1ad..d844a507 100644 --- a/modules/ui/components/checkbox.onyx +++ b/modules/ui/components/checkbox.onyx @@ -3,6 +3,7 @@ use package core Checkbox_Theme :: struct { use text_theme := Text_Theme.{}; + use animation_theme := Animation_Theme.{}; box_color := gfx.Color4.{ 0.2, 0.2, 0.2 }; box_border_width := 4.0f; @InPixels @@ -46,9 +47,9 @@ checkbox :: (use r: Rectangle, value: ^bool, text: str, theme := ^default_checkb } if is_hot_item(hash) { - move_towards(^animation_state.hover_time, 1.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 1.0f, theme.hover_speed); } else { - move_towards(^animation_state.hover_time, 0.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 0.0f, theme.hover_speed); } @@ -90,7 +91,7 @@ checkbox :: (use r: Rectangle, value: ^bool, text: str, theme := ^default_checkb y0 + ~~ font.common.baseline * theme.font_size + (height - text_height) / 2, theme.font_size, theme.text_color); - move_towards(^animation_state.click_time, 0.0f, 0.08f); @ThemeConfiguration + move_towards(^animation_state.click_time, 0.0f, theme.click_decay_speed); if animation_state.click_time > 0 || animation_state.hover_time > 0 { map.put(^animation_states, hash, animation_state); diff --git a/modules/ui/components/radio.onyx b/modules/ui/components/radio.onyx index 3f27952c..3ca62cf1 100644 --- a/modules/ui/components/radio.onyx +++ b/modules/ui/components/radio.onyx @@ -3,6 +3,7 @@ use package core Radio_Theme :: struct { use text_theme := Text_Theme.{}; + use animation_theme := Animation_Theme.{}; radio_color := gfx.Color4.{ 0.2, 0.2, 0.2 }; radio_border_radius := 4.0f; @InPixels @@ -46,9 +47,9 @@ radio :: (use r: Rectangle, selected: ^$T, value: T, text: str, theme := ^defaul } if is_hot_item(hash) { - move_towards(^animation_state.hover_time, 1.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 1.0f, theme.hover_speed); } else { - move_towards(^animation_state.hover_time, 0.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 0.0f, theme.hover_speed); } radius := theme.radio_radius; @@ -82,7 +83,7 @@ radio :: (use r: Rectangle, selected: ^$T, value: T, text: str, theme := ^defaul y0 + ~~ font.common.baseline * theme.font_size + (height - text_height) / 2, theme.font_size, theme.text_color); - move_towards(^animation_state.click_time, 0.0f, 0.08f); @ThemeConfiguration + move_towards(^animation_state.click_time, 0.0f, theme.click_decay_speed); if animation_state.click_time > 0 || animation_state.hover_time > 0 { map.put(^animation_states, hash, animation_state); diff --git a/modules/ui/components/slider.onyx b/modules/ui/components/slider.onyx index 04859b48..d8a42622 100644 --- a/modules/ui/components/slider.onyx +++ b/modules/ui/components/slider.onyx @@ -4,6 +4,7 @@ use package core Slider_Theme :: struct { use text_theme := Text_Theme.{}; + use animation_theme := Animation_Theme.{}; box_color := gfx.Color4.{ 0.1, 0.1, 0.1 }; box_border_color := gfx.Color4.{ 0.2, 0.2, 0.2 }; @@ -39,9 +40,9 @@ slider :: (use r: Rectangle, value: ^$T, min_value: T, max_value: T, text: str, } if is_hot_item(hash) { - move_towards(^animation_state.hover_time, 1.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 1.0f, theme.hover_speed); } else { - move_towards(^animation_state.hover_time, 0.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 0.0f, theme.hover_speed); } box_border_width := theme.box_border_width; diff --git a/modules/ui/components/textbox.onyx b/modules/ui/components/textbox.onyx index 044c217c..52d26a7e 100644 --- a/modules/ui/components/textbox.onyx +++ b/modules/ui/components/textbox.onyx @@ -7,6 +7,8 @@ Textbox_Theme :: struct { // text_color = .{1, 1, 1} }; + use animation_theme := Animation_Theme.{}; + // background_color := gfx.Color4.{ 0.1, 0.1, 0.1 }; // hover_color := gfx.Color4.{ 0.3, 0.3, 0.3 }; // click_color := gfx.Color4.{ 0.5, 0.5, 0.7 }; @@ -131,9 +133,9 @@ textbox :: (use r: Rectangle, text_buffer: ^string.String_Buffer, theme := ^defa } if is_hot_item(hash) { - move_towards(^animation_state.hover_time, 1.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 1.0f, theme.hover_speed); } else { - move_towards(^animation_state.hover_time, 0.0f, 0.1f); @ThemeConfiguration + move_towards(^animation_state.hover_time, 0.0f, theme.hover_speed); } gfx.set_texture(); @@ -159,7 +161,7 @@ textbox :: (use r: Rectangle, text_buffer: ^string.String_Buffer, theme := ^defa color=cursor_color); } - move_towards(^animation_state.click_time, 0.0f, 0.08f); @ThemeConfiguration + move_towards(^animation_state.click_time, 0.0f, theme.click_decay_speed); if animation_state.click_time > 0 || animation_state.hover_time > 0 { map.put(^animation_states, hash, animation_state); diff --git a/modules/ui/ui.onyx b/modules/ui/ui.onyx index c99047e7..39f67518 100644 --- a/modules/ui/ui.onyx +++ b/modules/ui/ui.onyx @@ -235,9 +235,13 @@ Text_Theme :: struct { } default_text_theme := Text_Theme.{}; - +Animation_Theme :: struct { + hover_speed := 0.1f; + click_decay_speed := 0.08f; +} + // Animation states are stored globally as there is not much to the state of a button. @@ -309,4 +313,4 @@ get_text_width :: (text: str, size := DEFAULT_TEXT_SIZE) -> f32 { b = c1.b * (1 - t) + c2.b * t, a = c1.a * (1 - t) + c2.a * t, @Cleanup // should this be interpolating alphas? }; -} \ No newline at end of file +} diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 0fa7eb94..55c8b280 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -2410,7 +2410,7 @@ EMIT_FUNC(expression, AstTyped* expr) { } } - if (is_lval((AstNode *) field->expr)) { + if (is_lval((AstNode *) field->expr) || type_is_pointer(field->expr->type)) { u64 offset = 0; emit_field_access_location(mod, &code, field, &offset); emit_load_instruction(mod, &code, field->type, offset); @@ -3301,7 +3301,6 @@ OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc) { bh_arr_new(alloc, module.data, 4); bh_arr_new(alloc, module.elems, 4); - // NOTE: 16 is probably needlessly large bh_arr_new(global_heap_allocator, module.structured_jump_target, 16); bh_arr_set_length(module.structured_jump_target, 0); @@ -3407,6 +3406,7 @@ void emit_entity(Entity* ent) { case Entity_Type_Global: emit_global(module, ent->global); break; // Cleanup: Maybe these should be printed elsewhere? + // Also, they should be sorted? Or have that ability? case Entity_Type_Note: { if (!context.options->print_notes) break; diff --git a/tests/better_field_accesses.onyx b/tests/better_field_accesses.onyx index 124b72b6..3485f315 100644 --- a/tests/better_field_accesses.onyx +++ b/tests/better_field_accesses.onyx @@ -24,4 +24,4 @@ main :: (args: [] cstr) { println(get_foo().age); println((Foo.{ 0, 0, "Worked!", 0 }).name); -} \ No newline at end of file +} -- 2.25.1