makepad/apps/amp/resources/styles/military.splash
Admin 922a61736d apps: Code, Translator, Weather, Amp and the rest
Makepad Code (editor layout, selection, sidebar, early yield), the EN/ZH
Translator with voice, Weather with a generated offline forecast, Amp
playing its offline library, and fixes
across the other apps and examples.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-13 12:26:21 +02:00

253 lines
13 KiB
Text

// Military — hardened field equipment: an olive-drab powder-coated front with
// rubber bumpers at the corners, gunmetal plates, recessed guarded keys,
// hazard-striped edges on the control wings, night-vision green lights and a
// green segment-style readout on the displays.
use mod.prelude.widgets_internal.*
// ---- palette: phosphor-green lists and bars ----
mod.widgets.hw_palette.screen_bg = #x0a0e0a
mod.widgets.hw_palette.screen_text = #xb8f5a8
mod.widgets.hw_palette.screen_muted = #x5f8f58
mod.widgets.hw_palette.accent = #x5dff4a
// The device's floor is dark: display type sits on it bare.
mod.widgets.hw_palette.dark_floor = 1.0
// ---- the front: olive-drab powder coat, rubber bumpers at the corners ----
mod.widgets.HwChassis.draw_bg.ground = #x4a4f33
mod.widgets.HwChassis.draw_bg.light_ink = vec4(0.86, 0.88, 0.74, 1.0)
mod.widgets.HwChassis.draw_bg.shadow_ink = vec4(0.06, 0.07, 0.04, 1.0)
mod.widgets.HwChassis.draw_bg.pattern = vec4(4.0, 1.2, 0.20, 0.0)
mod.widgets.HwChassis.draw_bg.glow_ink = vec4(0.36, 1.0, 0.29, 1.0)
mod.widgets.HwChassis.draw_bg.spill = vec2(1.4, 0.6)
mod.widgets.HwChassis.draw_bg.pixel = fn() {
let p = self.pos * self.rect_size
var col = self.surface(p, self.ground.xyz)
col = col * (1.0 + (self.hw_hash(floor(self.world.xy * 1.3)) - 0.5) * 0.06)
let v = length((self.pos - vec2(0.5, 0.35)) * vec2(0.9, 1.3))
col = col * (1.06 - 0.26 * v * v)
// Rubber bumpers: a moulded black block over each corner.
let s = self.rect_size
let cq = min(p, s - p)
// A moulded rubber block over each corner.
let bq = cq - vec2(40.0, 40.0)
let bd = length(max(bq, vec2(0.0, 0.0))) + min(max(bq.x, bq.y), 0.0) - 8.0
let bump = 1.0 - smoothstep(-0.8, 0.8, bd)
let rn = clamp(-bd / 8.0, 0.0, 1.0)
let ridge = smoothstep(0.35, 0.65, 0.5 + 0.5 * sin((cq.x + cq.y) * 0.7))
var rub = vec3(0.055, 0.056, 0.052) * (0.7 + 0.5 * rn) * (0.8 + 0.35 * ridge)
rub = rub + vec3(0.30, 0.31, 0.28) * (1.0 - smoothstep(0.0, 1.8, abs(bd + 1.8))) * 0.55
// A bolt through the corner block.
let bolt = length(cq - vec2(17.0, 17.0))
rub = mix(rub, vec3(0.42, 0.43, 0.40) * (1.25 - bolt * 0.09), 1.0 - smoothstep(4.0, 5.0, bolt))
let lip = (1.0 - smoothstep(0.0, 10.0, bd)) * (1.0 - bump) * 0.65
col = col * (1.0 - lip)
col = mix(col, rub, bump)
col = col * (1.0 - self.env_ao(0.0)) + self.env_spill(vec3(0.0, 0.0, 1.0))
return vec4(col + self.dither(), 1.0)
}
mod.widgets.Window.pass.clear_color = #x3c402a
// Raised plates: gunmetal, bolted, a hazard band round the edge.
mod.widgets.HwPlate.draw_bg.ground = #x3a3d3c
mod.widgets.HwPlate.draw_bg.light_ink = vec4(0.80, 0.83, 0.80, 1.0)
mod.widgets.HwPlate.draw_bg.shadow_ink = vec4(0.02, 0.02, 0.02, 1.0)
mod.widgets.HwPlate.draw_bg.pattern = vec4(7.0, 1.0, 0.0, 0.0)
mod.widgets.HwPlate.draw_bg.pattern_ink = vec4(0.95, 0.74, 0.08, 1.0)
mod.widgets.HwPlate.draw_bg.pattern_seam = vec4(18.0, 7.0, 1.0, 2.5)
mod.widgets.HwPlate.draw_bg.surface = fn(p: vec2, base: vec3) -> vec3 {
let w = self.world.xy
// Powder-coated gunmetal: soft cells and fine speckle.
let n = self.hw_noise(w * 0.3) * 0.6 + self.hw_noise(w * 0.8) * 0.4
var col = base * (1.0 + (n - 0.5) * 0.18)
col = col * (1.0 + (self.hw_hash(floor(w * 1.6)) - 0.5) * 0.08)
// Hazard band: yellow and black diagonals in the edge band.
let band = self.pattern_seam.y
let e = min(min(p.x, p.y), min(self.rect_size.x - p.x, self.rect_size.y - p.y)) - self.inset
let inb = 1.0 - smoothstep(band - 0.6, band + 0.6, e)
let t = fract((w.x + w.y) / max(self.pattern_seam.x, 2.0))
let st = smoothstep(0.47, 0.53, t) * (1.0 - smoothstep(0.97, 1.0, t)) + (1.0 - smoothstep(0.0, 0.03, t))
let chip = step(0.86, self.hw_noise(w * 0.25))
let stripe = mix(vec3(0.06, 0.06, 0.05), self.pattern_ink.xyz, st) * (0.9 + 0.2 * self.hw_hash(floor(w * 2.0)))
col = mix(col, stripe, inb * (1.0 - chip * 0.7))
// A screw head inside each corner of the band.
let cq = min(p, self.rect_size - p) - vec2(self.inset, self.inset)
let sd = length(cq - vec2(band + 7.0, band + 7.0))
let screw = 1.0 - smoothstep(3.2, 4.2, sd)
let slot = (1.0 - smoothstep(0.4, 1.0, abs((cq.x - cq.y) * 0.707))) * screw
col = mix(col, vec3(0.50, 0.52, 0.50) * (1.2 - sd * 0.12), screw)
col = mix(col, vec3(0.08, 0.08, 0.08), slot)
return col
}
mod.widgets.HwPlate.draw_bg.relief = vec4(1.8, 0.7, 2.0, 0.25)
mod.widgets.HwPlate.draw_bg.finish = vec4(0.6, 0.35, 0.12, 0.8)
mod.widgets.HwPlate.draw_bg.shadow = vec4(0.65, 9.0, 1.0, 0.6)
mod.widgets.HwPlate.draw_bg.glow_ink = vec4(0.36, 1.0, 0.29, 1.0)
mod.widgets.HwPlate.draw_bg.spill = vec2(1.6, 0.6)
// Recessed panels: a darker olive well.
mod.widgets.HwPanel.draw_bg.ground = #x2c3020
mod.widgets.HwPanel.draw_bg.light_ink = vec4(0.72, 0.76, 0.60, 1.0)
mod.widgets.HwPanel.draw_bg.shadow_ink = vec4(0.01, 0.01, 0.0, 1.0)
mod.widgets.HwPanel.draw_bg.pattern = vec4(4.0, 1.2, 0.16, 0.0)
mod.widgets.HwPanel.draw_bg.inner = vec4(0.85, 9.0, 0.0, 0.55)
mod.widgets.HwPanel.draw_bg.finish = vec4(0.7, 0.3, 0.05, 0.9)
mod.widgets.HwPanel.draw_bg.glow_ink = vec4(0.36, 1.0, 0.29, 1.0)
mod.widgets.HwPanel.draw_bg.spill = vec2(1.5, 0.6)
// The screen's surround: blackened steel, very deep.
mod.widgets.HwBezel.draw_bg.ground = #x141614
mod.widgets.HwBezel.draw_bg.light_ink = vec4(0.55, 0.58, 0.52, 1.0)
mod.widgets.HwBezel.draw_bg.shadow_ink = vec4(0.0, 0.0, 0.0, 1.0)
mod.widgets.HwBezel.draw_bg.pattern = vec4(4.0, 0.8, 0.14, 0.0)
mod.widgets.HwBezel.draw_bg.inner = vec4(1.0, 14.0, 0.0, 0.6)
mod.widgets.HwBezel.draw_bg.spill = vec2(1.0, 0.5)
// The glass: a faint green scan and a heavy rim.
mod.widgets.HwGlass.draw_bg.glass = vec4(0.10, 0.05, 0.55, 0.06)
mod.widgets.HwGlass.draw_bg.tint = vec4(0.6, 1.0, 0.55, 0.0)
// ---- keys: recessed, guarded gunmetal caps with stencil glyphs ----
mod.widgets.HwKey.depth = 1.6
mod.widgets.HwKey.press = -2.6
mod.widgets.HwKey.radius = 4
mod.widgets.HwKey.draw_bg.ground = #x2d302e
mod.widgets.HwKey.draw_bg.light_ink = vec4(0.78, 0.80, 0.74, 1.0)
mod.widgets.HwKey.draw_bg.shadow_ink = vec4(0.0, 0.0, 0.0, 1.0)
mod.widgets.HwKey.draw_bg.pattern = vec4(4.0, 0.7, 0.16, 0.0)
mod.widgets.HwKey.draw_bg.relief = vec4(2.4, 0.4, 1.6, 0.20)
mod.widgets.HwKey.draw_bg.finish = vec4(0.7, 0.3, 0.08, 0.9)
mod.widgets.HwKey.draw_bg.shadow = vec4(0.75, 5.0, 1.0, 0.75)
mod.widgets.HwKey.draw_bg.glow_ink = vec4(0.36, 1.0, 0.29, 1.0)
mod.widgets.HwKey.draw_bg.spill = vec2(2.0, 0.6)
// The guard: a gunmetal frame standing round each cap.
mod.widgets.HwKey.draw_bg.pixel = fn() {
let p = self.pos * self.rect_size
var o = self.layer(self.key_face(p, self.ground.xyz))
if self.mech.x > 0.5 {
o = self.mech_key()
}
let px = 1.0 / max(self.draw_pass.dpi_factor, 0.5)
let d = self.sd(p)
let c = self.rect_size * 0.5
let e = min(min(p.x, p.y), min(self.rect_size.x - p.x, self.rect_size.y - p.y))
let g = smoothstep(2.4 - px, 2.4 + px, d) * (1.0 - smoothstep(-px, px, 1.2 - e))
let lt = normalize(self.light.xy + vec2(0.000001, 0.000001))
let side = dot(normalize(p - c + vec2(0.0001, 0.0001)), -lt)
let gcol = vec3(0.20, 0.215, 0.20) * (0.8 + 0.45 * side) + self.env_spill(vec3(0.0, 0.0, 1.0)) * 0.5
let groove = 1.0 - smoothstep(0.0, 1.4, abs(d - 3.2))
let gc = gcol * (1.0 - groove * 0.5)
o = vec4(gc * g, g) + o * (1.0 - g)
o = self.key_marks(o, p)
return vec4(o.xyz + self.dither() * step(0.002, o.w), o.w)
}
mod.widgets.HwKeyButton.draw_text.color = #xd9dcc4
mod.widgets.HwKeyButton.draw_text.color_hover = #x9dff8a
mod.widgets.HwKeyButton.draw_text.color_down = #x5dff4a
mod.widgets.HwKeyText.draw_text.color = #xd9dcc4
mod.widgets.HwKeyText.draw_text.color_hover = #x9dff8a
mod.widgets.HwKeyText.draw_text.color_down = #x5dff4a
// ---- lights: night-vision green ----
mod.widgets.HwDash.emissive = vec4(0.30, 1.0, 0.22, 8.0)
mod.widgets.HwDash.draw_bg.glow_ink = vec4(0.36, 1.0, 0.28, 1.0)
mod.widgets.HwDash.draw_bg.ground = #x0e120c
mod.widgets.HwLed.emissive = vec4(0.30, 1.0, 0.22, 3.5)
mod.widgets.HwLed.draw_bg.glow_ink = vec4(0.36, 1.0, 0.28, 1.0)
// ---- knob: a black knurled skirt, a stepped olive cap ----
mod.widgets.HwKnobFace.draw_bg.ground = #x1c1e1c
mod.widgets.HwKnobFace.draw_bg.light_ink = vec4(0.80, 0.82, 0.76, 1.0)
mod.widgets.HwKnobFace.draw_bg.shadow_ink = vec4(0.0, 0.0, 0.0, 1.0)
mod.widgets.HwKnobFace.draw_bg.pattern = vec4(5.0, 0.8, 0.12, 0.0)
mod.widgets.HwKnobFace.draw_bg.knob = vec4(1.0, 0.62, 36.0, 0.65)
mod.widgets.HwKnobFace.draw_bg.cap_ink = vec4(0.30, 0.32, 0.22, 1.0)
mod.widgets.HwKnobFace.draw_bg.ptr_ink = vec4(0.98, 0.78, 0.10, 1.0)
mod.widgets.HwKnobFace.draw_bg.ring = vec4(13.0, 1.30, 2.3, 2.35619)
mod.widgets.HwKnobFace.draw_bg.led_off = vec4(0.07, 0.10, 0.06, 1.0)
mod.widgets.HwKnobFace.draw_bg.glow_ink = vec4(0.36, 1.0, 0.28, 1.0)
mod.widgets.HwKnobFace.draw_bg.shadow = vec4(0.85, 10.0, 1.0, 0.8)
mod.widgets.HwKnobFace.emissive = vec4(0.30, 1.0, 0.22, 0.7)
// ---- meter: green LED ladder, amber at the top ----
mod.widgets.HwMeterFace.draw_bg.ground = #x070907
mod.widgets.HwMeterFace.draw_bg.meter = vec4(0.0, 20.0, 0.9, 0.8)
mod.widgets.HwMeterFace.draw_bg.glow_ink = vec4(0.36, 1.0, 0.28, 1.0)
mod.widgets.HwMeterFace.draw_bg.hot_ink = vec4(1.0, 0.72, 0.08, 1.0)
mod.widgets.HwMeterFace.draw_bg.led_off = vec4(0.05, 0.08, 0.04, 1.0)
mod.widgets.HwMeterFace.emissive = vec4(0.30, 1.0, 0.22, 0.5)
// ---- type: stencil-white on the drab, green on the displays ----
mod.widgets.HwCaption.draw_text.color = #xc9cca8
mod.widgets.HwTitle.draw_text.color = #xe4e6cc
mod.widgets.HwText.draw_text.color = #xb3b793
mod.widgets.HwPanelTitle.draw_text.color = #xdfe2c6
mod.widgets.HwPanelText.draw_text.color = #x9da283
mod.widgets.HwNavButton.draw_text.color = #xcfd3b3
mod.widgets.HwNavButton.draw_text.color_hover = #x9dff8a
mod.widgets.HwNavButton.draw_bg.color = vec4(0.13, 0.145, 0.10, 1.0)
mod.widgets.HwNavButton.draw_bg.color_hover = vec4(0.17, 0.20, 0.12, 1.0)
mod.widgets.HwNavButton.draw_bg.color_down = vec4(0.08, 0.10, 0.06, 1.0)
mod.widgets.HwNavButton.draw_bg.color_focus = vec4(0.13, 0.145, 0.10, 1.0)
mod.widgets.HwNavButton.draw_bg.border_color = vec4(0.0, 0.0, 0.0, 0.5)
mod.widgets.HwNavButton.draw_bg.border_color_hover = vec4(0.36, 1.0, 0.28, 0.35)
mod.widgets.HwDisplayText.draw_text.color = #x7dff66
mod.widgets.HwDisplayText.draw_text.text_style = theme.font_code{font_size: 10.0}
mod.widgets.HwDisplay.draw_bg.ground = #x060906
mod.widgets.HwDisplay.draw_bg.light_ink = vec4(0.55, 0.58, 0.52, 1.0)
mod.widgets.HwDisplay.draw_bg.shadow_ink = vec4(0.0, 0.0, 0.0, 1.0)
mod.widgets.HwDisplay.draw_bg.surface = fn(p: vec2, base: vec3) -> vec3 {
// A segment readout's glass: a faint phosphor-green cell grid.
let f = fract(p / vec2(3.0, 3.0))
let cell = step(0.25, f.x) * step(0.25, f.y)
return base + vec3(0.010, 0.030, 0.008) * cell
}
mod.widgets.HwDisplay.draw_bg.inner = vec4(1.0, 10.0, 0.0, 0.6)
mod.widgets.HwDropDown.draw_bg.well = vec4(0.03, 0.05, 0.03, 1.0)
mod.widgets.HwDropDown.draw_bg.rim = vec4(0.36, 1.0, 0.28, 0.22)
mod.widgets.HwDropDown.draw_bg.arrow = vec4(0.45, 1.0, 0.36, 1.0)
mod.widgets.HwDropDown.draw_text.color = #x9df58a
mod.widgets.HwTextInput.draw_bg.well = vec4(0.03, 0.05, 0.03, 1.0)
mod.widgets.HwTextInput.draw_bg.rim = vec4(0.36, 1.0, 0.28, 0.22)
mod.widgets.HwSplitter.draw_bg.groove = vec4(0.0, 0.0, 0.0, 0.45)
mod.widgets.HwSplitter.draw_bg.glint = vec4(0.8, 0.85, 0.6, 0.18)
// ---- the picture lights the front ----
mod.widgets.HwMilk.light = 1.9
mod.widgets.HwMilk.light_knee = 1.0
mod.widgets.HwSpectrum.light = 3.2
// Critical keys (play, presets) carry a hazard band.
mod.widgets.HwKey.draw_bg.critical_ink = vec4(0.93, 0.74, 0.10, 1.0)
mod.widgets.HwKey.draw_bg.critical_band = vec4(1.0, 4.0, 7.0, 0.0)
// ---- transport: guarded keys that drop inside their guards and latch ----
mod.widgets.HwTransportKey.latch = 1.0
mod.widgets.HwTransportKey.press_secs = 0.07
mod.widgets.HwTransportKey.draw_bg.spill = vec2(0.9, 0.45)
mod.widgets.HwTransportKey.travel = 3.5
mod.widgets.HwTransportKey.draw_bg.mech = vec4(1.0, 0.66, 0.0, 0.0)
mod.widgets.HwTransportKey.draw_bg.dimple = vec4(0.0, 3.0, 0.3, 0.1)
mod.widgets.HwTransportKey.draw_bg.housing_ink = vec4(0.02, 0.022, 0.02, 1.0)
mod.widgets.HwTransportKey.draw_bg.front_ink = vec4(0.22, 0.235, 0.22, 1.0)
// ---- the picture in this style's colours (THEME COLOURS key; on by default) ----
mod.widgets.hw_palette.map0 = #x020a02
mod.widgets.hw_palette.map1 = #x0f4010
mod.widgets.hw_palette.map2 = #x3fd84a
mod.widgets.hw_palette.map3 = #xd8ffcc
mod.widgets.hw_palette.map_strength = 0.85
mod.widgets.hw_palette.map_default = 1.0
// The screen filter with the THEME COLOURS key: CRT: a bulging tube, scanlines, an RGB mask, bloom.
mod.widgets.hw_palette.screen_filter = 1.0
mod.widgets.hw_palette.screen_filter_strength = 0.85
mod.widgets.hw_palette.screen_cell = 2.5
mod.widgets.hw_palette.screen_curve = 0.07
true
// ---- EQ (HwEqGraph: the graphic equalizer's era look, STYLE_GUIDE "Graphic EQ") ----
mod.widgets.HwEqGraph.draw_fader.fader = vec4(2.0, 0.56, 15.0, 4.0)
mod.widgets.HwEqGraph.draw_fader.cap_ink = vec4(0.26, 0.29, 0.20, 1.0)
mod.widgets.HwEqGraph.draw_fader.track_ink = vec4(0.02, 0.03, 0.02, 1.0)
mod.widgets.HwEqGraph.draw_curve.curve = vec4(1.0, 1.8, 8.0, 0.06)
mod.widgets.HwEqGraph.draw_grid.grid = vec4(3.0, 0.14, 0.34, 0.0)
mod.widgets.HwEqGraph.draw_grid.grid_ink = vec4(0.36, 1.0, 0.29, 0.8)
mod.widgets.HwEqGraph.draw_spectrum.spectrum = vec4(0.18, 1.0, 0.0, 0.0)
true