lsa-planer
LSA-Planer Professional – Planungssoftware für Lichtsignalanlagen nach RiLSA 2015 und § 45 StVO. EUPL-1.2.
| 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 | } |