JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
hmi::QuadRecorder Class Reference

Capture la liste des primitives d'une image et répond aux questions qu'un test se pose. More...

#include <QuadRecorder.h>

Public Member Functions

void record (const ComposedScene &scene)
 Capture l'état d'une scène composée (copie : la scène peut ensuite être réutilisée).
void clear () noexcept
 Oublie la capture courante.
const std::vector< ComposedQuad > & quads () const noexcept
std::size_t size () const noexcept
const SceneStatisticsstatistics () const noexcept
bool isLayerOrderRespected () const
 Vérifie que l'ordre des calques est respecté (EX-REN-014).
bool areTextureGroupsContiguous () const
 Vérifie que chaque texture forme un seul groupe contigu par calque (EX-REN-043).
std::vector< RenderLayerlayerSequence () const
 Suite des calques rencontrés, sans répétition consécutive.
std::vector< TextureHandletextureSequence () const
 Suite des textures liées, sans répétition consécutive : une entrée par passe begin/end.
int countOnLayer (RenderLayer layer) const
 Nombre de primitives capturées sur un calque donné.
int countWithTexture (TextureHandle texture) const
 Nombre de primitives capturées liées à une texture donnée.
bool containsSpriteAt (float x, float y, float tolerance=1e-4f) const
 Cherche un rectangle composé à une position monde donnée.
std::string describe () const
 Résumé lisible de la capture, à joindre au message d'échec d'une assertion.

Private Attributes

std::vector< ComposedQuad_quads
SceneStatistics _statistics

Detailed Description

Capture la liste des primitives d'une image et répond aux questions qu'un test se pose.

Outil de vérification et de diagnostic, jamais un détour du rendu : la production compose dans une hmi::ComposedScene et la soumet directement ; le recorder ne fait qu'en copier le résultat, à la demande, hors du chemin de dessin. Il n'y a donc aucun coût en production.

Il existe parce que le programme d'habillage (LOT-40LOT-55) empile six couches dont l'ordre, la priorité de résolution et l'isolement sont exactement le genre de règle qui casse silencieusement, et dont les critères d'acceptation (« rendu identique », « ordre de calque correct ») seraient sinon des vérifications à l'œil. Les prédicats offerts ici — ordre des calques, contiguïté des groupes de texture, dénombrement par calque, présence d'une primitive à une position — sont la formulation assertable de ces critères, réutilisable par tous les lots suivants (EX-NFR-004, EX-NFR-010).

On assertionne des listes de primitives, jamais des pixels : c'est précisément ce qui rend la vérification possible sans GPU.

Member Function Documentation

◆ areTextureGroupsContiguous()

bool hmi::QuadRecorder::areTextureGroupsContiguous ( ) const
nodiscard

Vérifie que chaque texture forme un seul groupe contigu par calque (EX-REN-043).

C'est la propriété qui garantit qu'une passe begin/end par groupe suffit : une texture qui réapparaîtrait plus loin dans le même calque imposerait une passe de plus, et signalerait un tri instable. La contiguïté ne vaut qu'à calque constant : une même texture utilisée sur deux calques différents produit légitimement deux passes, le calque primant sur la texture.

Returns
true si aucune texture n'apparaît dans deux groupes distincts d'un même calque.

◆ clear()

void hmi::QuadRecorder::clear ( )
noexcept

Oublie la capture courante.

◆ containsSpriteAt()

bool hmi::QuadRecorder::containsSpriteAt ( float x,
float y,
float tolerance = 1e-4f ) const
nodiscard

Cherche un rectangle composé à une position monde donnée.

Parameters
xAbscisse attendue du coin haut-gauche, en unités monde.
yOrdonnée attendue du coin haut-gauche, en unités monde.
toleranceÉcart absolu toléré sur chaque axe (comparaison de flottants).
Returns
true si au moins un QuadKind::Sprite capturé est à cette position.

◆ countOnLayer()

int hmi::QuadRecorder::countOnLayer ( RenderLayer layer) const
nodiscard

Nombre de primitives capturées sur un calque donné.

Parameters
layerCalque compté.
Returns
Le nombre de primitives de ce calque.

◆ countWithTexture()

int hmi::QuadRecorder::countWithTexture ( TextureHandle texture) const
nodiscard

Nombre de primitives capturées liées à une texture donnée.

Parameters
textureTexture comptée.
Returns
Le nombre de primitives utilisant cette texture.

◆ describe()

std::string hmi::QuadRecorder::describe ( ) const
nodiscard

Résumé lisible de la capture, à joindre au message d'échec d'une assertion.

Returns
Une ligne par passe : calque, texture et nombre de primitives.

◆ isLayerOrderRespected()

bool hmi::QuadRecorder::isLayerOrderRespected ( ) const
nodiscard

Vérifie que l'ordre des calques est respecté (EX-REN-014).

Returns
true si aucune primitive n'est soumise avant une primitive d'un calque inférieur, quel que soit l'ordre de composition.

◆ layerSequence()

std::vector< RenderLayer > hmi::QuadRecorder::layerSequence ( ) const
nodiscard

Suite des calques rencontrés, sans répétition consécutive.

Returns
Les calques dans l'ordre de première apparition contiguë (ex. Tile, Player).

◆ quads()

const std::vector< ComposedQuad > & hmi::QuadRecorder::quads ( ) const
inlinenodiscardnoexcept
Returns
Les primitives capturées, dans leur ordre de soumission.

◆ record()

void hmi::QuadRecorder::record ( const ComposedScene & scene)

Capture l'état d'une scène composée (copie : la scène peut ensuite être réutilisée).

Parameters
sceneScène dont on capture les primitives et les compteurs.

◆ size()

std::size_t hmi::QuadRecorder::size ( ) const
inlinenodiscardnoexcept
Returns
Le nombre de primitives capturées.

◆ statistics()

const SceneStatistics & hmi::QuadRecorder::statistics ( ) const
inlinenodiscardnoexcept
Returns
Les compteurs de l'image capturée (composées, écartées, soumises, passes).

◆ textureSequence()

std::vector< TextureHandle > hmi::QuadRecorder::textureSequence ( ) const
nodiscard

Suite des textures liées, sans répétition consécutive : une entrée par passe begin/end.

Returns
Les identités de texture, dans l'ordre des passes.

Member Data Documentation

◆ _quads

std::vector<ComposedQuad> hmi::QuadRecorder::_quads
private

◆ _statistics

SceneStatistics hmi::QuadRecorder::_statistics
private

The documentation for this class was generated from the following files:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/QuadRecorder.h
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/QuadRecorder.cpp