sketch out tag-based theme, per-window computation

This commit is contained in:
Ryan Fleury
2025-02-18 15:13:59 -08:00
parent e45bdfd90d
commit 6c9f7018f1
12 changed files with 2076 additions and 985 deletions
File diff suppressed because it is too large Load Diff
+113 -51
View File
@@ -344,55 +344,116 @@ RD_IconKind_COUNT,
typedef enum RD_ThemeColor
{
RD_ThemeColor_Null,
RD_ThemeColor_Text,
RD_ThemeColor_TextPositive,
RD_ThemeColor_TextNegative,
RD_ThemeColor_TextNeutral,
RD_ThemeColor_TextWeak,
RD_ThemeColor_Cursor,
RD_ThemeColor_CursorInactive,
RD_ThemeColor_Focus,
RD_ThemeColor_Hover,
RD_ThemeColor_DropShadow,
RD_ThemeColor_DisabledOverlay,
RD_ThemeColor_DropSiteOverlay,
RD_ThemeColor_InactivePanelOverlay,
RD_ThemeColor_SelectionOverlay,
RD_ThemeColor_HighlightOverlay,
RD_ThemeColor_HighlightOverlayError,
RD_ThemeColor_DropShadow,
RD_ThemeColor_BaseBackground,
RD_ThemeColor_BaseBackgroundAlt,
RD_ThemeColor_BaseBackgroundGood,
RD_ThemeColor_BaseBackgroundBad,
RD_ThemeColor_BaseBackgroundPop,
RD_ThemeColor_BaseBorder,
RD_ThemeColor_BaseText,
RD_ThemeColor_BaseTextWeak,
RD_ThemeColor_BaseHover,
RD_ThemeColor_BaseFocus,
RD_ThemeColor_BaseCursor,
RD_ThemeColor_BaseSelection,
RD_ThemeColor_MenuBarBackground,
RD_ThemeColor_MenuBarBackgroundAlt,
RD_ThemeColor_MenuBarBackgroundGood,
RD_ThemeColor_MenuBarBackgroundBad,
RD_ThemeColor_MenuBarBackgroundPop,
RD_ThemeColor_MenuBarBorder,
RD_ThemeColor_FloatingBackground,
RD_ThemeColor_FloatingBackgroundAlt,
RD_ThemeColor_FloatingBorder,
RD_ThemeColor_ImplicitButtonBackground,
RD_ThemeColor_ImplicitButtonHover,
RD_ThemeColor_ImplicitButtonBorder,
RD_ThemeColor_PlainButtonBackground,
RD_ThemeColor_PlainButtonHover,
RD_ThemeColor_PlainButtonBorder,
RD_ThemeColor_PositivePopButtonBackground,
RD_ThemeColor_PositivePopButtonHover,
RD_ThemeColor_PositivePopButtonBorder,
RD_ThemeColor_NegativePopButtonBackground,
RD_ThemeColor_NegativePopButtonHover,
RD_ThemeColor_NegativePopButtonBorder,
RD_ThemeColor_NeutralPopButtonBackground,
RD_ThemeColor_NeutralPopButtonHover,
RD_ThemeColor_NeutralPopButtonBorder,
RD_ThemeColor_ScrollBarButtonBackground,
RD_ThemeColor_ScrollBarButtonHover,
RD_ThemeColor_ScrollBarButtonBorder,
RD_ThemeColor_MenuBarText,
RD_ThemeColor_MenuBarTextWeak,
RD_ThemeColor_MenuBarHover,
RD_ThemeColor_MenuBarFocus,
RD_ThemeColor_MenuBarCursor,
RD_ThemeColor_MenuBarSelection,
RD_ThemeColor_GoodBackground,
RD_ThemeColor_GoodBackgroundAlt,
RD_ThemeColor_GoodBackgroundGood,
RD_ThemeColor_GoodBackgroundBad,
RD_ThemeColor_GoodBackgroundPop,
RD_ThemeColor_GoodBorder,
RD_ThemeColor_GoodText,
RD_ThemeColor_GoodTextWeak,
RD_ThemeColor_GoodHover,
RD_ThemeColor_GoodFocus,
RD_ThemeColor_GoodCursor,
RD_ThemeColor_GoodSelection,
RD_ThemeColor_BadBackground,
RD_ThemeColor_BadBackgroundAlt,
RD_ThemeColor_BadBackgroundGood,
RD_ThemeColor_BadBackgroundBad,
RD_ThemeColor_BadBackgroundPop,
RD_ThemeColor_BadBorder,
RD_ThemeColor_BadText,
RD_ThemeColor_BadTextWeak,
RD_ThemeColor_BadHover,
RD_ThemeColor_BadFocus,
RD_ThemeColor_BadCursor,
RD_ThemeColor_BadSelection,
RD_ThemeColor_PopBackground,
RD_ThemeColor_PopBackgroundAlt,
RD_ThemeColor_PopBackgroundGood,
RD_ThemeColor_PopBackgroundBad,
RD_ThemeColor_PopBackgroundPop,
RD_ThemeColor_PopBorder,
RD_ThemeColor_PopText,
RD_ThemeColor_PopTextWeak,
RD_ThemeColor_PopHover,
RD_ThemeColor_PopFocus,
RD_ThemeColor_PopCursor,
RD_ThemeColor_PopSelection,
RD_ThemeColor_ScrollBarBackground,
RD_ThemeColor_ScrollBarBackgroundAlt,
RD_ThemeColor_ScrollBarBackgroundGood,
RD_ThemeColor_ScrollBarBackgroundBad,
RD_ThemeColor_ScrollBarBackgroundPop,
RD_ThemeColor_ScrollBarBorder,
RD_ThemeColor_ScrollBarText,
RD_ThemeColor_ScrollBarTextWeak,
RD_ThemeColor_ScrollBarHover,
RD_ThemeColor_ScrollBarFocus,
RD_ThemeColor_ScrollBarCursor,
RD_ThemeColor_ScrollBarSelection,
RD_ThemeColor_TabBackground,
RD_ThemeColor_TabHover,
RD_ThemeColor_TabBackgroundAlt,
RD_ThemeColor_TabBackgroundGood,
RD_ThemeColor_TabBackgroundBad,
RD_ThemeColor_TabBackgroundPop,
RD_ThemeColor_TabBorder,
RD_ThemeColor_TabBackgroundInactive,
RD_ThemeColor_TabHoverInactive,
RD_ThemeColor_TabBorderInactive,
RD_ThemeColor_TabText,
RD_ThemeColor_TabTextWeak,
RD_ThemeColor_TabHover,
RD_ThemeColor_TabFocus,
RD_ThemeColor_TabCursor,
RD_ThemeColor_TabSelection,
RD_ThemeColor_TabInactiveBackground,
RD_ThemeColor_TabInactiveBackgroundAlt,
RD_ThemeColor_TabInactiveBackgroundGood,
RD_ThemeColor_TabInactiveBackgroundBad,
RD_ThemeColor_TabInactiveBackgroundPop,
RD_ThemeColor_TabInactiveBorder,
RD_ThemeColor_TabInactiveText,
RD_ThemeColor_TabInactiveTextWeak,
RD_ThemeColor_TabInactiveHover,
RD_ThemeColor_TabInactiveFocus,
RD_ThemeColor_TabInactiveCursor,
RD_ThemeColor_TabInactiveSelection,
RD_ThemeColor_DropSiteBackground,
RD_ThemeColor_DropSiteBackgroundAlt,
RD_ThemeColor_DropSiteBackgroundGood,
RD_ThemeColor_DropSiteBackgroundBad,
RD_ThemeColor_DropSiteBackgroundPop,
RD_ThemeColor_DropSiteBorder,
RD_ThemeColor_DropSiteText,
RD_ThemeColor_DropSiteTextWeak,
RD_ThemeColor_DropSiteHover,
RD_ThemeColor_DropSiteFocus,
RD_ThemeColor_DropSiteCursor,
RD_ThemeColor_DropSiteSelection,
RD_ThemeColor_CodeDefault,
RD_ThemeColor_CodeSymbol,
RD_ThemeColor_CodeType,
@@ -571,20 +632,21 @@ extern String8 rd_binding_version_remap_new_name_table[8];
extern String8 rd_icon_kind_text_table[69];
extern String8 rd_theme_preset_display_string_table[9];
extern String8 rd_theme_preset_code_string_table[9];
extern String8 rd_theme_preset_cfg_string_table[9];
extern String8 rd_theme_color_version_remap_old_name_table[22];
extern String8 rd_theme_color_version_remap_new_name_table[22];
extern Vec4F32 rd_theme_preset_colors__default_dark[84];
extern Vec4F32 rd_theme_preset_colors__default_light[84];
extern Vec4F32 rd_theme_preset_colors__vs_dark[84];
extern Vec4F32 rd_theme_preset_colors__vs_light[84];
extern Vec4F32 rd_theme_preset_colors__solarized_dark[84];
extern Vec4F32 rd_theme_preset_colors__solarized_light[84];
extern Vec4F32 rd_theme_preset_colors__handmade_hero[84];
extern Vec4F32 rd_theme_preset_colors__four_coder[84];
extern Vec4F32 rd_theme_preset_colors__far_manager[84];
extern Vec4F32 rd_theme_preset_colors__default_dark[145];
extern Vec4F32 rd_theme_preset_colors__default_light[145];
extern Vec4F32 rd_theme_preset_colors__vs_dark[145];
extern Vec4F32 rd_theme_preset_colors__vs_light[145];
extern Vec4F32 rd_theme_preset_colors__solarized_dark[145];
extern Vec4F32 rd_theme_preset_colors__solarized_light[145];
extern Vec4F32 rd_theme_preset_colors__handmade_hero[145];
extern Vec4F32 rd_theme_preset_colors__four_coder[145];
extern Vec4F32 rd_theme_preset_colors__far_manager[145];
extern Vec4F32* rd_theme_preset_colors_table[9];
extern String8 rd_theme_color_display_string_table[84];
extern String8 rd_theme_color_cfg_string_table[84];
extern String8 rd_theme_color_display_string_table[145];
extern String8 rd_theme_color_cfg_string_table[145];
read_only global U8 rd_icon_font_bytes__data[] =
{
0x00,0x01,0x00,0x00,0x00,0x0f,0x00,0x80,0x00,0x03,0x00,0x70,0x47,0x53,0x55,0x42,0x20,0x8b,0x25,0x7a,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x54,0x4f,0x53,0x2f,0x32,0x56,0x44,0x49,0xa0,0x00,0x00,0x01,0x50,0x00,0x00,0x00,0x60,0x63,0x6d,0x61,0x70,0x2a,0x09,0xe2,0xc2,0x00,0x00,0x01,0xb0,0x00,0x00,0x05,0xec,0x63,0x76,0x74,0x20,
+276 -94
View File
@@ -979,10 +979,116 @@ RD_ViewRuleTable:
////////////////////////////////
//~ rjf: Theme Tables
@table(name_upper name_lower display_string)
@table(name_upper name_lower display_string cfg)
RD_ThemePresetTable:
{
{ DefaultDark default_dark "Default (Dark)" }
//- rjf: default dark theme
{
DefaultDark default_dark "Default (Dark)",
```theme:
{
background: 0x1b1b1bff,
alt: background: 0x222222ff,
good: background: 0x222222ff,
bad: background: 0x222222ff,
pop: background: 0x222222ff,
border: 0x404040ff,
text: 0xe5e5e5ff,
weak: text: 0xe5e5e5ff,
hover: 0xffffffff,
focus: 0xfda200ff,
cursor: 0x8aff00ff,
selection: 0x99ccffff,
menu_bar:
{
background: 0x2b3740ff,
border: 0x3e4c57ff,
}
good:
{
background: 0x2c5b36ff,
border: 0x3f3f3fff,
}
bad:
{
background: 0x803425ff,
border: 0xe88774ff,
}
pop:
{
background: 0x355b6eff,
border: 0x355b6eff,
}
scroll_bar:
{
background: 0x2b2b2bff,
border: 0x3f3f3fff,
}
tab:
{
background: 0x6f5135ff,
border: 0x8a6e54ff,
inactive:
{
background: 0x2b3740ff,
border: 0x3e4c57ff,
}
}
drop_site:
{
background: 0xffffffff,
border: 0xffffffff,
}
code:
{
default: text: 0xcbcbcbff,
symbol: text: 0x42a2cfff,
type: text: 0xfec746ff,
local: text: 0x98bc80ff,
register: text: 0xb7afd5ff,
keyword: text: 0xb38d4cff,
delimiter_or_operator: text: 0x767676ff,
numeric: text: 0x98abb1ff,
numeric_alt_digit_group: text: 0x738287ff,
string: text: 0x98abb1ff,
meta: text: 0xd96759ff,
comment: text: 0x717171ff,
line_info_0: background: 0x99503dff,
line_info_1: background: 0xfe8249ff,
line_info_2: background: 0xffba17ff,
line_info_3: background: 0xcefd69ff,
line_info_4: background: 0x99503dff,
line_info_5: background: 0xfe8249ff,
line_info_6: background: 0xcefd69ff,
line_info_7: background: 0x99503dff,
}
debug_state:
{
thread_0: 0xffcb7fff,
thread_1: 0xb2ff65ff,
thread_2: 0xff99e5ff,
thread_3: 0x6598ffff,
thread_4: 0x65ffcbff,
thread_5: 0xff9819ff,
thread_6: 0x9932ffff,
thread_7: 0x65ff4cff,
thread_unwound: 0xb2ccd8ff,
thread_error: 0xb23219ff,
breakpoint: 0xa72911ff,
}
}
```
}
{ DefaultLight default_light "Default (Light)" }
{ VSDark vs_dark "VS (Dark)" }
{ VSLight vs_light "VS (Light)" }
@@ -993,107 +1099,178 @@ RD_ThemePresetTable:
{ FarManager far_manager "Far Manager" }
}
@table(name display_name name_lower default_dark default_light vs_dark vs_light solarized_dark solarized_light handmade_hero four_coder far_manager desc)
@table(name display_name name_lower default_dark default_light vs_dark vs_light solarized_dark solarized_light handmade_hero four_coder far_manager desc)
RD_ThemeColorTable:
{
{Null "Null" null 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff ""}
{Null "Null" null 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff 0xff00ffff ""}
//- rjf: global ui colors
{Text "Text" text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TextPositive "Text (Positive)" text_positive 0x4dc221ff 0x4d9e2eff 0x4dc221ff 0x4dc221ff 0x4dc221ff 0x4dc221ff 0x4dc221ff 0x4dc221ff 0x4dc221ff ""}
{TextNegative "Text (Negative)" text_negative 0xc56452ff 0xbd371eff 0xc56452ff 0xc46451ff 0xc56452ff 0xc56452ff 0xc56452ff 0xc56452ff 0xc56452ff ""}
{TextNeutral "Text (Neutral)" text_neutral 0x307eb2ff 0x0064a7ff 0x307eb2ff 0x307eb2ff 0x307eb2ff 0x307eb2ff 0x307eb2ff 0x307eb2ff 0x307eb2ff ""}
{TextWeak "Text (Weak)" text_weak 0xa4a4a4ff 0x4c4c4cff 0xa4a4a4fe 0x0000007f 0x9999998a 0x818181ff 0x6e512eff 0x566e4bff 0x00a9a9ff ""}
{Cursor "Cursor" cursor 0x8aff00ff 0x699830ff 0x8aff00ff 0x000000ff 0x8aff00ff 0x586e75ff 0x8aff00ff 0x8aff00ff 0x8aff00ff ""}
{CursorInactive "Cursor (Inactive)" cursor_inactive 0xb23217ff 0xb23217ff 0xb23217ff 0xb23217ff 0xb23217ff 0xb23217ff 0xb23217ff 0xb23217ff 0xb23217ff ""}
{Focus "Focus" focus 0xfda200ff 0x9c5900ff 0xfda200ff 0x002affff 0xfda200ff 0x92743dff 0xfda200ff 0xfda200ff 0x00fefeff ""}
{Hover "Hover" hover 0xffffffff 0xffffffff 0xffffffff 0x000000ff 0xffffffff 0x747474ff 0xffffffff 0xffffffff 0xffffffff ""}
{DropShadow "Drop Shadow" drop_shadow 0x000000ff 0x0000004c 0x0000007f 0xa3a3a37e 0x0000007f 0xc9bfa394 0x0000007f 0x0000007f 0x0000007f ""}
{DisabledOverlay "Disabled Overlay" disabled_overlay 0x000000ff 0xa6a6a63f 0x0000003f 0x0000003f 0x0000003f 0xe4dac090 0x0000003f 0x0000003f 0x0000003f ""}
{DropSiteOverlay "Drop Site Overlay" drop_site_overlay 0xffffffff 0x4848480c 0xffffff0c 0x0000000c 0xffffff0c 0xffffff0c 0xffffff0c 0xffffff0c 0xffffff0c ""}
{InactivePanelOverlay "Inactive Panel Overlay" inactive_panel_overlay 0x000000ff 0xa4a4a43f 0x0000003f 0xfefefe53 0x0000003f 0x0000001c 0x0000003f 0x0000003f 0x0000003f ""}
{SelectionOverlay "Selection Overlay" selection_overlay 0x99ccffff 0x003d7a48 0x99ccff4c 0x3d74ab4b 0x99ccff4c 0x678cb24c 0x99ccff4c 0x99ccff4c 0x99ccff4c ""}
{HighlightOverlay "Highlight Overlay" highlight_overlay 0xffffffff 0xffffff1e 0xffffff1e 0x0000001e 0xffffff1e 0xffffff1e 0xffffff1e 0xffffff1e 0xffffff1e ""}
{HighlightOverlayError "Error Highlight Overlay" error_highlight_overlay 0x5f1200ff 0xff30005f 0x5f12005f 0x5f12005f 0x5f12005f 0x5f12005f 0x5f12005f 0x5f12005f 0x5f12005f ""}
//- rjf: global colors
{InactivePanelOverlay "Inactive Panel Overlay" inactive_panel_overlay 0x000000ff 0xa4a4a43f 0x0000003f 0xfefefe53 0x0000003f 0x0000001c 0x0000003f 0x0000003f 0x0000003f ""}
{DropShadow "Drop Shadow" drop_shadow 0x000000ff 0x0000004c 0x0000007f 0xa3a3a37e 0x0000007f 0xc9bfa394 0x0000007f 0x0000007f 0x0000007f ""}
//- rjf: base ui container colors
{BaseBackground "Base Background" base_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{BaseBackgroundAlt "Base Background (Alternate)" base_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BaseBorder "Base Border" base_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
//- rjf: base palette
{BaseBackground "Base Background" base_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{BaseBackgroundAlt "Base Background (Alternate)" base_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BaseBackgroundGood "Base Background (Good)" base_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BaseBackgroundBad "Base Background (Bad)" base_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BaseBackgroundPop "Base Background (Pop)" base_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BaseBorder "Base Border" base_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{BaseText "Base Text" base_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BaseTextWeak "Base Text (Weak)" base_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BaseHover "Base Hover" base_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BaseFocus "Base Focus" base_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BaseCursor "Base Cursor" base_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BaseSelection "Base Selection" base_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: menu bar ui container colors
{MenuBarBackground "Menu Bar Background" menu_bar_background 0x2b3740ff 0xeaeaea7f 0x1b1b1bfd 0xffffff7f 0x00202bff 0xeee8d5ff 0x0c0c0cfe 0x0c0c0cfe 0x007d7dff ""}
{MenuBarBackgroundAlt "Menu Bar Background (Alternate)" menu_bar_background_alt 0x2b3740ff 0x3e4c577f 0x1b1b1bfd 0xffffff7f 0x3e4c577f 0x3e4c577f 0x3e4c577f 0x3e4c577f 0x007d7dff ""}
{MenuBarBorder "Menu Bar Border" menu_bar_border 0x3e4c57ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xffffff19 0xbebaabfe 0xffffff19 0xffffff19 0xfefefe00 ""}
//- rjf: menu bar palette
{MenuBarBackground "Menu Bar Background" menu_bar_background 0x2b3740ff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{MenuBarBackgroundAlt "Menu Bar Background (Alternate)" menu_bar_background_alt 0x2b3740ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{MenuBarBackgroundGood "Menu Bar Background (Good)" menu_bar_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{MenuBarBackgroundBad "Menu Bar Background (Bad)" menu_bar_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{MenuBarBackgroundPop "Menu Bar Background (Pop)" menu_bar_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{MenuBarBorder "Menu Bar Border" menu_bar_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{MenuBarText "Menu Bar Text" menu_bar_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{MenuBarTextWeak "Menu Bar Text (Weak)" menu_bar_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{MenuBarHover "Menu Bar Hover" menu_bar_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{MenuBarFocus "Menu Bar Focus" menu_bar_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{MenuBarCursor "Menu Bar Cursor" menu_bar_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{MenuBarSelection "Menu Bar Selection" menu_bar_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: floating ui container colors
{FloatingBackground "Floating Background" floating_background 0x333333ff 0xccccccc0 0x33333333 0xfefefec7 0x007fa14e 0xffffff7c 0x0c0c0c32 0x0c0c0c3e 0x007c7c55 ""}
{FloatingBackgroundAlt "Floating Background (Alternate)" floating_background_alt 0x333333ff 0x33333333 0x33333333 0x33333333 0x33333333 0x33333333 0x33333333 0x33333333 0x33333333 ""}
{FloatingBorder "Floating Border" floating_border 0x3f3f3fff 0xa4a4a4fe 0x3f3f3ffd 0xb6b6b6ff 0xfdfdfd3a 0xbebaabfe 0x423425fe 0x3f3f3ffd 0x00ffff55 ""}
//- rjf: good palette
{GoodBackground "Good Background" good_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{GoodBackgroundAlt "Good Background (Alternate)" good_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{GoodBackgroundGood "Good Background (Good)" good_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{GoodBackgroundBad "Good Background (Bad)" good_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{GoodBackgroundPop "Good Background (Pop)" good_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{GoodBorder "Good Border" good_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{GoodText "Good Text" good_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{GoodTextWeak "Good Text (Weak)" good_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{GoodHover "Good Hover" good_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{GoodFocus "Good Focus" good_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{GoodCursor "Good Cursor" good_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{GoodSelection "Good Selection" good_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: ui element colors
{ImplicitButtonBackground "Implicit Button Background" implicit_button_background 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 ""}
{ImplicitButtonHover "Implicit Button Hover" implicit_button_hover 0xffffffff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 ""}
{ImplicitButtonBorder "Implicit Button Border" implicit_button_border 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0xbdb9aa00 0x00000000 0x00000000 0x00000000 ""}
{PlainButtonBackground "Plain Button Background" plain_button_background 0x1b1b1bff 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe ""}
{PlainButtonHover "Plain Button Hover" plain_button_hover 0xffffffff 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe 0x1b1b1bfe ""}
{PlainButtonBorder "Plain Button Border" plain_button_border 0x3f3f3fff 0x3f3f3ffe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x3f3f3ffe 0x3f3f3ffe 0x3f3f3ffe ""}
{PositivePopButtonBackground "Positive Pop Button Background" positive_pop_button_background 0x2c5b36ff 0x65f534ff 0x2c5b36ff 0x84ce93ff 0x2c5b36ff 0xb6ddbeff 0x132e19ff 0x152f1bff 0x2c5b36ff ""}
{PositivePopButtonHover "Positive Pop Button Hover" positive_pop_button_hover 0xffc800ff 0x65f534ff 0x2c5b36ff 0x84ce93ff 0x2c5b36ff 0xb6ddbeff 0x132e19ff 0x152f1bff 0x2c5b36ff ""}
{PositivePopButtonBorder "Positive Pop Button Border" positive_pop_button_border 0x3f3f3fff 0x3f3f3ffd 0x3f3f3ffd 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x3f3f3ffd 0x3f3f3ffd 0x3f3f3ffd ""}
{NegativePopButtonBackground "Negative Pop Button Background" negative_pop_button_background 0x803425ff 0xff694cff 0x803425ff 0xbd3e24ff 0x803425ff 0xf8b0a1ff 0x803425ff 0x43150cff 0x803425ff ""}
{NegativePopButtonHover "Negative Pop Button Hover" negative_pop_button_hover 0xe88774ff 0xff694cff 0x803425ff 0xbd3e24ff 0x803425ff 0xf8b0a1ff 0x803425ff 0x43150cff 0x803425ff ""}
{NegativePopButtonBorder "Negative Pop Button Border" negative_pop_button_border 0x3f3f3fff 0x3f3f3ffd 0x3f3f3ffd 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x3f3f3ffd 0x3f3f3ffd 0x3f3f3ffd ""}
{NeutralPopButtonBackground "Neutral Pop Button Background" neutral_pop_button_background 0x355b6eff 0xa6becaff 0x355b6eff 0x6e9db5ff 0x355b6eff 0xb2d3e3ff 0x15445cff 0x1b323eff 0x933100ff ""}
{NeutralPopButtonHover "Neutral Pop Button Hover" neutral_pop_button_hover 0xffbb00ff 0xa6becaff 0x355b6eff 0x6e9db5ff 0x355b6eff 0xb2d3e3ff 0x15445cff 0x1b323eff 0x933100ff ""}
{NeutralPopButtonBorder "Neutral Pop Button Border" neutral_pop_button_border 0x3f3f3fff 0xa6a6a6fd 0x3f3f3ffd 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x3f3f3ffd 0x3f3f3ffd 0x3f3f3ffd ""}
{ScrollBarButtonBackground "Scroll Bar Button Background" scroll_bar_button_background 0x2b2b2bff 0xa9a9a9fe 0x2b2b2bfe 0xe8e8e8fe 0x005e77fe 0xe3dbc7fe 0x1f1f27fe 0x212721fe 0x007d7dff ""}
{ScrollBarButtonHover "Scroll Bar Button Hover" scroll_bar_button_hover 0xffffffff 0xa9a9a9fe 0x2b2b2bfe 0xe8e8e8fe 0x005e77fe 0xe3dbc7fe 0x1f1f27fe 0x212721fe 0x007d7dff ""}
{ScrollBarButtonBorder "Scroll Bar Button Border" scroll_bar_button_border 0x3f3f3fff 0xc0c0c0fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0xfefefe4d 0x3f3f3ffe 0x3f3f3ffe ""}
{TabBackground "Tab Background" tab_background 0x6f5135ff 0xa98b6fff 0x0079ccff 0xfffffffe 0x005e77fe 0xfdf6e3ff 0x1f1f27fe 0x212721fe 0x007d7dff ""}
{TabHover "Tab Hover" tab_hover 0xffa600ff 0xa98b6fff 0x0079ccff 0xfffffffe 0x005e77fe 0xfdf6e3ff 0x1f1f27fe 0x212721fe 0x007d7dff ""}
{TabBorder "Tab Border" tab_border 0x8a6e54ff 0xffffff4d 0xfefefe4d 0xb6b6b6ff 0xfefefe4d 0xbebaabfe 0xfefefe4d 0xfefefe4d 0xfefefe4d ""}
{TabBackgroundInactive "Tab Background (Inactive)" tab_background_inactive 0x2b3740ff 0x8282827f 0xfefefe14 0xcdd4dc7f 0x3e4c577f 0xd4cfc0fe 0x131315ee 0x3a3a3a7f 0x3e4c577f ""}
{TabHoverInactive "Tab Hover (Inactive)" tab_hover_inactive 0xffa600ff 0x8282827f 0xfefefe14 0xcdd4dc7f 0x3e4c577f 0xd4cfc0fe 0x131315ee 0x3a3a3a7f 0x3e4c577f ""}
{TabBorderInactive "Tab Border (Inactive)" tab_border_inactive 0x3e4c57ff 0xffffff19 0xffffff00 0xb6b6b6ff 0xffffff19 0xbebaabfe 0xffffff19 0x00000019 0xfefefe19 ""}
//- rjf: bad palette
{BadBackground "Bad Background" bad_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{BadBackgroundAlt "Bad Background (Alternate)" bad_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BadBackgroundGood "Bad Background (Good)" bad_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BadBackgroundBad "Bad Background (Bad)" bad_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BadBackgroundPop "Bad Background (Pop)" bad_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{BadBorder "Bad Border" bad_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{BadText "Bad Text" bad_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BadTextWeak "Bad Text (Weak)" bad_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BadHover "Bad Hover" bad_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BadFocus "Bad Focus" bad_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BadCursor "Bad Cursor" bad_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{BadSelection "Bad Selection" bad_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: code colors
{CodeDefault "Code (Default)" code_default 0xcbcbcbff 0x4d4d4dff 0xcbcbcbff 0x000000ff 0xcbcbcbff 0x657b83ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{CodeSymbol "Code (Symbol)" code_symbol 0x42a2cfff 0x205670fe 0xdcdcaaff 0x000000ff 0xcb4a15ff 0xcb4a15ff 0xcc5634ff 0x42a2cffe 0x65b1ffff ""}
{CodeType "Code (Type)" code_type 0xfec746ff 0x996b00ff 0x4ec9afff 0xa33700ff 0xcb4a15ff 0xcb4a15ff 0xd8a51bff 0xfd7c52ff 0xfec746ff ""}
{CodeLocal "Code (Local)" code_local 0x98bc80ff 0x446a2bff 0x9cdbfeff 0x007666ff 0x98bc80ff 0x258ad2ff 0xc04047ff 0x98bc80ff 0x00ff00ff ""}
{CodeRegister "Code (Register)" code_register 0xb7afd5ff 0x4c35a1ff 0xb7afd5ff 0xb7afd5ff 0xb7afd5ff 0x373345ff 0xb7afd5ff 0xb7afd5ff 0xb7afd5ff ""}
{CodeKeyword "Code (Keyword)" code_keyword 0xb38d4cff 0x573700ff 0x569cd6ff 0x0000ffff 0x849803ff 0x586e75ff 0xac7a09ff 0xd08f1eff 0x00ffffff ""}
{CodeDelimiterOperator "Code (Delimiters/Operators)" code_delimiter_operator 0x767676ff 0x767676ff 0x767676ff 0x767676ff 0x767676ff 0x767676ff 0xa08462ff 0x90b080ff 0xffffffff ""}
{CodeNumeric "Code (Numeric)" code_numeric 0x98abb1ff 0x3f6e7dff 0xb5cea8ff 0x088658ff 0xd33582ff 0xd33482ef 0x698e21ff 0x4fff2eff 0x00ff00ff ""}
{CodeNumericAltDigitGroup "Code (Numeric, Alt. Digit Group)" code_numeric_alt_digit_group 0x738287ff 0x1f4450ff 0x729360ff 0x0c3828ff 0x902559ff 0x8e2659ff 0x3a4e11ff 0x3ccd21ff 0x738287ff ""}
{CodeString "Code (String)" code_string 0x98abb1ff 0x3c606bff 0xd59b85ff 0xa31414ff 0x1f9d91ff 0x29a198ff 0x6a8e22ff 0x4fff2eff 0x98abb1ff ""}
{CodeMeta "Code (Meta)" code_meta 0xd96759ff 0xad3627ff 0xd59c85ff 0x0000ffff 0x839802ff 0xd96759ff 0xdab98fff 0xa0b8a0ff 0xff0000ff ""}
{CodeComment "Code (Comment)" code_comment 0x717171ff 0x4b4b4bff 0x57a54aff 0x008000ff 0x556a6fff 0x93a1a1ff 0x686868ff 0x1e8fefff 0xffffffff ""}
{CodeLineNumbers "Code Line Numbers" code_line_numbers 0x7f7f7fff 0x4b4b4bff 0x2a91afff 0x227893ff 0x566c73ff 0x227893ef 0xa08462ff 0x7e7e7ffe 0x007d7dff ""}
{CodeLineNumbersSelected "Code Line Numbers (Selected)" code_line_numbers_selected 0xbebebeff 0x000000ff 0x9ddaecff 0x123d4bfe 0xa2aaacff 0x111e22ef 0xc8b399ff 0xbebebeff 0x00fefeff ""}
//- rjf: pop palette
{PopBackground "Pop Background" pop_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{PopBackgroundAlt "Pop Background (Alternate)" pop_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{PopBackgroundGood "Pop Background (Good)" pop_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{PopBackgroundBad "Pop Background (Bad)" pop_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{PopBackgroundPop "Pop Background (Pop)" pop_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{PopBorder "Pop Border" pop_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{PopText "Pop Text" pop_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{PopTextWeak "Pop Text (Weak)" pop_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{PopHover "Pop Hover" pop_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{PopFocus "Pop Focus" pop_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{PopCursor "Pop Cursor" pop_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{PopSelection "Pop Selection" pop_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: debugging colors
{LineInfoBackground0 "Line Info Background 0" line_info_background_0 0x99503dff 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f ""}
{LineInfoBackground1 "Line Info Background 1" line_info_background_1 0xfe8249ff 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f ""}
{LineInfoBackground2 "Line Info Background 2" line_info_background_2 0xffba17ff 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f ""}
{LineInfoBackground3 "Line Info Background 3" line_info_background_3 0xcefd69ff 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f ""}
{LineInfoBackground4 "Line Info Background 4" line_info_background_4 0x99503dff 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f ""}
{LineInfoBackground5 "Line Info Background 5" line_info_background_5 0xfe8249ff 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f ""}
{LineInfoBackground6 "Line Info Background 6" line_info_background_6 0xffba17ff 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f ""}
{LineInfoBackground7 "Line Info Background 7" line_info_background_7 0xcefd69ff 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f ""}
{Thread0 "Thread 0" thread_0 0xffcb7fff 0x945800ff 0xffcb7fff 0x945800ff 0xffcb7fff 0x945800ff 0xffcb7fff 0xffcb7fff 0xffcb7fff ""}
{Thread1 "Thread 1" thread_1 0xb2ff65ff 0x3f5b23ff 0xb2ff65ff 0x3f5b23ff 0xb2ff65ff 0x3f5b23ff 0xb2ff65ff 0xb2ff65ff 0xb2ff65ff ""}
{Thread2 "Thread 2" thread_2 0xff99e5ff 0x642a55ff 0xff99e5ff 0x642a55ff 0xff99e5ff 0x642a55ff 0xff99e5ff 0xff99e5ff 0xff99e5ff ""}
{Thread3 "Thread 3" thread_3 0x6598ffff 0x30456fff 0x6598ffff 0x30456fff 0x6598ffff 0x30456fff 0x6598ffff 0x6598ffff 0x6598ffff ""}
{Thread4 "Thread 4" thread_4 0x65ffcbff 0x264f41ff 0x65ffcbff 0x264f41ff 0x65ffcbff 0x264f41ff 0x65ffcbff 0x65ffcbff 0x65ffcbff ""}
{Thread5 "Thread 5" thread_5 0xff9819ff 0x736a5fff 0xff9819ff 0x736a5fff 0xff9819ff 0x736a5fff 0xff9819ff 0xff9819ff 0xff9819ff ""}
{Thread6 "Thread 6" thread_6 0x9932ffff 0x472f5eff 0x9932ffff 0x472f5eff 0x9932ffff 0x472f5eff 0x9932ffff 0x9932ffff 0x9932ffff ""}
{Thread7 "Thread 7" thread_7 0x65ff4cff 0x405d3bff 0x65ff4cff 0x405d3bff 0x65ff4cff 0x405d3bff 0x65ff4cff 0x65ff4cff 0x65ff4cff ""}
{ThreadUnwound "Thread (Unwound)" thread_unwound 0xb2ccd8ff 0x49606aff 0xb2ccd8ff 0x49606aff 0xb2ccd8ff 0x49606aff 0xb2ccd8ff 0xb2ccd8ff 0xb2ccd8ff ""}
{ThreadError "Thread (Error)" thread_error 0xb23219ff 0xb23219ff 0xb23219ff 0xb23219ff 0xb23219ff 0xb23218ff 0xb23219ff 0xb23219ff 0xb23219ff ""}
{Breakpoint "Breakpoint" breakpoint 0xa72911ff 0xff2800ff 0xa72911ff 0xa72911ff 0xa72911ff 0xff684bff 0xa72911ff 0xa72911ff 0xff2800ff ""}
{CacheLineBoundary "Cache Line Boundary" cache_line_boundary 0x355b6eff 0xa6becaff 0x355b6eff 0x6e9db5ff 0x355b6eff 0xb2d3e3ff 0x15445cff 0x1b323eff 0x933100ff ""}
//- rjf: scroll bar palette
{ScrollBarBackground "Scroll Bar Background" scroll_bar_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{ScrollBarBackgroundAlt "Scroll Bar Background (Alternate)" scroll_bar_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{ScrollBarBackgroundGood "Scroll Bar Background (Good)" scroll_bar_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{ScrollBarBackgroundBad "Scroll Bar Background (Bad)" scroll_bar_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{ScrollBarBackgroundPop "Scroll Bar Background (Pop)" scroll_bar_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{ScrollBarBorder "Scroll Bar Border" scroll_bar_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{ScrollBarText "Scroll Bar Text" scroll_bar_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{ScrollBarTextWeak "Scroll Bar Text (Weak)" scroll_bar_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{ScrollBarHover "Scroll Bar Hover" scroll_bar_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{ScrollBarFocus "Scroll Bar Focus" scroll_bar_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{ScrollBarCursor "Scroll Bar Cursor" scroll_bar_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{ScrollBarSelection "Scroll Bar Selection" scroll_bar_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: tab (active) palette
{TabBackground "Tab Background" tab_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{TabBackgroundAlt "Tab Background (Alternate)" tab_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{TabBackgroundGood "Tab Background (Good)" tab_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{TabBackgroundBad "Tab Background (Bad)" tab_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{TabBackgroundPop "Tab Background (Pop)" tab_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{TabBorder "Tab Border" tab_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{TabText "Tab Text" tab_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabTextWeak "Tab Text (Weak)" tab_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabHover "Tab Hover" tab_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabFocus "Tab Focus" tab_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabCursor "Tab Cursor" tab_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabSelection "Tab Selection" tab_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: tab (inactive) palette
{TabInactiveBackground "Tab (Inactive) Background" tab_inactive_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{TabInactiveBackgroundAlt "Tab (Inactive) Background (Alternate)" tab_inactive_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{TabInactiveBackgroundGood "Tab (Inactive) Background (Good)" tab_inactive_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{TabInactiveBackgroundBad "Tab (Inactive) Background (Bad)" tab_inactive_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{TabInactiveBackgroundPop "Tab (Inactive) Background (Pop)" tab_inactive_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{TabInactiveBorder "Tab (Inactive) Border" tab_inactive_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{TabInactiveText "Tab (Inactive) Text" tab_inactive_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabInactiveTextWeak "Tab (Inactive) Text (Weak)" tab_inactive_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabInactiveHover "Tab (Inactive) Hover" tab_inactive_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabInactiveFocus "Tab (Inactive) Focus" tab_inactive_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabInactiveCursor "Tab (Inactive) Cursor" tab_inactive_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{TabInactiveSelection "Tab (Inactive) Selection" tab_inactive_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: drop site palette
{DropSiteBackground "Drop Site Background" drop_site_background 0x1b1b1bff 0xccccccfe 0x1b1b1bfe 0xfefefefe 0x002a35fe 0xfcf5e2fe 0x0c0c0cfe 0x0c0c0cfe 0x000081fe ""}
{DropSiteBackgroundAlt "Drop Site Background (Alternate)" drop_site_background_alt 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{DropSiteBackgroundGood "Drop Site Background (Good)" drop_site_background_good 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{DropSiteBackgroundBad "Drop Site Background (Bad)" drop_site_background_bad 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{DropSiteBackgroundPop "Drop Site Background (Pop)" drop_site_background_pop 0x222222ff 0x2b2b2bfe 0x1b1b1bfe 0xe7e7e7fe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe 0x2b2b2bfe ""}
{DropSiteBorder "Drop Site Border" drop_site_border 0x404040ff 0xa4a4a4fe 0x3f3f3ffe 0xb6b6b6ff 0xfefefe3a 0xbebaabfe 0x423525fe 0x3f3f3ffe 0x0000fffe ""}
{DropSiteText "Drop Site Text" drop_site_text 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{DropSiteTextWeak "Drop Site Text (Weak)" drop_site_text_weak 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{DropSiteHover "Drop Site Hover" drop_site_hover 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{DropSiteFocus "Drop Site Focus" drop_site_focus 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{DropSiteCursor "Drop Site Cursor" drop_site_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{DropSiteSelection "Drop Site Selection" drop_site_cursor 0xe5e5e5ff 0x4c4c4cff 0xe5e5e5ff 0x000000ff 0x999999ff 0x333333ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
//- rjf: code colors (extra text colors which extend 'base')
{CodeDefault "Code (Default)" code_default 0xcbcbcbff 0x4d4d4dff 0xcbcbcbff 0x000000ff 0xcbcbcbff 0x657b83ff 0xa08462ff 0x90b080ff 0x00fefeff ""}
{CodeSymbol "Code (Symbol)" code_symbol 0x42a2cfff 0x205670fe 0xdcdcaaff 0x000000ff 0xcb4a15ff 0xcb4a15ff 0xcc5634ff 0x42a2cffe 0x65b1ffff ""}
{CodeType "Code (Type)" code_type 0xfec746ff 0x996b00ff 0x4ec9afff 0xa33700ff 0xcb4a15ff 0xcb4a15ff 0xd8a51bff 0xfd7c52ff 0xfec746ff ""}
{CodeLocal "Code (Local)" code_local 0x98bc80ff 0x446a2bff 0x9cdbfeff 0x007666ff 0x98bc80ff 0x258ad2ff 0xc04047ff 0x98bc80ff 0x00ff00ff ""}
{CodeRegister "Code (Register)" code_register 0xb7afd5ff 0x4c35a1ff 0xb7afd5ff 0xb7afd5ff 0xb7afd5ff 0x373345ff 0xb7afd5ff 0xb7afd5ff 0xb7afd5ff ""}
{CodeKeyword "Code (Keyword)" code_keyword 0xb38d4cff 0x573700ff 0x569cd6ff 0x0000ffff 0x849803ff 0x586e75ff 0xac7a09ff 0xd08f1eff 0x00ffffff ""}
{CodeDelimiterOperator "Code (Delimiters/Operators)" code_delimiter_operator 0x767676ff 0x767676ff 0x767676ff 0x767676ff 0x767676ff 0x767676ff 0xa08462ff 0x90b080ff 0xffffffff ""}
{CodeNumeric "Code (Numeric)" code_numeric 0x98abb1ff 0x3f6e7dff 0xb5cea8ff 0x088658ff 0xd33582ff 0xd33482ef 0x698e21ff 0x4fff2eff 0x00ff00ff ""}
{CodeNumericAltDigitGroup "Code (Numeric, Alt. Digit Group)" code_numeric_alt_digit_group 0x738287ff 0x1f4450ff 0x729360ff 0x0c3828ff 0x902559ff 0x8e2659ff 0x3a4e11ff 0x3ccd21ff 0x738287ff ""}
{CodeString "Code (String)" code_string 0x98abb1ff 0x3c606bff 0xd59b85ff 0xa31414ff 0x1f9d91ff 0x29a198ff 0x6a8e22ff 0x4fff2eff 0x98abb1ff ""}
{CodeMeta "Code (Meta)" code_meta 0xd96759ff 0xad3627ff 0xd59c85ff 0x0000ffff 0x839802ff 0xd96759ff 0xdab98fff 0xa0b8a0ff 0xff0000ff ""}
{CodeComment "Code (Comment)" code_comment 0x717171ff 0x4b4b4bff 0x57a54aff 0x008000ff 0x556a6fff 0x93a1a1ff 0x686868ff 0x1e8fefff 0xffffffff ""}
{CodeLineNumbers "Code Line Numbers" code_line_numbers 0x7f7f7fff 0x4b4b4bff 0x2a91afff 0x227893ff 0x566c73ff 0x227893ef 0xa08462ff 0x7e7e7ffe 0x007d7dff ""}
{CodeLineNumbersSelected "Code Line Numbers (Selected)" code_line_numbers_selected 0xbebebeff 0x000000ff 0x9ddaecff 0x123d4bfe 0xa2aaacff 0x111e22ef 0xc8b399ff 0xbebebeff 0x00fefeff ""}
//- rjf: debugging colors (extra text/element colors which extend 'base')
{LineInfoBackground0 "Line Info Background 0" line_info_background_0 0x99503dff 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f ""}
{LineInfoBackground1 "Line Info Background 1" line_info_background_1 0xfe8249ff 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f ""}
{LineInfoBackground2 "Line Info Background 2" line_info_background_2 0xffba17ff 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f ""}
{LineInfoBackground3 "Line Info Background 3" line_info_background_3 0xcefd69ff 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f ""}
{LineInfoBackground4 "Line Info Background 4" line_info_background_4 0x99503dff 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f 0x99503d3f ""}
{LineInfoBackground5 "Line Info Background 5" line_info_background_5 0xfe8249ff 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f 0xfe82493f ""}
{LineInfoBackground6 "Line Info Background 6" line_info_background_6 0xffba17ff 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f 0xffba173f ""}
{LineInfoBackground7 "Line Info Background 7" line_info_background_7 0xcefd69ff 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f 0xcefd693f ""}
{Thread0 "Thread 0" thread_0 0xffcb7fff 0x945800ff 0xffcb7fff 0x945800ff 0xffcb7fff 0x945800ff 0xffcb7fff 0xffcb7fff 0xffcb7fff ""}
{Thread1 "Thread 1" thread_1 0xb2ff65ff 0x3f5b23ff 0xb2ff65ff 0x3f5b23ff 0xb2ff65ff 0x3f5b23ff 0xb2ff65ff 0xb2ff65ff 0xb2ff65ff ""}
{Thread2 "Thread 2" thread_2 0xff99e5ff 0x642a55ff 0xff99e5ff 0x642a55ff 0xff99e5ff 0x642a55ff 0xff99e5ff 0xff99e5ff 0xff99e5ff ""}
{Thread3 "Thread 3" thread_3 0x6598ffff 0x30456fff 0x6598ffff 0x30456fff 0x6598ffff 0x30456fff 0x6598ffff 0x6598ffff 0x6598ffff ""}
{Thread4 "Thread 4" thread_4 0x65ffcbff 0x264f41ff 0x65ffcbff 0x264f41ff 0x65ffcbff 0x264f41ff 0x65ffcbff 0x65ffcbff 0x65ffcbff ""}
{Thread5 "Thread 5" thread_5 0xff9819ff 0x736a5fff 0xff9819ff 0x736a5fff 0xff9819ff 0x736a5fff 0xff9819ff 0xff9819ff 0xff9819ff ""}
{Thread6 "Thread 6" thread_6 0x9932ffff 0x472f5eff 0x9932ffff 0x472f5eff 0x9932ffff 0x472f5eff 0x9932ffff 0x9932ffff 0x9932ffff ""}
{Thread7 "Thread 7" thread_7 0x65ff4cff 0x405d3bff 0x65ff4cff 0x405d3bff 0x65ff4cff 0x405d3bff 0x65ff4cff 0x65ff4cff 0x65ff4cff ""}
{ThreadUnwound "Thread (Unwound)" thread_unwound 0xb2ccd8ff 0x49606aff 0xb2ccd8ff 0x49606aff 0xb2ccd8ff 0x49606aff 0xb2ccd8ff 0xb2ccd8ff 0xb2ccd8ff ""}
{ThreadError "Thread (Error)" thread_error 0xb23219ff 0xb23219ff 0xb23219ff 0xb23219ff 0xb23219ff 0xb23218ff 0xb23219ff 0xb23219ff 0xb23219ff ""}
{Breakpoint "Breakpoint" breakpoint 0xa72911ff 0xff2800ff 0xa72911ff 0xa72911ff 0xa72911ff 0xff684bff 0xa72911ff 0xa72911ff 0xff2800ff ""}
{CacheLineBoundary "Cache Line Boundary" cache_line_boundary 0x355b6eff 0xa6becaff 0x355b6eff 0x6e9db5ff 0x355b6eff 0xb2d3e3ff 0x15445cff 0x1b323eff 0x933100ff ""}
}
@table(old_name new_name)
@@ -1145,6 +1322,11 @@ RD_ThemeColorVersionRemapTable:
@expand(RD_ThemePresetTable a) `str8_lit_comp("$(a.name_lower)")`,
}
@data(String8) rd_theme_preset_cfg_string_table:
{
@expand(RD_ThemePresetTable a) `str8_lit_comp("$(a.cfg)")`,
}
@data(String8) rd_theme_color_version_remap_old_name_table:
{
@expand(RD_ThemeColorVersionRemapTable a) `str8_lit_comp("$(a.old_name)")`
+337 -210
View File
File diff suppressed because it is too large Load Diff
+26 -11
View File
@@ -419,9 +419,18 @@ struct RD_RegsNode
////////////////////////////////
//~ rjf: Structured Theme Types, Parsed From Config
typedef struct RD_ThemePattern RD_ThemePattern;
struct RD_ThemePattern
{
String8Array tags;
Vec4F32 linear;
};
typedef struct RD_Theme RD_Theme;
struct RD_Theme
{
RD_ThemePattern *patterns;
U64 patterns_count;
Vec4F32 colors[RD_ThemeColor_COUNT];
};
@@ -438,16 +447,13 @@ typedef enum RD_PaletteCode
{
RD_PaletteCode_Base,
RD_PaletteCode_MenuBar,
RD_PaletteCode_Floating,
RD_PaletteCode_ImplicitButton,
RD_PaletteCode_PlainButton,
RD_PaletteCode_PositivePopButton,
RD_PaletteCode_NegativePopButton,
RD_PaletteCode_NeutralPopButton,
RD_PaletteCode_ScrollBarButton,
RD_PaletteCode_Good,
RD_PaletteCode_Bad,
RD_PaletteCode_Pop,
RD_PaletteCode_ScrollBar,
RD_PaletteCode_Tab,
RD_PaletteCode_TabInactive,
RD_PaletteCode_DropSiteOverlay,
RD_PaletteCode_DropSite,
RD_PaletteCode_COUNT
}
RD_PaletteCode;
@@ -542,6 +548,9 @@ struct RD_WindowState
B32 window_temporarily_focused_ipc;
B32 window_layout_reset;
// rjf: theme
RD_Theme *theme;
// rjf: config/settings
UI_Palette cfg_palettes[RD_PaletteCode_COUNT]; // derivative from theme
@@ -715,6 +724,9 @@ struct RD_State
// rjf: schema table
MD_Node **schemas;
// rjf: default theme table
MD_Node *theme_preset_trees[RD_ThemePreset_COUNT];
// rjf: vocab table
RD_VocabInfoMap vocab_info_map;
@@ -961,6 +973,7 @@ internal void rd_cfg_insert_child(RD_Cfg *parent, RD_Cfg *prev_child, RD_Cfg *ne
internal void rd_cfg_unhook(RD_Cfg *parent, RD_Cfg *child);
internal RD_Cfg *rd_cfg_child_from_string(RD_Cfg *parent, String8 string);
internal RD_Cfg *rd_cfg_child_from_string_or_alloc(RD_Cfg *parent, String8 string);
internal RD_Cfg *rd_cfg_child_from_string_or_parent(RD_Cfg *parent, String8 string);
internal RD_CfgList rd_cfg_child_list_from_string(Arena *arena, RD_Cfg *parent, String8 string);
internal RD_CfgList rd_cfg_top_level_list_from_string(Arena *arena, String8 string);
internal RD_CfgArray rd_cfg_array_from_list(Arena *arena, RD_CfgList *list);
@@ -968,6 +981,7 @@ internal RD_CfgList rd_cfg_tree_list_from_string(Arena *arena, String8 string);
internal String8 rd_string_from_cfg_tree(Arena *arena, RD_Cfg *cfg);
internal RD_CfgRec rd_cfg_rec__depth_first(RD_Cfg *root, RD_Cfg *cfg);
internal void rd_cfg_list_push(Arena *arena, RD_CfgList *list, RD_Cfg *cfg);
internal void rd_cfg_list_push_front(Arena *arena, RD_CfgList *list, RD_Cfg *cfg);
#define rd_cfg_list_first(list) ((list)->count ? (list)->first->v : &rd_nil_cfg)
#define rd_cfg_list_last(list) ((list)->count ? (list)->last->v : &rd_nil_cfg)
@@ -993,7 +1007,7 @@ internal String8 rd_label_from_cfg(RD_Cfg *cfg);
internal String8 rd_expr_from_cfg(RD_Cfg *cfg);
internal String8 rd_view_rule_from_cfg(RD_Cfg *cfg);
internal D_Target rd_target_from_cfg(Arena *arena, RD_Cfg *cfg);
internal DR_FStrList rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, Vec4F32 secondary_color, F32 size);
internal DR_FStrList rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg);
internal MD_Node *rd_schema_from_name(Arena *arena, String8 name);
@@ -1014,7 +1028,7 @@ internal E_Expr *rd_tag_from_cfg(Arena *arena, RD_Cfg *cfg);
internal Vec4F32 rd_rgba_from_ctrl_entity(CTRL_Entity *entity);
internal String8 rd_name_from_ctrl_entity(Arena *arena, CTRL_Entity *entity);
internal DR_FStrList rd_title_fstrs_from_ctrl_entity(Arena *arena, CTRL_Entity *entity, Vec4F32 secondary_color, F32 size, B32 include_extras);
internal DR_FStrList rd_title_fstrs_from_ctrl_entity(Arena *arena, CTRL_Entity *entity, B32 include_extras);
////////////////////////////////
//~ rjf: Evaluation Spaces
@@ -1150,6 +1164,7 @@ internal String8 rd_push_search_string(Arena *arena);
//~ rjf: Colors, Fonts, Config
//- rjf: colors
internal Vec4F32 rd_color_from_tags(String8Array tags);
internal Vec4F32 rd_rgba_from_theme_color(RD_ThemeColor color);
internal RD_ThemeColor rd_theme_color_from_txt_token_kind(TXT_TokenKind kind);
internal RD_ThemeColor rd_theme_color_from_txt_token_kind_lookup_string(TXT_TokenKind kind, String8 string);
@@ -1178,7 +1193,7 @@ internal RD_VocabInfo *rd_vocab_info_from_code_name_plural(String8 code_name_plu
#define rd_display_plural_from_code_name(code_name) (rd_vocab_info_from_code_name(code_name)->display_name_plural)
#define rd_icon_kind_from_code_name(code_name) (rd_vocab_info_from_code_name(code_name)->icon_kind)
#define rd_singular_from_code_name_plural(code_name_plural) (rd_vocab_info_from_code_name_plural(code_name_plural)->code_name)
internal DR_FStrList rd_title_fstrs_from_code_name(Arena *arena, String8 code_name, Vec4F32 secondary_color, F32 size);
internal DR_FStrList rd_title_fstrs_from_code_name(Arena *arena, String8 code_name);
////////////////////////////////
//~ rjf: Continuous Frame Requests
+30 -47
View File
@@ -1034,7 +1034,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
else if(is_top_level && evalled_cfg != &rd_nil_cfg)
{
RD_Cfg *cfg = evalled_cfg;
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Expr, .flags = RD_WatchCellFlag_Button, .pct = 1.f, .fstrs = rd_title_fstrs_from_cfg(arena, cfg, ui_top_palette()->text_weak, ui_top_font_size()));
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Expr, .flags = RD_WatchCellFlag_Button, .pct = 1.f, .fstrs = rd_title_fstrs_from_cfg(arena, cfg));
MD_Node *schema = rd_schema_from_name(arena, cfg->string);
MD_Node *cmds_root = md_tag_from_string(schema, str8_lit("commands"), 0);
for MD_EachNode(cmd, cmds_root->first)
@@ -1088,7 +1088,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
else if(is_top_level && evalled_entity != &ctrl_entity_nil)
{
CTRL_Entity *entity = evalled_entity;
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Expr, .flags = RD_WatchCellFlag_Button, .pct = 1.f, .fstrs = rd_title_fstrs_from_ctrl_entity(arena, entity, ui_top_palette()->text_weak, ui_top_font_size(), 1));
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Expr, .flags = RD_WatchCellFlag_Button, .pct = 1.f, .fstrs = rd_title_fstrs_from_ctrl_entity(arena, entity, 1));
if(entity->kind == CTRL_EntityKind_Machine ||
entity->kind == CTRL_EntityKind_Process ||
entity->kind == CTRL_EntityKind_Thread)
@@ -1107,7 +1107,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
{
RD_CmdKind cmd_kind = e_value_eval_from_eval(info.eval).value.u64;
RD_CmdKindInfo *cmd_kind_info = &rd_cmd_kind_info_table[cmd_kind];
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Expr, .flags = RD_WatchCellFlag_Button|RD_WatchCellFlag_ActivateWithSingleClick, .pct = 1.f, .fstrs = rd_title_fstrs_from_code_name(arena, cmd_kind_info->string, ui_top_palette()->text_weak, ui_top_font_size()));
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Expr, .flags = RD_WatchCellFlag_Button|RD_WatchCellFlag_ActivateWithSingleClick, .pct = 1.f, .fstrs = rd_title_fstrs_from_code_name(arena, cmd_kind_info->string));
}
// rjf: folder / file rows
@@ -1445,7 +1445,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
E_TypeKey cfg_type = e_string2typekey_map_lookup(rd_state->meta_name2type_map, ctrl_entity_kind_code_name_table[entity->kind]);
if(e_type_key_match(cfg_type, result.eval.type_key))
{
result.fstrs = rd_title_fstrs_from_ctrl_entity(arena, entity, ui_top_palette()->text_weak, ui_top_font_size(), 1);
result.fstrs = rd_title_fstrs_from_ctrl_entity(arena, entity, 1);
result.flags |= RD_WatchCellFlag_Button;
result.entity = entity;
}
@@ -1457,7 +1457,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
E_TypeKey cfg_type = e_string2typekey_map_lookup(rd_state->meta_name2type_map, cfg->string);
if(e_type_key_match(cfg_type, result.eval.type_key))
{
result.fstrs = rd_title_fstrs_from_cfg(arena, cfg, ui_top_palette()->text_weak, ui_top_font_size());
result.fstrs = rd_title_fstrs_from_cfg(arena, cfg);
result.flags |= RD_WatchCellFlag_Button;
result.cfg = cfg;
}
@@ -1473,7 +1473,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
}
else
{
result.fstrs = rd_title_fstrs_from_code_name(arena, cmd_name, ui_top_palette()->text_weak, ui_top_font_size());
result.fstrs = rd_title_fstrs_from_code_name(arena, cmd_name);
}
result.flags |= RD_WatchCellFlag_Button;
result.cmd_name = cmd_name;
@@ -2750,16 +2750,11 @@ RD_VIEW_UI_FUNCTION_DEF(watch)
{
if(row_is_fresh)
{
Vec4F32 start_color = rd_rgba_from_theme_color(RD_ThemeColor_NegativePopButtonBackground);
start_color.w *= 0.5f;
Vec4F32 end_color = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlay);
Vec4F32 color = mix_4f32(start_color, end_color, ui_anim(ui_key_from_stringf(ui_key_zero(), "row_fresh_%I64x", row_hash), 1.f));
palette = ui_build_palette(ui_top_palette(), .background = color);
row_flags |= UI_BoxFlag_DrawBackground;
row_flags |= UI_BoxFlag_DrawPop;
}
else if(global_row_idx & 1)
if(global_row_idx & 1)
{
row_flags |= UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawBackgroundAlt;
row_flags |= UI_BoxFlag_DrawAlt;
}
if(!row_matches_last_row_topology)
{
@@ -2847,44 +2842,36 @@ RD_VIEW_UI_FUNCTION_DEF(watch)
{
if(cell_info.flags & RD_WatchCellFlag_IsErrored)
{
palette = ui_build_palette(ui_top_palette(), .text = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative), .text_weak = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative), .background = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlayError));
cell_flags |= UI_BoxFlag_DrawBackground;
cell_flags |= UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawBad;
}
else if(cell_info.inheritance_tooltip.size != 0)
{
palette = ui_build_palette(ui_top_palette(), .background = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlay));
cell_flags |= UI_BoxFlag_DrawBackground;
cell_flags |= UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawPop;
}
else if(cell_info.cfg->id == rd_get_hover_regs()->cfg &&
rd_state->hover_regs_slot == RD_RegSlot_Cfg)
{
RD_Cfg *cfg = cell_info.cfg;
Vec4F32 rgba = rd_rgba_from_cfg(cfg);
Vec4F32 rgba = linear_from_srgba(rd_rgba_from_cfg(cfg));
if(rgba.w == 0)
{
rgba = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlay);
}
else
{
rgba.w *= 0.2f;
rgba = ui_top_palette()->background_pop;
}
rgba.w *= 0.2f;
rgba.w *= ui_anim(ui_key_from_stringf(ui_key_zero(), "###cfg_hover_t_%p", cfg), 1.f, .rate = entity_hover_t_rate);
palette = ui_build_palette(ui_top_palette(), .background_pop = rgba);
cell_flags |= UI_BoxFlag_DrawBackground;
cell_flags |= UI_BoxFlag_DrawPop|UI_BoxFlag_DrawBackground;
}
else if(ctrl_handle_match(cell_info.entity->handle, rd_get_hover_regs()->ctrl_entity) &&
rd_state->hover_regs_slot == RD_RegSlot_CtrlEntity)
{
CTRL_Entity *entity = cell_info.entity;
Vec4F32 rgba = rd_rgba_from_ctrl_entity(entity);
Vec4F32 rgba = linear_from_srgba(rd_rgba_from_ctrl_entity(entity));
if(rgba.w == 0)
{
rgba = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlay);
}
else
{
rgba.w *= 0.2f;
rgba = ui_top_palette()->background_pop;;
}
rgba.w *= 0.2f;
rgba.w *= ui_anim(ui_key_from_stringf(ui_key_zero(), "###entity_hover_t_%p", entity), 1.f, .rate = entity_hover_t_rate);
palette = ui_build_palette(ui_top_palette(), .background_pop = rgba);
cell_flags |= UI_BoxFlag_DrawBackground;
@@ -3440,7 +3427,7 @@ RD_VIEW_UI_FUNCTION_DEF(text)
//////////////////////////////
//- rjf: build missing file interface
//
if(file_is_missing && !u128_match(hash, u128_zero()))
if(file_is_missing)
{
UI_WidthFill UI_HeightFill UI_Column UI_Padding(ui_pct(1, 0))
{
@@ -3448,7 +3435,6 @@ RD_VIEW_UI_FUNCTION_DEF(text)
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))
UI_Palette(ui_build_palette(ui_top_palette(), .text = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative)))
{
RD_Font(RD_FontSlot_Icons) ui_label(rd_icon_kind_text_table[RD_IconKind_WarningBig]);
ui_labelf("Could not find \"%S\".", rd_regs()->file_path);
@@ -3459,7 +3445,7 @@ RD_VIEW_UI_FUNCTION_DEF(text)
UI_CornerRadius(ui_top_font_size()/3)
UI_PrefWidth(ui_text_dim(10, 1))
UI_Focus(UI_FocusKind_On)
RD_Palette(RD_PaletteCode_NeutralPopButton)
RD_Palette(RD_PaletteCode_Pop)
UI_TextAlignment(UI_TextAlign_Center)
if(ui_clicked(ui_buttonf("Find alternative...")))
{
@@ -3534,7 +3520,7 @@ RD_VIEW_UI_FUNCTION_DEF(text)
UI_Palette *palette = ui_top_palette();
if(file_is_out_of_date)
{
palette = rd_palette_from_code(RD_PaletteCode_NegativePopButton);
palette = rd_palette_from_code(RD_PaletteCode_Bad);
}
UI_Palette(palette)
UI_Row
@@ -3545,8 +3531,7 @@ RD_VIEW_UI_FUNCTION_DEF(text)
if(file_is_out_of_date)
{
UI_Box *box = &ui_nil_box;
UI_Palette(ui_build_palette(ui_top_palette(), .text = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative)))
RD_Font(RD_FontSlot_Icons)
RD_Font(RD_FontSlot_Icons)
{
box = ui_build_box_from_stringf(UI_BoxFlag_DrawText|UI_BoxFlag_Clickable, "%S###file_ood_warning", rd_icon_kind_text_table[RD_IconKind_WarningBig]);
}
@@ -3556,7 +3541,7 @@ RD_VIEW_UI_FUNCTION_DEF(text)
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_Palette(ui_build_palette(ui_top_palette(), .text = rd_rgba_from_theme_color(RD_ThemeColor_TextNeutral))) ui_label(out_of_date_dbgi_name);
ui_label(out_of_date_dbgi_name);
ui_labelf(" was produced.");
}
}
@@ -4062,8 +4047,8 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
//
DR_FStrList byte_fstrs[256] = {0};
{
Vec4F32 full_color = rd_rgba_from_theme_color(RD_ThemeColor_TextPositive);
Vec4F32 zero_color = rd_rgba_from_theme_color(RD_ThemeColor_TextWeak);
Vec4F32 full_color = ui_top_palette()->text;
Vec4F32 zero_color = ui_top_palette()->text_weak;
for(U64 idx = 0; idx < ArrayCount(byte_fstrs); idx += 1)
{
U8 byte = (U8)idx;
@@ -4133,7 +4118,7 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
Annotation *annotation = push_array(scratch.arena, Annotation, 1);
annotation->name_string = symbol_name.size != 0 ? symbol_name : str8_lit("[external code]");
annotation->kind_string = str8_lit("Call Stack Frame");
annotation->color = symbol_name.size != 0 ? rd_rgba_from_theme_color(RD_ThemeColor_CodeSymbol) : rd_rgba_from_theme_color(RD_ThemeColor_TextWeak);
annotation->color = symbol_name.size != 0 ? rd_rgba_from_theme_color(RD_ThemeColor_CodeSymbol) : ui_top_palette()->text_weak;
annotation->vaddr_range = frame_vaddr_range;
for(U64 vaddr = frame_vaddr_range_in_viz.min; vaddr < frame_vaddr_range_in_viz.max; vaddr += 1)
{
@@ -4446,12 +4431,10 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
// rjf: unpack visual cell info
UI_BoxFlags cell_flags = 0;
Vec4F32 cell_border_rgba = {0};
Vec4F32 cell_bg_rgba = {0};
if(global_byte_num == mouse_hover_byte_num)
{
cell_flags |= UI_BoxFlag_DrawBorder|UI_BoxFlag_DrawSideTop|UI_BoxFlag_DrawSideBottom|UI_BoxFlag_DrawSideLeft|UI_BoxFlag_DrawSideRight;
cell_border_rgba = rd_rgba_from_theme_color(RD_ThemeColor_Hover);
}
if(annotation != 0)
{
@@ -4469,7 +4452,7 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
if(selection.min <= global_byte_idx && global_byte_idx <= selection.max)
{
cell_flags |= UI_BoxFlag_DrawBackground;
cell_bg_rgba = rd_rgba_from_theme_color(RD_ThemeColor_SelectionOverlay);
cell_bg_rgba = ui_top_palette()->selection;
}
// rjf: build
@@ -4551,7 +4534,7 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
ascii_box->rect.y0,
text_pos.x + fnt_dim_from_tag_size_string(font, font_size, 0, 0, str8_prefix(ascii_text, selection_in_row.max+1-row_range_bytes.min)).x + font_size/4.f,
ascii_box->rect.y1),
rd_rgba_from_theme_color(RD_ThemeColor_SelectionOverlay),
ui_top_palette()->selection,
0, 0, 1.f);
}
ui_box_equip_draw_bucket(ascii_box, bucket);
@@ -4562,7 +4545,7 @@ RD_VIEW_UI_FUNCTION_DEF(memory)
DR_BucketScope(bucket)
{
Vec2F32 text_pos = ui_box_text_position(ascii_box);
Vec4F32 color = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlay);
Vec4F32 color = ui_top_palette()->border;
dr_rect(r2f32p(text_pos.x + fnt_dim_from_tag_size_string(font, font_size, 0, 0, str8_prefix(ascii_text, mouse_hover_byte_num-1-row_range_bytes.min)).x - font_size/8.f,
ascii_box->rect.y0,
text_pos.x + fnt_dim_from_tag_size_string(font, font_size, 0, 0, str8_prefix(ascii_text, mouse_hover_byte_num+0-row_range_bytes.min)).x + font_size/4.f,
@@ -4726,7 +4709,7 @@ internal UI_BOX_CUSTOM_DRAW(rd_bitmap_view_canvas_box_draw)
Rng2F32 rect_cvs = rd_bitmap_canvas_from_screen_rect(draw_data->view_center_pos, draw_data->zoom, rect_scrn, rect_scrn);
F32 grid_cell_size_cvs = box->font_size*10.f;
F32 grid_line_thickness_px = Max(2.f, box->font_size*0.1f);
Vec4F32 grid_line_color = rd_rgba_from_theme_color(RD_ThemeColor_TextWeak);
Vec4F32 grid_line_color = ui_top_palette()->background_alt;
for EachEnumVal(Axis2, axis)
{
for(F32 v = rect_cvs.p0.v[axis] - mod_f32(rect_cvs.p0.v[axis], grid_cell_size_cvs);
+55 -57
View File
@@ -20,8 +20,8 @@ rd_loading_overlay(Rng2F32 rect, F32 loading_t, U64 progress_v, U64 progress_v_t
// rjf: colors
Vec4F32 bg_color = rd_rgba_from_theme_color(RD_ThemeColor_BaseBackground);
Vec4F32 bd_color = rd_rgba_from_theme_color(RD_ThemeColor_FloatingBorder);
Vec4F32 hl_color = rd_rgba_from_theme_color(RD_ThemeColor_TextNeutral);
Vec4F32 bd_color = rd_rgba_from_theme_color(RD_ThemeColor_BaseBorder);
Vec4F32 hl_color = rd_rgba_from_theme_color(RD_ThemeColor_BaseBackgroundPop);
bg_color.w *= loading_t;
bd_color.w *= loading_t;
hl_color.w *= loading_t;
@@ -140,21 +140,13 @@ rd_cmd_binding_buttons(String8 name)
//- rjf: form color palette
UI_Palette *palette = ui_top_palette();
if(has_conflicts || rebinding_active_for_this_binding)
if(has_conflicts)
{
palette = push_array(ui_build_arena(), UI_Palette, 1);
MemoryCopyStruct(palette, ui_top_palette());
if(has_conflicts)
{
palette->colors[UI_ColorCode_Text] = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative);
palette->colors[UI_ColorCode_TextWeak] = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative);
}
if(rebinding_active_for_this_binding)
{
palette->colors[UI_ColorCode_Border] = rd_rgba_from_theme_color(RD_ThemeColor_Focus);
palette->colors[UI_ColorCode_Background] = rd_rgba_from_theme_color(RD_ThemeColor_Focus);
palette->colors[UI_ColorCode_Background].w *= 0.25f;
}
palette = rd_palette_from_code(RD_PaletteCode_Bad);
}
if(rebinding_active_for_this_binding)
{
palette = rd_palette_from_code(RD_PaletteCode_Pop);
}
//- rjf: build box
@@ -212,10 +204,7 @@ rd_cmd_binding_buttons(String8 name)
//- rjf: delete button
if(rebinding_active_for_this_binding)
UI_PrefWidth(ui_em(2.5f, 1.f))
UI_Palette(ui_build_palette(ui_top_palette(),
.background = rd_rgba_from_theme_color(RD_ThemeColor_NegativePopButtonBackground),
.border = rd_rgba_from_theme_color(RD_ThemeColor_NegativePopButtonBorder),
.text = rd_rgba_from_theme_color(RD_ThemeColor_Text)))
RD_Palette(RD_PaletteCode_Bad)
{
ui_set_next_group_key(ui_key_zero());
UI_Signal sig = rd_icon_button(RD_IconKind_X, 0, str8_lit("###delete_binding"));
@@ -231,20 +220,17 @@ rd_cmd_binding_buttons(String8 name)
}
//- rjf: build "add new binding" button
RD_Font(RD_FontSlot_Icons)
B32 adding_new_binding = (rd_state->bind_change_active &&
str8_match(rd_state->bind_change_cmd_name, name, 0) &&
rd_state->bind_change_binding.key == OS_Key_Null &&
rd_state->bind_change_binding.modifiers == 0);
UI_Palette *palette = ui_top_palette();
if(adding_new_binding)
{
palette = rd_palette_from_code(RD_PaletteCode_Pop);
}
RD_Font(RD_FontSlot_Icons) UI_Palette(palette)
{
UI_Palette *palette = ui_top_palette();
B32 adding_new_binding = (rd_state->bind_change_active &&
str8_match(rd_state->bind_change_cmd_name, name, 0) &&
rd_state->bind_change_binding.key == OS_Key_Null &&
rd_state->bind_change_binding.modifiers == 0);
if(adding_new_binding)
{
palette = ui_build_palette(ui_top_palette());
palette->colors[UI_ColorCode_Border] = rd_rgba_from_theme_color(RD_ThemeColor_Focus);
palette->colors[UI_ColorCode_Background] = rd_rgba_from_theme_color(RD_ThemeColor_Focus);
palette->colors[UI_ColorCode_Background].w *= 0.25f;
}
ui_set_next_hover_cursor(OS_Cursor_HandPoint);
ui_set_next_text_alignment(UI_TextAlign_Center);
ui_set_next_group_key(ui_key_zero());
@@ -495,7 +481,7 @@ internal UI_BOX_CUSTOM_DRAW(rd_thread_box_draw_extensions)
if(u->is_frozen)
{
F32 lock_icon_off = ui_top_font_size()*0.2f;
Vec4F32 lock_icon_color = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative);
Vec4F32 lock_icon_color = ui_top_palette()->background_bad;
dr_text(rd_font_from_slot(RD_FontSlot_Icons),
box->font_size, 0, 0, FNT_RasterFlag_Smooth,
v2f32((box->rect.x0 + box->rect.x1)/2 + lock_icon_off/2,
@@ -609,9 +595,6 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
rd_rgba_from_theme_color(RD_ThemeColor_LineInfoBackground2),
rd_rgba_from_theme_color(RD_ThemeColor_LineInfoBackground3),
};
UI_Palette *margin_palette = rd_palette_from_code(RD_PaletteCode_Floating);
UI_Palette *margin_contents_palette = ui_build_palette(rd_palette_from_code(RD_PaletteCode_Floating));
margin_contents_palette->background = v4f32(0, 0, 0, 0);
F32 line_num_padding_px = ui_top_font_size()*1.f;
F32 entity_alive_t_rate = (1 - pow_f32(2, (-30.f * rd_state->frame_dt)));
F32 entity_hover_t_rate = rd_setting_b32_from_name(str8_lit("hover_animations")) ? (1 - pow_f32(2, (-60.f * rd_state->frame_dt))) : 1.f;
@@ -656,7 +639,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
{
if(n->v == stopper_thread && (stop_event.cause == CTRL_EventCause_InterruptedByTrap || stop_event.cause == CTRL_EventCause_InterruptedByException))
{
line_bg_colors[line_idx] = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlayError);
line_bg_colors[line_idx] = ui_top_palette()->background_bad;
}
}
}
@@ -666,7 +649,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
//- rjf: build priority margin
//
UI_Box *priority_margin_container_box = &ui_nil_box;
if(params->flags & RD_CodeSliceFlag_PriorityMargin) UI_Focus(UI_FocusKind_Off) UI_Parent(top_container_box) UI_Palette(margin_palette) ProfScope("build priority margins")
if(params->flags & RD_CodeSliceFlag_PriorityMargin) UI_Focus(UI_FocusKind_Off) UI_Parent(top_container_box) ProfScope("build priority margins")
{
if(params->margin_float_off_px != 0)
{
@@ -679,7 +662,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
ui_set_next_pref_height(ui_px(params->line_height_px*(dim_1s64(params->line_num_range)+1), 1.f));
ui_set_next_child_layout_axis(Axis2_Y);
priority_margin_container_box = ui_build_box_from_string(UI_BoxFlag_Clickable*!!(params->flags & RD_CodeSliceFlag_Clickable), str8_lit("priority_margin_container"));
UI_Parent(priority_margin_container_box) UI_PrefHeight(ui_px(params->line_height_px, 1.f)) UI_Palette(margin_contents_palette)
UI_Parent(priority_margin_container_box) UI_PrefHeight(ui_px(params->line_height_px, 1.f))
{
U64 line_idx = 0;
for(S64 line_num = params->line_num_range.min;
@@ -708,8 +691,12 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
U64 thread_rip_voff = ctrl_voff_from_vaddr(module, thread_rip_vaddr);
// rjf: thread info => color
Vec4F32 color = rd_rgba_from_ctrl_entity(thread);
Vec4F32 color = linear_from_srgba(rd_rgba_from_ctrl_entity(thread));
{
if(color.w == 0)
{
color = rd_rgba_from_theme_color(RD_ThemeColor_Thread1);
}
if(unwind_count != 0)
{
color = rd_rgba_from_theme_color(RD_ThemeColor_ThreadUnwound);
@@ -727,7 +714,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
}
if(thread != selected_thread)
{
color.w *= 0.8f;
color.w *= 0.5f;
}
}
@@ -813,7 +800,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
//- rjf: build catchall margin
//
UI_Box *catchall_margin_container_box = &ui_nil_box;
if(params->flags & RD_CodeSliceFlag_CatchallMargin) UI_Focus(UI_FocusKind_Off) UI_Palette(margin_palette) UI_Parent(top_container_box) ProfScope("build catchall margins")
if(params->flags & RD_CodeSliceFlag_CatchallMargin) UI_Focus(UI_FocusKind_Off) UI_Parent(top_container_box) ProfScope("build catchall margins")
{
if(params->margin_float_off_px != 0)
{
@@ -826,7 +813,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
ui_set_next_pref_height(ui_px(params->line_height_px*(dim_1s64(params->line_num_range)+1), 1.f));
ui_set_next_child_layout_axis(Axis2_Y);
catchall_margin_container_box = ui_build_box_from_string(UI_BoxFlag_DrawSideLeft|UI_BoxFlag_Clickable*!!(params->flags & RD_CodeSliceFlag_Clickable), str8_lit("catchall_margin_container"));
UI_Parent(catchall_margin_container_box) UI_PrefHeight(ui_px(params->line_height_px, 1.f)) UI_Palette(margin_contents_palette)
UI_Parent(catchall_margin_container_box) UI_PrefHeight(ui_px(params->line_height_px, 1.f))
{
U64 line_idx = 0;
for(S64 line_num = params->line_num_range.min;
@@ -857,8 +844,12 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
U64 thread_rip_voff = ctrl_voff_from_vaddr(module, thread_rip_vaddr);
// rjf: thread info => color
Vec4F32 color = rd_rgba_from_ctrl_entity(thread);
Vec4F32 color = linear_from_srgba(rd_rgba_from_ctrl_entity(thread));
{
if(color.w == 0)
{
color = rd_rgba_from_theme_color(RD_ThemeColor_Thread1);
}
if(unwind_count != 0)
{
color = rd_rgba_from_theme_color(RD_ThemeColor_ThreadUnwound);
@@ -1182,7 +1173,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
//- rjf: build background for line numbers & margins
//
{
UI_Parent(top_container_box) RD_Palette(RD_PaletteCode_Floating)
UI_Parent(top_container_box)
{
ui_set_next_pref_width(ui_px(params->priority_margin_width_px + params->catchall_margin_width_px + params->line_num_width_px, 1));
ui_set_next_pref_height(ui_px(params->line_height_px*(dim_1s64(params->line_num_range)+1), 1.f));
@@ -1255,7 +1246,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
{
DR_FStrList explanation_fstrs = rd_stop_explanation_fstrs_from_ctrl_event(scratch.arena, &stop_event);
UI_Parent(line_extras_boxes[line_idx]) UI_PrefWidth(ui_children_sum(1)) UI_PrefHeight(ui_px(params->line_height_px, 1.f))
UI_Palette(ui_build_palette(ui_top_palette(), .text = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative)))
RD_Palette(RD_PaletteCode_Bad)
{
UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_DrawText, "###exception_info");
ui_box_equip_display_fstrs(box, &explanation_fstrs);
@@ -1413,7 +1404,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
B32 line_drag_drop = 0;
RD_Cfg *line_drag_cfg = &rd_nil_cfg;
CTRL_Entity *line_drag_ctrl_entity = &ctrl_entity_nil;
Vec4F32 line_drag_drop_color = rd_rgba_from_theme_color(RD_ThemeColor_DropSiteOverlay);
Vec4F32 line_drag_drop_color = ui_top_palette()->background_pop;
{
//- rjf: determine mouse drag range
TxtRng mouse_drag_rng = txt_rng(mouse_pt, mouse_pt);
@@ -1494,19 +1485,21 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
{
line_drag_drop = 1;
line_drag_cfg = cfg;
line_drag_drop_color = rd_rgba_from_cfg(cfg);
line_drag_drop_color.w *= 0.5f;
line_drag_drop_color = linear_from_srgba(rd_rgba_from_cfg(cfg));
if(line_drag_drop_color.w == 0)
{
line_drag_drop_color = rd_rgba_from_theme_color(RD_ThemeColor_DropSiteOverlay);
line_drag_drop_color = ui_top_palette()->background_pop;
}
}
if(rd_state->drag_drop_regs_slot == RD_RegSlot_Thread)
{
line_drag_drop = 1;
line_drag_ctrl_entity = thread;
line_drag_drop_color = rd_rgba_from_ctrl_entity(thread);
line_drag_drop_color.w *= 0.5f;
line_drag_drop_color = linear_from_srgba(rd_rgba_from_ctrl_entity(thread));
if(line_drag_drop_color.w == 0)
{
line_drag_drop_color = ui_top_palette()->background_pop;
}
}
}
@@ -1678,7 +1671,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
{
TxtRngColorPairNode *n = push_array(scratch.arena, TxtRngColorPairNode, 1);
n->rng = result.mouse_expr_rng;
n->color = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlay);
n->color = ui_top_palette()->background_pop;
SLLQueuePush(first_txt_rng_color_pair, last_txt_rng_color_pair, n);
}
}
@@ -1816,7 +1809,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
line_box->rect.x0+line_num_padding_px+match_column_pixel_off_range.max+2.f,
line_box->rect.y1,
};
Vec4F32 color = rd_rgba_from_theme_color(RD_ThemeColor_HighlightOverlay);
Vec4F32 color = ui_top_palette()->background_pop;
if(cursor->line == line_num && needle_pos+1 <= cursor->column && cursor->column < needle_pos+params->search_query.size+1)
{
color.x += (1.f - color.x) * 0.5f;
@@ -1900,7 +1893,12 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
ui_box_text_position(line_box).x+cursor_off_pixels+cursor_thickness/2.f,
line_box->rect.y1+params->font_size*0.25f,
};
dr_rect(cursor_rect, rd_rgba_from_theme_color(is_focused ? RD_ThemeColor_Cursor : RD_ThemeColor_CursorInactive), 1.f, 0, 1.f);
Vec4F32 cursor_color = ui_top_palette()->cursor;
if(!is_focused)
{
cursor_color.w *= 0.5f;
}
dr_rect(cursor_rect, cursor_color, 1.f, 0, 1.f);
}
// rjf: extra rendering for lines with line-info that match the hovered
@@ -2212,7 +2210,7 @@ rd_error_label(String8 string)
{
UI_Box *box = ui_build_box_from_key(0, ui_key_zero());
UI_Signal sig = ui_signal_from_box(box);
UI_Parent(box) UI_Palette(ui_build_palette(ui_top_palette(), .text = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative), .text_weak = rd_rgba_from_theme_color(RD_ThemeColor_TextNegative)))
UI_Parent(box)
{
ui_set_next_font(rd_font_from_slot(RD_FontSlot_Icons));
ui_set_next_text_raster_flags(FNT_RasterFlag_Smooth);
+6
View File
@@ -20,6 +20,7 @@
#define UI_GroupKey(v) DeferLoop(ui_push_group_key(v), ui_pop_group_key())
#define UI_Transparency(v) DeferLoop(ui_push_transparency(v), ui_pop_transparency())
#define UI_Palette(v) DeferLoop(ui_push_palette(v), ui_pop_palette())
#define UI_Tag(v) DeferLoop(ui_push_tag(v), ui_pop_tag())
#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())
@@ -50,6 +51,7 @@ internal U32 ui_top_fastpath_codepoint(void) { UI_StackTopImpl(ui_state, Fastpat
internal UI_Key ui_top_group_key(void) { UI_StackTopImpl(ui_state, GroupKey, group_key) }
internal F32 ui_top_transparency(void) { UI_StackTopImpl(ui_state, Transparency, transparency) }
internal UI_Palette* ui_top_palette(void) { UI_StackTopImpl(ui_state, Palette, palette) }
internal String8 ui_top_tag(void) { UI_StackTopImpl(ui_state, Tag, tag) }
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 FNT_Tag ui_top_font(void) { UI_StackTopImpl(ui_state, Font, font) }
@@ -79,6 +81,7 @@ internal U32 ui_bottom_fastpath_codepoint(void) { UI_StackBottomImpl(ui_state, F
internal UI_Key ui_bottom_group_key(void) { UI_StackBottomImpl(ui_state, GroupKey, group_key) }
internal F32 ui_bottom_transparency(void) { UI_StackBottomImpl(ui_state, Transparency, transparency) }
internal UI_Palette* ui_bottom_palette(void) { UI_StackBottomImpl(ui_state, Palette, palette) }
internal String8 ui_bottom_tag(void) { UI_StackBottomImpl(ui_state, Tag, tag) }
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 FNT_Tag ui_bottom_font(void) { UI_StackBottomImpl(ui_state, Font, font) }
@@ -108,6 +111,7 @@ internal U32 ui_push_fastpath_codepoint(U32 v) { UI_StackPushImpl(ui_state, Fast
internal UI_Key ui_push_group_key(UI_Key v) { UI_StackPushImpl(ui_state, GroupKey, group_key, UI_Key, v) }
internal F32 ui_push_transparency(F32 v) { UI_StackPushImpl(ui_state, Transparency, transparency, F32, v) }
internal UI_Palette* ui_push_palette(UI_Palette* v) { UI_StackPushImpl(ui_state, Palette, palette, UI_Palette* , v) }
internal String8 ui_push_tag(String8 v) { UI_StackPushImpl(ui_state, Tag, tag, String8, 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 FNT_Tag ui_push_font(FNT_Tag v) { UI_StackPushImpl(ui_state, Font, font, FNT_Tag, v) }
@@ -137,6 +141,7 @@ internal U32 ui_pop_fastpath_codepoint(void) { UI_StackPopImpl(ui_state, Fastpat
internal UI_Key ui_pop_group_key(void) { UI_StackPopImpl(ui_state, GroupKey, group_key) }
internal F32 ui_pop_transparency(void) { UI_StackPopImpl(ui_state, Transparency, transparency) }
internal UI_Palette* ui_pop_palette(void) { UI_StackPopImpl(ui_state, Palette, palette) }
internal String8 ui_pop_tag(void) { UI_StackPopImpl(ui_state, Tag, tag) }
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 FNT_Tag ui_pop_font(void) { UI_StackPopImpl(ui_state, Font, font) }
@@ -166,6 +171,7 @@ internal U32 ui_set_next_fastpath_codepoint(U32 v) { UI_StackSetNextImpl(ui_stat
internal UI_Key ui_set_next_group_key(UI_Key v) { UI_StackSetNextImpl(ui_state, GroupKey, group_key, UI_Key, v) }
internal F32 ui_set_next_transparency(F32 v) { UI_StackSetNextImpl(ui_state, Transparency, transparency, F32, v) }
internal UI_Palette* ui_set_next_palette(UI_Palette* v) { UI_StackSetNextImpl(ui_state, Palette, palette, UI_Palette* , v) }
internal String8 ui_set_next_tag(String8 v) { UI_StackSetNextImpl(ui_state, Tag, tag, String8, 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 FNT_Tag ui_set_next_font(FNT_Tag v) { UI_StackSetNextImpl(ui_state, Font, font, FNT_Tag, v) }
+40 -29
View File
@@ -22,6 +22,7 @@ typedef struct UI_FastpathCodepointNode UI_FastpathCodepointNode; struct UI_Fast
typedef struct UI_GroupKeyNode UI_GroupKeyNode; struct UI_GroupKeyNode{UI_GroupKeyNode *next; UI_Key v;};
typedef struct UI_TransparencyNode UI_TransparencyNode; struct UI_TransparencyNode{UI_TransparencyNode *next; F32 v;};
typedef struct UI_PaletteNode UI_PaletteNode; struct UI_PaletteNode{UI_PaletteNode *next; UI_Palette* v;};
typedef struct UI_TagNode UI_TagNode; struct UI_TagNode{UI_TagNode *next; String8 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; FNT_Tag v;};
@@ -54,6 +55,7 @@ UI_FastpathCodepointNode fastpath_codepoint_nil_stack_top;\
UI_GroupKeyNode group_key_nil_stack_top;\
UI_TransparencyNode transparency_nil_stack_top;\
UI_PaletteNode palette_nil_stack_top;\
UI_TagNode tag_nil_stack_top;\
UI_SquishNode squish_nil_stack_top;\
UI_HoverCursorNode hover_cursor_nil_stack_top;\
UI_FontNode font_nil_stack_top;\
@@ -85,6 +87,7 @@ state->fastpath_codepoint_nil_stack_top.v = 0;\
state->group_key_nil_stack_top.v = ui_key_zero();\
state->transparency_nil_stack_top.v = 0;\
state->palette_nil_stack_top.v = &ui_g_nil_palette;\
state->tag_nil_stack_top.v = str8_lit("");\
state->squish_nil_stack_top.v = 0;\
state->hover_cursor_nil_stack_top.v = OS_Cursor_Pointer;\
state->font_nil_stack_top.v = fnt_tag_zero();\
@@ -102,35 +105,36 @@ state->text_alignment_nil_stack_top.v = UI_TextAlign_Left;\
#define UI_DeclStacks \
struct\
{\
struct { UI_ParentNode *top; UI_Box * bottom_val; UI_ParentNode *free; B32 auto_pop; } parent_stack;\
struct { UI_ChildLayoutAxisNode *top; Axis2 bottom_val; UI_ChildLayoutAxisNode *free; B32 auto_pop; } child_layout_axis_stack;\
struct { UI_FixedXNode *top; F32 bottom_val; UI_FixedXNode *free; B32 auto_pop; } fixed_x_stack;\
struct { UI_FixedYNode *top; F32 bottom_val; UI_FixedYNode *free; B32 auto_pop; } fixed_y_stack;\
struct { UI_FixedWidthNode *top; F32 bottom_val; UI_FixedWidthNode *free; B32 auto_pop; } fixed_width_stack;\
struct { UI_FixedHeightNode *top; F32 bottom_val; UI_FixedHeightNode *free; B32 auto_pop; } fixed_height_stack;\
struct { UI_PrefWidthNode *top; UI_Size bottom_val; UI_PrefWidthNode *free; B32 auto_pop; } pref_width_stack;\
struct { UI_PrefHeightNode *top; UI_Size bottom_val; UI_PrefHeightNode *free; B32 auto_pop; } pref_height_stack;\
struct { UI_PermissionFlagsNode *top; UI_PermissionFlags bottom_val; UI_PermissionFlagsNode *free; B32 auto_pop; } permission_flags_stack;\
struct { UI_FlagsNode *top; UI_BoxFlags bottom_val; UI_FlagsNode *free; B32 auto_pop; } flags_stack;\
struct { UI_FocusHotNode *top; UI_FocusKind bottom_val; UI_FocusHotNode *free; B32 auto_pop; } focus_hot_stack;\
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_GroupKeyNode *top; UI_Key bottom_val; UI_GroupKeyNode *free; B32 auto_pop; } group_key_stack;\
struct { UI_TransparencyNode *top; F32 bottom_val; UI_TransparencyNode *free; B32 auto_pop; } transparency_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; FNT_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_TextRasterFlagsNode *top; FNT_RasterFlags bottom_val; UI_TextRasterFlagsNode *free; B32 auto_pop; } text_raster_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;\
struct { UI_CornerRadius10Node *top; F32 bottom_val; UI_CornerRadius10Node *free; B32 auto_pop; } corner_radius_10_stack;\
struct { UI_CornerRadius11Node *top; F32 bottom_val; UI_CornerRadius11Node *free; B32 auto_pop; } corner_radius_11_stack;\
struct { UI_BlurSizeNode *top; F32 bottom_val; UI_BlurSizeNode *free; B32 auto_pop; } blur_size_stack;\
struct { UI_TextPaddingNode *top; F32 bottom_val; UI_TextPaddingNode *free; B32 auto_pop; } text_padding_stack;\
struct { UI_TextAlignmentNode *top; UI_TextAlign bottom_val; UI_TextAlignmentNode *free; B32 auto_pop; } text_alignment_stack;\
struct { UI_ParentNode *top; UI_Box * bottom_val; UI_ParentNode *free; U64 gen; B32 auto_pop; } parent_stack;\
struct { UI_ChildLayoutAxisNode *top; Axis2 bottom_val; UI_ChildLayoutAxisNode *free; U64 gen; B32 auto_pop; } child_layout_axis_stack;\
struct { UI_FixedXNode *top; F32 bottom_val; UI_FixedXNode *free; U64 gen; B32 auto_pop; } fixed_x_stack;\
struct { UI_FixedYNode *top; F32 bottom_val; UI_FixedYNode *free; U64 gen; B32 auto_pop; } fixed_y_stack;\
struct { UI_FixedWidthNode *top; F32 bottom_val; UI_FixedWidthNode *free; U64 gen; B32 auto_pop; } fixed_width_stack;\
struct { UI_FixedHeightNode *top; F32 bottom_val; UI_FixedHeightNode *free; U64 gen; B32 auto_pop; } fixed_height_stack;\
struct { UI_PrefWidthNode *top; UI_Size bottom_val; UI_PrefWidthNode *free; U64 gen; B32 auto_pop; } pref_width_stack;\
struct { UI_PrefHeightNode *top; UI_Size bottom_val; UI_PrefHeightNode *free; U64 gen; B32 auto_pop; } pref_height_stack;\
struct { UI_PermissionFlagsNode *top; UI_PermissionFlags bottom_val; UI_PermissionFlagsNode *free; U64 gen; B32 auto_pop; } permission_flags_stack;\
struct { UI_FlagsNode *top; UI_BoxFlags bottom_val; UI_FlagsNode *free; U64 gen; B32 auto_pop; } flags_stack;\
struct { UI_FocusHotNode *top; UI_FocusKind bottom_val; UI_FocusHotNode *free; U64 gen; B32 auto_pop; } focus_hot_stack;\
struct { UI_FocusActiveNode *top; UI_FocusKind bottom_val; UI_FocusActiveNode *free; U64 gen; B32 auto_pop; } focus_active_stack;\
struct { UI_FastpathCodepointNode *top; U32 bottom_val; UI_FastpathCodepointNode *free; U64 gen; B32 auto_pop; } fastpath_codepoint_stack;\
struct { UI_GroupKeyNode *top; UI_Key bottom_val; UI_GroupKeyNode *free; U64 gen; B32 auto_pop; } group_key_stack;\
struct { UI_TransparencyNode *top; F32 bottom_val; UI_TransparencyNode *free; U64 gen; B32 auto_pop; } transparency_stack;\
struct { UI_PaletteNode *top; UI_Palette* bottom_val; UI_PaletteNode *free; U64 gen; B32 auto_pop; } palette_stack;\
struct { UI_TagNode *top; String8 bottom_val; UI_TagNode *free; U64 gen; B32 auto_pop; } tag_stack;\
struct { UI_SquishNode *top; F32 bottom_val; UI_SquishNode *free; U64 gen; B32 auto_pop; } squish_stack;\
struct { UI_HoverCursorNode *top; OS_Cursor bottom_val; UI_HoverCursorNode *free; U64 gen; B32 auto_pop; } hover_cursor_stack;\
struct { UI_FontNode *top; FNT_Tag bottom_val; UI_FontNode *free; U64 gen; B32 auto_pop; } font_stack;\
struct { UI_FontSizeNode *top; F32 bottom_val; UI_FontSizeNode *free; U64 gen; B32 auto_pop; } font_size_stack;\
struct { UI_TextRasterFlagsNode *top; FNT_RasterFlags bottom_val; UI_TextRasterFlagsNode *free; U64 gen; B32 auto_pop; } text_raster_flags_stack;\
struct { UI_TabSizeNode *top; F32 bottom_val; UI_TabSizeNode *free; U64 gen; B32 auto_pop; } tab_size_stack;\
struct { UI_CornerRadius00Node *top; F32 bottom_val; UI_CornerRadius00Node *free; U64 gen; B32 auto_pop; } corner_radius_00_stack;\
struct { UI_CornerRadius01Node *top; F32 bottom_val; UI_CornerRadius01Node *free; U64 gen; B32 auto_pop; } corner_radius_01_stack;\
struct { UI_CornerRadius10Node *top; F32 bottom_val; UI_CornerRadius10Node *free; U64 gen; B32 auto_pop; } corner_radius_10_stack;\
struct { UI_CornerRadius11Node *top; F32 bottom_val; UI_CornerRadius11Node *free; U64 gen; B32 auto_pop; } corner_radius_11_stack;\
struct { UI_BlurSizeNode *top; F32 bottom_val; UI_BlurSizeNode *free; U64 gen; B32 auto_pop; } blur_size_stack;\
struct { UI_TextPaddingNode *top; F32 bottom_val; UI_TextPaddingNode *free; U64 gen; B32 auto_pop; } text_padding_stack;\
struct { UI_TextAlignmentNode *top; UI_TextAlign bottom_val; UI_TextAlignmentNode *free; U64 gen; B32 auto_pop; } text_alignment_stack;\
}
#define UI_InitStacks(state) \
state->parent_stack.top = &state->parent_nil_stack_top; state->parent_stack.bottom_val = &ui_nil_box; state->parent_stack.free = 0; state->parent_stack.auto_pop = 0;\
@@ -149,6 +153,7 @@ state->fastpath_codepoint_stack.top = &state->fastpath_codepoint_nil_stack_top;
state->group_key_stack.top = &state->group_key_nil_stack_top; state->group_key_stack.bottom_val = ui_key_zero(); state->group_key_stack.free = 0; state->group_key_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->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->tag_stack.top = &state->tag_nil_stack_top; state->tag_stack.bottom_val = str8_lit(""); state->tag_stack.free = 0; state->tag_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 = fnt_tag_zero(); state->font_stack.free = 0; state->font_stack.auto_pop = 0;\
@@ -180,6 +185,7 @@ if(state->fastpath_codepoint_stack.auto_pop) { ui_pop_fastpath_codepoint(); stat
if(state->group_key_stack.auto_pop) { ui_pop_group_key(); state->group_key_stack.auto_pop = 0; }\
if(state->transparency_stack.auto_pop) { ui_pop_transparency(); state->transparency_stack.auto_pop = 0; }\
if(state->palette_stack.auto_pop) { ui_pop_palette(); state->palette_stack.auto_pop = 0; }\
if(state->tag_stack.auto_pop) { ui_pop_tag(); state->tag_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; }\
@@ -210,6 +216,7 @@ internal U32 ui_top_fastpath_codepoint(void);
internal UI_Key ui_top_group_key(void);
internal F32 ui_top_transparency(void);
internal UI_Palette* ui_top_palette(void);
internal String8 ui_top_tag(void);
internal F32 ui_top_squish(void);
internal OS_Cursor ui_top_hover_cursor(void);
internal FNT_Tag ui_top_font(void);
@@ -239,6 +246,7 @@ internal U32 ui_bottom_fastpath_codepoint(void);
internal UI_Key ui_bottom_group_key(void);
internal F32 ui_bottom_transparency(void);
internal UI_Palette* ui_bottom_palette(void);
internal String8 ui_bottom_tag(void);
internal F32 ui_bottom_squish(void);
internal OS_Cursor ui_bottom_hover_cursor(void);
internal FNT_Tag ui_bottom_font(void);
@@ -268,6 +276,7 @@ internal U32 ui_push_fastpath_codepoint(U32 v);
internal UI_Key ui_push_group_key(UI_Key v);
internal F32 ui_push_transparency(F32 v);
internal UI_Palette* ui_push_palette(UI_Palette* v);
internal String8 ui_push_tag(String8 v);
internal F32 ui_push_squish(F32 v);
internal OS_Cursor ui_push_hover_cursor(OS_Cursor v);
internal FNT_Tag ui_push_font(FNT_Tag v);
@@ -297,6 +306,7 @@ internal U32 ui_pop_fastpath_codepoint(void);
internal UI_Key ui_pop_group_key(void);
internal F32 ui_pop_transparency(void);
internal UI_Palette* ui_pop_palette(void);
internal String8 ui_pop_tag(void);
internal F32 ui_pop_squish(void);
internal OS_Cursor ui_pop_hover_cursor(void);
internal FNT_Tag ui_pop_font(void);
@@ -326,6 +336,7 @@ internal U32 ui_set_next_fastpath_codepoint(U32 v);
internal UI_Key ui_set_next_group_key(UI_Key v);
internal F32 ui_set_next_transparency(F32 v);
internal UI_Palette* ui_set_next_palette(UI_Palette* v);
internal String8 ui_set_next_tag(String8 v);
internal F32 ui_set_next_squish(F32 v);
internal OS_Cursor ui_set_next_hover_cursor(OS_Cursor v);
internal FNT_Tag ui_set_next_font(FNT_Tag v);
+2 -1
View File
@@ -33,6 +33,7 @@ UI_StackTable:
//- rjf: colors
{ Transparency transparency F32 0 }
{ Palette palette `UI_Palette* ` `&ui_g_nil_palette` }
{ Tag tag String8 `str8_lit("")` }
//- rjf: squish
{ Squish squish F32 0 }
@@ -94,7 +95,7 @@ UI_StackTable:
`#define UI_DeclStacks \\`;
`struct\\`;
`{\\`;
@expand(UI_StackTable a) `struct { UI_$(a.name)Node *top; $(a.type) bottom_val; UI_$(a.name)Node *free; B32 auto_pop; } $(a.name_lower)_stack;\\`;
@expand(UI_StackTable a) `struct { UI_$(a.name)Node *top; $(a.type) bottom_val; UI_$(a.name)Node *free; U64 gen; B32 auto_pop; } $(a.name_lower)_stack;\\`;
`}`;
}
+16
View File
@@ -2350,6 +2350,19 @@ ui_build_box_from_key(UI_BoxFlags flags, UI_Key key)
box->text_padding = ui_state->text_padding_stack.top->v;
box->hover_cursor = ui_state->hover_cursor_stack.top->v;
box->custom_draw = 0;
if(ui_state->current_gen_tags_gen != ui_state->tag_stack.gen)
{
ui_state->current_gen_tags_gen = ui_state->tag_stack.gen;
Temp scratch = scratch_begin(0, 0);
String8List tags = {0};
for(UI_TagNode *n = ui_state->tag_stack.top; n != 0; n = n->next)
{
str8_list_push(ui_build_arena(), &tags, push_str8_copy(ui_build_arena(), n->v));
}
ui_state->current_gen_tags = str8_array_from_list(ui_build_arena(), &tags);
scratch_end(scratch);
}
box->tags = ui_state->current_gen_tags;
}
//- rjf: auto-pop all stacks
@@ -3147,6 +3160,7 @@ if(node->next == &state->name_lower##_nil_stack_top)\
state->name_lower##_stack.bottom_val = (new_value);\
}\
state->name_lower##_stack.auto_pop = 0;\
state->name_lower##_stack.gen += 1;\
return old_value;
#define UI_StackPopImpl(state, name_upper, name_lower) \
@@ -3156,6 +3170,7 @@ if(popped != &state->name_lower##_nil_stack_top)\
SLLStackPop(state->name_lower##_stack.top);\
SLLStackPush(state->name_lower##_stack.free, popped);\
state->name_lower##_stack.auto_pop = 0;\
state->name_lower##_stack.gen += 1;\
}\
return popped->v;\
@@ -3167,6 +3182,7 @@ type old_value = state->name_lower##_stack.top->v;\
node->v = new_value;\
SLLStackPush(state->name_lower##_stack.top, node);\
state->name_lower##_stack.auto_pop = 1;\
state->name_lower##_stack.gen += 1;\
return old_value;
#include "generated/ui.meta.c"
+30 -24
View File
@@ -366,29 +366,32 @@ typedef U64 UI_BoxFlags;
# 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_DrawBackgroundAlt (UI_BoxFlags)(1ull<<30)
# define UI_BoxFlag_DrawBorder (UI_BoxFlags)(1ull<<31)
# define UI_BoxFlag_DrawSideTop (UI_BoxFlags)(1ull<<32)
# define UI_BoxFlag_DrawSideBottom (UI_BoxFlags)(1ull<<33)
# define UI_BoxFlag_DrawSideLeft (UI_BoxFlags)(1ull<<34)
# define UI_BoxFlag_DrawSideRight (UI_BoxFlags)(1ull<<35)
# define UI_BoxFlag_DrawText (UI_BoxFlags)(1ull<<36)
# define UI_BoxFlag_DrawTextFastpathCodepoint (UI_BoxFlags)(1ull<<37)
# define UI_BoxFlag_DrawTextWeak (UI_BoxFlags)(1ull<<38)
# define UI_BoxFlag_DrawHotEffects (UI_BoxFlags)(1ull<<39)
# define UI_BoxFlag_DrawActiveEffects (UI_BoxFlags)(1ull<<40)
# define UI_BoxFlag_DrawOverlay (UI_BoxFlags)(1ull<<41)
# define UI_BoxFlag_DrawBucket (UI_BoxFlags)(1ull<<42)
# define UI_BoxFlag_Clip (UI_BoxFlags)(1ull<<43)
# define UI_BoxFlag_AnimatePosX (UI_BoxFlags)(1ull<<44)
# define UI_BoxFlag_AnimatePosY (UI_BoxFlags)(1ull<<45)
# define UI_BoxFlag_DisableTextTrunc (UI_BoxFlags)(1ull<<46)
# define UI_BoxFlag_DisableIDString (UI_BoxFlags)(1ull<<47)
# define UI_BoxFlag_DisableFocusBorder (UI_BoxFlags)(1ull<<48)
# define UI_BoxFlag_DisableFocusOverlay (UI_BoxFlags)(1ull<<49)
# define UI_BoxFlag_HasDisplayString (UI_BoxFlags)(1ull<<50)
# define UI_BoxFlag_HasFuzzyMatchRanges (UI_BoxFlags)(1ull<<51)
# define UI_BoxFlag_RoundChildrenByParent (UI_BoxFlags)(1ull<<52)
# define UI_BoxFlag_DrawAlt (UI_BoxFlags)(1ull<<30)
# define UI_BoxFlag_DrawGood (UI_BoxFlags)(1ull<<31)
# define UI_BoxFlag_DrawBad (UI_BoxFlags)(1ull<<32)
# define UI_BoxFlag_DrawPop (UI_BoxFlags)(1ull<<33)
# define UI_BoxFlag_DrawBorder (UI_BoxFlags)(1ull<<34)
# define UI_BoxFlag_DrawSideTop (UI_BoxFlags)(1ull<<35)
# define UI_BoxFlag_DrawSideBottom (UI_BoxFlags)(1ull<<36)
# define UI_BoxFlag_DrawSideLeft (UI_BoxFlags)(1ull<<37)
# define UI_BoxFlag_DrawSideRight (UI_BoxFlags)(1ull<<38)
# define UI_BoxFlag_DrawText (UI_BoxFlags)(1ull<<39)
# define UI_BoxFlag_DrawTextFastpathCodepoint (UI_BoxFlags)(1ull<<40)
# define UI_BoxFlag_DrawTextWeak (UI_BoxFlags)(1ull<<41)
# define UI_BoxFlag_DrawHotEffects (UI_BoxFlags)(1ull<<42)
# define UI_BoxFlag_DrawActiveEffects (UI_BoxFlags)(1ull<<43)
# define UI_BoxFlag_DrawOverlay (UI_BoxFlags)(1ull<<44)
# define UI_BoxFlag_DrawBucket (UI_BoxFlags)(1ull<<45)
# define UI_BoxFlag_Clip (UI_BoxFlags)(1ull<<46)
# define UI_BoxFlag_AnimatePosX (UI_BoxFlags)(1ull<<47)
# define UI_BoxFlag_AnimatePosY (UI_BoxFlags)(1ull<<48)
# define UI_BoxFlag_DisableTextTrunc (UI_BoxFlags)(1ull<<49)
# define UI_BoxFlag_DisableIDString (UI_BoxFlags)(1ull<<50)
# define UI_BoxFlag_DisableFocusBorder (UI_BoxFlags)(1ull<<51)
# define UI_BoxFlag_DisableFocusOverlay (UI_BoxFlags)(1ull<<52)
# define UI_BoxFlag_HasDisplayString (UI_BoxFlags)(1ull<<53)
# define UI_BoxFlag_HasFuzzyMatchRanges (UI_BoxFlags)(1ull<<54)
# define UI_BoxFlag_RoundChildrenByParent (UI_BoxFlags)(1ull<<55)
//- rjf: bundles
# define UI_BoxFlag_Clickable (UI_BoxFlag_MouseClickable|UI_BoxFlag_KeyboardClickable)
@@ -420,6 +423,7 @@ struct UI_Box
//- rjf: per-build equipment
UI_Key key;
UI_BoxFlags flags;
String8Array tags;
String8 string;
UI_TextAlign text_align;
Vec2F32 fixed_position;
@@ -659,6 +663,9 @@ struct UI_State
//- rjf: build state machine state
B32 is_in_open_ctx_menu;
B32 tooltip_can_overflow_window;
String8Array current_gen_tags;
U64 current_gen_tags_gen;
//- rjf: build phase output
UI_Box *root;
@@ -668,7 +675,6 @@ struct UI_State
U64 build_box_count;
U64 last_build_box_count;
B32 ctx_menu_touched_this_frame;
B32 tooltip_can_overflow_window;
B32 is_animating;
//- rjf: build parameters