JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
DesignTokens.h File Reference

Jetons de design de l'IHM Qt (LOT-56, EX-IHM-050, EX-IHM-051) : source unique des couleurs, espacements, typographie et tailles de l'application. More...

#include <cstdint>
#include <string>
#include <unordered_map>

Go to the source code of this file.

Classes

struct  hmi::DesignColor
 Couleur RVBA pure (indépendante de Qt), convertible en chaîne CSS pour la feuille de style et directement décomposable pour construire une QColor/QPalette. More...
struct  hmi::ColorTokens
 Rôles de couleur, communs aux deux portées d'habillage. More...
struct  hmi::SpacingTokens
 Échelle d'espacement, en pixels logiques. More...
struct  hmi::TypographyLevel
 Un niveau de l'échelle typographique : taille en points et graisse (QFont::Weight, 1-1000). More...
struct  hmi::TypographyTokens
 Échelle typographique, par rôle — jamais de taille ponctuelle en dehors de cette échelle. More...
struct  hmi::SizeTokens
 Tailles d'icônes, de vignettes et de contrôles usuels, en pixels logiques (avant mise à l'échelle d'affichage, LOT-56 TACHE-05). More...
struct  hmi::DesignTokens
 Jeu complet de jetons de design d'une portée (identité invariante ou châssis variable). More...
struct  hmi::IdentityBaseScale
 Grandeurs de la portée identité, exprimées en pixels à l'échelle 1 (LOT-68, EX-IHM-070). More...

Namespaces

namespace  hmi

Enumerations

enum class  hmi::FontRole { hmi::Ui , hmi::Identity }
 Famille de police d'une portée (LOT-68, EX-IHM-070). More...

Functions

const IdentityBaseScalehmi::identityBaseScale () noexcept
DesignColor hmi::mixColor (DesignColor from, DesignColor to, float ratio) noexcept
const char * hmi::genericCssFamily (FontRole role) noexcept
const DesignTokenshmi::identityTokens () noexcept
 Jetons de l'identité du jeu (menu principal, écran Options, jeu) : invariants, ne suivent jamais aucun réglage d'affichage (EX-IHM-050).
const DesignTokenshmi::editorDarkTokens () noexcept
 Jetons du châssis d'édition en thème sombre (défaut) : variables, editorLightTokens() (LOT-56 TACHE-06) en fournit un second jeu.
const DesignTokenshmi::editorLightTokens () noexcept
 Jetons du châssis d'édition en thème clair (LOT-56 TACHE-06) : mêmes rôles, mêmes échelles que editorDarkTokens() — seules les couleurs diffèrent, et pas par simple inversion (les écarts de luminosité entre bordures/lignes alternées/fond diffèrent en clair et en sombre).
DesignColor hmi::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 locale : fond de la portée variable en édition (suivant le thème actif de l'éditeur, LOT-56 TACHE-06), fond de la portée invariante en jeu et en essai — la seule surface qui appartient tour à tour aux deux portées.
std::string hmi::toCssColor (DesignColor color)
 Conversion pure : couleur -> chaîne CSS hexadécimale "#rrggbb" (minuscules, sans alpha — les feuilles de style Qt n'acceptent l'alpha que via rgba()).
std::string hmi::toCssRgba (DesignColor color)
 Conversion pure : couleur -> chaîne CSS "rgba(r, g, b, a)", composantes entières 0-255 (les feuilles de style Qt expriment l'alpha sur la même échelle que les autres composantes).
double hmi::relativeLuminance (DesignColor color) noexcept
 Luminance relative WCAG d'une couleur (0 = noir, 1 = blanc), pour le calcul de contraste.
double hmi::contrastRatio (DesignColor a, DesignColor b) noexcept
 Rapport de contraste WCAG entre deux couleurs (1 = aucun contraste, 21 = noir sur blanc).
std::unordered_map< std::string, std::string > hmi::buildStyleSheetValues (const DesignTokens &editorTokens, int identityScale=1)
 Table de substitution marqueur -> valeur pour le modèle de feuille de style (LOT-56 TACHE-02), à partir d'un jeu de jetons du châssis d'édition (portée variable) ; les marqueurs de préfixe "identity." sont toujours résolus depuis identityTokens() (portée invariante).

Detailed Description

Jetons de design de l'IHM Qt (LOT-56, EX-IHM-050, EX-IHM-051) : source unique des couleurs, espacements, typographie et tailles de l'application.

Logique pure (aucune dépendance Qt/GPU), testable hors instance d'application (EX-NFR-010) — compilée à la fois dans JustAnotherDnDGame et directement dans UnitTests, comme hmi::ProceduralFont ou hmi::TileVisuals.

Deux portées d'habillage partagent la structure DesignTokens (mêmes rôles, mêmes échelles, mêmes tailles ; seules les couleurs diffèrent) :

  • identityTokens() — l'identité du jeu (menu principal, écran Options, jeu) : invariante, ne suit jamais aucun réglage d'affichage.
  • editorDarkTokens() — le châssis d'édition (panneaux, barre d'outils, barre d'état, barre de menus de l'éditeur, boîtes de dialogue ouvertes depuis lui) : variable, thème sombre par défaut ; editorLightTokens() (LOT-56 TACHE-06) lui ajoute un second jeu de valeurs.

Réutiliser la même structure pour les deux portées rend leur symétrie de rôles garantie par le système de types plutôt que par convention : un rôle ajouté à l'une existe nécessairement dans l'autre.