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.{};
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);
}
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));
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;
}