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

Widget affichant l'image en cours d'édition et transformant les gestes de souris en appels aux opérations pures de hmi::PixelOperations (TACHE-02). More...

#include <PixelCanvas.h>

Inheritance diagram for hmi::PixelCanvas:
hmi::EditContextTarget

Signals

void imageChanged ()
 Émis après chaque mutation de image() (geste, annuler, refaire) — la barre d'état et l'aperçu live (TACHE-08) s'y abonnent plutôt que d'interroger le canevas à chaque frame.
void historyChanged ()
 Émis après chaque changement de l'historique (nouvelle entrée, annuler, refaire) — alimente le panneau d'historique visuel (hmi::PixelHistoryPanel).
void hoveredPixelChanged (std::optional< std::pair< int, int > > pixel)
 Émis à chaque changement du pixel survolé (barre d'état, TACHE-04).
void currentColorChanged (std::uint32_t color)
 Émis à chaque changement de la couleur courante, quelle qu'en soit la source (pipette, pastille de palette, sélecteur dédié) — la barre d'outils y aligne son témoin de couleur.

Public Member Functions

 PixelCanvas (QWidget *parent=nullptr)
void setLocalization (const Localization *loc) noexcept
 Catalogue de traduction utilisé pour l'infobulle de case en mode planche à raccords (hmi::autotileConfigurationLabelKey, TACHE-08).
void setImage (DecodedImage image)
 Remplace l'image éditée et réinitialise l'historique local (ouverture d'un asset, TACHE-05).
void setUnderlay (DecodedImage image, float opacity=1.0f)
 Pose un repère dessiné sous le contenu édité (mode création, EX-EDIT-046).
void setOverlay (DecodedImage image, float opacity=1.0f)
 Pose un repère dessiné par-dessus le contenu édité — mêmes règles que setUnderlay.
void setReferenceGridStep (int step)
 Pose une grille de tuiles, distincte de la grille de pixels existante.
const DecodedImageimage () const noexcept
void setAssetName (std::string name)
 Nom de l'asset ouvert (barre d'état, TACHE-04), vide si aucun.
const std::string & assetName () const noexcept
bool isDirty () const noexcept
 Modifications non enregistrées depuis l'ouverture/le dernier enregistrement (barre d'état TACHE-04, garde-fou de perte de travail TACHE-05) : un coup de pinceau la marque, un enregistrement (markSaved) la lève.
void markSaved () noexcept
 Marque l'image comme enregistrée — appelé après une écriture réussie (TACHE-05).
void setActiveTool (PixelTool tool) noexcept
PixelTool activeTool () const noexcept
void setCurrentColor (std::uint32_t color)
 Couleur courante (pinceau, pot de peinture).
std::uint32_t currentColor () const noexcept
void setPaletteColors (std::vector< std::uint32_t > colors)
 Couleurs de la palette de projet (LOT-54 TACHE-07), consultées quand le mode contraint est actif.
void setPaletteConstrained (bool enabled) noexcept
 Active/désactive le mode « contraindre à la palette » : toute couleur posée (pinceau, pot de peinture) est ramenée à l'entrée la plus proche de setPaletteColors (hmi:: nearestPaletteColor) ; désactivable à tout moment, jamais imposé.
bool paletteConstrained () const noexcept
const PixelHistoryhistory () const noexcept
bool canUndo () const override
void undo () override
bool canRedo () const override
void redo () override
void jumpHistoryTo (std::size_t index)
 Revient à l'état immédiatement après l'entrée index de history().appliedEntries() (panneau d'historique visuel, TACHE-04) ; sans effet si index est hors bornes.
bool canCopy () const override
void copy () override
 Copie la sélection courante, ou l'image entière à défaut de sélection.
bool canPaste () const override
void paste () override
 Colle le presse-papiers de l'atelier au pixel survolé (coin haut-gauche), tronqué au cadre ; sans effet si le presse-papiers est vide.
int referenceGridStep () const noexcept
const PixelRegionselection () const noexcept
 Région actuellement sélectionnée (outil Sélection), vide si aucune.
void applyFlipHorizontal ()
 Retourne la sélection horizontalement, ou l'image entière à défaut de sélection.
void applyFlipVertical ()
 Retourne la sélection verticalement, ou l'image entière à défaut de sélection.
void applyRotateClockwise ()
 Pivote la sélection d'un quart de tour horaire, ou l'image entière à défaut de sélection.
void applyRotateCounterClockwise ()
 Pivote la sélection d'un quart de tour antihoraire, ou l'image entière à défaut de sélection.
const PixelCanvasViewview () const noexcept
void zoomIn ()
void zoomOut ()
std::optional< std::pair< int, int > > imagePixelAt (const QPointF &widgetPosition) const
 Pixel image sous une position widget donnée (coordonnées logiques), ou std::nullopt hors de l'image — alimente le pixel survolé de la barre d'état (TACHE-04).
std::optional< std::pair< int, int > > hoveredPixel () const noexcept
 Dernier pixel survolé par la souris à l'intérieur de l'image, ou std::nullopt si la souris n'y est pas (curseur sorti du widget, ou hors de l'image à zoom/décalage donnés).
QSize sizeHint () const override
Public Member Functions inherited from hmi::EditContextTarget
virtual ~EditContextTarget ()=default

Protected Member Functions

void paintEvent (QPaintEvent *event) override
void mousePressEvent (QMouseEvent *event) override
void mouseMoveEvent (QMouseEvent *event) override
void mouseReleaseEvent (QMouseEvent *event) override
void leaveEvent (QEvent *event) override
void wheelEvent (QWheelEvent *event) override

Private Member Functions

QPixmap renderPixmap () const
void applyToolAtPoint (int x, int y)
 Applique l'outil actif au pixel (x, y) (un seul point : clic, pipette, pot de peinture) et étend _gestureRegion avec la région effectivement modifiée.
void continueToolTo (int x, int y)
 Prolonge le geste courant du dernier point traité jusqu'à (x, y) (pinceau/gomme : ligne sans trou entre deux positions successives, TACHE-02 ; déplacement de sélection, TACHE-06).
void beginGesture (int x, int y)
void endGesture ()
PixelRegion effectiveRegion () const
 Région effective d'une transformation : la sélection courante, ou l'image entière si aucune sélection n'est active (TACHE-06 : « à défaut de sélection, à l'image entière »).
void commitRegionMutation (PixelOperationKind kind, const DecodedImage &beforeSnapshot, const PixelRegion &touched)
 Capture beforeSnapshot/`_image` sur touched, pousse l'entrée d'historique nommée si non vide, et émet les signaux de mutation — factorisé entre applyFlipHorizontal/ applyFlipVertical/applyRotateClockwise/applyRotateCounterClockwise/paste.
void applyRegionOperation (PixelOperationKind kind, PixelRegion(*operation)(DecodedImage &, const PixelRegion &))
 Applique une transformation pure de hmi::PixelOperations (même signature que flipHorizontal/rotateClockwise…) à effectiveRegion() et la pousse dans l'historique.
std::uint32_t effectivePaintColor () const noexcept
 _currentColor, ramenée à l'entrée de palette la plus proche si le mode contraint est actif (hmi::nearestPaletteColor) ; _currentColor telle quelle sinon.

Private Attributes

DecodedImage _image
DecodedImage _underlay
 Repère dessiné sous le contenu édité (setUnderlay) — jamais dans _image, donc jamais dans l'historique ni dans le presse-papiers.
float _underlayOpacity = 1.0f
DecodedImage _overlay
 Repère dessiné par-dessus le contenu édité (setOverlay), mêmes règles.
float _overlayOpacity = 1.0f
int _referenceGridStep = 0
 Pas de la grille de tuiles, en pixels image ; 0 si aucune.
std::string _assetName
bool _dirty = false
PixelHistory _history
PixelCanvasView _view
PixelTool _activeTool = PixelTool::Brush
std::uint32_t _currentColor = 0xFF000000u
std::vector< std::uint32_t > _paletteColors
 Copie des couleurs de la palette (TACHE-07).
bool _paletteConstrained = false
bool _gestureActive = false
DecodedImage _gestureBeforeSnapshot
 Copie de _image au début du geste courant.
PixelRegion _gestureRegion
 Union des régions touchées depuis le début du geste.
std::optional< std::pair< int, int > > _lastGesturePixel
std::optional< std::pair< int, int > > _hoveredPixel
PixelRegion _selection
 Sélection courante, vide si aucune.
PixelClipboard _clipboard
 Presse-papiers de l'atelier, distinct du niveau.
bool _selectionMoveActive = false
 true : le geste en cours déplace _selection.
std::pair< int, int > _selectionDragAnchor {0, 0}
 Point de départ d'une nouvelle sélection.
bool _panning = false
QPointF _panStartWidgetPos
PixelCanvasView _panStartView
const Localization_loc = nullptr
 Pour l'infobulle de case en mode planche (TACHE-08).

Detailed Description

Widget affichant l'image en cours d'édition et transformant les gestes de souris en appels aux opérations pures de hmi::PixelOperations (TACHE-02).

Zoom entier, agrandi au plus proche voisin (EX-ARCH-022), rendu à la résolution réelle de l'écran (hmi::pixelCanvasRealSize, réutilise LOT-56 TACHE-05) : jamais flou à 125 %/150 % d'échelle d'affichage. La surface de peinture — fond et damier de transparence sous les zones à alpha nul — appartient à la portée invariante des jetons (hmi::identityTokens()) : elle ne change jamais avec le thème clair/sombre du châssis d'édition (LOT-56 TACHE-06), à la différence du châssis qui l'entoure (barre d'outils, panneaux — TACHE-04). Un fond qui change de clarté selon l'heure de la journée fausserait la perception des couleurs posées.

Un geste complet (appui, glisser, relâchement) produit une seule entrée dans hmi:: PixelHistory, locale à ce canevas et totalement indépendante de core::LevelDraft — annuler un coup de pinceau n'annule jamais une action d'édition de niveau, et réciproquement.

Implémente hmi::EditContextTarget (TACHE-04) : MainWindow y dispatche Annuler/Refaire/ Copier/Coller quand ce canevas est le contexte d'édition actif, exactement comme GameViewport pour le niveau — le seuil de dispatch prévu depuis LOT-57 TACHE-04, sans le réécrire. Copier et coller (TACHE-06) visent un presse-papiers propre à l'atelier (hmi::PixelClipboard), distinct de celui de l'éditeur de niveaux.

Constructor & Destructor Documentation

◆ PixelCanvas()

hmi::PixelCanvas::PixelCanvas ( QWidget * parent = nullptr)
explicit

Member Function Documentation

◆ activeTool()

PixelTool hmi::PixelCanvas::activeTool ( ) const
inlinenodiscardnoexcept

◆ applyFlipHorizontal()

void hmi::PixelCanvas::applyFlipHorizontal ( )

Retourne la sélection horizontalement, ou l'image entière à défaut de sélection.

◆ applyFlipVertical()

void hmi::PixelCanvas::applyFlipVertical ( )

Retourne la sélection verticalement, ou l'image entière à défaut de sélection.

◆ applyRegionOperation()

void hmi::PixelCanvas::applyRegionOperation ( PixelOperationKind kind,
PixelRegion(* operation )(DecodedImage &, const PixelRegion &) )
private

Applique une transformation pure de hmi::PixelOperations (même signature que flipHorizontal/rotateClockwise…) à effectiveRegion() et la pousse dans l'historique.

◆ applyRotateClockwise()

void hmi::PixelCanvas::applyRotateClockwise ( )

Pivote la sélection d'un quart de tour horaire, ou l'image entière à défaut de sélection.

◆ applyRotateCounterClockwise()

void hmi::PixelCanvas::applyRotateCounterClockwise ( )

Pivote la sélection d'un quart de tour antihoraire, ou l'image entière à défaut de sélection.

◆ applyToolAtPoint()

void hmi::PixelCanvas::applyToolAtPoint ( int x,
int y )
private

Applique l'outil actif au pixel (x, y) (un seul point : clic, pipette, pot de peinture) et étend _gestureRegion avec la région effectivement modifiée.

◆ assetName()

const std::string & hmi::PixelCanvas::assetName ( ) const
inlinenodiscardnoexcept

◆ beginGesture()

void hmi::PixelCanvas::beginGesture ( int x,
int y )
private

◆ canCopy()

bool hmi::PixelCanvas::canCopy ( ) const
inlinenodiscardoverridevirtual

◆ canPaste()

bool hmi::PixelCanvas::canPaste ( ) const
inlinenodiscardoverridevirtual

◆ canRedo()

bool hmi::PixelCanvas::canRedo ( ) const
inlinenodiscardoverridevirtual

◆ canUndo()

bool hmi::PixelCanvas::canUndo ( ) const
inlinenodiscardoverridevirtual

◆ commitRegionMutation()

void hmi::PixelCanvas::commitRegionMutation ( PixelOperationKind kind,
const DecodedImage & beforeSnapshot,
const PixelRegion & touched )
private

Capture beforeSnapshot/`_image` sur touched, pousse l'entrée d'historique nommée si non vide, et émet les signaux de mutation — factorisé entre applyFlipHorizontal/ applyFlipVertical/applyRotateClockwise/applyRotateCounterClockwise/paste.

◆ continueToolTo()

void hmi::PixelCanvas::continueToolTo ( int x,
int y )
private

Prolonge le geste courant du dernier point traité jusqu'à (x, y) (pinceau/gomme : ligne sans trou entre deux positions successives, TACHE-02 ; déplacement de sélection, TACHE-06).

◆ copy()

void hmi::PixelCanvas::copy ( )
overridevirtual

Copie la sélection courante, ou l'image entière à défaut de sélection.

Implements hmi::EditContextTarget.

◆ currentColor()

std::uint32_t hmi::PixelCanvas::currentColor ( ) const
inlinenodiscardnoexcept

◆ currentColorChanged

void hmi::PixelCanvas::currentColorChanged ( std::uint32_t color)
signal

Émis à chaque changement de la couleur courante, quelle qu'en soit la source (pipette, pastille de palette, sélecteur dédié) — la barre d'outils y aligne son témoin de couleur.

◆ effectivePaintColor()

std::uint32_t hmi::PixelCanvas::effectivePaintColor ( ) const
nodiscardprivatenoexcept

_currentColor, ramenée à l'entrée de palette la plus proche si le mode contraint est actif (hmi::nearestPaletteColor) ; _currentColor telle quelle sinon.

◆ effectiveRegion()

PixelRegion hmi::PixelCanvas::effectiveRegion ( ) const
nodiscardprivate

Région effective d'une transformation : la sélection courante, ou l'image entière si aucune sélection n'est active (TACHE-06 : « à défaut de sélection, à l'image entière »).

◆ endGesture()

void hmi::PixelCanvas::endGesture ( )
private

◆ history()

const PixelHistory & hmi::PixelCanvas::history ( ) const
inlinenodiscardnoexcept

◆ historyChanged

void hmi::PixelCanvas::historyChanged ( )
signal

Émis après chaque changement de l'historique (nouvelle entrée, annuler, refaire) — alimente le panneau d'historique visuel (hmi::PixelHistoryPanel).

◆ hoveredPixel()

std::optional< std::pair< int, int > > hmi::PixelCanvas::hoveredPixel ( ) const
inlinenodiscardnoexcept

Dernier pixel survolé par la souris à l'intérieur de l'image, ou std::nullopt si la souris n'y est pas (curseur sorti du widget, ou hors de l'image à zoom/décalage donnés).

◆ hoveredPixelChanged

void hmi::PixelCanvas::hoveredPixelChanged ( std::optional< std::pair< int, int > > pixel)
signal

Émis à chaque changement du pixel survolé (barre d'état, TACHE-04).

◆ image()

const DecodedImage & hmi::PixelCanvas::image ( ) const
inlinenodiscardnoexcept

◆ imageChanged

void hmi::PixelCanvas::imageChanged ( )
signal

Émis après chaque mutation de image() (geste, annuler, refaire) — la barre d'état et l'aperçu live (TACHE-08) s'y abonnent plutôt que d'interroger le canevas à chaque frame.

◆ imagePixelAt()

std::optional< std::pair< int, int > > hmi::PixelCanvas::imagePixelAt ( const QPointF & widgetPosition) const
nodiscard

Pixel image sous une position widget donnée (coordonnées logiques), ou std::nullopt hors de l'image — alimente le pixel survolé de la barre d'état (TACHE-04).

◆ isDirty()

bool hmi::PixelCanvas::isDirty ( ) const
inlinenodiscardnoexcept

Modifications non enregistrées depuis l'ouverture/le dernier enregistrement (barre d'état TACHE-04, garde-fou de perte de travail TACHE-05) : un coup de pinceau la marque, un enregistrement (markSaved) la lève.

◆ jumpHistoryTo()

void hmi::PixelCanvas::jumpHistoryTo ( std::size_t index)

Revient à l'état immédiatement après l'entrée index de history().appliedEntries() (panneau d'historique visuel, TACHE-04) ; sans effet si index est hors bornes.

◆ leaveEvent()

void hmi::PixelCanvas::leaveEvent ( QEvent * event)
overrideprotected

◆ markSaved()

void hmi::PixelCanvas::markSaved ( )
inlinenoexcept

Marque l'image comme enregistrée — appelé après une écriture réussie (TACHE-05).

Ne touche pas à l'historique : annuler après un enregistrement reste possible et remarque « modifié », comme dans tout éditeur (revenir en arrière s'écarte du fichier tout juste écrit).

◆ mouseMoveEvent()

void hmi::PixelCanvas::mouseMoveEvent ( QMouseEvent * event)
overrideprotected

◆ mousePressEvent()

void hmi::PixelCanvas::mousePressEvent ( QMouseEvent * event)
overrideprotected

◆ mouseReleaseEvent()

void hmi::PixelCanvas::mouseReleaseEvent ( QMouseEvent * event)
overrideprotected

◆ paintEvent()

void hmi::PixelCanvas::paintEvent ( QPaintEvent * event)
overrideprotected

◆ paletteConstrained()

bool hmi::PixelCanvas::paletteConstrained ( ) const
inlinenodiscardnoexcept

◆ paste()

void hmi::PixelCanvas::paste ( )
overridevirtual

Colle le presse-papiers de l'atelier au pixel survolé (coin haut-gauche), tronqué au cadre ; sans effet si le presse-papiers est vide.

Sélectionne le contenu collé, pour l'ajuster (déplacer, transformer) immédiatement après.

Implements hmi::EditContextTarget.

◆ redo()

void hmi::PixelCanvas::redo ( )
overridevirtual

◆ referenceGridStep()

int hmi::PixelCanvas::referenceGridStep ( ) const
inlinenodiscardnoexcept
Returns
Le pas de la grille de tuiles, 0 si aucune n'est posée.

◆ renderPixmap()

QPixmap hmi::PixelCanvas::renderPixmap ( ) const
nodiscardprivate

◆ selection()

const PixelRegion & hmi::PixelCanvas::selection ( ) const
inlinenodiscardnoexcept

Région actuellement sélectionnée (outil Sélection), vide si aucune.

◆ setActiveTool()

void hmi::PixelCanvas::setActiveTool ( PixelTool tool)
inlinenoexcept

◆ setAssetName()

void hmi::PixelCanvas::setAssetName ( std::string name)
inline

Nom de l'asset ouvert (barre d'état, TACHE-04), vide si aucun.

setImage le remet à vide (nouveau document) ; l'appelant le renseigne ensuite après une ouverture ou un enregistrement réussi (TACHE-05).

◆ setCurrentColor()

void hmi::PixelCanvas::setCurrentColor ( std::uint32_t color)

Couleur courante (pinceau, pot de peinture).

Point d'entrée unique de la mutation : la pipette (au clic) passe par ici aussi, pour qu'un seul signal (currentColorChanged) couvre toutes les sources — pipette, pastille de palette, sélecteur dédié de la barre d'outils (MainWindow).

◆ setImage()

void hmi::PixelCanvas::setImage ( DecodedImage image)

Remplace l'image éditée et réinitialise l'historique local (ouverture d'un asset, TACHE-05).

◆ setLocalization()

void hmi::PixelCanvas::setLocalization ( const Localization * loc)
inlinenoexcept

Catalogue de traduction utilisé pour l'infobulle de case en mode planche à raccords (hmi::autotileConfigurationLabelKey, TACHE-08).

Même patron que GameViewport:: setLocalization.

◆ setOverlay()

void hmi::PixelCanvas::setOverlay ( DecodedImage image,
float opacity = 1.0f )

Pose un repère dessiné par-dessus le contenu édité — mêmes règles que setUnderlay.

Parameters
imageImage du repère ; vide pour l'enlever.
opacityOpacité d'affichage, dans [0, 1].

◆ setPaletteColors()

void hmi::PixelCanvas::setPaletteColors ( std::vector< std::uint32_t > colors)
inline

Couleurs de la palette de projet (LOT-54 TACHE-07), consultées quand le mode contraint est actif.

Simple copie des valeurs : le canevas n'est jamais propriétaire de la palette elle-même (MainWindow/hmi::PixelPalette).

◆ setPaletteConstrained()

void hmi::PixelCanvas::setPaletteConstrained ( bool enabled)
inlinenoexcept

Active/désactive le mode « contraindre à la palette » : toute couleur posée (pinceau, pot de peinture) est ramenée à l'entrée la plus proche de setPaletteColors (hmi:: nearestPaletteColor) ; désactivable à tout moment, jamais imposé.

◆ setReferenceGridStep()

void hmi::PixelCanvas::setReferenceGridStep ( int step)

Pose une grille de tuiles, distincte de la grille de pixels existante.

Sur un plan pictural, la grille de pixels ne dit rien de la géométrie du niveau : c'est le pas de tuile qui permet de viser une case. Les deux coexistent, à des pas différents.

Parameters
stepPas de la grille, en pixels image (la densité du plan) ; 0 l'enlève.

◆ setUnderlay()

void hmi::PixelCanvas::setUnderlay ( DecodedImage image,
float opacity = 1.0f )

Pose un repère dessiné sous le contenu édité (mode création, EX-EDIT-046).

Trois entrées — celle-ci, setOverlay et setReferenceGridStep — sont optionnelles et additives : l'atelier pixel art qui les ignore se comporte exactement comme avant (LOT-54). Ce qu'elles montrent n'entre jamais dans le tampon édité, ni dans l'historique, ni dans le copier : ce sont des repères, pas du contenu.

La référence est un repère géométrique, pas un aperçu : ni raccords automatiques, ni skins, ni animation. L'aperçu fidèle reste l'essai.

Parameters
imageImage du repère, aux dimensions du contenu édité ; vide pour l'enlever.
opacityOpacité d'affichage, dans [0, 1].

◆ sizeHint()

QSize hmi::PixelCanvas::sizeHint ( ) const
nodiscardoverride

◆ undo()

void hmi::PixelCanvas::undo ( )
overridevirtual

◆ view()

const PixelCanvasView & hmi::PixelCanvas::view ( ) const
inlinenodiscardnoexcept

◆ wheelEvent()

void hmi::PixelCanvas::wheelEvent ( QWheelEvent * event)
overrideprotected

◆ zoomIn()

void hmi::PixelCanvas::zoomIn ( )

◆ zoomOut()

void hmi::PixelCanvas::zoomOut ( )

Member Data Documentation

◆ _activeTool

PixelTool hmi::PixelCanvas::_activeTool = PixelTool::Brush
private

◆ _assetName

std::string hmi::PixelCanvas::_assetName
private

◆ _clipboard

PixelClipboard hmi::PixelCanvas::_clipboard
private

Presse-papiers de l'atelier, distinct du niveau.

◆ _currentColor

std::uint32_t hmi::PixelCanvas::_currentColor = 0xFF000000u
private

◆ _dirty

bool hmi::PixelCanvas::_dirty = false
private

◆ _gestureActive

bool hmi::PixelCanvas::_gestureActive = false
private

◆ _gestureBeforeSnapshot

DecodedImage hmi::PixelCanvas::_gestureBeforeSnapshot
private

Copie de _image au début du geste courant.

◆ _gestureRegion

PixelRegion hmi::PixelCanvas::_gestureRegion
private

Union des régions touchées depuis le début du geste.

◆ _history

PixelHistory hmi::PixelCanvas::_history
private

◆ _hoveredPixel

std::optional<std::pair<int, int> > hmi::PixelCanvas::_hoveredPixel
private

◆ _image

DecodedImage hmi::PixelCanvas::_image
private

◆ _lastGesturePixel

std::optional<std::pair<int, int> > hmi::PixelCanvas::_lastGesturePixel
private

◆ _loc

const Localization* hmi::PixelCanvas::_loc = nullptr
private

Pour l'infobulle de case en mode planche (TACHE-08).

◆ _overlay

DecodedImage hmi::PixelCanvas::_overlay
private

Repère dessiné par-dessus le contenu édité (setOverlay), mêmes règles.

◆ _overlayOpacity

float hmi::PixelCanvas::_overlayOpacity = 1.0f
private

◆ _paletteColors

std::vector<std::uint32_t> hmi::PixelCanvas::_paletteColors
private

Copie des couleurs de la palette (TACHE-07).

◆ _paletteConstrained

bool hmi::PixelCanvas::_paletteConstrained = false
private

◆ _panning

bool hmi::PixelCanvas::_panning = false
private

◆ _panStartView

PixelCanvasView hmi::PixelCanvas::_panStartView
private

◆ _panStartWidgetPos

QPointF hmi::PixelCanvas::_panStartWidgetPos
private

◆ _referenceGridStep

int hmi::PixelCanvas::_referenceGridStep = 0
private

Pas de la grille de tuiles, en pixels image ; 0 si aucune.

◆ _selection

PixelRegion hmi::PixelCanvas::_selection
private

Sélection courante, vide si aucune.

◆ _selectionDragAnchor

std::pair<int, int> hmi::PixelCanvas::_selectionDragAnchor {0, 0}
private

Point de départ d'une nouvelle sélection.

◆ _selectionMoveActive

bool hmi::PixelCanvas::_selectionMoveActive = false
private

true : le geste en cours déplace _selection.

◆ _underlay

DecodedImage hmi::PixelCanvas::_underlay
private

Repère dessiné sous le contenu édité (setUnderlay) — jamais dans _image, donc jamais dans l'historique ni dans le presse-papiers.

◆ _underlayOpacity

float hmi::PixelCanvas::_underlayOpacity = 1.0f
private

◆ _view

PixelCanvasView hmi::PixelCanvas::_view
private

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