From: Brendan Hansen Date: Wed, 23 Jun 2021 16:35:10 +0000 (-0500) Subject: added members to enum type info X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=61362f27e0cb06cfc19d97804769c5b7319c821f;p=onyx.git added members to enum type info --- diff --git a/bin/onyx b/bin/onyx index b0b63777..c55c29c4 100755 Binary files a/bin/onyx and b/bin/onyx differ diff --git a/modules/json/encoder.onyx b/modules/json/encoder.onyx index 99ce21e5..286a8d5b 100644 --- a/modules/json/encoder.onyx +++ b/modules/json/encoder.onyx @@ -134,4 +134,4 @@ encode :: #match { // #precedence 1000 (w: ^io.Writer, v: $T) -> Encoding_Error { // return .Unsupported_Type; // } -} \ No newline at end of file +} diff --git a/modules/ui/components/slider.onyx b/modules/ui/components/slider.onyx index 4c1251a1..6fbfe9a4 100644 --- a/modules/ui/components/slider.onyx +++ b/modules/ui/components/slider.onyx @@ -10,8 +10,9 @@ Slider_Theme :: struct { box_border_color := gfx.Color4.{ 0.2, 0.2, 0.2 }; box_border_width := 4.0f; @InPixels - bar_color := gfx.Color4.{ 0.4, 0.4, 0.4 }; - bar_hover_color := gfx.Color4.{ 1, 0, 0 }; + bar_color := gfx.Color4.{ 0.4, 0.4, 0.4 }; + bar_hover_color := gfx.Color4.{ 0, 0, 1 }; + bar_hover_negative_color := gfx.Color4.{ 1, 0, 0 }; // The color when value is less than 0 } default_slider_theme := Slider_Theme.{}; @@ -62,7 +63,9 @@ slider :: (use r: Rectangle, value: ^$T, min_value: T, max_value: T, text: str, box_border_width := theme.box_border_width; - bar_color := color_lerp(animation_state.hover_time, theme.bar_color, theme.bar_hover_color); + bar_color := theme.bar_color; + if *value < 0 do bar_color = color_lerp(animation_state.hover_time, bar_color, theme.bar_hover_negative_color); + else do bar_color = color_lerp(animation_state.hover_time, bar_color, theme.bar_hover_color); gfx.set_texture(); gfx.rect(.{ x0, y0 }, .{ width, height }, theme.box_border_color); diff --git a/src/onyxwasm_type_table.c b/src/onyxwasm_type_table.c index e14f9906..936dbb4f 100644 --- a/src/onyxwasm_type_table.c +++ b/src/onyxwasm_type_table.c @@ -121,14 +121,35 @@ u64 build_type_table(OnyxWasmModule* module) { } case Type_Kind_Enum: { + AstEnumType* ast_enum = (AstEnumType *) type->ast_type; + u32 member_count = bh_arr_length(ast_enum->values); + u32* name_locations = bh_alloc_array(global_scratch_allocator, u32, member_count); + + u32 i = 0; + bh_arr_each(AstEnumValue *, value, ast_enum->values) { + name_locations[i++] = table_buffer.length; + + bh_buffer_append(&table_buffer, (*value)->token->text, (*value)->token->length); + } + bh_buffer_align(&table_buffer, 8); + + u32 member_base = table_buffer.length; + i = 0; + bh_arr_each(AstEnumValue *, value, ast_enum->values) { + u32 name_loc = name_locations[i++]; + + bh_buffer_align(&table_buffer, 8); + PATCH; + bh_buffer_write_u64(&table_buffer, name_loc); + bh_buffer_write_u64(&table_buffer, (*value)->token->length); + bh_buffer_write_u64(&table_buffer, (*value)->value->value.l); + } u32 name_base = table_buffer.length; u32 name_length = strlen(type->Enum.name); bh_buffer_append(&table_buffer, type->Enum.name, name_length); bh_buffer_align(&table_buffer, 8); - // u32 member_base = table_buffer.length; - table_info[type_idx] = table_buffer.length; bh_buffer_write_u32(&table_buffer, type->kind); bh_buffer_write_u32(&table_buffer, type_size_of(type)); @@ -137,8 +158,9 @@ u64 build_type_table(OnyxWasmModule* module) { PATCH; bh_buffer_write_u64(&table_buffer, name_base); bh_buffer_write_u64(&table_buffer, name_length); - bh_buffer_write_u64(&table_buffer, 0); // TODO: Add member info here. Also, Patching - bh_buffer_write_u64(&table_buffer, 0); + PATCH; + bh_buffer_write_u64(&table_buffer, member_base); + bh_buffer_write_u64(&table_buffer, member_count); bh_buffer_write_u32(&table_buffer, type->Enum.is_flags ? 1 : 0); break; }