JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
DesignTokens.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Valentin Eloy
2// SPDX-License-Identifier: GPL-3.0-or-later
3
4#pragma once
5
6#include <cstdint>
7#include <string>
8#include <unordered_map>
9
31
32namespace hmi {
33
37 std::uint8_t r = 0;
38 std::uint8_t g = 0;
39 std::uint8_t b = 0;
40 std::uint8_t a = 255;
41
42 [[nodiscard]] friend bool operator==(const DesignColor& lhs, const DesignColor& rhs) noexcept {
43 return lhs.r == rhs.r && lhs.g == rhs.g && lhs.b == rhs.b && lhs.a == rhs.a;
44 }
45};
46
59 // Rôles du cadre de parchemin (`LOT-66`, `EX-IHM-070`). Ajoutés aux DEUX portées : la
60 // structure est commune par construction, ce qui garantit qu'un rôle ajouté à l'une existe
61 // dans l'autre. Le châssis d'édition les définit sans dessiner d'encadrement — il s'en sert
62 // pour ses bordures et ses séparateurs, où ils tenaient déjà lieu de `border` éclairci ou
63 // assombri.
67 // Rôles de la GEMME des ornements (`LOT-76`, `EX-IHM-075`). Le cabochon d'angle et la plaque
68 // du bandeau de titre sont, dans les feuilles de personnage, un grenat serti d'or — la seule
69 // couleur froide-chaude de l'habillage, et la seule qui ne soit ni du parchemin ni de l'encre.
70 // Ajoutés aux DEUX portées, la structure étant commune par construction.
73};
74
75// Neutralise la macro Windows `small` (`rpcndr.h`, incluse via <Windows.h> dans toute unite de
76// traduction qui tire un en-tete Windows avant ce fichier) : `#define small char` casserait sinon
77// silencieusement `SpacingTokens::small` ci-dessous. Garde conservee apres le portage QRhi : le
78// projet n'inclut plus <d3d11.h>, mais rien ne garantit qu'aucun en-tete Windows ne remonte.
79#ifdef small
80#undef small
81#endif
82
85 int extraSmall = 4;
86 int small = 8;
87 int medium = 12;
88 int large = 16;
89 int extraLarge = 24;
90
91 [[nodiscard]] friend bool operator==(const SpacingTokens&,
92 const SpacingTokens&) noexcept = default;
93};
94
97 int pointSize = 10;
98 int weight = 400;
99
100 [[nodiscard]] friend bool operator==(const TypographyLevel&,
101 const TypographyLevel&) noexcept = default;
102};
103
106enum class FontRole {
109};
110
123
127 int iconSmall = 16;
128 int iconMedium = 20;
129 int iconLarge = 24;
131 int assetThumbnail = 48;
133 160;
134
135 [[nodiscard]] friend bool operator==(const SizeTokens&, const SizeTokens&) noexcept = default;
136};
137
145
155 int screenTitle = 23;
156 int sectionTitle = 14;
157 int body = 10;
158 int caption = 8;
159
160 int spaceSmall = 4;
161 int spaceMedium = 6;
162 int spaceLarge = 8;
164
166
167 [[nodiscard]] friend bool operator==(const IdentityBaseScale&,
168 const IdentityBaseScale&) noexcept = default;
169};
170
172[[nodiscard]] const IdentityBaseScale& identityBaseScale() noexcept;
173
177[[nodiscard]] DesignColor mixColor(DesignColor from, DesignColor to, float ratio) noexcept;
178
183[[nodiscard]] const char* genericCssFamily(FontRole role) noexcept;
184
187[[nodiscard]] const DesignTokens& identityTokens() noexcept;
188
191[[nodiscard]] const DesignTokens& editorDarkTokens() noexcept;
192
196[[nodiscard]] const DesignTokens& editorLightTokens() noexcept;
197
205[[nodiscard]] DesignColor viewportClearColor(bool editorMode,
206 const DesignTokens& activeEditorTokens) noexcept;
207
210[[nodiscard]] std::string toCssColor(DesignColor color);
211
214[[nodiscard]] std::string toCssRgba(DesignColor color);
215
217[[nodiscard]] double relativeLuminance(DesignColor color) noexcept;
218
220[[nodiscard]] double contrastRatio(DesignColor a, DesignColor b) noexcept;
221
226[[nodiscard]] std::unordered_map<std::string, std::string> buildStyleSheetValues(
227 const DesignTokens& editorTokens, int identityScale = 1);
228
229} // namespace hmi
Definition AssetThumbnailView.h:26
Definition AudioEngine.cpp:15
std::unordered_map< std::string, std::string > buildStyleSheetValues(const DesignTokens &editorTokens, int identityScale)
Table de substitution marqueur -> valeur pour le modèle de feuille de style (LOT-56 TACHE-02),...
Definition DesignTokens.cpp:249
const IdentityBaseScale & identityBaseScale() noexcept
Definition DesignTokens.cpp:178
double contrastRatio(DesignColor a, DesignColor b) noexcept
Rapport de contraste WCAG entre deux couleurs (1 = aucun contraste, 21 = noir sur blanc).
Definition DesignTokens.cpp:241
const DesignTokens & editorLightTokens() noexcept
Jetons du châssis d'édition en thème clair (LOT-56 TACHE-06) : mêmes rôles, mêmes échelles que editor...
Definition DesignTokens.cpp:206
DesignColor mixColor(DesignColor from, DesignColor to, float ratio) noexcept
Definition DesignTokens.cpp:163
std::string toCssRgba(DesignColor color)
Conversion pure : couleur -> chaîne CSS "rgba(r, g, b, a)", composantes entières 0-255 (les feuilles ...
Definition DesignTokens.cpp:221
double relativeLuminance(DesignColor color) noexcept
Luminance relative WCAG d'une couleur (0 = noir, 1 = blanc), pour le calcul de contraste.
Definition DesignTokens.cpp:236
const DesignTokens & editorDarkTokens() noexcept
Jetons du châssis d'édition en thème sombre (défaut) : variables, editorLightTokens() (LOT-56 TACHE-0...
Definition DesignTokens.cpp:201
DesignColor viewportClearColor(bool editorMode, const DesignTokens &activeEditorTokens) noexcept
Couleur d'effacement du viewport (GameViewport), dérivée des jetons plutôt que d'une valeur littérale...
Definition DesignTokens.cpp:211
const char * genericCssFamily(FontRole role) noexcept
Definition DesignTokens.cpp:183
FontRole
Famille de police d'une portée (LOT-68, EX-IHM-070).
Definition DesignTokens.h:106
@ Ui
Châssis d'édition : police de travail, lisible en petit et en tableau dense.
Definition DesignTokens.h:107
@ Identity
Écrans du jeu : police bitmap, rendue sans lissage à échelle entière.
Definition DesignTokens.h:108
const DesignTokens & identityTokens() noexcept
Jetons de l'identité du jeu (menu principal, écran Options, jeu) : invariants, ne suivent jamais aucu...
Definition DesignTokens.cpp:196
std::string toCssColor(DesignColor color)
Conversion pure : couleur -> chaîne CSS hexadécimale "#rrggbb" (minuscules, sans alpha — les feuilles...
Definition DesignTokens.cpp:215
Rôles de couleur, communs aux deux portées d'habillage.
Definition DesignTokens.h:49
DesignColor border
Bordures et séparateurs.
Definition DesignTokens.h:53
DesignColor frameOrnament
Filet ornemental posé en retrait du trait extérieur.
Definition DesignTokens.h:65
DesignColor surface
Fond des panneaux, boîtes de dialogue, champs.
Definition DesignTokens.h:51
DesignColor error
Signalement d'erreur/d'échec.
Definition DesignTokens.h:58
DesignColor frameShadow
Ombre portée de l'encadrement sur le fond.
Definition DesignTokens.h:66
DesignColor gemShadow
Facette en profondeur, et fond de la plaque de bandeau.
Definition DesignTokens.h:72
DesignColor gem
Facette éclairée de la gemme.
Definition DesignTokens.h:71
DesignColor frameEdge
Trait extérieur de l'encadrement : la valeur la plus sombre.
Definition DesignTokens.h:64
DesignColor accent
Couleur d'accent (sélection, focus, contrôle actif).
Definition DesignTokens.h:56
DesignColor surfaceAlt
Fond alterné (lignes de tableau, onglets non sélectionnés).
Definition DesignTokens.h:52
DesignColor background
Fond des fenêtres/vues.
Definition DesignTokens.h:50
DesignColor textMuted
Texte secondaire/désactivé.
Definition DesignTokens.h:55
DesignColor accentHover
Couleur d'accent au survol.
Definition DesignTokens.h:57
DesignColor text
Texte principal.
Definition DesignTokens.h:54
Couleur RVBA pure (indépendante de Qt), convertible en chaîne CSS pour la feuille de style et directe...
Definition DesignTokens.h:36
std::uint8_t r
Definition DesignTokens.h:37
std::uint8_t b
Definition DesignTokens.h:39
friend bool operator==(const DesignColor &lhs, const DesignColor &rhs) noexcept
Definition DesignTokens.h:42
std::uint8_t g
Definition DesignTokens.h:38
std::uint8_t a
Definition DesignTokens.h:40
Jeu complet de jetons de design d'une portée (identité invariante ou châssis variable).
Definition DesignTokens.h:139
SpacingTokens spacing
Definition DesignTokens.h:141
SizeTokens size
Definition DesignTokens.h:143
ColorTokens color
Definition DesignTokens.h:140
TypographyTokens typography
Definition DesignTokens.h:142
Grandeurs de la portée identité, exprimées en pixels à l'échelle 1 (LOT-68, EX-IHM-070).
Definition DesignTokens.h:154
int sectionTitle
Entrée de menu, titre de section.
Definition DesignTokens.h:156
int screenTitle
Titre d'écran (police de titre).
Definition DesignTokens.h:155
int spaceMedium
Definition DesignTokens.h:161
int frameThickness
Trait et filet d'un encadrement : une unité de maquette chacun.
Definition DesignTokens.h:165
int spaceSmall
Definition DesignTokens.h:160
int spaceExtraLarge
Definition DesignTokens.h:163
int spaceLarge
Definition DesignTokens.h:162
friend bool operator==(const IdentityBaseScale &, const IdentityBaseScale &) noexcept=default
int body
Corps de texte, contrôles.
Definition DesignTokens.h:157
int caption
Libellé secondaire, aide de touche.
Definition DesignTokens.h:158
Tailles d'icônes, de vignettes et de contrôles usuels, en pixels logiques (avant mise à l'échelle d'a...
Definition DesignTokens.h:126
int iconMedium
Icônes de ligne (panneau Textures) et d'action de barre d'outils.
Definition DesignTokens.h:128
int assetThumbnail
Vignettes des grilles d'assets (AssetThumbnailView).
Definition DesignTokens.h:131
int iconLarge
Definition DesignTokens.h:129
int iconSmall
Definition DesignTokens.h:127
int controlMinWidth
Largeur minimale usuelle (boutons de remappage clavier/manette).
Definition DesignTokens.h:132
friend bool operator==(const SizeTokens &, const SizeTokens &) noexcept=default
int paletteThumbnail
Vignettes de la palette (multiple de la taille d'une case).
Definition DesignTokens.h:130
Échelle d'espacement, en pixels logiques.
Definition DesignTokens.h:84
int small
Definition DesignTokens.h:86
int extraSmall
Definition DesignTokens.h:85
int extraLarge
Definition DesignTokens.h:89
friend bool operator==(const SpacingTokens &, const SpacingTokens &) noexcept=default
int large
Definition DesignTokens.h:88
int medium
Definition DesignTokens.h:87
Un niveau de l'échelle typographique : taille en points et graisse (QFont::Weight,...
Definition DesignTokens.h:96
friend bool operator==(const TypographyLevel &, const TypographyLevel &) noexcept=default
int weight
QFont::Normal.
Definition DesignTokens.h:98
int pointSize
Definition DesignTokens.h:97
Échelle typographique, par rôle — jamais de taille ponctuelle en dehors de cette échelle.
Definition DesignTokens.h:112
TypographyLevel monospaceBody
Texte à chasse fixe (identité du menu principal).
Definition DesignTokens.h:118
FontRole family
Famille employée par la portée.
Definition DesignTokens.h:113
TypographyLevel body
Corps de texte, contrôles.
Definition DesignTokens.h:116
TypographyLevel sectionTitle
Titre de section/panneau.
Definition DesignTokens.h:115
TypographyLevel caption
Libellé secondaire, infobulle.
Definition DesignTokens.h:117
friend bool operator==(const TypographyTokens &, const TypographyTokens &) noexcept=default
TypographyLevel screenTitle
Titre d'écran (menu principal, Options).
Definition DesignTokens.h:114