diff --git a/src/df/core/df_core.c b/src/df/core/df_core.c index 13127f51..a8784f16 100644 --- a/src/df/core/df_core.c +++ b/src/df/core/df_core.c @@ -5708,10 +5708,11 @@ df_eval_viz_row_list_push_new(Arena *arena, EVAL_ParseCtx *parse_ctx, DF_EvalViz rows->count += 1; // rjf: fill basics - row->depth = block->depth; - row->parent_key = block->parent_key; - row->key = key; - row->eval = eval; + row->depth = block->depth; + row->parent_key = block->parent_key; + row->key = key; + row->eval = eval; + row->size_in_rows = 1; // rjf: determine exandability, editability if(tg_kind_from_key(eval.type_key) != TG_Kind_Null) diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index 329aee90..6a011d04 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -3457,7 +3457,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) ui_push_font_size(main_font_size); ui_push_pref_width(ui_em(20.f, 1)); ui_push_pref_height(ui_em(2.5f, 1.f)); - ui_push_scheme(df_ui_color_scheme_from_code(DF_UIColorSchemeCode_Default)); + ui_push_palette(df_palette_from_code(DF_PaletteCode_Default)); ui_push_blur_size(10.f); } @@ -3503,7 +3503,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_Size main_width = ui_top_pref_width(); UI_Size main_height = ui_top_pref_height(); UI_TextAlign main_text_align = ui_top_text_alignment(); - DF_UIColorScheme(DF_UIColorSchemeCode_TabActive) + DF_Palette(DF_PaletteCode_TabActive) UI_Tooltip UI_PrefWidth(main_width) UI_PrefHeight(main_height) @@ -3564,7 +3564,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) //- rjf: entity drop completion ctx menu // { - DF_UIColorScheme(DF_UIColorSchemeCode_Floating) + DF_Palette(DF_PaletteCode_Floating) UI_CtxMenu(ws->drop_completion_ctx_menu_key) UI_PrefWidth(ui_em(30.f, 1.f)) { @@ -3715,7 +3715,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) //////////////////////////// //- rjf: universal ctx menus // - DF_UIColorScheme(DF_UIColorSchemeCode_Floating) + DF_Palette(DF_PaletteCode_Floating) { Temp scratch = scratch_begin(&arena, 1); @@ -3752,12 +3752,12 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_Flags(UI_BoxFlag_DrawTextWeak) ui_label(df_g_entity_kind_display_string_table[entity->kind]); { - UI_ColorScheme *scheme = ui_top_scheme(); + UI_Palette *palette = ui_top_palette(); if(entity->flags & DF_EntityFlag_HasColor) { - scheme = ui_fork_top_color_scheme(.text = df_rgba_from_entity(entity)); + palette = ui_build_palette(ui_top_palette(), .text = df_rgba_from_entity(entity)); } - UI_Scheme(scheme) + UI_Palette(palette) UI_PrefWidth(ui_text_dim(10, 1)) UI_Font((kind_flags & DF_EntityKindFlag_NameIsCode) ? df_font_from_slot(DF_FontSlot_Code) : ui_top_font()) ui_label(display_name); @@ -3933,7 +3933,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) if(op_flags & DF_EntityOpFlag_Freeze) { B32 is_frozen = df_entity_is_frozen(entity); - ui_set_next_scheme(df_ui_color_scheme_from_code(is_frozen ? DF_UIColorSchemeCode_SpecialNegative : DF_UIColorSchemeCode_SpecialPositive)); + ui_set_next_palette(df_palette_from_code(is_frozen ? DF_PaletteCode_SpecialNegative : DF_PaletteCode_SpecialPositive)); if(is_frozen && ui_clicked(df_icon_buttonf(DF_IconKind_Locked, 0, "Thaw###freeze_thaw"))) { DF_CmdParams params = df_cmd_params_from_window(ws); @@ -4203,7 +4203,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) for(U64 preset_idx = 0; preset_idx < ArrayCount(presets); preset_idx += 1) { ui_set_next_hover_cursor(OS_Cursor_HandPoint); - ui_set_next_scheme(ui_fork_top_color_scheme(.background = presets[preset_idx])); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = presets[preset_idx])); UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_DrawBackground| UI_BoxFlag_DrawBorder| UI_BoxFlag_Clickable| @@ -4369,15 +4369,17 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { Vec2F32 window_dim = dim_2f32(window_rect); UI_Box *bg_box = &ui_g_nil_box; + UI_Palette *palette = ui_build_palette(df_palette_from_code(DF_PaletteCode_Floating)); + palette->background.w *= df_gfx_state->confirm_t; UI_Rect(window_rect) UI_ChildLayoutAxis(Axis2_X) UI_Focus(UI_FocusKind_On) UI_BlurSize(10*df_gfx_state->confirm_t) - DF_UIColorScheme(DF_UIColorSchemeCode_Floating) + UI_Palette(palette) { bg_box = ui_build_box_from_stringf(UI_BoxFlag_FixedSize|UI_BoxFlag_Floating|UI_BoxFlag_Clickable|UI_BoxFlag_Scroll|UI_BoxFlag_DefaultFocusNav|UI_BoxFlag_DrawBackgroundBlur|UI_BoxFlag_DrawBackground, "###confirm_popup_%p", ws); } - if(df_gfx_state->confirm_active) UI_Parent(bg_box) + if(df_gfx_state->confirm_active) UI_Parent(bg_box) UI_Transparency(1-df_gfx_state->confirm_t) { ui_ctx_menu_close(); UI_WidthFill UI_PrefHeight(ui_children_sum(1.f)) UI_Column UI_Padding(ui_pct(1, 0)) @@ -4389,7 +4391,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { UI_CornerRadius00(ui_top_font_size()*0.25f) UI_CornerRadius01(ui_top_font_size()*0.25f) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + DF_Palette(DF_PaletteCode_SpecialNeutral) if(ui_clicked(ui_buttonf("OK")) || (ui_key_match(bg_box->default_nav_focus_hot_key, ui_key_zero()) && ui_slot_press(UI_EventActionSlot_Accept))) { DF_CmdParams p = df_cmd_params_zero(); @@ -4707,7 +4709,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) os_window_push_custom_edges(ws->os, window_edge_px); os_window_push_custom_title_bar(ws->os, dim_2f32(top_bar_rect).y); ui_set_next_flags(UI_BoxFlag_DefaultFocusNav); - DF_UIColorScheme(DF_UIColorSchemeCode_MenuBar) + DF_Palette(DF_PaletteCode_MenuBar) UI_Focus((ws->menu_bar_focused && window_is_focused && !ui_any_ctx_menu_is_open() && !hover_eval_is_open) ? UI_FocusKind_On : UI_FocusKind_Null) UI_Pane(top_bar_rect, str8_lit("###top_bar")) UI_WidthFill UI_Row @@ -4892,14 +4894,14 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) for(DF_EntityNode *n = targets_list.first; n != 0; n = n->next) { DF_Entity *target = n->entity; - UI_ColorScheme *scheme = ui_top_scheme(); + UI_Palette *palette = ui_top_palette(); if(target->flags & DF_EntityFlag_HasColor) { - scheme = ui_fork_top_color_scheme(.text = df_rgba_from_entity(target)); + palette = ui_build_palette(ui_top_palette(), .text = df_rgba_from_entity(target)); } String8 target_name = df_display_string_from_entity(scratch.arena, target); UI_Signal sig = {0}; - UI_Scheme(scheme) sig = df_icon_buttonf(DF_IconKind_Target, 0, "%S##%p", target_name, target); + UI_Palette(palette) sig = df_icon_buttonf(DF_IconKind_Target, 0, "%S##%p", target_name, target); if(ui_clicked(sig)) { DF_CmdParams params = df_cmd_params_from_window(ws); @@ -5093,7 +5095,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) // rjf: conversion task visualization UI_PrefWidth(ui_text_dim(10, 1)) UI_HeightFill - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + DF_Palette(DF_PaletteCode_SpecialNeutral) { Temp scratch = scratch_begin(&arena, 1); DF_EntityList tasks = df_query_cached_entity_list_with_kind(DF_EntityKind_ConversionTask); @@ -5140,7 +5142,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) if(can_play || !have_targets || processes.count == 0) UI_TextAlignment(UI_TextAlign_Center) UI_Flags((can_play ? 0 : UI_BoxFlag_Disabled)) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialPositive) + DF_Palette(DF_PaletteCode_SpecialPositive) { UI_Signal sig = ui_button(df_g_icon_kind_text_table[DF_IconKind_Play]); os_window_push_custom_title_bar_client_area(ws->os, sig.box->rect); @@ -5181,7 +5183,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) //- rjf: restart button if(!can_play && processes.count != 0) UI_TextAlignment(UI_TextAlign_Center) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialPositive) + DF_Palette(DF_PaletteCode_SpecialPositive) { UI_Signal sig = ui_button(df_g_icon_kind_text_table[DF_IconKind_Redo]); os_window_push_custom_title_bar_client_area(ws->os, sig.box->rect); @@ -5216,7 +5218,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) //- rjf: pause button UI_TextAlignment(UI_TextAlign_Center) UI_Flags(can_pause ? 0 : UI_BoxFlag_Disabled) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + DF_Palette(DF_PaletteCode_SpecialNeutral) { UI_Signal sig = ui_button(df_g_icon_kind_text_table[DF_IconKind_Pause]); os_window_push_custom_title_bar_client_area(ws->os, sig.box->rect); @@ -5243,7 +5245,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) //- rjf: stop button UI_TextAlignment(UI_TextAlign_Center) UI_Flags(can_stop ? 0 : UI_BoxFlag_Disabled) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNegative) + DF_Palette(DF_PaletteCode_SpecialNegative) { UI_Signal sig = {0}; { @@ -5381,7 +5383,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) ui_spacer(ui_pct(1, 0)); // rjf: loaded user viz - if(do_user_prof) DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + if(do_user_prof) DF_Palette(DF_PaletteCode_SpecialNeutral) { ui_set_next_pref_width(ui_children_sum(1)); ui_set_next_child_layout_axis(Axis2_X); @@ -5416,7 +5418,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) } // rjf: loaded project viz - if(do_user_prof) DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + if(do_user_prof) DF_Palette(DF_PaletteCode_SpecialNeutral) { ui_set_next_pref_width(ui_children_sum(1)); ui_set_next_child_layout_axis(Axis2_X); @@ -5463,7 +5465,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) max_sig = df_icon_buttonf(DF_IconKind_Window, 0, "##maximize"); } UI_PrefWidth(ui_px(button_dim*2, 1.f)) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNegative) + DF_Palette(DF_PaletteCode_SpecialNegative) { cls_sig = df_icon_buttonf(DF_IconKind_X, 0, "##close"); } @@ -5495,10 +5497,10 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { B32 is_running = df_ctrl_targets_running() && df_ctrl_last_run_frame_idx() < df_frame_index(); CTRL_Event stop_event = df_ctrl_last_stop_event(); - UI_ColorScheme *positive_scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_SpecialPositive); - UI_ColorScheme *running_scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_SpecialNeutral); - UI_ColorScheme *negative_scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_SpecialNegative); - UI_ColorScheme *scheme = running_scheme; + UI_Palette *positive_scheme = df_palette_from_code(DF_PaletteCode_SpecialPositive); + UI_Palette *running_scheme = df_palette_from_code(DF_PaletteCode_SpecialNeutral); + UI_Palette *negative_scheme = df_palette_from_code(DF_PaletteCode_SpecialNegative); + UI_Palette *palette = running_scheme; if(!is_running) { switch(stop_event.cause) @@ -5506,21 +5508,21 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) default: case CTRL_EventCause_Finished: { - scheme = positive_scheme; + palette = positive_scheme; }break; case CTRL_EventCause_UserBreakpoint: case CTRL_EventCause_InterruptedByException: case CTRL_EventCause_InterruptedByTrap: case CTRL_EventCause_InterruptedByHalt: { - scheme = negative_scheme; + palette = negative_scheme; }break; } } if(ws->error_t > 0.01f) { - UI_ColorScheme *blended_scheme = push_array(ui_build_arena(), UI_ColorScheme, 1); - MemoryCopyStruct(blended_scheme, scheme); + UI_Palette *blended_scheme = push_array(ui_build_arena(), UI_Palette, 1); + MemoryCopyStruct(blended_scheme, palette); for(EachEnumVal(UI_ColorCode, code)) { for(U64 idx = 0; idx < 4; idx += 1) @@ -5528,10 +5530,10 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) blended_scheme->colors[code].v[idx] += (negative_scheme->colors[code].v[idx] - blended_scheme->colors[code].v[idx]) * ws->error_t; } } - scheme = blended_scheme; + palette = blended_scheme; } UI_Flags(UI_BoxFlag_DrawBackground) UI_CornerRadius(0) - UI_Scheme(scheme) + UI_Palette(palette) UI_Pane(bottom_bar_rect, str8_lit("###bottom_bar")) UI_WidthFill UI_Row UI_Flags(0) { @@ -5584,7 +5586,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_Flags(UI_BoxFlag_DrawBackground) UI_TextAlignment(UI_TextAlign_Center) UI_CornerRadius(4) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + DF_Palette(DF_PaletteCode_SpecialNeutral) ui_labelf("Currently rebinding \"%S\" hotkey", df_gfx_state->bind_change_cmd_spec->info.display_name); } @@ -5752,6 +5754,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) //- rjf: build query text input B32 query_completed = 0; + B32 query_cancelled = 0; UI_Parent(query_container_box) UI_WidthFill UI_PrefHeight(ui_px(query_line_edit_height, 1.f)) UI_Focus(UI_FocusKind_On) @@ -5789,13 +5792,20 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) ws->query_view_selected = 1; } } - UI_PrefWidth(ui_em(5.f, 1.f)) UI_Focus(UI_FocusKind_Off) + UI_PrefWidth(ui_em(5.f, 1.f)) UI_Focus(UI_FocusKind_Off) DF_Palette(DF_PaletteCode_SpecialPositive) { if(ui_clicked(df_icon_buttonf(DF_IconKind_RightArrow, 0, "##complete_query"))) { query_completed = 1; } } + UI_PrefWidth(ui_em(3.f, 1.f)) UI_Focus(UI_FocusKind_Off) DF_Palette(DF_PaletteCode_Default) + { + if(ui_clicked(df_icon_buttonf(DF_IconKind_X, 0, "##cancel_query"))) + { + query_cancelled = 1; + } + } } } @@ -5808,8 +5818,8 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) } //- rjf: query submission - if((ui_is_focus_active() || (window_is_focused && !ui_any_ctx_menu_is_open() && !ws->menu_bar_focused && !ws->query_view_selected)) && - ui_slot_press(UI_EventActionSlot_Cancel)) + if(((ui_is_focus_active() || (window_is_focused && !ui_any_ctx_menu_is_open() && !ws->menu_bar_focused && !ws->query_view_selected)) && + ui_slot_press(UI_EventActionSlot_Cancel)) || query_cancelled) { DF_CmdParams params = df_cmd_params_from_window(ws); df_push_cmd__root(¶ms, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_CancelQuery)); @@ -5842,7 +5852,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) } //- rjf: build darkening overlay for rest of screen - UI_Scheme(ui_fork_top_color_scheme(.background = mix_4f32(df_rgba_from_theme_color(DF_ThemeColor_InactivePanelOverlay), v4f32(0, 0, 0, 0), 1-ws->query_view_selected_t))) + UI_Palette(ui_build_palette(ui_top_palette(), .background = mix_4f32(df_rgba_from_theme_color(DF_ThemeColor_InactivePanelOverlay), v4f32(0, 0, 0, 0), 1-ws->query_view_selected_t))) UI_Rect(window_rect) { ui_build_box_from_key(UI_BoxFlag_DrawBackground, ui_key_zero()); @@ -5900,7 +5910,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) if(build_hover_eval && ws->hover_eval_string.size != 0 && hover_eval_is_open) UI_Font(df_font_from_slot(DF_FontSlot_Code)) UI_FontSize(df_font_size_from_slot(ws, DF_FontSlot_Main)) - DF_UIColorScheme(DF_UIColorSchemeCode_Floating) + DF_Palette(DF_PaletteCode_Floating) { Temp scratch = scratch_begin(&arena, 1); DI_Scope *scope = di_scope_open(); @@ -6060,7 +6070,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { Vec4F32 rgba = df_rgba_from_theme_color(DF_ThemeColor_Highlight0); rgba.w *= 0.2f; - ui_set_next_scheme(ui_fork_top_color_scheme(.background = rgba)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = rgba)); } UI_Signal sig = df_line_editf(DF_LineEditFlag_CodeContents| DF_LineEditFlag_DisplayStringIsCode| @@ -6087,7 +6097,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { Vec4F32 rgba = df_rgba_from_theme_color(DF_ThemeColor_Highlight0); rgba.w *= 0.2f; - ui_set_next_scheme(ui_fork_top_color_scheme(.background = rgba)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = rgba)); ui_set_next_flags(UI_BoxFlag_DrawBackground); } df_code_label(1.f, 1, df_rgba_from_theme_color(DF_ThemeColor_CodeDefault), row->display_value); @@ -6243,7 +6253,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) ui_set_next_child_layout_axis(axis2_flip(axis)); if(ui_key_match(key, ui_drop_hot_key())) { - ui_set_next_scheme(ui_fork_top_color_scheme(.border = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .border = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))); } site_box_viz = ui_build_box_from_key(UI_BoxFlag_DrawBackground| UI_BoxFlag_DrawBorder| @@ -6270,7 +6280,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) future_split_rect.p1.v[axis] += drop_site_major_dim_px; future_split_rect.p0.v[axis2_flip(axis)] = panel_rect.p0.v[axis2_flip(axis)]; future_split_rect.p1.v[axis2_flip(axis)] = panel_rect.p1.v[axis2_flip(axis)]; - UI_Rect(future_split_rect) DF_UIColorScheme(DF_UIColorSchemeCode_DropSite) + UI_Rect(future_split_rect) DF_Palette(DF_PaletteCode_DropSite) { ui_build_box_from_key(UI_BoxFlag_DrawBackground, ui_key_zero()); } @@ -6328,7 +6338,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) ui_set_next_child_layout_axis(axis2_flip(split_axis)); if(ui_key_match(key, ui_drop_hot_key())) { - ui_set_next_scheme(ui_fork_top_color_scheme(.border = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .border = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))); } site_box_viz = ui_build_box_from_key(UI_BoxFlag_DrawBackground| UI_BoxFlag_DrawBorder| @@ -6355,7 +6365,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) future_split_rect.p1.v[split_axis] += drop_site_major_dim_px; future_split_rect.p0.v[axis2_flip(split_axis)] = child_rect.p0.v[axis2_flip(split_axis)]; future_split_rect.p1.v[axis2_flip(split_axis)] = child_rect.p1.v[axis2_flip(split_axis)]; - UI_Rect(future_split_rect) DF_UIColorScheme(DF_UIColorSchemeCode_DropSite) + UI_Rect(future_split_rect) DF_Palette(DF_PaletteCode_DropSite) { ui_build_box_from_key(UI_BoxFlag_DrawBackground, ui_key_zero()); } @@ -6631,7 +6641,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) ui_set_next_child_layout_axis(axis2_flip(split_axis)); if(ui_key_match(key, ui_drop_hot_key())) { - ui_set_next_scheme(ui_fork_top_color_scheme(.border = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .border = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))); } site_box_viz = ui_build_box_from_key(UI_BoxFlag_DrawBackground| UI_BoxFlag_DrawBorder| @@ -6646,10 +6656,10 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_Box *row_or_column = ui_build_box_from_key(0, ui_key_zero()); UI_Parent(row_or_column) UI_Padding(ui_px(padding, 1.f)) { if(split_side == Side_Min) { ui_set_next_flags(UI_BoxFlag_DrawBackground); } - DF_UIColorScheme(DF_UIColorSchemeCode_DropSite) ui_build_box_from_key(UI_BoxFlag_DrawBorder, ui_key_zero()); + DF_Palette(DF_PaletteCode_DropSite) ui_build_box_from_key(UI_BoxFlag_DrawBorder, ui_key_zero()); ui_spacer(ui_px(padding, 1.f)); if(split_side == Side_Max) { ui_set_next_flags(UI_BoxFlag_DrawBackground); } - DF_UIColorScheme(DF_UIColorSchemeCode_DropSite) ui_build_box_from_key(UI_BoxFlag_DrawBorder, ui_key_zero()); + DF_Palette(DF_PaletteCode_DropSite) ui_build_box_from_key(UI_BoxFlag_DrawBorder, ui_key_zero()); } } } @@ -6659,7 +6669,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { ui_set_next_child_layout_axis(split_axis); UI_Box *row_or_column = ui_build_box_from_key(0, ui_key_zero()); - UI_Parent(row_or_column) UI_Padding(ui_px(padding, 1.f)) DF_UIColorScheme(DF_UIColorSchemeCode_DropSite) + UI_Parent(row_or_column) UI_Padding(ui_px(padding, 1.f)) DF_Palette(DF_PaletteCode_DropSite) { ui_build_box_from_key(UI_BoxFlag_DrawBorder|UI_BoxFlag_DrawBackground, ui_key_zero()); } @@ -6702,7 +6712,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) Vec2F32 panel_center = center_2f32(panel_rect); future_split_rect.v[side_flip(split_side)].v[split_axis] = panel_center.v[split_axis]; } - UI_Rect(future_split_rect) DF_UIColorScheme(DF_UIColorSchemeCode_DropSite) + UI_Rect(future_split_rect) DF_Palette(DF_PaletteCode_DropSite) { ui_build_box_from_key(UI_BoxFlag_DrawBackground, ui_key_zero()); } @@ -6849,7 +6859,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { F64 pct_done_f64 = ((F64)view->loading_progress_v/(F64)view->loading_progress_v_target); F32 pct_done = (F32)pct_done_f64; - ui_set_next_scheme(ui_fork_top_color_scheme(.background = v4f32(1, 1, 1, 0.2f*view->loading_t))); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = v4f32(1, 1, 1, 0.2f*view->loading_t))); ui_set_next_fixed_x(indicator_region_rect.x0); ui_set_next_fixed_y(indicator_region_rect.y0); ui_set_next_fixed_width(dim_2f32(indicator_region_rect).x*pct_done); @@ -6858,7 +6868,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) } // rjf: fill - ui_set_next_scheme(ui_fork_top_color_scheme(.background = hl_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = hl_color)); ui_set_next_fixed_x(indicator_rect.x0); ui_set_next_fixed_y(indicator_rect.y0); ui_set_next_fixed_width(dim_2f32(indicator_rect).x); @@ -6866,7 +6876,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) ui_build_box_from_key(UI_BoxFlag_DrawBackground|UI_BoxFlag_FloatingX|UI_BoxFlag_FloatingY, ui_key_zero()); // rjf: animated bar - ui_set_next_scheme(ui_fork_top_color_scheme(.border = bd_color, .background = bg_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .border = bd_color, .background = bg_color)); ui_set_next_fixed_x(indicator_region_rect.x0); ui_set_next_fixed_y(indicator_region_rect.y0); ui_set_next_fixed_width(dim_2f32(indicator_region_rect).x); @@ -6878,7 +6888,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) // rjf: build background UI_WidthFill UI_HeightFill { - ui_set_next_scheme(ui_fork_top_color_scheme(.background = bg_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = bg_color)); ui_set_next_blur_size(10.f*view->loading_t); ui_build_box_from_key(UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawBackgroundBlur|UI_BoxFlag_FloatingX|UI_BoxFlag_FloatingY, ui_key_zero()); } @@ -7030,7 +7040,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) ui_spacer(ui_em(0.2f, 1.f)); UI_CornerRadius00(corner_radius) UI_CornerRadius10(corner_radius) - DF_UIColorScheme(DF_UIColorSchemeCode_DropSite) + DF_Palette(DF_PaletteCode_DropSite) { ui_build_box_from_key(UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawBorder, ui_key_zero()); } @@ -7055,7 +7065,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_Box *tab_column_box = ui_build_box_from_stringf(!is_changing_panel_boundaries*UI_BoxFlag_AnimatePosX, "tab_column_%p", view); // rjf: build tab container box - UI_Parent(tab_column_box) UI_PrefHeight(ui_px(tab_bar_vheight, 1)) DF_UIColorScheme(view_is_selected ? DF_UIColorSchemeCode_TabActive : DF_UIColorSchemeCode_TabInactive) + UI_Parent(tab_column_box) UI_PrefHeight(ui_px(tab_bar_vheight, 1)) DF_Palette(view_is_selected ? DF_PaletteCode_TabActive : DF_PaletteCode_TabInactive) { if((!view_is_selected && panel->tab_side == Side_Min) || (view_is_selected && panel->tab_side == Side_Max)) @@ -7100,7 +7110,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { df_font_from_slot(DF_FontSlot_Main), label, - ui_top_scheme()->colors[UI_ColorCode_Text], + ui_top_palette()->colors[UI_ColorCode_Text], ui_top_font_size(), }; d_fancy_string_list_push(scratch.arena, &fstrs, &view_title); @@ -7120,7 +7130,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { df_font_from_slot(DF_FontSlot_Code), str8(view->query_buffer, view->query_string_size), - ui_top_scheme()->colors[UI_ColorCode_TextWeak], + ui_top_palette()->colors[UI_ColorCode_TextWeak], ui_top_font_size(), }; d_fancy_string_list_push(scratch.arena, &fstrs, &query); @@ -7141,6 +7151,9 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_CornerRadius00(0) UI_CornerRadius01(0) { + UI_Palette *palette = ui_build_palette(ui_top_palette()); + palette->background = v4f32(0, 0, 0, 0); + ui_set_next_palette(palette); UI_Signal sig = ui_buttonf("%S###close_view_%p", df_g_icon_kind_text_table[DF_IconKind_X], view); if(ui_clicked(sig) || ui_middle_clicked(sig)) { @@ -7279,8 +7292,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) DF_Panel *drag_panel = df_panel_from_handle(df_g_drag_drop_payload.panel); if(!df_view_is_nil(view) && active_drop_site != 0) { - UI_Scheme(ui_push_color_scheme(.background = df_rgba_from_theme_color(DF_ThemeColor_DropSiteOverlay))) - UI_Rect(tab_bar_rect) + DF_Palette(DF_PaletteCode_DropSite) UI_Rect(tab_bar_rect) ui_build_box_from_key(UI_BoxFlag_DrawBackground, ui_key_zero()); } @@ -7339,7 +7351,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { // rjf: vis { - UI_Scheme(ui_push_color_scheme(.background = df_rgba_from_theme_color(DF_ThemeColor_DropSiteOverlay))) UI_Rect(content_rect) + DF_Palette(DF_PaletteCode_DropSite) UI_Rect(content_rect) ui_build_box_from_key(UI_BoxFlag_DrawBackground, ui_key_zero()); } @@ -7638,7 +7650,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { // rjf: main rectangle { - R_Rect2DInst *inst = d_rect(pad_2f32(box->rect, 1.5f), box->scheme->colors[UI_ColorCode_Background], 0, 0, 1.f); + R_Rect2DInst *inst = d_rect(pad_2f32(box->rect, 1.5f), box->palette->colors[UI_ColorCode_Background], 0, 0, 1.f); MemoryCopyArray(inst->corner_radii, box->corner_radii); } @@ -7834,7 +7846,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) // rjf: draw border if(b->flags & UI_BoxFlag_DrawBorder) { - R_Rect2DInst *inst = d_rect(pad_2f32(b->rect, 1), b->scheme->colors[UI_ColorCode_Border], 0, 1.f, 1.f); + R_Rect2DInst *inst = d_rect(pad_2f32(b->rect, 1), b->palette->colors[UI_ColorCode_Border], 0, 1.f, 1.f); MemoryCopyArray(inst->corner_radii, b->corner_radii); // rjf: hover effect @@ -7859,19 +7871,19 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) F32 softness = 0.5f; if(b->flags & UI_BoxFlag_DrawSideTop) { - d_rect(r2f32p(r.x0, r.y0-half_thickness, r.x1, r.y0+half_thickness), b->scheme->colors[UI_ColorCode_Border], 0, 0, softness); + d_rect(r2f32p(r.x0, r.y0-half_thickness, r.x1, r.y0+half_thickness), b->palette->colors[UI_ColorCode_Border], 0, 0, softness); } if(b->flags & UI_BoxFlag_DrawSideBottom) { - d_rect(r2f32p(r.x0, r.y1-half_thickness, r.x1, r.y1+half_thickness), b->scheme->colors[UI_ColorCode_Border], 0, 0, softness); + d_rect(r2f32p(r.x0, r.y1-half_thickness, r.x1, r.y1+half_thickness), b->palette->colors[UI_ColorCode_Border], 0, 0, softness); } if(b->flags & UI_BoxFlag_DrawSideLeft) { - d_rect(r2f32p(r.x0-half_thickness, r.y0, r.x0+half_thickness, r.y1), b->scheme->colors[UI_ColorCode_Border], 0, 0, softness); + d_rect(r2f32p(r.x0-half_thickness, r.y0, r.x0+half_thickness, r.y1), b->palette->colors[UI_ColorCode_Border], 0, 0, softness); } if(b->flags & UI_BoxFlag_DrawSideRight) { - d_rect(r2f32p(r.x1-half_thickness, r.y0, r.x1+half_thickness, r.y1), b->scheme->colors[UI_ColorCode_Border], 0, 0, softness); + d_rect(r2f32p(r.x1-half_thickness, r.y0, r.x1+half_thickness, r.y1), b->palette->colors[UI_ColorCode_Border], 0, 0, softness); } } @@ -9262,12 +9274,12 @@ df_theme_color_from_txt_token_kind(TXT_TokenKind kind) return color; } -//- rjf: code -> ui color scheme +//- rjf: code -> palette -internal UI_ColorScheme * -df_ui_color_scheme_from_code(DF_UIColorSchemeCode code) +internal UI_Palette * +df_palette_from_code(DF_PaletteCode code) { - UI_ColorScheme *result = &df_gfx_state->cfg_ui_color_schemes[code]; + UI_Palette *result = &df_gfx_state->cfg_palettes[code]; return result; } @@ -9775,28 +9787,28 @@ df_cmd_binding_button(DF_CmdSpec *spec) } } - //- rjf: form color scheme - UI_ColorScheme *scheme = ui_top_scheme(); + //- rjf: form color palette + UI_Palette *palette = ui_top_palette(); if(has_conflicts || (df_gfx_state->bind_change_active && df_gfx_state->bind_change_cmd_spec == spec)) { - scheme = push_array(ui_build_arena(), UI_ColorScheme, 1); - MemoryCopyStruct(scheme, ui_top_scheme()); + palette = push_array(ui_build_arena(), UI_Palette, 1); + MemoryCopyStruct(palette, ui_top_palette()); if(has_conflicts) { - scheme->colors[UI_ColorCode_Text] = df_rgba_from_theme_color(DF_ThemeColor_DefaultTextNegative); + palette->colors[UI_ColorCode_Text] = df_rgba_from_theme_color(DF_ThemeColor_DefaultTextNegative); } if(df_gfx_state->bind_change_active && df_gfx_state->bind_change_cmd_spec == spec) { - scheme->colors[UI_ColorCode_Border] = df_rgba_from_theme_color(DF_ThemeColor_Highlight1); - scheme->colors[UI_ColorCode_Background] = df_rgba_from_theme_color(DF_ThemeColor_Highlight1); - scheme->colors[UI_ColorCode_Background].w *= 0.25f; + palette->colors[UI_ColorCode_Border] = df_rgba_from_theme_color(DF_ThemeColor_Highlight1); + palette->colors[UI_ColorCode_Background] = df_rgba_from_theme_color(DF_ThemeColor_Highlight1); + palette->colors[UI_ColorCode_Background].w *= 0.25f; } } //- rjf: build box ui_set_next_hover_cursor(OS_Cursor_HandPoint); ui_set_next_text_alignment(UI_TextAlign_Center); - ui_set_next_scheme(scheme); + ui_set_next_palette(palette); UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_DrawText| UI_BoxFlag_Clickable| UI_BoxFlag_DrawActiveEffects, @@ -9995,7 +10007,7 @@ df_entity_tooltips(DF_Entity *entity) { if(entity->flags & DF_EntityFlag_HasColor) { - ui_set_next_scheme(ui_fork_top_color_scheme(.text = df_rgba_from_entity(entity))); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = df_rgba_from_entity(entity))); } UI_PrefWidth(ui_text_dim(10, 1)) ui_label(display_string); } @@ -10009,7 +10021,7 @@ df_entity_tooltips(DF_Entity *entity) String8 explanation = df_stop_explanation_string_icon_from_ctrl_event(scratch.arena, &stop_event, &icon_kind); if(explanation.size != 0) { - UI_PrefWidth(ui_children_sum(1)) UI_Row DF_UIColorScheme(DF_UIColorSchemeCode_DefaultNegative) + UI_PrefWidth(ui_children_sum(1)) UI_Row DF_Palette(DF_PaletteCode_DefaultNegative) { UI_PrefWidth(ui_em(1.5f, 1.f)) UI_Font(df_font_from_slot(DF_FontSlot_Icons)) ui_label(df_g_icon_kind_text_table[icon_kind]); UI_PrefWidth(ui_text_dim(10, 1)) ui_label(explanation); @@ -10080,7 +10092,7 @@ df_entity_tooltips(DF_Entity *entity) { if(entity->flags & DF_EntityFlag_HasColor) { - ui_set_next_scheme(ui_fork_top_color_scheme(.text = df_rgba_from_entity(entity))); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = df_rgba_from_entity(entity))); } String8 display_string = df_display_string_from_entity(scratch.arena, entity); UI_PrefWidth(ui_text_dim(10, 1)) ui_label(display_string); @@ -10108,7 +10120,7 @@ df_entity_tooltips(DF_Entity *entity) { if(entity->flags & DF_EntityFlag_HasColor) { - ui_set_next_scheme(ui_fork_top_color_scheme(.text = df_rgba_from_entity(entity))); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = df_rgba_from_entity(entity))); } String8 display_string = df_display_string_from_entity(scratch.arena, entity); UI_PrefWidth(ui_text_dim(10, 1)) df_code_label(1.f, 1, df_rgba_from_theme_color(DF_ThemeColor_CodeDefault), display_string); @@ -10122,7 +10134,7 @@ df_entity_desc_button(DF_Window *ws, DF_Entity *entity, FuzzyMatchRangeList *nam { ProfBeginFunction(); Temp scratch = scratch_begin(0, 0); - UI_ColorScheme *scheme = ui_top_scheme(); + UI_Palette *palette = ui_top_palette(); if(entity->kind == DF_EntityKind_Thread) { DF_CtrlCtx ctrl_ctx = df_ctrl_ctx_from_window(ws); @@ -10131,7 +10143,7 @@ df_entity_desc_button(DF_Window *ws, DF_Entity *entity, FuzzyMatchRangeList *nam DF_Entity *selected_thread = df_entity_from_handle(ctrl_ctx.thread); if(selected_thread == entity) { - scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_SpecialNeutral); + palette = df_palette_from_code(DF_PaletteCode_SpecialNeutral); } if(stopped_thread == entity && (stop_event.cause == CTRL_EventCause_UserBreakpoint || @@ -10139,19 +10151,19 @@ df_entity_desc_button(DF_Window *ws, DF_Entity *entity, FuzzyMatchRangeList *nam stop_event.cause == CTRL_EventCause_InterruptedByTrap || stop_event.cause == CTRL_EventCause_InterruptedByHalt)) { - scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_SpecialNegative); + palette = df_palette_from_code(DF_PaletteCode_SpecialNegative); } } if(entity->cfg_src == DF_CfgSrc_CommandLine) { - scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_SpecialNeutral); + palette = df_palette_from_code(DF_PaletteCode_SpecialNeutral); } else if(entity->kind == DF_EntityKind_Target && entity->b32 != 0) { - scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_DefaultPositive); + palette = df_palette_from_code(DF_PaletteCode_DefaultPositive); } ui_set_next_hover_cursor(OS_Cursor_HandPoint); - ui_set_next_scheme(scheme); + ui_set_next_palette(palette); UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_Clickable| UI_BoxFlag_DrawBorder| UI_BoxFlag_DrawBackground| @@ -10165,8 +10177,8 @@ df_entity_desc_button(DF_Window *ws, DF_Entity *entity, FuzzyMatchRangeList *nam DF_EntityKindFlags kind_flags = df_g_entity_kind_flags_table[entity->kind]; DF_EntityOpFlags op_flags = df_g_entity_kind_op_flags_table[entity->kind]; DF_IconKind icon = df_g_entity_kind_icon_kind_table[entity->kind]; - Vec4F32 entity_color = scheme->colors[UI_ColorCode_Text]; - Vec4F32 entity_color_weak = scheme->colors[UI_ColorCode_TextWeak]; + Vec4F32 entity_color = palette->colors[UI_ColorCode_Text]; + Vec4F32 entity_color_weak = palette->colors[UI_ColorCode_TextWeak]; if(entity->flags & DF_EntityFlag_HasColor) { entity_color = df_rgba_from_entity(entity); @@ -10198,8 +10210,9 @@ df_entity_desc_button(DF_Window *ws, DF_Entity *entity, FuzzyMatchRangeList *nam } } String8 label = df_display_string_from_entity(scratch.arena, entity); - UI_Scheme(ui_fork_top_color_scheme(.text = entity_color)) + UI_Palette(ui_build_palette(ui_top_palette(), .text = entity_color)) UI_Font(kind_flags&DF_EntityKindFlag_NameIsCode ? df_font_from_slot(DF_FontSlot_Code) : ui_top_font()) + UI_Flags(entity->kind == DF_EntityKind_Thread ? UI_BoxFlag_DisableTruncatedHover : 0) { UI_Signal label_sig = ui_label(label); if(name_matches != 0) @@ -10219,7 +10232,8 @@ df_entity_desc_button(DF_Window *ws, DF_Entity *entity, FuzzyMatchRangeList *nam if(entity->kind == DF_EntityKind_Thread) UI_FontSize(ui_top_font_size()*0.75f) UI_Font(df_font_from_slot(DF_FontSlot_Code)) - UI_Scheme(ui_fork_top_color_scheme(.text = df_rgba_from_theme_color(DF_ThemeColor_CodeProcedure))) + UI_Palette(ui_build_palette(ui_top_palette(), .text = df_rgba_from_theme_color(DF_ThemeColor_CodeProcedure))) + UI_Flags(UI_BoxFlag_DisableTruncatedHover) { CTRL_Unwind unwind = df_query_cached_unwind_from_thread(entity); DF_Entity *process = df_entity_ancestor_from_kind(entity, DF_EntityKind_Process); @@ -10710,7 +10724,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ ui_set_next_font_size(params->font_size); ui_set_next_pref_width(ui_pct(1, 0)); ui_set_next_pref_height(ui_pct(1, 0)); - ui_set_next_scheme(ui_fork_top_color_scheme(.text = color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = color)); ui_set_next_text_alignment(UI_TextAlign_Center); UI_Key thread_box_key = ui_key_from_stringf(top_container_box->key, "###ip_%p", thread); UI_Box *thread_box = ui_build_box_from_key(UI_BoxFlag_DisableTextTrunc| @@ -10874,7 +10888,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ ui_set_next_font_size(params->font_size); ui_set_next_pref_width(ui_pct(1, 0)); ui_set_next_pref_height(ui_pct(1, 0)); - ui_set_next_scheme(ui_fork_top_color_scheme(.text = color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = color)); ui_set_next_text_alignment(UI_TextAlign_Center); UI_Key thread_box_key = ui_key_from_stringf(top_container_box->key, "###ip_%p", thread); UI_Box *thread_box = ui_build_box_from_key(UI_BoxFlag_DisableTextTrunc| @@ -10997,7 +11011,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ ui_set_next_font(df_font_from_slot(DF_FontSlot_Icons)); ui_set_next_font_size(params->font_size * 1.f); ui_set_next_hover_cursor(OS_Cursor_HandPoint); - ui_set_next_scheme(ui_fork_top_color_scheme(.text = bp_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = bp_color)); ui_set_next_text_alignment(UI_TextAlign_Center); UI_Box *bp_box = ui_build_box_from_stringf(UI_BoxFlag_DrawText| UI_BoxFlag_DrawActiveEffects| @@ -11064,7 +11078,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ ui_set_next_font(df_font_from_slot(DF_FontSlot_Icons)); ui_set_next_font_size(params->font_size * 1.f); ui_set_next_hover_cursor(OS_Cursor_HandPoint); - ui_set_next_scheme(ui_fork_top_color_scheme(.text = color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = color)); ui_set_next_text_alignment(UI_TextAlign_Center); UI_Box *pin_box = ui_build_box_from_stringf(UI_BoxFlag_DrawText| UI_BoxFlag_DrawActiveEffects| @@ -11245,7 +11259,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ } UI_PrefWidth(ui_em(1.5f, 1.f)) UI_Font(df_font_from_slot(DF_FontSlot_Icons)) - UI_Scheme(ui_fork_top_color_scheme(.text = pin_color)) + UI_Palette(ui_build_palette(ui_top_palette(), .text = pin_color)) UI_TextAlignment(UI_TextAlign_Center) UI_Flags(UI_BoxFlag_DisableTextTrunc) { @@ -11563,7 +11577,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ { TxtRngColorPairNode *n = push_array(scratch.arena, TxtRngColorPairNode, 1); n->rng = txt_rng(*cursor, *mark); - n->color = ui_top_scheme()->colors[DF_ThemeColor_Selection]; + n->color = ui_top_palette()->colors[DF_ThemeColor_Selection]; SLLQueuePush(first_txt_rng_color_pair, last_txt_rng_color_pair, n); } @@ -11670,7 +11684,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ } // rjf: build line num box - ui_set_next_scheme(ui_fork_top_color_scheme(.text = text_color, .background = bg_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = text_color, .background = bg_color)); ui_build_box_from_stringf(UI_BoxFlag_DrawText|(UI_BoxFlag_DrawBackground*!!has_line_info), "%I64u##line_num", line_num); } } @@ -11691,7 +11705,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ UI_Font(params->font) UI_FontSize(params->font_size) UI_CornerRadius(0) - DF_UIColorScheme(DF_UIColorSchemeCode_Code) + DF_Palette(DF_PaletteCode_Code) { U64 line_idx = 0; for(S64 line_num = params->line_num_range.min; @@ -11706,7 +11720,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ if(line_bg_color.w != 0) { ui_set_next_flags(UI_BoxFlag_DrawBackground); - ui_set_next_scheme(ui_fork_top_color_scheme(.background = line_bg_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = line_bg_color)); } UI_Box *line_box = ui_build_box_from_key(UI_BoxFlag_DisableTextTrunc|UI_BoxFlag_DrawText|UI_BoxFlag_DisableIDString, line_key); D_Bucket *line_bucket = d_bucket_make(); @@ -11947,7 +11961,7 @@ df_code_slice(DF_Window *ws, DF_CtrlCtx *ctrl_ctx, EVAL_ParseCtx *parse_ctx, DF_ ui_box_text_position(line_box).x+cursor_off_pixels+cursor_thickness, line_box->rect.y1+params->font_size*0.25f, }; - d_rect(cursor_rect, ui_top_scheme()->colors[UI_ColorCode_Cursor], 1.f, 0, 1.f); + d_rect(cursor_rect, ui_top_palette()->colors[UI_ColorCode_Cursor], 1.f, 0, 1.f); } // rjf: extra rendering for lines with line-info that match the hovered @@ -12827,7 +12841,7 @@ df_line_edit(DF_LineEditFlags flags, S32 depth, FuzzyMatchRangeList *matches, Tx if(!(flags & DF_LineEditFlag_PreferDisplayString) && pre_edit_value.size != 0) { display_string = pre_edit_value; - UI_Box *box = df_code_label(1.f, 1, ui_top_scheme()->text, display_string); + UI_Box *box = df_code_label(1.f, 1, ui_top_palette()->text, display_string); if(matches != 0) { ui_box_equip_fuzzy_match_ranges(box, matches); @@ -12835,7 +12849,7 @@ df_line_edit(DF_LineEditFlags flags, S32 depth, FuzzyMatchRangeList *matches, Tx } else if(flags & DF_LineEditFlag_DisplayStringIsCode) { - UI_Box *box = df_code_label(1.f, 1, ui_top_scheme()->text, display_string); + UI_Box *box = df_code_label(1.f, 1, ui_top_palette()->text, display_string); if(matches != 0) { ui_box_equip_fuzzy_match_ranges(box, matches); @@ -12876,7 +12890,7 @@ df_line_edit(DF_LineEditFlags flags, S32 depth, FuzzyMatchRangeList *matches, Tx F32 total_editstr_width = total_text_width - !!(flags & (DF_LineEditFlag_Expander|DF_LineEditFlag_ExpanderSpace|DF_LineEditFlag_ExpanderPlaceholder)) * expander_size_px; ui_set_next_pref_width(ui_px(total_editstr_width+ui_top_font_size()*2, 0.f)); UI_Box *editstr_box = ui_build_box_from_stringf(UI_BoxFlag_DrawText|UI_BoxFlag_DisableTextTrunc, "###editstr"); - D_FancyStringList code_fancy_strings = df_fancy_string_list_from_code_string(scratch.arena, 1.f, 0, ui_top_scheme()->text, edit_string); + D_FancyStringList code_fancy_strings = df_fancy_string_list_from_code_string(scratch.arena, 1.f, 0, ui_top_palette()->text, edit_string); if(autocomplete_hint_string.size != 0) { String8 query_word = df_autocomp_query_word_from_input_string_off(edit_string, cursor->column-1); @@ -12898,7 +12912,7 @@ df_line_edit(DF_LineEditFlags flags, S32 depth, FuzzyMatchRangeList *matches, Tx D_FancyString *fstr = &autocomp_fstr_n->v; fstr->font = ui_top_font(); fstr->string = autocomplete_append_string; - fstr->color = ui_top_scheme()->text; + fstr->color = ui_top_palette()->text; fstr->color.w *= 0.5f; fstr->size = ui_top_font_size(); autocomp_fstr_n->next = prev_n ? prev_n->next : 0; @@ -14066,60 +14080,60 @@ df_gfx_begin_frame(Arena *arena, DF_CmdList *cmds) //- rjf: compute ui color schemes from theme { DF_Theme *current = &df_gfx_state->cfg_theme; - for(EachEnumVal(DF_UIColorSchemeCode, code)) + for(EachEnumVal(DF_PaletteCode, code)) { - df_gfx_state->cfg_ui_color_schemes[code].null = v4f32(1, 0, 1, 1); - df_gfx_state->cfg_ui_color_schemes[code].cursor = current->colors[DF_ThemeColor_CursorActive]; - df_gfx_state->cfg_ui_color_schemes[code].selection = current->colors[DF_ThemeColor_Selection]; + df_gfx_state->cfg_palettes[code].null = v4f32(1, 0, 1, 1); + df_gfx_state->cfg_palettes[code].cursor = current->colors[DF_ThemeColor_CursorActive]; + df_gfx_state->cfg_palettes[code].selection = current->colors[DF_ThemeColor_Selection]; } - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Default].background = current->colors[DF_ThemeColor_DefaultBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Default].text = current->colors[DF_ThemeColor_DefaultText]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Default].text_weak = current->colors[DF_ThemeColor_DefaultTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Default].border = current->colors[DF_ThemeColor_DefaultBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DefaultPositive].background = current->colors[DF_ThemeColor_DefaultBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DefaultPositive].text = current->colors[DF_ThemeColor_DefaultTextPositive]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DefaultPositive].text_weak = current->colors[DF_ThemeColor_DefaultTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DefaultPositive].border = current->colors[DF_ThemeColor_DefaultBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DefaultNegative].background = current->colors[DF_ThemeColor_DefaultBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DefaultNegative].text = current->colors[DF_ThemeColor_DefaultTextNegative]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DefaultNegative].text_weak = current->colors[DF_ThemeColor_DefaultTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DefaultNegative].border = current->colors[DF_ThemeColor_DefaultBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Floating].background = current->colors[DF_ThemeColor_FloatingBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Floating].text = current->colors[DF_ThemeColor_FloatingText]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Floating].text_weak = current->colors[DF_ThemeColor_FloatingTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Floating].border = current->colors[DF_ThemeColor_FloatingBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialPositive].background = current->colors[DF_ThemeColor_SpecialPositiveBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialPositive].text = current->colors[DF_ThemeColor_SpecialPositiveText]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialPositive].text_weak = current->colors[DF_ThemeColor_SpecialPositiveTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialPositive].border = current->colors[DF_ThemeColor_SpecialPositiveBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialNegative].background = current->colors[DF_ThemeColor_SpecialNegativeBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialNegative].text = current->colors[DF_ThemeColor_SpecialNegativeText]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialNegative].text_weak = current->colors[DF_ThemeColor_SpecialNegativeTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialNegative].border = current->colors[DF_ThemeColor_SpecialNegativeBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialNeutral].background = current->colors[DF_ThemeColor_SpecialNeutralBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialNeutral].text = current->colors[DF_ThemeColor_SpecialNeutralText]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialNeutral].text_weak = current->colors[DF_ThemeColor_SpecialNeutralTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_SpecialNeutral].border = current->colors[DF_ThemeColor_SpecialNeutralBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_MenuBar].background = current->colors[DF_ThemeColor_MenuBarBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_MenuBar].text = current->colors[DF_ThemeColor_MenuBarText]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_MenuBar].text_weak = current->colors[DF_ThemeColor_MenuBarTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_MenuBar].border = current->colors[DF_ThemeColor_MenuBarBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_TabActive].background = current->colors[DF_ThemeColor_TabActiveBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_TabActive].text = current->colors[DF_ThemeColor_TabActiveText]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_TabActive].text_weak = current->colors[DF_ThemeColor_TabActiveTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_TabActive].border = current->colors[DF_ThemeColor_TabActiveBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_TabInactive].background = current->colors[DF_ThemeColor_TabInactiveBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_TabInactive].text = current->colors[DF_ThemeColor_TabInactiveText]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_TabInactive].text_weak = current->colors[DF_ThemeColor_TabInactiveTextWeak]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_TabInactive].border = current->colors[DF_ThemeColor_TabInactiveBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Code].background = current->colors[DF_ThemeColor_CodeBackground]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Code].text = current->colors[DF_ThemeColor_CodeDefault]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Code].text_weak = current->colors[DF_ThemeColor_CodeDefault]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_Code].border = current->colors[DF_ThemeColor_DefaultBorder]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DropSite].background = current->colors[DF_ThemeColor_DropSiteOverlay]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DropSite].text = current->colors[DF_ThemeColor_DropSiteOverlay]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DropSite].text_weak = current->colors[DF_ThemeColor_DropSiteOverlay]; - df_gfx_state->cfg_ui_color_schemes[DF_UIColorSchemeCode_DropSite].border = current->colors[DF_ThemeColor_DropSiteOverlay]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Default].background = current->colors[DF_ThemeColor_DefaultBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Default].text = current->colors[DF_ThemeColor_DefaultText]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Default].text_weak = current->colors[DF_ThemeColor_DefaultTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Default].border = current->colors[DF_ThemeColor_DefaultBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DefaultPositive].background = current->colors[DF_ThemeColor_DefaultBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DefaultPositive].text = current->colors[DF_ThemeColor_DefaultTextPositive]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DefaultPositive].text_weak = current->colors[DF_ThemeColor_DefaultTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DefaultPositive].border = current->colors[DF_ThemeColor_DefaultBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DefaultNegative].background = current->colors[DF_ThemeColor_DefaultBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DefaultNegative].text = current->colors[DF_ThemeColor_DefaultTextNegative]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DefaultNegative].text_weak = current->colors[DF_ThemeColor_DefaultTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DefaultNegative].border = current->colors[DF_ThemeColor_DefaultBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Floating].background = current->colors[DF_ThemeColor_FloatingBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Floating].text = current->colors[DF_ThemeColor_FloatingText]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Floating].text_weak = current->colors[DF_ThemeColor_FloatingTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Floating].border = current->colors[DF_ThemeColor_FloatingBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialPositive].background = current->colors[DF_ThemeColor_SpecialPositiveBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialPositive].text = current->colors[DF_ThemeColor_SpecialPositiveText]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialPositive].text_weak = current->colors[DF_ThemeColor_SpecialPositiveTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialPositive].border = current->colors[DF_ThemeColor_SpecialPositiveBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialNegative].background = current->colors[DF_ThemeColor_SpecialNegativeBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialNegative].text = current->colors[DF_ThemeColor_SpecialNegativeText]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialNegative].text_weak = current->colors[DF_ThemeColor_SpecialNegativeTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialNegative].border = current->colors[DF_ThemeColor_SpecialNegativeBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialNeutral].background = current->colors[DF_ThemeColor_SpecialNeutralBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialNeutral].text = current->colors[DF_ThemeColor_SpecialNeutralText]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialNeutral].text_weak = current->colors[DF_ThemeColor_SpecialNeutralTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_SpecialNeutral].border = current->colors[DF_ThemeColor_SpecialNeutralBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_MenuBar].background = current->colors[DF_ThemeColor_MenuBarBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_MenuBar].text = current->colors[DF_ThemeColor_MenuBarText]; + df_gfx_state->cfg_palettes[DF_PaletteCode_MenuBar].text_weak = current->colors[DF_ThemeColor_MenuBarTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_MenuBar].border = current->colors[DF_ThemeColor_MenuBarBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_TabActive].background = current->colors[DF_ThemeColor_TabActiveBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_TabActive].text = current->colors[DF_ThemeColor_TabActiveText]; + df_gfx_state->cfg_palettes[DF_PaletteCode_TabActive].text_weak = current->colors[DF_ThemeColor_TabActiveTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_TabActive].border = current->colors[DF_ThemeColor_TabActiveBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_TabInactive].background = current->colors[DF_ThemeColor_TabInactiveBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_TabInactive].text = current->colors[DF_ThemeColor_TabInactiveText]; + df_gfx_state->cfg_palettes[DF_PaletteCode_TabInactive].text_weak = current->colors[DF_ThemeColor_TabInactiveTextWeak]; + df_gfx_state->cfg_palettes[DF_PaletteCode_TabInactive].border = current->colors[DF_ThemeColor_TabInactiveBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Code].background = current->colors[DF_ThemeColor_CodeBackground]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Code].text = current->colors[DF_ThemeColor_CodeDefault]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Code].text_weak = current->colors[DF_ThemeColor_CodeDefault]; + df_gfx_state->cfg_palettes[DF_PaletteCode_Code].border = current->colors[DF_ThemeColor_DefaultBorder]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DropSite].background = current->colors[DF_ThemeColor_DropSiteOverlay]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DropSite].text = current->colors[DF_ThemeColor_DropSiteOverlay]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DropSite].text_weak = current->colors[DF_ThemeColor_DropSiteOverlay]; + df_gfx_state->cfg_palettes[DF_PaletteCode_DropSite].border = current->colors[DF_ThemeColor_DropSiteOverlay]; } //- rjf: animate alive-transitions for entities diff --git a/src/df/gfx/df_gfx.h b/src/df/gfx/df_gfx.h index 3431dde2..ea38bd97 100644 --- a/src/df/gfx/df_gfx.h +++ b/src/df/gfx/df_gfx.h @@ -374,23 +374,23 @@ typedef enum DF_FontSlot } DF_FontSlot; -typedef enum DF_UIColorSchemeCode +typedef enum DF_PaletteCode { - DF_UIColorSchemeCode_Default, - DF_UIColorSchemeCode_DefaultPositive, - DF_UIColorSchemeCode_DefaultNegative, - DF_UIColorSchemeCode_Floating, - DF_UIColorSchemeCode_SpecialPositive, - DF_UIColorSchemeCode_SpecialNegative, - DF_UIColorSchemeCode_SpecialNeutral, - DF_UIColorSchemeCode_MenuBar, - DF_UIColorSchemeCode_TabActive, - DF_UIColorSchemeCode_TabInactive, - DF_UIColorSchemeCode_Code, - DF_UIColorSchemeCode_DropSite, - DF_UIColorSchemeCode_COUNT + DF_PaletteCode_Default, + DF_PaletteCode_DefaultPositive, + DF_PaletteCode_DefaultNegative, + DF_PaletteCode_Floating, + DF_PaletteCode_SpecialPositive, + DF_PaletteCode_SpecialNegative, + DF_PaletteCode_SpecialNeutral, + DF_PaletteCode_MenuBar, + DF_PaletteCode_TabActive, + DF_PaletteCode_TabInactive, + DF_PaletteCode_Code, + DF_PaletteCode_DropSite, + DF_PaletteCode_COUNT } -DF_UIColorSchemeCode; +DF_PaletteCode; //////////////////////////////// //~ rjf: UI Helper & Widget Types @@ -760,8 +760,8 @@ struct DF_GfxState Arena *cfg_code_font_path_arena; String8 cfg_main_font_path; String8 cfg_code_font_path; - F_Tag cfg_font_tags[DF_FontSlot_COUNT]; - UI_ColorScheme cfg_ui_color_schemes[DF_UIColorSchemeCode_COUNT]; + F_Tag cfg_font_tags[DF_FontSlot_COUNT]; // derivative from font paths + UI_Palette cfg_palettes[DF_PaletteCode_COUNT]; // derivative from theme // rjf: icon texture R_Handle icon_texture; @@ -1007,8 +1007,8 @@ internal DF_CmdSpecList df_cmd_spec_list_from_event_flags(Arena *arena, OS_Event internal Vec4F32 df_rgba_from_theme_color(DF_ThemeColor color); internal DF_ThemeColor df_theme_color_from_txt_token_kind(TXT_TokenKind kind); -//- rjf: code -> ui color scheme -internal UI_ColorScheme *df_ui_color_scheme_from_code(DF_UIColorSchemeCode code); +//- rjf: code -> palette +internal UI_Palette *df_palette_from_code(DF_PaletteCode code); //- rjf: fonts/sizes internal F_Tag df_font_from_slot(DF_FontSlot slot); @@ -1026,7 +1026,7 @@ internal String8 df_stop_explanation_string_icon_from_ctrl_event(Arena *arena, C //////////////////////////////// //~ rjf: UI Building Helpers -#define DF_UIColorScheme(code) UI_Scheme(df_ui_color_scheme_from_code(code)) +#define DF_Palette(code) UI_Palette(df_palette_from_code(code)) //////////////////////////////// //~ rjf: UI Widgets: Fancy Buttons diff --git a/src/df/gfx/df_view_rules.c b/src/df/gfx/df_view_rules.c index 03a584d8..d93c4d63 100644 --- a/src/df/gfx/df_view_rules.c +++ b/src/df/gfx/df_view_rules.c @@ -340,13 +340,13 @@ DF_GFX_VIEW_RULE_ROW_UI_FUNCTION_DEF(rgba) text_box = ui_build_box_from_key(UI_BoxFlag_DrawText, ui_key_zero()); D_FancyStringList fancy_strings = {0}; { - D_FancyString open_paren = {ui_top_font(), str8_lit("("), ui_top_scheme()->text, ui_top_font_size(), 0, 0}; - D_FancyString comma = {ui_top_font(), str8_lit(", "), ui_top_scheme()->text, ui_top_font_size(), 0, 0}; + D_FancyString open_paren = {ui_top_font(), str8_lit("("), ui_top_palette()->text, ui_top_font_size(), 0, 0}; + D_FancyString comma = {ui_top_font(), str8_lit(", "), ui_top_palette()->text, ui_top_font_size(), 0, 0}; D_FancyString r_fstr = {ui_top_font(), push_str8f(scratch.arena, "%.2f", rgba.x), v4f32(1.f, 0.25f, 0.25f, 1.f), ui_top_font_size(), 4.f, 0}; D_FancyString g_fstr = {ui_top_font(), push_str8f(scratch.arena, "%.2f", rgba.y), v4f32(0.25f, 1.f, 0.25f, 1.f), ui_top_font_size(), 4.f, 0}; D_FancyString b_fstr = {ui_top_font(), push_str8f(scratch.arena, "%.2f", rgba.z), v4f32(0.25f, 0.25f, 1.f, 1.f), ui_top_font_size(), 4.f, 0}; D_FancyString a_fstr = {ui_top_font(), push_str8f(scratch.arena, "%.2f", rgba.w), v4f32(1.f, 1.f, 1.f, 1.f), ui_top_font_size(), 4.f, 0}; - D_FancyString clse_paren = {ui_top_font(), str8_lit(")"), ui_top_scheme()->text, ui_top_font_size(), 0, 0}; + D_FancyString clse_paren = {ui_top_font(), str8_lit(")"), ui_top_palette()->text, ui_top_font_size(), 0, 0}; d_fancy_string_list_push(scratch.arena, &fancy_strings, &open_paren); d_fancy_string_list_push(scratch.arena, &fancy_strings, &r_fstr); d_fancy_string_list_push(scratch.arena, &fancy_strings, &comma); @@ -367,7 +367,7 @@ DF_GFX_VIEW_RULE_ROW_UI_FUNCTION_DEF(rgba) color_box = ui_build_box_from_stringf(UI_BoxFlag_Clickable, "color_box"); UI_Parent(color_box) UI_PrefHeight(ui_em(1.875f, 1.f)) UI_Padding(ui_pct(1, 0)) { - UI_Scheme(ui_fork_top_color_scheme(.background = rgba)) UI_CornerRadius(ui_top_font_size()*0.5f) + UI_Palette(ui_build_palette(ui_top_palette(), .background = rgba)) UI_CornerRadius(ui_top_font_size()*0.5f) ui_build_box_from_key(UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawBorder, ui_key_zero()); } } @@ -872,7 +872,7 @@ df_vr_bitmap_topology_info_from_cfg(DI_Scope *scope, DF_CtrlCtx *ctrl_ctx, EVAL_ internal UI_BOX_CUSTOM_DRAW(df_vr_bitmap_box_draw) { DF_VR_BitmapBoxDrawData *draw_data = (DF_VR_BitmapBoxDrawData *)user_data; - Vec4F32 bg_color = box->scheme->background; + Vec4F32 bg_color = box->palette->background; d_img(box->rect, draw_data->src, draw_data->texture, v4f32(1, 1, 1, 1), 0, 0, 0); if(draw_data->loaded_t < 0.98f) { diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 0d41972b..f9896249 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -1641,23 +1641,23 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS } //////////////////////// - //- rjf: determine row's color scheme + //- rjf: determine row's color palette // - UI_ColorScheme *scheme = ui_top_scheme(); + UI_Palette *palette = ui_top_palette(); { if(row_is_fresh) { - scheme = ui_fork_top_color_scheme(.background = mul_4f32(df_rgba_from_theme_color(DF_ThemeColor_Highlight0), v4f32(1, 1, 1, 0.2f))); + palette = ui_build_palette(ui_top_palette(), .background = mul_4f32(df_rgba_from_theme_color(DF_ThemeColor_Highlight0), v4f32(1, 1, 1, 0.2f))); } } //////////////////////// //- rjf: build row box // + ui_set_next_palette(palette); ui_set_next_flags(disabled_flags); ui_set_next_pref_width(ui_pct(1, 0)); ui_set_next_pref_height(ui_px(scroll_list_params.row_height_px*row->size_in_rows, 1.f)); - ui_set_next_scheme(scheme); UI_Box *row_box = ui_build_box_from_stringf(UI_BoxFlag_DrawSideBottom|UI_BoxFlag_RequireFocusBackground|UI_BoxFlag_Clickable, "row_%I64x", row_hash); //////////////////////// @@ -1718,7 +1718,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS //////////////////////// //- rjf: build non-canvas row contents // - if(!(row->flags & DF_EvalVizRowFlag_Canvas)) + if(!(row->flags & DF_EvalVizRowFlag_Canvas)) UI_Parent(row_box) UI_HeightFill { //////////////////// //- rjf: draw start of cache lines in expansions @@ -1731,7 +1731,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS ui_set_next_fixed_x(0); ui_set_next_fixed_y(0); ui_set_next_fixed_height(ui_top_font_size()*0.1f); - ui_set_next_scheme(ui_fork_top_color_scheme(.background = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))); ui_build_box_from_key(UI_BoxFlag_Floating|UI_BoxFlag_DrawBackground, ui_key_zero()); } @@ -1752,7 +1752,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS ui_set_next_fixed_height(ui_top_font_size()*1.f); Vec4F32 boundary_color = df_rgba_from_theme_color(DF_ThemeColor_Highlight0); boundary_color.w *= 0.25f; - ui_set_next_scheme(ui_fork_top_color_scheme(.background = boundary_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = boundary_color)); ui_build_box_from_key(UI_BoxFlag_Floating|UI_BoxFlag_DrawBackground, ui_key_zero()); } } @@ -1767,32 +1767,32 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS B32 cell_selected = (row_selected && selection_tbl.min.x <= pt.column_kind && pt.column_kind <= selection_tbl.max.x); B32 can_edit_expr = !(row->depth > 0 || modifiable == 0); - // rjf: unpack scheme - UI_ColorScheme *scheme = ui_top_scheme(); + // rjf: unpack palette + UI_Palette *palette = ui_top_palette(); { if(row->flags & DF_EvalVizRowFlag_ExprIsSpecial) { - scheme = ui_fork_top_color_scheme(.text = df_rgba_from_theme_color(DF_ThemeColor_SpecialNegativeText), - .background = df_rgba_from_theme_color(DF_ThemeColor_SpecialNegativeBackground)); + palette = ui_build_palette(ui_top_palette(), .text = df_rgba_from_theme_color(DF_ThemeColor_SpecialNegativeText), + .background = df_rgba_from_theme_color(DF_ThemeColor_SpecialNegativeBackground)); } } // rjf: build UI_Signal sig = {0}; B32 next_expanded = row_expanded; - UI_Scheme(scheme) UI_TableCell + UI_Palette(palette) UI_TableCell UI_FocusHot(cell_selected ? UI_FocusKind_On : UI_FocusKind_Off) UI_FocusActive((cell_selected && ewv->text_editing) ? UI_FocusKind_On : UI_FocusKind_Off) { B32 expr_editing_active = ui_is_focus_active(); B32 is_inherited = (row->inherited_type_key_chain.count != 0); - UI_Font(code_font) UI_Scheme(scheme) UI_FlagsAdd(row->depth > 0 ? UI_BoxFlag_DrawTextWeak : 0) + UI_Font(code_font) UI_Palette(palette) UI_FlagsAdd(row->depth > 0 ? UI_BoxFlag_DrawTextWeak : 0) { if(is_inherited) { Vec4F32 inherited_bg_color = df_rgba_from_theme_color(DF_ThemeColor_Highlight1); inherited_bg_color.w *= 0.2f; - ui_set_next_scheme(ui_fork_top_color_scheme(.background = inherited_bg_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = inherited_bg_color)); } FuzzyMatchRangeList matches = {0}; if(filter.size != 0) @@ -1924,19 +1924,19 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS B32 value_is_complex = (!value_is_error && !value_is_hook && !(row->flags & DF_EvalVizRowFlag_CanEditValue)); B32 value_is_simple = (!value_is_error && !value_is_hook && (row->flags & DF_EvalVizRowFlag_CanEditValue)); - // rjf: unpack scheme - UI_ColorScheme *scheme = ui_top_scheme(); + // rjf: unpack palette + UI_Palette *palette = ui_top_palette(); { if(row_is_bad) { - scheme = ui_fork_top_color_scheme(.text = df_rgba_from_theme_color(DF_ThemeColor_SpecialNegativeText), - .background = df_rgba_from_theme_color(DF_ThemeColor_SpecialNegativeBackground)); + palette = ui_build_palette(ui_top_palette(), .text = df_rgba_from_theme_color(DF_ThemeColor_SpecialNegativeText), + .background = df_rgba_from_theme_color(DF_ThemeColor_SpecialNegativeBackground)); } } // rjf: build UI_Signal sig = {0}; - UI_Scheme(scheme) UI_TableCell UI_Font(code_font) + UI_Palette(palette) UI_TableCell UI_Font(code_font) UI_FocusHot(cell_selected ? UI_FocusKind_On : UI_FocusKind_Off) UI_FocusActive((cell_selected && ewv->text_editing) ? UI_FocusKind_On : UI_FocusKind_Off) { @@ -2129,7 +2129,7 @@ DF_VIEW_UI_FUNCTION_DEF(Empty) UI_TextAlignment(UI_TextAlign_Center) UI_PrefWidth(ui_em(15.f, 1.f)) UI_CornerRadius(ui_top_font_size()/2.f) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNegative) + DF_Palette(DF_PaletteCode_SpecialNegative) { if(ui_clicked(df_icon_buttonf(DF_IconKind_X, 0, "Close Panel"))) { @@ -2203,7 +2203,7 @@ DF_VIEW_UI_FUNCTION_DEF(GettingStarted) UI_TextAlignment(UI_TextAlign_Center) UI_PrefWidth(ui_em(22.f, 1.f)) UI_CornerRadius(ui_top_font_size()/2.f) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + DF_Palette(DF_PaletteCode_SpecialNeutral) if(ui_clicked(df_icon_buttonf(DF_IconKind_Add, 0, "Add Target"))) { DF_CmdParams params = df_cmd_params_from_view(ws, panel, view); @@ -2225,7 +2225,7 @@ DF_VIEW_UI_FUNCTION_DEF(GettingStarted) UI_TextAlignment(UI_TextAlign_Center) UI_PrefWidth(ui_em(22.f, 1.f)) UI_CornerRadius(ui_top_font_size()/2.f) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + DF_Palette(DF_PaletteCode_SpecialNeutral) { if(ui_clicked(df_icon_buttonf(DF_IconKind_Play, 0, "Launch %S", target_name))) { @@ -3229,7 +3229,7 @@ DF_VIEW_UI_FUNCTION_DEF(EntityLister) Vec4F32 color = df_rgba_from_entity(ent); if(color.w != 0) { - ui_set_next_scheme(ui_fork_top_color_scheme(.text = color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = color)); } UI_Box *name_label = ui_build_box_from_stringf(UI_BoxFlag_DrawText, "%S##label_%p", display_string, ent); ui_box_equip_fuzzy_match_ranges(name_label, &item.name_match_ranges); @@ -3643,7 +3643,7 @@ DF_VIEW_UI_FUNCTION_DEF(Target) { ui_label_multiline(ui_top_font_size()*30.f, str8_lit("By default, the debugger attempts to find a target's entry point with a set of default names, such as:")); ui_spacer(ui_em(1.5f, 1.f)); - UI_Font(df_font_from_slot(DF_FontSlot_Code)) UI_Scheme(ui_fork_top_color_scheme(.text = df_rgba_from_theme_color(DF_ThemeColor_CodeProcedure))) + UI_Font(df_font_from_slot(DF_FontSlot_Code)) UI_Palette(ui_build_palette(ui_top_palette(), .text = df_rgba_from_theme_color(DF_ThemeColor_CodeProcedure))) { ui_label(str8_lit("WinMain")); ui_label(str8_lit("wWinMain")); @@ -4741,21 +4741,21 @@ DF_VIEW_UI_FUNCTION_DEF(Scheduler) { B32 frozen_by_solo_mode = (entity->kind == DF_EntityKind_Thread && entity != df_entity_from_handle(ctrl_ctx.thread) && df_state->ctrl_solo_stepping_mode); B32 frozen = df_entity_is_frozen(entity); - UI_ColorScheme *scheme = ui_top_scheme(); + UI_Palette *palette = ui_top_palette(); if(frozen_by_solo_mode) { - scheme = ui_fork_top_color_scheme(.background = df_rgba_from_theme_color(DF_ThemeColor_Highlight0)); + palette = ui_build_palette(ui_top_palette(), .background = df_rgba_from_theme_color(DF_ThemeColor_Highlight0)); } else if(frozen) { - scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_SpecialNegative); + palette = df_palette_from_code(DF_PaletteCode_SpecialNegative); } else { - scheme = df_ui_color_scheme_from_code(DF_UIColorSchemeCode_SpecialPositive); + palette = df_palette_from_code(DF_PaletteCode_SpecialPositive); } UI_Signal sig = {0}; - UI_Scheme(scheme) sig = df_icon_buttonf(frozen ? DF_IconKind_Locked : DF_IconKind_Unlocked, 0, "###lock_%p", entity); + UI_Palette(palette) sig = df_icon_buttonf(frozen ? DF_IconKind_Locked : DF_IconKind_Unlocked, 0, "###lock_%p", entity); if(frozen_by_solo_mode && ui_hovering(sig)) UI_Tooltip { ui_label(str8_lit("This thread is frozen during stepping operations because it isn't selected, and Solo Stepping Mode is enabled.")); @@ -4809,7 +4809,7 @@ DF_VIEW_UI_FUNCTION_DEF(Scheduler) } UI_TableCellSized(ui_em(2.25f, 1.f)) UI_FocusHot((row_is_selected && cursor.x == 4) ? UI_FocusKind_On : UI_FocusKind_Off) { - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNegative) + DF_Palette(DF_PaletteCode_SpecialNegative) if(ui_clicked(df_icon_buttonf(DF_IconKind_X, 0, "###kill"))) { DF_CmdParams params = df_cmd_params_from_view(ws, panel, view); @@ -4864,7 +4864,7 @@ DF_VIEW_UI_FUNCTION_DEF(CallStack) DF_Entity *thread = df_entity_from_handle(ctrl_ctx.thread); Architecture arch = df_architecture_from_entity(thread); DF_Entity *process = thread->parent; - Vec4F32 thread_color = ui_top_scheme()->text; + Vec4F32 thread_color = ui_top_palette()->text; if(thread->flags & DF_EntityFlag_HasColor) { thread_color = df_rgba_from_entity(thread); @@ -4983,7 +4983,7 @@ DF_VIEW_UI_FUNCTION_DEF(CallStack) ctrl_ctx.inline_unwind_count == frame->inline_unwind_idx) { selected_string = df_g_icon_kind_text_table[DF_IconKind_RightArrow]; - ui_set_next_scheme(ui_fork_top_color_scheme(.text = thread_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = thread_color)); } UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_Clickable|UI_BoxFlag_DrawText, "%S###selection_%i", selected_string, (int)frame_idx); @@ -5050,7 +5050,7 @@ DF_VIEW_UI_FUNCTION_DEF(CallStack) D_FancyStringList symbol_type_fstrs = df_fancy_string_list_from_code_string(scratch.arena, 0.5f, 0, df_rgba_from_theme_color(DF_ThemeColor_CodeDefault), symbol_type_string); D_FancyStringList fstrs = {0}; d_fancy_string_list_concat_in_place(&fstrs, &symbol_name_fstrs); - D_FancyString sep = {ui_top_font(), str8_lit(": "), ui_top_scheme()->colors[UI_ColorCode_TextWeak], ui_top_font_size()}; + D_FancyString sep = {ui_top_font(), str8_lit(": "), ui_top_palette()->colors[UI_ColorCode_TextWeak], ui_top_font_size()}; d_fancy_string_list_push(scratch.arena, &fstrs, &sep); d_fancy_string_list_concat_in_place(&fstrs, &symbol_type_fstrs); UI_Box *label = ui_build_box_from_key(UI_BoxFlag_DrawText, ui_key_zero()); @@ -5362,7 +5362,7 @@ DF_VIEW_UI_FUNCTION_DEF(Modules) UI_FocusActive((txt_is_selected && mv->txt_editing) ? UI_FocusKind_On : UI_FocusKind_Off) UI_WidthFill { - DF_UIColorScheme(dbgi_is_valid ? DF_UIColorSchemeCode_DefaultPositive : DF_UIColorSchemeCode_Default) + DF_Palette(dbgi_is_valid ? DF_PaletteCode_DefaultPositive : DF_PaletteCode_Default) sig = df_line_editf(DF_LineEditFlag_NoBackground, 0, 0, &mv->txt_cursor, &mv->txt_mark, mv->txt_buffer, sizeof(mv->txt_buffer), &mv->txt_size, 0, dbgi_path, "###dbg_path_%p", entity); edit_commit = (edit_commit || ui_committed(sig)); } @@ -6029,7 +6029,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code) UI_PrefWidth(ui_children_sum(1)) UI_PrefHeight(ui_em(3, 1)) UI_Row UI_Padding(ui_pct(1, 0)) UI_PrefWidth(ui_text_dim(10, 1)) - DF_UIColorScheme(DF_UIColorSchemeCode_DefaultNegative) + DF_Palette(DF_PaletteCode_DefaultNegative) { UI_Font(ui_icon_font()) ui_label(df_g_icon_kind_text_table[DF_IconKind_WarningBig]); ui_labelf("Could not find \"%S\".", full_path); @@ -6040,7 +6040,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code) UI_CornerRadius(ui_top_font_size()/3) UI_PrefWidth(ui_text_dim(10, 1)) UI_Focus(UI_FocusKind_On) - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNeutral) + DF_Palette(DF_PaletteCode_SpecialNeutral) if(ui_clicked(ui_buttonf("Find alternative..."))) { DF_CmdParams params = df_cmd_params_from_view(ws, panel, view); @@ -6582,7 +6582,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code) if(file_is_out_of_date) { UI_Box *box = &ui_g_nil_box; - DF_UIColorScheme(DF_UIColorSchemeCode_SpecialNegative) + DF_Palette(DF_PaletteCode_SpecialNegative) UI_Font(df_font_from_slot(DF_FontSlot_Icons)) { box = ui_build_box_from_stringf(UI_BoxFlag_DrawText|UI_BoxFlag_Clickable, "%S###file_ood_warning", df_g_icon_kind_text_table[DF_IconKind_WarningBig]); @@ -6593,7 +6593,7 @@ DF_VIEW_UI_FUNCTION_DEF(Code) UI_PrefWidth(ui_children_sum(1)) UI_Row UI_PrefWidth(ui_text_dim(1, 1)) { ui_labelf("This file has changed since ", out_of_date_dbgi_name); - UI_Scheme(ui_fork_top_color_scheme(.text = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))) ui_label(out_of_date_dbgi_name); + UI_Palette(ui_build_palette(ui_top_palette(), .text = df_rgba_from_theme_color(DF_ThemeColor_Highlight0))) ui_label(out_of_date_dbgi_name); ui_labelf(" was produced."); } } @@ -8973,7 +8973,7 @@ DF_VIEW_UI_FUNCTION_DEF(Memory) { if(global_byte_idx == a->vaddr_range.min) UI_Parent(row_overlay_box) { - ui_set_next_scheme(ui_fork_top_color_scheme(.background = annotation->color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = annotation->color)); ui_set_next_fixed_x(big_glyph_advance*18.f + col_idx*cell_width_px + -cell_width_px/8.f + off); ui_set_next_fixed_y((row_idx-viz_range_rows.min)*row_height_px + -cell_width_px/8.f); ui_set_next_fixed_width(cell_width_px/4.f); @@ -9678,9 +9678,9 @@ DF_VIEW_UI_FUNCTION_DEF(Theme) Vec4F32 bg_color = colors[DF_ThemeColor_DefaultBackground]; Vec4F32 tx_color = colors[DF_ThemeColor_DefaultText]; Vec4F32 bd_color = colors[DF_ThemeColor_DefaultBorder]; - ui_set_next_scheme(ui_fork_top_color_scheme(.text = tx_color, - .border = bd_color, - .background = bg_color)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = tx_color, + .border = bd_color, + .background = bg_color)); if(ui_clicked(ui_buttonf("%S", df_g_theme_preset_display_string_table[preset]))) { MemoryCopy(df_gfx_state->cfg_theme_target.colors, colors, sizeof(df_gfx_state->cfg_theme_target.colors)); @@ -9933,15 +9933,15 @@ DF_VIEW_UI_FUNCTION_DEF(Theme) "###color_%I64x", (U64)color); UI_Parent(color_row) { - Vec4F32 bg_color = ui_top_scheme()->background; - Vec4F32 default_text_color = ui_top_scheme()->text; + Vec4F32 bg_color = ui_top_palette()->background; + Vec4F32 default_text_color = ui_top_palette()->text; F32 default_fallback_factor = clamp_1f32(r1f32(0.3f, 1), dot_4f32(normalize_4f32(rgba), normalize_4f32(bg_color))) - 0.3f; Vec4F32 text_rgba = mix_4f32(rgba, default_text_color, default_fallback_factor); - UI_WidthFill UI_Scheme(ui_fork_top_color_scheme(.text = text_rgba)) ui_label(df_g_theme_color_display_string_table[color]); + UI_WidthFill UI_Palette(ui_build_palette(ui_top_palette(), .text = text_rgba)) ui_label(df_g_theme_color_display_string_table[color]); ui_set_next_pref_width(ui_top_pref_height()); UI_HeightFill UI_Column UI_Padding(ui_em(0.3f, 1)) { - ui_set_next_scheme(ui_fork_top_color_scheme(.background = rgba)); + ui_set_next_palette(ui_build_palette(ui_top_palette(), .background = rgba)); ui_set_next_corner_radius_00(ui_top_font_size()/4.f); ui_set_next_corner_radius_01(ui_top_font_size()/4.f); ui_set_next_corner_radius_10(ui_top_font_size()/4.f); diff --git a/src/ui/generated/ui.meta.c b/src/ui/generated/ui.meta.c index b292cc26..6b8d711b 100644 --- a/src/ui/generated/ui.meta.c +++ b/src/ui/generated/ui.meta.c @@ -17,11 +17,12 @@ #define UI_FocusActive(v) DeferLoop(ui_push_focus_active(v), ui_pop_focus_active()) #define UI_FastpathCodepoint(v) DeferLoop(ui_push_fastpath_codepoint(v), ui_pop_fastpath_codepoint()) #define UI_Transparency(v) DeferLoop(ui_push_transparency(v), ui_pop_transparency()) -#define UI_Scheme(v) DeferLoop(ui_push_scheme(v), ui_pop_scheme()) +#define UI_Palette(v) DeferLoop(ui_push_palette(v), ui_pop_palette()) #define UI_Squish(v) DeferLoop(ui_push_squish(v), ui_pop_squish()) #define UI_HoverCursor(v) DeferLoop(ui_push_hover_cursor(v), ui_pop_hover_cursor()) #define UI_Font(v) DeferLoop(ui_push_font(v), ui_pop_font()) #define UI_FontSize(v) DeferLoop(ui_push_font_size(v), ui_pop_font_size()) +#define UI_RunFlags(v) DeferLoop(ui_push_run_flags(v), ui_pop_run_flags()) #define UI_TabSize(v) DeferLoop(ui_push_tab_size(v), ui_pop_tab_size()) #define UI_CornerRadius00(v) DeferLoop(ui_push_corner_radius_00(v), ui_pop_corner_radius_00()) #define UI_CornerRadius01(v) DeferLoop(ui_push_corner_radius_01(v), ui_pop_corner_radius_01()) @@ -44,11 +45,12 @@ internal UI_FocusKind ui_top_focus_hot(void) { UI_StackTopImpl(ui_state, FocusHo internal UI_FocusKind ui_top_focus_active(void) { UI_StackTopImpl(ui_state, FocusActive, focus_active) } internal U32 ui_top_fastpath_codepoint(void) { UI_StackTopImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } internal F32 ui_top_transparency(void) { UI_StackTopImpl(ui_state, Transparency, transparency) } -internal UI_ColorScheme* ui_top_scheme(void) { UI_StackTopImpl(ui_state, Scheme, scheme) } +internal UI_Palette* ui_top_palette(void) { UI_StackTopImpl(ui_state, Palette, palette) } internal F32 ui_top_squish(void) { UI_StackTopImpl(ui_state, Squish, squish) } internal OS_Cursor ui_top_hover_cursor(void) { UI_StackTopImpl(ui_state, HoverCursor, hover_cursor) } internal F_Tag ui_top_font(void) { UI_StackTopImpl(ui_state, Font, font) } internal F32 ui_top_font_size(void) { UI_StackTopImpl(ui_state, FontSize, font_size) } +internal F_RunFlags ui_top_run_flags(void) { UI_StackTopImpl(ui_state, RunFlags, run_flags) } internal F32 ui_top_tab_size(void) { UI_StackTopImpl(ui_state, TabSize, tab_size) } internal F32 ui_top_corner_radius_00(void) { UI_StackTopImpl(ui_state, CornerRadius00, corner_radius_00) } internal F32 ui_top_corner_radius_01(void) { UI_StackTopImpl(ui_state, CornerRadius01, corner_radius_01) } @@ -70,11 +72,12 @@ internal UI_FocusKind ui_bottom_focus_hot(void) { UI_StackBottomImpl(ui_state, F internal UI_FocusKind ui_bottom_focus_active(void) { UI_StackBottomImpl(ui_state, FocusActive, focus_active) } internal U32 ui_bottom_fastpath_codepoint(void) { UI_StackBottomImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } internal F32 ui_bottom_transparency(void) { UI_StackBottomImpl(ui_state, Transparency, transparency) } -internal UI_ColorScheme* ui_bottom_scheme(void) { UI_StackBottomImpl(ui_state, Scheme, scheme) } +internal UI_Palette* ui_bottom_palette(void) { UI_StackBottomImpl(ui_state, Palette, palette) } internal F32 ui_bottom_squish(void) { UI_StackBottomImpl(ui_state, Squish, squish) } internal OS_Cursor ui_bottom_hover_cursor(void) { UI_StackBottomImpl(ui_state, HoverCursor, hover_cursor) } internal F_Tag ui_bottom_font(void) { UI_StackBottomImpl(ui_state, Font, font) } internal F32 ui_bottom_font_size(void) { UI_StackBottomImpl(ui_state, FontSize, font_size) } +internal F_RunFlags ui_bottom_run_flags(void) { UI_StackBottomImpl(ui_state, RunFlags, run_flags) } internal F32 ui_bottom_tab_size(void) { UI_StackBottomImpl(ui_state, TabSize, tab_size) } internal F32 ui_bottom_corner_radius_00(void) { UI_StackBottomImpl(ui_state, CornerRadius00, corner_radius_00) } internal F32 ui_bottom_corner_radius_01(void) { UI_StackBottomImpl(ui_state, CornerRadius01, corner_radius_01) } @@ -96,11 +99,12 @@ internal UI_FocusKind ui_push_focus_hot(UI_FocusKind v) { UI_StackPushImpl(ui_st internal UI_FocusKind ui_push_focus_active(UI_FocusKind v) { UI_StackPushImpl(ui_state, FocusActive, focus_active, UI_FocusKind, v) } internal U32 ui_push_fastpath_codepoint(U32 v) { UI_StackPushImpl(ui_state, FastpathCodepoint, fastpath_codepoint, U32, v) } internal F32 ui_push_transparency(F32 v) { UI_StackPushImpl(ui_state, Transparency, transparency, F32, v) } -internal UI_ColorScheme* ui_push_scheme(UI_ColorScheme* v) { UI_StackPushImpl(ui_state, Scheme, scheme, UI_ColorScheme*, v) } +internal UI_Palette* ui_push_palette(UI_Palette* v) { UI_StackPushImpl(ui_state, Palette, palette, UI_Palette* , v) } internal F32 ui_push_squish(F32 v) { UI_StackPushImpl(ui_state, Squish, squish, F32, v) } internal OS_Cursor ui_push_hover_cursor(OS_Cursor v) { UI_StackPushImpl(ui_state, HoverCursor, hover_cursor, OS_Cursor, v) } internal F_Tag ui_push_font(F_Tag v) { UI_StackPushImpl(ui_state, Font, font, F_Tag, v) } internal F32 ui_push_font_size(F32 v) { UI_StackPushImpl(ui_state, FontSize, font_size, F32, v) } +internal F_RunFlags ui_push_run_flags(F_RunFlags v) { UI_StackPushImpl(ui_state, RunFlags, run_flags, F_RunFlags, v) } internal F32 ui_push_tab_size(F32 v) { UI_StackPushImpl(ui_state, TabSize, tab_size, F32, v) } internal F32 ui_push_corner_radius_00(F32 v) { UI_StackPushImpl(ui_state, CornerRadius00, corner_radius_00, F32, v) } internal F32 ui_push_corner_radius_01(F32 v) { UI_StackPushImpl(ui_state, CornerRadius01, corner_radius_01, F32, v) } @@ -122,11 +126,12 @@ internal UI_FocusKind ui_pop_focus_hot(void) { UI_StackPopImpl(ui_state, FocusHo internal UI_FocusKind ui_pop_focus_active(void) { UI_StackPopImpl(ui_state, FocusActive, focus_active) } internal U32 ui_pop_fastpath_codepoint(void) { UI_StackPopImpl(ui_state, FastpathCodepoint, fastpath_codepoint) } internal F32 ui_pop_transparency(void) { UI_StackPopImpl(ui_state, Transparency, transparency) } -internal UI_ColorScheme* ui_pop_scheme(void) { UI_StackPopImpl(ui_state, Scheme, scheme) } +internal UI_Palette* ui_pop_palette(void) { UI_StackPopImpl(ui_state, Palette, palette) } internal F32 ui_pop_squish(void) { UI_StackPopImpl(ui_state, Squish, squish) } internal OS_Cursor ui_pop_hover_cursor(void) { UI_StackPopImpl(ui_state, HoverCursor, hover_cursor) } internal F_Tag ui_pop_font(void) { UI_StackPopImpl(ui_state, Font, font) } internal F32 ui_pop_font_size(void) { UI_StackPopImpl(ui_state, FontSize, font_size) } +internal F_RunFlags ui_pop_run_flags(void) { UI_StackPopImpl(ui_state, RunFlags, run_flags) } internal F32 ui_pop_tab_size(void) { UI_StackPopImpl(ui_state, TabSize, tab_size) } internal F32 ui_pop_corner_radius_00(void) { UI_StackPopImpl(ui_state, CornerRadius00, corner_radius_00) } internal F32 ui_pop_corner_radius_01(void) { UI_StackPopImpl(ui_state, CornerRadius01, corner_radius_01) } @@ -148,11 +153,12 @@ internal UI_FocusKind ui_set_next_focus_hot(UI_FocusKind v) { UI_StackSetNextImp internal UI_FocusKind ui_set_next_focus_active(UI_FocusKind v) { UI_StackSetNextImpl(ui_state, FocusActive, focus_active, UI_FocusKind, v) } internal U32 ui_set_next_fastpath_codepoint(U32 v) { UI_StackSetNextImpl(ui_state, FastpathCodepoint, fastpath_codepoint, U32, v) } internal F32 ui_set_next_transparency(F32 v) { UI_StackSetNextImpl(ui_state, Transparency, transparency, F32, v) } -internal UI_ColorScheme* ui_set_next_scheme(UI_ColorScheme* v) { UI_StackSetNextImpl(ui_state, Scheme, scheme, UI_ColorScheme*, v) } +internal UI_Palette* ui_set_next_palette(UI_Palette* v) { UI_StackSetNextImpl(ui_state, Palette, palette, UI_Palette* , v) } internal F32 ui_set_next_squish(F32 v) { UI_StackSetNextImpl(ui_state, Squish, squish, F32, v) } internal OS_Cursor ui_set_next_hover_cursor(OS_Cursor v) { UI_StackSetNextImpl(ui_state, HoverCursor, hover_cursor, OS_Cursor, v) } internal F_Tag ui_set_next_font(F_Tag v) { UI_StackSetNextImpl(ui_state, Font, font, F_Tag, v) } internal F32 ui_set_next_font_size(F32 v) { UI_StackSetNextImpl(ui_state, FontSize, font_size, F32, v) } +internal F_RunFlags ui_set_next_run_flags(F_RunFlags v) { UI_StackSetNextImpl(ui_state, RunFlags, run_flags, F_RunFlags, v) } internal F32 ui_set_next_tab_size(F32 v) { UI_StackSetNextImpl(ui_state, TabSize, tab_size, F32, v) } internal F32 ui_set_next_corner_radius_00(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius00, corner_radius_00, F32, v) } internal F32 ui_set_next_corner_radius_01(F32 v) { UI_StackSetNextImpl(ui_state, CornerRadius01, corner_radius_01, F32, v) } diff --git a/src/ui/generated/ui.meta.h b/src/ui/generated/ui.meta.h index bdc47306..1b2c1683 100644 --- a/src/ui/generated/ui.meta.h +++ b/src/ui/generated/ui.meta.h @@ -19,11 +19,12 @@ typedef struct UI_FocusHotNode UI_FocusHotNode; struct UI_FocusHotNode{UI_FocusH typedef struct UI_FocusActiveNode UI_FocusActiveNode; struct UI_FocusActiveNode{UI_FocusActiveNode *next; UI_FocusKind v;}; typedef struct UI_FastpathCodepointNode UI_FastpathCodepointNode; struct UI_FastpathCodepointNode{UI_FastpathCodepointNode *next; U32 v;}; typedef struct UI_TransparencyNode UI_TransparencyNode; struct UI_TransparencyNode{UI_TransparencyNode *next; F32 v;}; -typedef struct UI_SchemeNode UI_SchemeNode; struct UI_SchemeNode{UI_SchemeNode *next; UI_ColorScheme* v;}; +typedef struct UI_PaletteNode UI_PaletteNode; struct UI_PaletteNode{UI_PaletteNode *next; UI_Palette* v;}; typedef struct UI_SquishNode UI_SquishNode; struct UI_SquishNode{UI_SquishNode *next; F32 v;}; typedef struct UI_HoverCursorNode UI_HoverCursorNode; struct UI_HoverCursorNode{UI_HoverCursorNode *next; OS_Cursor v;}; typedef struct UI_FontNode UI_FontNode; struct UI_FontNode{UI_FontNode *next; F_Tag v;}; typedef struct UI_FontSizeNode UI_FontSizeNode; struct UI_FontSizeNode{UI_FontSizeNode *next; F32 v;}; +typedef struct UI_RunFlagsNode UI_RunFlagsNode; struct UI_RunFlagsNode{UI_RunFlagsNode *next; F_RunFlags v;}; typedef struct UI_TabSizeNode UI_TabSizeNode; struct UI_TabSizeNode{UI_TabSizeNode *next; F32 v;}; typedef struct UI_CornerRadius00Node UI_CornerRadius00Node; struct UI_CornerRadius00Node{UI_CornerRadius00Node *next; F32 v;}; typedef struct UI_CornerRadius01Node UI_CornerRadius01Node; struct UI_CornerRadius01Node{UI_CornerRadius01Node *next; F32 v;}; @@ -48,11 +49,12 @@ UI_FocusHotNode focus_hot_nil_stack_top;\ UI_FocusActiveNode focus_active_nil_stack_top;\ UI_FastpathCodepointNode fastpath_codepoint_nil_stack_top;\ UI_TransparencyNode transparency_nil_stack_top;\ -UI_SchemeNode scheme_nil_stack_top;\ +UI_PaletteNode palette_nil_stack_top;\ UI_SquishNode squish_nil_stack_top;\ UI_HoverCursorNode hover_cursor_nil_stack_top;\ UI_FontNode font_nil_stack_top;\ UI_FontSizeNode font_size_nil_stack_top;\ +UI_RunFlagsNode run_flags_nil_stack_top;\ UI_TabSizeNode tab_size_nil_stack_top;\ UI_CornerRadius00Node corner_radius_00_nil_stack_top;\ UI_CornerRadius01Node corner_radius_01_nil_stack_top;\ @@ -76,11 +78,12 @@ state->focus_hot_nil_stack_top.v = UI_FocusKind_Null;\ state->focus_active_nil_stack_top.v = UI_FocusKind_Null;\ state->fastpath_codepoint_nil_stack_top.v = 0;\ state->transparency_nil_stack_top.v = 0;\ -state->scheme_nil_stack_top.v = &ui_g_nil_color_scheme;\ +state->palette_nil_stack_top.v = &ui_g_nil_palette;\ state->squish_nil_stack_top.v = 0;\ state->hover_cursor_nil_stack_top.v = OS_Cursor_Pointer;\ state->font_nil_stack_top.v = f_tag_zero();\ state->font_size_nil_stack_top.v = 24.f;\ +state->run_flags_nil_stack_top.v = 0;\ state->tab_size_nil_stack_top.v = 24.f*4.f;\ state->corner_radius_00_nil_stack_top.v = 0;\ state->corner_radius_01_nil_stack_top.v = 0;\ @@ -106,11 +109,12 @@ struct { UI_FocusHotNode *top; UI_FocusKind bottom_val; UI_FocusHotNode *free; B struct { UI_FocusActiveNode *top; UI_FocusKind bottom_val; UI_FocusActiveNode *free; B32 auto_pop; } focus_active_stack;\ struct { UI_FastpathCodepointNode *top; U32 bottom_val; UI_FastpathCodepointNode *free; B32 auto_pop; } fastpath_codepoint_stack;\ struct { UI_TransparencyNode *top; F32 bottom_val; UI_TransparencyNode *free; B32 auto_pop; } transparency_stack;\ -struct { UI_SchemeNode *top; UI_ColorScheme* bottom_val; UI_SchemeNode *free; B32 auto_pop; } scheme_stack;\ +struct { UI_PaletteNode *top; UI_Palette* bottom_val; UI_PaletteNode *free; B32 auto_pop; } palette_stack;\ struct { UI_SquishNode *top; F32 bottom_val; UI_SquishNode *free; B32 auto_pop; } squish_stack;\ struct { UI_HoverCursorNode *top; OS_Cursor bottom_val; UI_HoverCursorNode *free; B32 auto_pop; } hover_cursor_stack;\ struct { UI_FontNode *top; F_Tag bottom_val; UI_FontNode *free; B32 auto_pop; } font_stack;\ struct { UI_FontSizeNode *top; F32 bottom_val; UI_FontSizeNode *free; B32 auto_pop; } font_size_stack;\ +struct { UI_RunFlagsNode *top; F_RunFlags bottom_val; UI_RunFlagsNode *free; B32 auto_pop; } run_flags_stack;\ struct { UI_TabSizeNode *top; F32 bottom_val; UI_TabSizeNode *free; B32 auto_pop; } tab_size_stack;\ struct { UI_CornerRadius00Node *top; F32 bottom_val; UI_CornerRadius00Node *free; B32 auto_pop; } corner_radius_00_stack;\ struct { UI_CornerRadius01Node *top; F32 bottom_val; UI_CornerRadius01Node *free; B32 auto_pop; } corner_radius_01_stack;\ @@ -134,11 +138,12 @@ state->focus_hot_stack.top = &state->focus_hot_nil_stack_top; state->focus_hot_s state->focus_active_stack.top = &state->focus_active_nil_stack_top; state->focus_active_stack.bottom_val = UI_FocusKind_Null; state->focus_active_stack.free = 0; state->focus_active_stack.auto_pop = 0;\ state->fastpath_codepoint_stack.top = &state->fastpath_codepoint_nil_stack_top; state->fastpath_codepoint_stack.bottom_val = 0; state->fastpath_codepoint_stack.free = 0; state->fastpath_codepoint_stack.auto_pop = 0;\ state->transparency_stack.top = &state->transparency_nil_stack_top; state->transparency_stack.bottom_val = 0; state->transparency_stack.free = 0; state->transparency_stack.auto_pop = 0;\ -state->scheme_stack.top = &state->scheme_nil_stack_top; state->scheme_stack.bottom_val = &ui_g_nil_color_scheme; state->scheme_stack.free = 0; state->scheme_stack.auto_pop = 0;\ +state->palette_stack.top = &state->palette_nil_stack_top; state->palette_stack.bottom_val = &ui_g_nil_palette; state->palette_stack.free = 0; state->palette_stack.auto_pop = 0;\ state->squish_stack.top = &state->squish_nil_stack_top; state->squish_stack.bottom_val = 0; state->squish_stack.free = 0; state->squish_stack.auto_pop = 0;\ state->hover_cursor_stack.top = &state->hover_cursor_nil_stack_top; state->hover_cursor_stack.bottom_val = OS_Cursor_Pointer; state->hover_cursor_stack.free = 0; state->hover_cursor_stack.auto_pop = 0;\ state->font_stack.top = &state->font_nil_stack_top; state->font_stack.bottom_val = f_tag_zero(); state->font_stack.free = 0; state->font_stack.auto_pop = 0;\ state->font_size_stack.top = &state->font_size_nil_stack_top; state->font_size_stack.bottom_val = 24.f; state->font_size_stack.free = 0; state->font_size_stack.auto_pop = 0;\ +state->run_flags_stack.top = &state->run_flags_nil_stack_top; state->run_flags_stack.bottom_val = 0; state->run_flags_stack.free = 0; state->run_flags_stack.auto_pop = 0;\ state->tab_size_stack.top = &state->tab_size_nil_stack_top; state->tab_size_stack.bottom_val = 24.f*4.f; state->tab_size_stack.free = 0; state->tab_size_stack.auto_pop = 0;\ state->corner_radius_00_stack.top = &state->corner_radius_00_nil_stack_top; state->corner_radius_00_stack.bottom_val = 0; state->corner_radius_00_stack.free = 0; state->corner_radius_00_stack.auto_pop = 0;\ state->corner_radius_01_stack.top = &state->corner_radius_01_nil_stack_top; state->corner_radius_01_stack.bottom_val = 0; state->corner_radius_01_stack.free = 0; state->corner_radius_01_stack.auto_pop = 0;\ @@ -162,11 +167,12 @@ if(state->focus_hot_stack.auto_pop) { ui_pop_focus_hot(); state->focus_hot_stack if(state->focus_active_stack.auto_pop) { ui_pop_focus_active(); state->focus_active_stack.auto_pop = 0; }\ if(state->fastpath_codepoint_stack.auto_pop) { ui_pop_fastpath_codepoint(); state->fastpath_codepoint_stack.auto_pop = 0; }\ if(state->transparency_stack.auto_pop) { ui_pop_transparency(); state->transparency_stack.auto_pop = 0; }\ -if(state->scheme_stack.auto_pop) { ui_pop_scheme(); state->scheme_stack.auto_pop = 0; }\ +if(state->palette_stack.auto_pop) { ui_pop_palette(); state->palette_stack.auto_pop = 0; }\ if(state->squish_stack.auto_pop) { ui_pop_squish(); state->squish_stack.auto_pop = 0; }\ if(state->hover_cursor_stack.auto_pop) { ui_pop_hover_cursor(); state->hover_cursor_stack.auto_pop = 0; }\ if(state->font_stack.auto_pop) { ui_pop_font(); state->font_stack.auto_pop = 0; }\ if(state->font_size_stack.auto_pop) { ui_pop_font_size(); state->font_size_stack.auto_pop = 0; }\ +if(state->run_flags_stack.auto_pop) { ui_pop_run_flags(); state->run_flags_stack.auto_pop = 0; }\ if(state->tab_size_stack.auto_pop) { ui_pop_tab_size(); state->tab_size_stack.auto_pop = 0; }\ if(state->corner_radius_00_stack.auto_pop) { ui_pop_corner_radius_00(); state->corner_radius_00_stack.auto_pop = 0; }\ if(state->corner_radius_01_stack.auto_pop) { ui_pop_corner_radius_01(); state->corner_radius_01_stack.auto_pop = 0; }\ @@ -189,11 +195,12 @@ internal UI_FocusKind ui_top_focus_hot(void); internal UI_FocusKind ui_top_focus_active(void); internal U32 ui_top_fastpath_codepoint(void); internal F32 ui_top_transparency(void); -internal UI_ColorScheme* ui_top_scheme(void); +internal UI_Palette* ui_top_palette(void); internal F32 ui_top_squish(void); internal OS_Cursor ui_top_hover_cursor(void); internal F_Tag ui_top_font(void); internal F32 ui_top_font_size(void); +internal F_RunFlags ui_top_run_flags(void); internal F32 ui_top_tab_size(void); internal F32 ui_top_corner_radius_00(void); internal F32 ui_top_corner_radius_01(void); @@ -215,11 +222,12 @@ internal UI_FocusKind ui_bottom_focus_hot(void); internal UI_FocusKind ui_bottom_focus_active(void); internal U32 ui_bottom_fastpath_codepoint(void); internal F32 ui_bottom_transparency(void); -internal UI_ColorScheme* ui_bottom_scheme(void); +internal UI_Palette* ui_bottom_palette(void); internal F32 ui_bottom_squish(void); internal OS_Cursor ui_bottom_hover_cursor(void); internal F_Tag ui_bottom_font(void); internal F32 ui_bottom_font_size(void); +internal F_RunFlags ui_bottom_run_flags(void); internal F32 ui_bottom_tab_size(void); internal F32 ui_bottom_corner_radius_00(void); internal F32 ui_bottom_corner_radius_01(void); @@ -241,11 +249,12 @@ internal UI_FocusKind ui_push_focus_hot(UI_FocusKind v); internal UI_FocusKind ui_push_focus_active(UI_FocusKind v); internal U32 ui_push_fastpath_codepoint(U32 v); internal F32 ui_push_transparency(F32 v); -internal UI_ColorScheme* ui_push_scheme(UI_ColorScheme* v); +internal UI_Palette* ui_push_palette(UI_Palette* v); internal F32 ui_push_squish(F32 v); internal OS_Cursor ui_push_hover_cursor(OS_Cursor v); internal F_Tag ui_push_font(F_Tag v); internal F32 ui_push_font_size(F32 v); +internal F_RunFlags ui_push_run_flags(F_RunFlags v); internal F32 ui_push_tab_size(F32 v); internal F32 ui_push_corner_radius_00(F32 v); internal F32 ui_push_corner_radius_01(F32 v); @@ -267,11 +276,12 @@ internal UI_FocusKind ui_pop_focus_hot(void); internal UI_FocusKind ui_pop_focus_active(void); internal U32 ui_pop_fastpath_codepoint(void); internal F32 ui_pop_transparency(void); -internal UI_ColorScheme* ui_pop_scheme(void); +internal UI_Palette* ui_pop_palette(void); internal F32 ui_pop_squish(void); internal OS_Cursor ui_pop_hover_cursor(void); internal F_Tag ui_pop_font(void); internal F32 ui_pop_font_size(void); +internal F_RunFlags ui_pop_run_flags(void); internal F32 ui_pop_tab_size(void); internal F32 ui_pop_corner_radius_00(void); internal F32 ui_pop_corner_radius_01(void); @@ -293,11 +303,12 @@ internal UI_FocusKind ui_set_next_focus_hot(UI_FocusKind v); internal UI_FocusKind ui_set_next_focus_active(UI_FocusKind v); internal U32 ui_set_next_fastpath_codepoint(U32 v); internal F32 ui_set_next_transparency(F32 v); -internal UI_ColorScheme* ui_set_next_scheme(UI_ColorScheme* v); +internal UI_Palette* ui_set_next_palette(UI_Palette* v); internal F32 ui_set_next_squish(F32 v); internal OS_Cursor ui_set_next_hover_cursor(OS_Cursor v); internal F_Tag ui_set_next_font(F_Tag v); internal F32 ui_set_next_font_size(F32 v); +internal F_RunFlags ui_set_next_run_flags(F_RunFlags v); internal F32 ui_set_next_tab_size(F32 v); internal F32 ui_set_next_corner_radius_00(F32 v); internal F32 ui_set_next_corner_radius_01(F32 v); diff --git a/src/ui/ui.mdesk b/src/ui/ui.mdesk index 3e90019e..0f9cdcc0 100644 --- a/src/ui/ui.mdesk +++ b/src/ui/ui.mdesk @@ -30,7 +30,7 @@ UI_StackTable: //- rjf: colors { Transparency transparency F32 0 } - { Scheme scheme `UI_ColorScheme*` `&ui_g_nil_color_scheme` } + { Palette palette `UI_Palette* ` `&ui_g_nil_palette` } //- rjf: squish { Squish squish F32 0 } @@ -41,6 +41,7 @@ UI_StackTable: //- rjf: font { Font font F_Tag `f_tag_zero()` } { FontSize font_size F32 24.f } + { RunFlags run_flags F_RunFlags 0 } { TabSize tab_size F32 `24.f*4.f` } //- rjf: corner radii diff --git a/src/ui/ui_basic_widgets.c b/src/ui/ui_basic_widgets.c index 18d051eb..91e8c6c7 100644 --- a/src/ui/ui_basic_widgets.c +++ b/src/ui/ui_basic_widgets.c @@ -130,9 +130,9 @@ internal UI_BOX_CUSTOM_DRAW(ui_line_edit_draw) F_Tag font = box->font; F32 font_size = box->font_size; F32 tab_size = box->tab_size; - Vec4F32 cursor_color = box->scheme->colors[UI_ColorCode_Cursor]; + Vec4F32 cursor_color = box->palette->colors[UI_ColorCode_Cursor]; cursor_color.w *= box->parent->parent->focus_active_t; - Vec4F32 select_color = box->scheme->colors[UI_ColorCode_Selection]; + Vec4F32 select_color = box->palette->colors[UI_ColorCode_Selection]; select_color.w *= (box->parent->parent->focus_active_t*0.2f + 0.8f); Vec2F32 text_position = ui_box_text_position(box); String8 edited_string = draw_data->edited_string; @@ -478,7 +478,7 @@ ui_do_color_tooltip_hsv(Vec3F32 hsv) { UI_PrefWidth(ui_em(22.f, 1.f)) UI_PrefHeight(ui_em(6.f, 1.f)) UI_Row UI_Padding(ui_pct(1, 0)) { - UI_Scheme(ui_fork_top_color_scheme(.background = v4f32(rgb.x, rgb.y, rgb.z, 1.f))) + UI_Palette(ui_build_palette(ui_top_palette(), .background = v4f32(rgb.x, rgb.y, rgb.z, 1.f))) UI_CornerRadius(4.f) UI_PrefWidth(ui_em(6.f, 1.f)) UI_PrefHeight(ui_em(6.f, 1.f)) ui_build_box_from_string(UI_BoxFlag_DrawBorder|UI_BoxFlag_DrawBackground, str8_lit("")); @@ -517,7 +517,7 @@ ui_do_color_tooltip_hsva(Vec4F32 hsva) { UI_PrefWidth(ui_em(22.f, 1.f)) UI_PrefHeight(ui_em(6.f, 1.f)) UI_Row UI_Padding(ui_pct(1, 0)) { - UI_Scheme(ui_fork_top_color_scheme(.background = rgba)) + UI_Palette(ui_build_palette(ui_top_palette(), .background = rgba)) UI_CornerRadius(4.f) UI_PrefWidth(ui_em(6.f, 1.f)) UI_PrefHeight(ui_em(6.f, 1.f)) ui_build_box_from_string(UI_BoxFlag_DrawBorder|UI_BoxFlag_DrawBackground, str8_lit("")); @@ -1064,7 +1064,6 @@ ui_table_vector_end(void) internal UI_Box * ui_table_cell_begin(void) { - UI_Box *vector = ui_top_parent(); U64 column_idx = ui_ts_cell_idx; F32 width_pct = column_idx < ui_ts_col_pct_count ? ui_ts_col_pcts_stable[column_idx] : 1.f; return ui_table_cell_sized_begin(ui_pct(width_pct, 0)); diff --git a/src/ui/ui_core.c b/src/ui/ui_core.c index 153eb7a3..d3ee58c8 100644 --- a/src/ui/ui_core.c +++ b/src/ui/ui_core.c @@ -1442,7 +1442,7 @@ ui_end_build(void) Min(text_pos.x+drawn_text_dim.x, rect.x1), rect.y1), ui_state->mouse); - if(text_is_truncated && mouse_is_hovering) + if(text_is_truncated && mouse_is_hovering && !(b->flags & UI_BoxFlag_DisableTruncatedHover)) { if(!str8_match(box_display_string, ui_state->string_hover_string, 0)) { @@ -1890,7 +1890,7 @@ ui_begin_ctx_menu(UI_Key key) ui_state->ctx_menu_root->flags |= UI_BoxFlag_Clip; ui_state->ctx_menu_root->flags |= UI_BoxFlag_Clickable; ui_state->ctx_menu_root->corner_radii[Corner_00] = ui_state->ctx_menu_root->corner_radii[Corner_01] = ui_state->ctx_menu_root->corner_radii[Corner_10] = ui_state->ctx_menu_root->corner_radii[Corner_11] = ui_top_font_size()*0.25f; - ui_state->ctx_menu_root->scheme = ui_top_scheme(); + ui_state->ctx_menu_root->palette = ui_top_palette(); ui_state->ctx_menu_root->blur_size = ui_top_blur_size(); } ui_push_pref_width(ui_bottom_pref_width()); @@ -2036,21 +2036,16 @@ ui_set_auto_focus_hot_key(UI_Key key) } } -//- rjf: color scheme forming +//- rjf: palette forming -internal UI_ColorScheme * -ui_push_color_scheme_(UI_ColorScheme *params) +internal UI_Palette * +ui_build_palette_(UI_Palette *base, UI_Palette *overrides) { - UI_ColorScheme *scheme = push_array(ui_build_arena(), UI_ColorScheme, 1); - MemoryCopyStruct(scheme, params); - return scheme; -} - -internal UI_ColorScheme * -ui_fork_color_scheme_(UI_ColorScheme *scheme, UI_ColorScheme *overrides) -{ - UI_ColorScheme *fork = push_array(ui_build_arena(), UI_ColorScheme, 1); - MemoryCopyStruct(fork, scheme); + UI_Palette *palette = push_array(ui_build_arena(), UI_Palette, 1); + if(base != 0) + { + MemoryCopyStruct(palette, base); + } for(EachEnumVal(UI_ColorCode, code)) { if(overrides->colors[code].x != 0 || @@ -2058,17 +2053,10 @@ ui_fork_color_scheme_(UI_ColorScheme *scheme, UI_ColorScheme *overrides) overrides->colors[code].z != 0 || overrides->colors[code].w != 0) { - fork->colors[code] = overrides->colors[code]; + palette->colors[code] = overrides->colors[code]; } } - return fork; -} - -internal UI_ColorScheme * -ui_fork_top_color_scheme_(UI_ColorScheme *params) -{ - UI_ColorScheme *scheme = ui_fork_color_scheme_(ui_top_scheme(), params); - return scheme; + return palette; } //- rjf: box node construction @@ -2215,7 +2203,7 @@ ui_build_box_from_key(UI_BoxFlags flags, UI_Key key) box->text_align = ui_state->text_alignment_stack.top->v; box->child_layout_axis = ui_state->child_layout_axis_stack.top->v; - box->scheme = ui_state->scheme_stack.top->v; + box->palette = ui_state->palette_stack.top->v; box->font = ui_state->font_stack.top->v; box->font_size = ui_state->font_size_stack.top->v; box->tab_size = ui_state->tab_size_stack.top->v; @@ -2302,10 +2290,11 @@ ui_box_equip_display_string(UI_Box *box, String8 string) ProfBeginFunction(); box->string = push_str8_copy(ui_build_arena(), string); box->flags |= UI_BoxFlag_HasDisplayString; + UI_ColorCode text_color_code = (box->flags & UI_BoxFlag_DrawTextWeak ? UI_ColorCode_TextWeak : UI_ColorCode_Text); if(box->flags & UI_BoxFlag_DrawText && (box->fastpath_codepoint == 0 || !(box->flags & UI_BoxFlag_DrawTextFastpathCodepoint))) { String8 display_string = ui_box_display_string(box); - D_FancyStringNode fancy_string_n = {0, {box->font, display_string, box->scheme->colors[UI_ColorCode_Text], box->font_size, 0, 0}}; + D_FancyStringNode fancy_string_n = {0, {box->font, display_string, box->palette->colors[text_color_code], box->font_size, 0, 0}}; D_FancyStringList fancy_strings = {&fancy_string_n, &fancy_string_n, 1}; box->display_string_runs = d_fancy_run_list_from_fancy_string_list(ui_build_arena(), box->tab_size, &fancy_strings); } @@ -2318,15 +2307,15 @@ ui_box_equip_display_string(UI_Box *box, String8 string) U64 fpcp_pos = str8_find_needle(display_string, 0, fpcp, StringMatchFlag_CaseInsensitive); if(fpcp_pos < display_string.size) { - D_FancyStringNode pst_fancy_string_n = {0, {box->font, str8_skip(display_string, fpcp_pos+fpcp.size), box->scheme->colors[UI_ColorCode_Text], box->font_size, 0, 0}}; - D_FancyStringNode cdp_fancy_string_n = {&pst_fancy_string_n, {box->font, str8_substr(display_string, r1u64(fpcp_pos, fpcp_pos+fpcp.size)), box->scheme->colors[UI_ColorCode_Text], box->font_size, 4.f, 0}}; - D_FancyStringNode pre_fancy_string_n = {&cdp_fancy_string_n, {box->font, str8_prefix(display_string, fpcp_pos), box->scheme->colors[UI_ColorCode_Text], box->font_size, 0, 0}}; + D_FancyStringNode pst_fancy_string_n = {0, {box->font, str8_skip(display_string, fpcp_pos+fpcp.size), box->palette->colors[text_color_code], box->font_size, 0, 0}}; + D_FancyStringNode cdp_fancy_string_n = {&pst_fancy_string_n, {box->font, str8_substr(display_string, r1u64(fpcp_pos, fpcp_pos+fpcp.size)), box->palette->colors[text_color_code], box->font_size, 4.f, 0}}; + D_FancyStringNode pre_fancy_string_n = {&cdp_fancy_string_n, {box->font, str8_prefix(display_string, fpcp_pos), box->palette->colors[text_color_code], box->font_size, 0, 0}}; D_FancyStringList fancy_strings = {&pre_fancy_string_n, &pst_fancy_string_n, 3}; box->display_string_runs = d_fancy_run_list_from_fancy_string_list(ui_build_arena(), box->tab_size, &fancy_strings); } else { - D_FancyStringNode fancy_string_n = {0, {box->font, display_string, box->scheme->colors[UI_ColorCode_Text], box->font_size, 0, 0}}; + D_FancyStringNode fancy_string_n = {0, {box->font, display_string, box->palette->colors[UI_ColorCode_Text], box->font_size, 0, 0}}; D_FancyStringList fancy_strings = {&fancy_string_n, &fancy_string_n, 1}; box->display_string_runs = d_fancy_run_list_from_fancy_string_list(ui_build_arena(), box->tab_size, &fancy_strings); } diff --git a/src/ui/ui_core.h b/src/ui/ui_core.h index db02e8c9..61e6ab59 100644 --- a/src/ui/ui_core.h +++ b/src/ui/ui_core.h @@ -212,8 +212,8 @@ typedef enum UI_ColorCode } UI_ColorCode; -typedef struct UI_ColorScheme UI_ColorScheme; -struct UI_ColorScheme +typedef struct UI_Palette UI_Palette; +struct UI_Palette { union { @@ -289,44 +289,45 @@ typedef U64 UI_BoxFlags; # define UI_BoxFlag_DefaultFocusNavY (UI_BoxFlags)(1ull<<14) # define UI_BoxFlag_DefaultFocusEdit (UI_BoxFlags)(1ull<<15) # define UI_BoxFlag_FocusNavSkip (UI_BoxFlags)(1ull<<16) -# define UI_BoxFlag_Disabled (UI_BoxFlags)(1ull<<17) +# define UI_BoxFlag_DisableTruncatedHover (UI_BoxFlags)(1ull<<17) +# define UI_BoxFlag_Disabled (UI_BoxFlags)(1ull<<18) //- rjf: layout -# define UI_BoxFlag_FloatingX (UI_BoxFlags)(1ull<<18) -# define UI_BoxFlag_FloatingY (UI_BoxFlags)(1ull<<19) -# define UI_BoxFlag_FixedWidth (UI_BoxFlags)(1ull<<20) -# define UI_BoxFlag_FixedHeight (UI_BoxFlags)(1ull<<21) -# define UI_BoxFlag_AllowOverflowX (UI_BoxFlags)(1ull<<22) -# define UI_BoxFlag_AllowOverflowY (UI_BoxFlags)(1ull<<23) -# define UI_BoxFlag_SkipViewOffX (UI_BoxFlags)(1ull<<24) -# define UI_BoxFlag_SkipViewOffY (UI_BoxFlags)(1ull<<25) +# define UI_BoxFlag_FloatingX (UI_BoxFlags)(1ull<<19) +# define UI_BoxFlag_FloatingY (UI_BoxFlags)(1ull<<20) +# define UI_BoxFlag_FixedWidth (UI_BoxFlags)(1ull<<21) +# define UI_BoxFlag_FixedHeight (UI_BoxFlags)(1ull<<22) +# define UI_BoxFlag_AllowOverflowX (UI_BoxFlags)(1ull<<23) +# define UI_BoxFlag_AllowOverflowY (UI_BoxFlags)(1ull<<24) +# define UI_BoxFlag_SkipViewOffX (UI_BoxFlags)(1ull<<25) +# define UI_BoxFlag_SkipViewOffY (UI_BoxFlags)(1ull<<26) //- rjf: appearance / animation -# define UI_BoxFlag_DrawDropShadow (UI_BoxFlags)(1ull<<26) -# define UI_BoxFlag_DrawBackgroundBlur (UI_BoxFlags)(1ull<<27) -# define UI_BoxFlag_DrawBackground (UI_BoxFlags)(1ull<<28) -# define UI_BoxFlag_DrawBorder (UI_BoxFlags)(1ull<<29) -# define UI_BoxFlag_DrawSideTop (UI_BoxFlags)(1ull<<30) -# define UI_BoxFlag_DrawSideBottom (UI_BoxFlags)(1ull<<31) -# define UI_BoxFlag_DrawSideLeft (UI_BoxFlags)(1ull<<32) -# define UI_BoxFlag_DrawSideRight (UI_BoxFlags)(1ull<<33) -# define UI_BoxFlag_DrawText (UI_BoxFlags)(1ull<<34) -# define UI_BoxFlag_DrawTextFastpathCodepoint (UI_BoxFlags)(1ull<<35) -# define UI_BoxFlag_DrawTextWeak (UI_BoxFlags)(1ull<<36) -# define UI_BoxFlag_DrawHotEffects (UI_BoxFlags)(1ull<<37) -# define UI_BoxFlag_DrawActiveEffects (UI_BoxFlags)(1ull<<38) -# define UI_BoxFlag_DrawOverlay (UI_BoxFlags)(1ull<<39) -# define UI_BoxFlag_DrawBucket (UI_BoxFlags)(1ull<<40) -# define UI_BoxFlag_Clip (UI_BoxFlags)(1ull<<41) -# define UI_BoxFlag_AnimatePosX (UI_BoxFlags)(1ull<<42) -# define UI_BoxFlag_AnimatePosY (UI_BoxFlags)(1ull<<43) -# define UI_BoxFlag_DisableTextTrunc (UI_BoxFlags)(1ull<<44) -# define UI_BoxFlag_DisableIDString (UI_BoxFlags)(1ull<<45) -# define UI_BoxFlag_DisableFocusViz (UI_BoxFlags)(1ull<<46) -# define UI_BoxFlag_RequireFocusBackground (UI_BoxFlags)(1ull<<47) -# define UI_BoxFlag_HasDisplayString (UI_BoxFlags)(1ull<<48) -# define UI_BoxFlag_HasFuzzyMatchRanges (UI_BoxFlags)(1ull<<49) -# define UI_BoxFlag_RoundChildrenByParent (UI_BoxFlags)(1ull<<50) +# define UI_BoxFlag_DrawDropShadow (UI_BoxFlags)(1ull<<27) +# define UI_BoxFlag_DrawBackgroundBlur (UI_BoxFlags)(1ull<<28) +# define UI_BoxFlag_DrawBackground (UI_BoxFlags)(1ull<<29) +# define UI_BoxFlag_DrawBorder (UI_BoxFlags)(1ull<<30) +# define UI_BoxFlag_DrawSideTop (UI_BoxFlags)(1ull<<31) +# define UI_BoxFlag_DrawSideBottom (UI_BoxFlags)(1ull<<32) +# define UI_BoxFlag_DrawSideLeft (UI_BoxFlags)(1ull<<33) +# define UI_BoxFlag_DrawSideRight (UI_BoxFlags)(1ull<<34) +# define UI_BoxFlag_DrawText (UI_BoxFlags)(1ull<<35) +# define UI_BoxFlag_DrawTextFastpathCodepoint (UI_BoxFlags)(1ull<<36) +# define UI_BoxFlag_DrawTextWeak (UI_BoxFlags)(1ull<<37) +# define UI_BoxFlag_DrawHotEffects (UI_BoxFlags)(1ull<<38) +# define UI_BoxFlag_DrawActiveEffects (UI_BoxFlags)(1ull<<39) +# define UI_BoxFlag_DrawOverlay (UI_BoxFlags)(1ull<<40) +# define UI_BoxFlag_DrawBucket (UI_BoxFlags)(1ull<<41) +# define UI_BoxFlag_Clip (UI_BoxFlags)(1ull<<42) +# define UI_BoxFlag_AnimatePosX (UI_BoxFlags)(1ull<<43) +# define UI_BoxFlag_AnimatePosY (UI_BoxFlags)(1ull<<44) +# define UI_BoxFlag_DisableTextTrunc (UI_BoxFlags)(1ull<<45) +# define UI_BoxFlag_DisableIDString (UI_BoxFlags)(1ull<<46) +# define UI_BoxFlag_DisableFocusViz (UI_BoxFlags)(1ull<<47) +# define UI_BoxFlag_RequireFocusBackground (UI_BoxFlags)(1ull<<48) +# define UI_BoxFlag_HasDisplayString (UI_BoxFlags)(1ull<<49) +# define UI_BoxFlag_HasFuzzyMatchRanges (UI_BoxFlags)(1ull<<50) +# define UI_BoxFlag_RoundChildrenByParent (UI_BoxFlags)(1ull<<51) //- rjf: bundles # define UI_BoxFlag_Clickable (UI_BoxFlag_MouseClickable|UI_BoxFlag_KeyboardClickable) @@ -368,7 +369,7 @@ struct UI_Box D_Bucket *draw_bucket; UI_BoxCustomDrawFunctionType *custom_draw; void *custom_draw_user_data; - UI_ColorScheme *scheme; + UI_Palette *palette; F_Tag font; F32 font_size; F32 tab_size; @@ -642,7 +643,7 @@ internal UI_Size ui_size(UI_SizeKind kind, F32 value, F32 strictness); //////////////////////////////// //~ rjf: Color Scheme Type Functions -read_only global UI_ColorScheme ui_g_nil_color_scheme = {0}; +read_only global UI_Palette ui_g_nil_palette = {0}; //////////////////////////////// //~ rjf: Scroll Point Type Functions @@ -760,13 +761,9 @@ internal B32 ui_is_key_auto_focus_hot(UI_Key key); internal void ui_set_auto_focus_active_key(UI_Key key); internal void ui_set_auto_focus_hot_key(UI_Key key); -//- rjf: color scheme forming -internal UI_ColorScheme * ui_push_color_scheme_(UI_ColorScheme *params); -internal UI_ColorScheme * ui_fork_color_scheme_(UI_ColorScheme *scheme, UI_ColorScheme *overrides); -internal UI_ColorScheme * ui_fork_top_color_scheme_(UI_ColorScheme *params); -#define ui_push_color_scheme(...) ui_push_color_scheme_(&(UI_ColorScheme){__VA_ARGS__}) -#define ui_fork_color_scheme(scheme, ...) ui_fork_color_scheme_((scheme), &(UI_ColorScheme){__VA_ARGS__}) -#define ui_fork_top_color_scheme(...) ui_fork_top_color_scheme_(&(UI_ColorScheme){__VA_ARGS__}) +//- rjf: palette forming +internal UI_Palette * ui_build_palette_(UI_Palette *base, UI_Palette *overrides); +#define ui_build_palette(base, ...) ui_build_palette_((base), &(UI_Palette){.text = v4f32(1, 1, 1, 1), __VA_ARGS__}) //- rjf: box node construction internal UI_Box * ui_build_box_from_key(UI_BoxFlags flags, UI_Key key); @@ -809,11 +806,12 @@ internal UI_FocusKind ui_top_focus_hot(void); internal UI_FocusKind ui_top_focus_active(void); internal U32 ui_top_fastpath_codepoint(void); internal F32 ui_top_transparency(void); -internal UI_ColorScheme* ui_top_scheme(void); +internal UI_Palette* ui_top_palette(void); internal F32 ui_top_squish(void); internal OS_Cursor ui_top_hover_cursor(void); internal F_Tag ui_top_font(void); internal F32 ui_top_font_size(void); +internal F_RunFlags ui_top_run_flags(void); internal F32 ui_top_tab_size(void); internal F32 ui_top_corner_radius_00(void); internal F32 ui_top_corner_radius_01(void); @@ -835,11 +833,12 @@ internal UI_FocusKind ui_bottom_focus_hot(void); internal UI_FocusKind ui_bottom_focus_active(void); internal U32 ui_bottom_fastpath_codepoint(void); internal F32 ui_bottom_transparency(void); -internal UI_ColorScheme* ui_bottom_scheme(void); +internal UI_Palette* ui_bottom_palette(void); internal F32 ui_bottom_squish(void); internal OS_Cursor ui_bottom_hover_cursor(void); internal F_Tag ui_bottom_font(void); internal F32 ui_bottom_font_size(void); +internal F_RunFlags ui_bottom_run_flags(void); internal F32 ui_bottom_tab_size(void); internal F32 ui_bottom_corner_radius_00(void); internal F32 ui_bottom_corner_radius_01(void); @@ -861,11 +860,12 @@ internal UI_FocusKind ui_push_focus_hot(UI_FocusKind v); internal UI_FocusKind ui_push_focus_active(UI_FocusKind v); internal U32 ui_push_fastpath_codepoint(U32 v); internal F32 ui_push_transparency(F32 v); -internal UI_ColorScheme* ui_push_scheme(UI_ColorScheme* v); +internal UI_Palette* ui_push_palette(UI_Palette* v); internal F32 ui_push_squish(F32 v); internal OS_Cursor ui_push_hover_cursor(OS_Cursor v); internal F_Tag ui_push_font(F_Tag v); internal F32 ui_push_font_size(F32 v); +internal F_RunFlags ui_push_run_flags(F_RunFlags v); internal F32 ui_push_tab_size(F32 v); internal F32 ui_push_corner_radius_00(F32 v); internal F32 ui_push_corner_radius_01(F32 v); @@ -887,11 +887,12 @@ internal UI_FocusKind ui_pop_focus_hot(void); internal UI_FocusKind ui_pop_focus_active(void); internal U32 ui_pop_fastpath_codepoint(void); internal F32 ui_pop_transparency(void); -internal UI_ColorScheme* ui_pop_scheme(void); +internal UI_Palette* ui_pop_palette(void); internal F32 ui_pop_squish(void); internal OS_Cursor ui_pop_hover_cursor(void); internal F_Tag ui_pop_font(void); internal F32 ui_pop_font_size(void); +internal F_RunFlags ui_pop_run_flags(void); internal F32 ui_pop_tab_size(void); internal F32 ui_pop_corner_radius_00(void); internal F32 ui_pop_corner_radius_01(void); @@ -913,11 +914,12 @@ internal UI_FocusKind ui_set_next_focus_hot(UI_FocusKind v); internal UI_FocusKind ui_set_next_focus_active(UI_FocusKind v); internal U32 ui_set_next_fastpath_codepoint(U32 v); internal F32 ui_set_next_transparency(F32 v); -internal UI_ColorScheme* ui_set_next_scheme(UI_ColorScheme* v); +internal UI_Palette* ui_set_next_palette(UI_Palette* v); internal F32 ui_set_next_squish(F32 v); internal OS_Cursor ui_set_next_hover_cursor(OS_Cursor v); internal F_Tag ui_set_next_font(F_Tag v); internal F32 ui_set_next_font_size(F32 v); +internal F_RunFlags ui_set_next_run_flags(F_RunFlags v); internal F32 ui_set_next_tab_size(F32 v); internal F32 ui_set_next_corner_radius_00(F32 v); internal F32 ui_set_next_corner_radius_01(F32 v); @@ -953,11 +955,12 @@ internal void ui_pop_corner_radius(void); #define UI_FocusActive(v) DeferLoop(ui_push_focus_active(v), ui_pop_focus_active()) #define UI_FastpathCodepoint(v) DeferLoop(ui_push_fastpath_codepoint(v), ui_pop_fastpath_codepoint()) #define UI_Transparency(v) DeferLoop(ui_push_transparency(v), ui_pop_transparency()) -#define UI_Scheme(v) DeferLoop(ui_push_scheme(v), ui_pop_scheme()) +#define UI_Palette(v) DeferLoop(ui_push_palette(v), ui_pop_palette()) #define UI_Squish(v) DeferLoop(ui_push_squish(v), ui_pop_squish()) #define UI_HoverCursor(v) DeferLoop(ui_push_hover_cursor(v), ui_pop_hover_cursor()) #define UI_Font(v) DeferLoop(ui_push_font(v), ui_pop_font()) #define UI_FontSize(v) DeferLoop(ui_push_font_size(v), ui_pop_font_size()) +#define UI_RunFlags(v) DeferLoop(ui_push_run_flags(v), ui_pop_run_flags()) #define UI_TabSize(v) DeferLoop(ui_push_tab_size(v), ui_pop_tab_size()) #define UI_CornerRadius00(v) DeferLoop(ui_push_corner_radius_00(v), ui_pop_corner_radius_00()) #define UI_CornerRadius01(v) DeferLoop(ui_push_corner_radius_01(v), ui_pop_corner_radius_01())