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

Pile d'annulation/rétablissement nommée d'un canevas pixel art. More...

#include <PixelHistory.h>

Public Member Functions

 PixelHistory (std::size_t maxDepth=100)
void push (PixelOperationKind kind, PixelRegion region, std::vector< std::uint32_t > before, std::vector< std::uint32_t > after)
 Enregistre une opération déjà appliquée au tampon.
bool undo (DecodedImage &image)
 Annule la dernière opération sur image.
bool redo (DecodedImage &image)
 Rétablit la dernière opération annulée sur image.
bool jumpTo (DecodedImage &image, std::size_t index)
 Revient à l'état immédiatement après l'entrée index de appliedEntries(), en un seul appel plutôt que par annulations successives.
bool canUndo () const noexcept
bool canRedo () const noexcept
const std::vector< PixelHistoryEntry > & appliedEntries () const noexcept

Private Attributes

std::size_t _maxDepth
std::vector< PixelHistoryEntry_applied
 Pile d'annulation, plus ancienne en premier.
std::vector< PixelHistoryEntry_undone
 Pile de rétablissement, plus récente en dernier.

Detailed Description

Pile d'annulation/rétablissement nommée d'un canevas pixel art.

Même sémantique que l'historique de core::LevelDraft (deux piles, la nouvelle opération après une annulation vide la pile de rétablissement) — mais un tampon de pixels et un core::LevelDraft sont deux mondes disjoints, d'où une classe séparée plutôt qu'un partage de code qui les couplerait.

Constructor & Destructor Documentation

◆ PixelHistory()

hmi::PixelHistory::PixelHistory ( std::size_t maxDepth = 100)
explicit
Parameters
maxDepthNombre maximal d'entrées conservées dans la pile d'annulation ; au-delà, les plus anciennes sont oubliées (coût mémoire borné).

Member Function Documentation

◆ appliedEntries()

const std::vector< PixelHistoryEntry > & hmi::PixelHistory::appliedEntries ( ) const
inlinenodiscardnoexcept
Returns
Les opérations actuellement appliquées, dans l'ordre chronologique — de quoi alimenter le panneau d'historique visuel (TACHE-04) et le libellé « Annuler … ».

◆ canRedo()

bool hmi::PixelHistory::canRedo ( ) const
inlinenodiscardnoexcept
Returns
true si redo() aurait un effet.

◆ canUndo()

bool hmi::PixelHistory::canUndo ( ) const
inlinenodiscardnoexcept
Returns
true si undo() aurait un effet.

◆ jumpTo()

bool hmi::PixelHistory::jumpTo ( DecodedImage & image,
std::size_t index )

Revient à l'état immédiatement après l'entrée index de appliedEntries(), en un seul appel plutôt que par annulations successives.

Parameters
imageImage ramenée à cet état.
indexIndex (0-based) dans appliedEntries().
Returns
false, sans effet, si index est hors bornes.

◆ push()

void hmi::PixelHistory::push ( PixelOperationKind kind,
PixelRegion region,
std::vector< std::uint32_t > before,
std::vector< std::uint32_t > after )

Enregistre une opération déjà appliquée au tampon.

Vide la pile de rétablissement (une branche de refaire abandonnée ne redevient jamais valide après une nouvelle opération — historique linéaire classique). Si la profondeur dépasse maxDepth, l'entrée la plus ancienne est oubliée : l'état courant du tampon n'est jamais affecté, seule la portée de l'annulation recule.

◆ redo()

bool hmi::PixelHistory::redo ( DecodedImage & image)

Rétablit la dernière opération annulée sur image.

Returns
false, sans effet, si !canRedo().

◆ undo()

bool hmi::PixelHistory::undo ( DecodedImage & image)

Annule la dernière opération sur image.

Returns
false, sans effet, si !canUndo().

Member Data Documentation

◆ _applied

std::vector<PixelHistoryEntry> hmi::PixelHistory::_applied
private

Pile d'annulation, plus ancienne en premier.

◆ _maxDepth

std::size_t hmi::PixelHistory::_maxDepth
private

◆ _undone

std::vector<PixelHistoryEntry> hmi::PixelHistory::_undone
private

Pile de rétablissement, plus récente en dernier.


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