lsa-planer

LSA-Planer Professional – Planungssoftware für Lichtsignalanlagen nach RiLSA 2015 und § 45 StVO. EUPL-1.2.

/ electron fenstergrund.ts

2,6 KB Rohdatei
electron/fenstergrund.ts — 53 Zeilen
1 /**
2 * Grundfarbe des Fensters, bevor die Anzeige das erste Mal gezeichnet hat.
3 *
4 * Befund L12 (EN 301 549 Kap. 11.7): In `createWindow` stand fest `#f4f6f9` -
5 * der Wert von `--grund` aus dem HELLEN Erscheinungsbild. Wer im dunklen Modus
6 * oder in einem dunklen Kontrastdesign arbeitet, bekam damit bei jedem Start
7 * und bei jedem "Neu laden" einen hellen Blitz. Fuer Anwender mit
8 * Lichtempfindlichkeit, Migraene oder Photophobie ist das kein
9 * Schoenheitsfehler.
10 *
11 * Die beiden Werte stehen hier ein zweites Mal - der Hauptprozess kennt das
12 * Stylesheet nicht, er hat keine CSS-Variablen. Ein eigenes Modul, damit die
13 * Doppelung nachpruefbar bleibt: `tests/electron/fenstergrund.test.ts` liest die
14 * Werte aus src/styles/app.css und vergleicht. Wer dort `--grund` aendert und
15 * hier nicht, erfaehrt es beim naechsten Testlauf statt beim naechsten Start.
16 *
17 * DAS KONTRASTDESIGN IST DIE ZWEITE EINGANGSGROESSE
18 *
19 * Bei aktivem Kontrastdesign malt die Anzeige keine der beiden Farben: Windows
20 * ersetzt unter `forced-colors: active` alle Farben durch das vom Anwender
21 * gewaehlte Paar, und `body { background: var(--grund) }` wird zum Systemgrund
22 * `Canvas` (siehe den Kommentar ueber `@media (forced-colors: active)` in
23 * src/styles/app.css). Die Wahl des Kontrastdesigns haengt ausserdem nicht am
24 * Windows-Schalter fuer App-Farben: Bei "App-Farbmodus hell" plus dunklem
25 * Kontrastdesign steht `nativeTheme.shouldUseDarkColors` auf `false`. Der
26 * Hauptprozess malte dann FENSTER_GRUND_HELL unter eine nahezu schwarze
27 * Anzeige - genau der Blitz, den dieses Modul beseitigen soll (Befund 30).
28 *
29 * Deshalb nimmt `fensterGrundfarbe` zusaetzlich die vom Betriebssystem
30 * gemeldete Grundfarbe entgegen. Sie ist nichts, was dieses Programm
31 * geschrieben hat; taugt sie nicht als Farbangabe, gilt weiter die
32 * Anwendungsfarbe.
33 */
34
35 /** `--grund` aus `:root` in src/styles/app.css. */
36 export const FENSTER_GRUND_HELL = '#f4f6f9';
37
38 /** `--grund` aus `:root[data-erscheinungsbild='dunkel']` in src/styles/app.css. */
39 export const FENSTER_GRUND_DUNKEL = '#12161d';
40
41 /** Farbangabe, mit der sich ein Fenster fuellen laesst: `#rgb` bis `#rrggbbaa`. */
42 const FARBANGABE = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;
43
44 /**
45 * Grundfarbe des Fensters.
46 *
47 * `kontrastgrund` ist die vom Betriebssystem gemeldete Fenstergrundfarbe des
48 * Kontrastdesigns, sonst `null`; sie geht den beiden Anwendungsfarben vor.
49 */
50 export function fensterGrundfarbe(dunkel: boolean, kontrastgrund: string | null = null): string {
51 if (kontrastgrund !== null && FARBANGABE.test(kontrastgrund)) return kontrastgrund;
52 return dunkel ? FENSTER_GRUND_DUNKEL : FENSTER_GRUND_HELL;
53 }