All outline text draws with Slug curves on every platform (SDF/MSDF stays selectable per size); a frame never presents a blank glyph and retained draw lists keep theirs. One coverage model for vector feathering, widget families split out of the core crate, fewer steady-state allocations, video keeps its aspect (Contain/Cover), render and SSAO pass unification. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
213 lines
8.9 KiB
Text
213 lines
8.9 KiB
Text
mod.theme = mod.themes.light
|
|
|
|
// Cast concrete: a pale board-formed grey with pores, sand and water
|
|
// streaks. Every control is cast or stamped from the same material: a
|
|
// raised block with a chamfered, top-lit edge and a soft shadow, or a
|
|
// pocket sunk into the slab. Light only where a value is: a pale verdigris
|
|
// inlay set in dark glass. Every state of a family is spelled out, because
|
|
// the base derived its states once, from its own colours.
|
|
use mod.res.*
|
|
use mod.text.*
|
|
|
|
// The slab.
|
|
mod.theme.color_bg_app = #8b8a86
|
|
// The surface ladder is grown from this one; kept pale so the body ink
|
|
// holds on its deepest rung.
|
|
mod.theme.color_fg_app = #c2c1bc
|
|
mod.theme.color_bg_container = #8b8a86
|
|
mod.theme.color_surface_container_lowest = #83827e
|
|
|
|
// Raised faces the sheet does not redraw: a cast block, lit from above.
|
|
mod.theme.color_outset = #a6a5a0
|
|
mod.theme.color_outset_1 = #b4b3ae
|
|
mod.theme.color_outset_2 = #93928d
|
|
mod.theme.color_outset_hover = #b0afaa
|
|
mod.theme.color_outset_1_hover = #bdbcb7
|
|
mod.theme.color_outset_2_hover = #9c9b96
|
|
mod.theme.color_outset_down = #93928d
|
|
mod.theme.color_outset_1_down = #8a8984
|
|
mod.theme.color_outset_2_down = #9c9b96
|
|
mod.theme.color_outset_focus = #a6a5a0
|
|
mod.theme.color_outset_1_focus = #b4b3ae
|
|
mod.theme.color_outset_2_focus = #93928d
|
|
mod.theme.color_outset_active = #93928d
|
|
mod.theme.color_outset_1_active = #8a8984
|
|
mod.theme.color_outset_2_active = #9c9b96
|
|
mod.theme.color_outset_disabled = #a09f9a
|
|
mod.theme.color_outset_1_disabled = #a09f9a
|
|
mod.theme.color_outset_2_disabled = #a09f9a
|
|
|
|
// Wells: a pocket in the slab, a shade darker, opaque in every state.
|
|
mod.theme.color_inset = #83827e
|
|
mod.theme.color_inset_1 = #83827e
|
|
mod.theme.color_inset_2 = #83827e
|
|
mod.theme.color_inset_hover = #888783
|
|
mod.theme.color_inset_1_hover = #888783
|
|
mod.theme.color_inset_2_hover = #888783
|
|
mod.theme.color_inset_focus = #888783
|
|
mod.theme.color_inset_1_focus = #888783
|
|
mod.theme.color_inset_2_focus = #888783
|
|
mod.theme.color_inset_active = #83827e
|
|
mod.theme.color_inset_1_active = #83827e
|
|
mod.theme.color_inset_2_active = #83827e
|
|
mod.theme.color_inset_down = #807f7b
|
|
mod.theme.color_inset_1_down = #807f7b
|
|
mod.theme.color_inset_2_down = #807f7b
|
|
mod.theme.color_inset_drag = #807f7b
|
|
mod.theme.color_inset_1_drag = #807f7b
|
|
mod.theme.color_inset_2_drag = #807f7b
|
|
mod.theme.color_inset_empty = #83827e
|
|
mod.theme.color_inset_1_empty = #83827e
|
|
mod.theme.color_inset_2_empty = #83827e
|
|
mod.theme.color_inset_disabled = #908f8a
|
|
mod.theme.color_inset_1_disabled = #908f8a
|
|
mod.theme.color_inset_2_disabled = #908f8a
|
|
|
|
// One dark hairline, the shadow line of a cast edge, on every stock part
|
|
// the faces do not redraw.
|
|
mod.theme.color_bevel = #3d3c39
|
|
mod.theme.color_bevel_hover = #2e2d2b
|
|
mod.theme.color_bevel_focus = #2f7d62
|
|
mod.theme.color_bevel_down = #2e2d2b
|
|
mod.theme.color_bevel_active = #2e2d2b
|
|
mod.theme.color_bevel_empty = #3d3c39
|
|
mod.theme.color_bevel_disabled = #7a7975
|
|
mod.theme.color_bevel_inset_1 = #2e2d2b
|
|
mod.theme.color_bevel_inset_2 = #c4c3be
|
|
mod.theme.color_bevel_outset_1 = #d0cfca
|
|
mod.theme.color_bevel_outset_2 = #3d3c39
|
|
mod.theme.beveling = 0.5
|
|
|
|
// Stamped ink: a near black, 6.5:1 on the slab and 4.8:1 in a pocket.
|
|
mod.theme.color_text = #161615
|
|
mod.theme.color_text_hover = #0e0e0d
|
|
mod.theme.color_text_focus = #0e0e0d
|
|
mod.theme.color_text_active = #0e0e0d
|
|
mod.theme.color_text_down = #0e0e0d
|
|
mod.theme.color_text_disabled = #5e5d59
|
|
mod.theme.color_text_placeholder = #33322f
|
|
mod.theme.color_text_placeholder_hover = #2a2927
|
|
mod.theme.color_text_val = #161615
|
|
mod.theme.color_text_meta = #2c2b28
|
|
mod.theme.color_text_cursor = #161615
|
|
mod.theme.color_cursor = #161615
|
|
mod.theme.color_label = #161615
|
|
mod.theme.color_label_hover = #0e0e0d
|
|
mod.theme.color_label_focus = #0e0e0d
|
|
mod.theme.color_label_active = #0e0e0d
|
|
mod.theme.color_label_down = #0e0e0d
|
|
mod.theme.color_label_disabled = #5e5d59
|
|
mod.theme.color_label_inner = #161615
|
|
mod.theme.color_label_inner_hover = #0e0e0d
|
|
mod.theme.color_label_inner_focus = #161615
|
|
mod.theme.color_label_inner_down = #0e0e0d
|
|
mod.theme.color_label_inner_drag = #0e0e0d
|
|
mod.theme.color_label_inner_active = #0e0e0d
|
|
mod.theme.color_label_inner_inactive = #161615
|
|
mod.theme.color_label_inner_disabled = #5e5d59
|
|
mod.theme.color_label_outer = #161615
|
|
mod.theme.color_label_outer_off = #161615
|
|
mod.theme.color_label_outer_hover = #0e0e0d
|
|
mod.theme.color_label_outer_down = #0e0e0d
|
|
mod.theme.color_label_outer_drag = #0e0e0d
|
|
mod.theme.color_label_outer_focus = #0e0e0d
|
|
mod.theme.color_label_outer_active = #0e0e0d
|
|
mod.theme.color_label_outer_active_focus = #0e0e0d
|
|
mod.theme.color_label_outer_disabled = #5e5d59
|
|
mod.theme.color_icon = #161615
|
|
mod.theme.color_icon_hover = #0e0e0d
|
|
mod.theme.color_icon_focus = #161615
|
|
mod.theme.color_icon_active = #0e0e0d
|
|
mod.theme.color_icon_down = #0e0e0d
|
|
mod.theme.color_icon_disabled = #5e5d59
|
|
// The inks on the surface ladder hold 4.5:1 (body) and 3:1 (second voice)
|
|
// on the darkest rung.
|
|
mod.theme.color_on_surface = #121211
|
|
mod.theme.color_on_surface_variant = #2a2927
|
|
|
|
// The accent seed: the primary, secondary and tertiary families are grown
|
|
// from it. A deep slate blue, so the grown roles keep their contrast; the
|
|
// lit verdigris of the value inlays is drawn by the faces themselves.
|
|
mod.theme.color_ctrl_selected = #1f4a5e
|
|
mod.theme.color_focus = #2f7d62
|
|
mod.theme.color_ctrl_active = #1f4a5e
|
|
mod.theme.color_val = #2f6a52
|
|
mod.theme.color_val_hover = #2f6a52
|
|
mod.theme.color_val_focus = #2f6a52
|
|
mod.theme.color_val_drag = #285c47
|
|
mod.theme.color_mark = #161615
|
|
mod.theme.color_mark_active = #161615
|
|
mod.theme.color_selection_hover = #86c9a04d
|
|
mod.theme.color_selection_focus = #86c9a073
|
|
mod.theme.color_selection_down = #86c9a073
|
|
mod.theme.color_bg_highlight_inline = #86c9a04d
|
|
mod.theme.color_handle = #b0afaa
|
|
mod.theme.color_handle_hover = #bab9b4
|
|
mod.theme.color_handle_1 = #bab9b4
|
|
mod.theme.color_handle_2 = #93928d
|
|
|
|
// Screens, readouts and the needle meter are dark glass windows cut into
|
|
// the slab, their digits and scale the lit verdigris.
|
|
mod.theme.color_screen = #262725
|
|
mod.theme.color_screen_ink = #a9dcbc
|
|
mod.theme.color_terminal_bg = #2a2927
|
|
mod.theme.color_terminal_text = #d8d7d2
|
|
|
|
// SLIM. Rows of 26, gaps of 8, a panel's padding 12. The rungs below were
|
|
// frozen as numbers when the base was read, so they are stated again here.
|
|
mod.theme.space_factor = 6.0
|
|
mod.theme.space_1 = 4.0
|
|
mod.theme.space_2 = 8.0
|
|
mod.theme.space_3 = 12.0
|
|
mod.theme.space_4 = 16.0
|
|
mod.theme.space_5 = 20.0
|
|
mod.theme.space_6 = 24.0
|
|
mod.theme.mspace_1 = mod.turtle.Inset{top: 4.0 right: 4.0 bottom: 4.0 left: 4.0}
|
|
mod.theme.mspace_h_1 = mod.turtle.Inset{top: 0.0 right: 4.0 bottom: 0.0 left: 4.0}
|
|
mod.theme.mspace_v_1 = mod.turtle.Inset{top: 4.0 right: 0.0 bottom: 4.0 left: 0.0}
|
|
mod.theme.mspace_2 = mod.turtle.Inset{top: 8.0 right: 8.0 bottom: 8.0 left: 8.0}
|
|
mod.theme.mspace_h_2 = mod.turtle.Inset{top: 0.0 right: 8.0 bottom: 0.0 left: 8.0}
|
|
mod.theme.mspace_v_2 = mod.turtle.Inset{top: 8.0 right: 0.0 bottom: 8.0 left: 0.0}
|
|
mod.theme.mspace_3 = mod.turtle.Inset{top: 12.0 right: 12.0 bottom: 12.0 left: 12.0}
|
|
mod.theme.mspace_h_3 = mod.turtle.Inset{top: 0.0 right: 12.0 bottom: 0.0 left: 12.0}
|
|
mod.theme.mspace_v_3 = mod.turtle.Inset{top: 12.0 right: 0.0 bottom: 12.0 left: 0.0}
|
|
mod.theme.size_control_s = 22.0
|
|
mod.theme.size_control_m = 26.0
|
|
mod.theme.size_control_l = 32.0
|
|
mod.theme.tab_height = 26.0
|
|
mod.theme.tab_flat_height = 26.0
|
|
mod.theme.data_item_height = 22.0
|
|
mod.theme.corner_radius = 1.0
|
|
mod.theme.container_corner_radius = 2.0
|
|
mod.theme.textselection_corner_radius = 1.0
|
|
mod.theme.radius_xs = 1.0
|
|
mod.theme.radius_s = 2.0
|
|
mod.theme.radius_m = 3.0
|
|
mod.theme.radius_l = 4.0
|
|
|
|
// The base's humanist sans, set small: a font size draws 1.333 layout
|
|
// points per unit, so 8.5 sets a cap of about 8.2 points, 0.32 of a 26
|
|
// point row. Regular for working text, the bold face for captions.
|
|
mod.theme.font_size_p = 8.5
|
|
mod.theme.type_title_l_size = 12.0
|
|
mod.theme.type_title_m_size = 10.5
|
|
mod.theme.type_title_s_size = 9.25
|
|
mod.theme.type_body_l_size = 9.25
|
|
mod.theme.type_body_m_size = 8.5
|
|
mod.theme.type_body_s_size = 7.75
|
|
mod.theme.type_label_l_size = 8.5
|
|
mod.theme.type_label_m_size = 7.75
|
|
mod.theme.type_label_s_size = 7.0
|
|
mod.theme.font_regular = mod.theme.font_regular{font_size: 8.5}
|
|
mod.theme.font_label = mod.theme.font_label{font_size: 8.5}
|
|
mod.theme.font_bold = mod.theme.font_bold{font_size: 8.5}
|
|
mod.theme.font_title_l = mod.theme.font_bold{font_size: 12.0 line_spacing: 1.2}
|
|
mod.theme.font_title_m = mod.theme.font_bold{font_size: 10.5 line_spacing: 1.2}
|
|
mod.theme.font_title_s = mod.theme.font_bold{font_size: 9.25 line_spacing: 1.2}
|
|
mod.theme.font_body_l = mod.theme.font_regular{font_size: 9.25 line_spacing: 1.35}
|
|
mod.theme.font_body_m = mod.theme.font_regular{font_size: 8.5 line_spacing: 1.35}
|
|
mod.theme.font_body_s = mod.theme.font_regular{font_size: 7.75 line_spacing: 1.35}
|
|
mod.theme.font_label_l = mod.theme.font_bold{font_size: 8.5 line_spacing: 1.2}
|
|
mod.theme.font_label_m = mod.theme.font_bold{font_size: 7.75 line_spacing: 1.2}
|
|
mod.theme.font_label_s = mod.theme.font_bold{font_size: 7.0 line_spacing: 1.2}
|
|
true
|