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

Opérations pures sur un tampon de pixels RGBA (atelier pixel art, LOT-54 TACHE-02). More...

#include <cstdint>
#include <optional>
#include <vector>
#include "HMI/Graphics/TextureLoader.h"

Go to the source code of this file.

Classes

struct  hmi::PixelRegion
 Rectangle de pixels modifié par une opération (bornes incluses). More...
struct  hmi::PixelClipboard
 Contenu copié depuis un tampon (presse-papiers de l'atelier, LOT-54 TACHE-06). More...

Namespaces

namespace  hmi

Functions

constexpr bool hmi::pixelInBounds (int width, int height, int x, int y) noexcept
constexpr PixelRegion hmi::unionPixelRegion (const PixelRegion &a, const PixelRegion &b) noexcept
 Union de deux régions (la plus petite région couvrant les deux).
PixelRegion hmi::setPixel (DecodedImage &image, int x, int y, std::uint32_t color)
 Pose un pixel d'une couleur donnée.
PixelRegion hmi::erasePixel (DecodedImage &image, int x, int y)
 Efface un pixel (alpha nul), sans changer sa couleur RVB.
PixelRegion hmi::drawLine (DecodedImage &image, int x0, int y0, int x1, int y1, std::uint32_t color)
 Trace une ligne pleine entre deux positions (algorithme de Bresenham).
PixelRegion hmi::eraseLine (DecodedImage &image, int x0, int y0, int x1, int y1)
 Efface une ligne pleine entre deux positions (même tracé que drawLine, alpha nul plutôt qu'une couleur posée).
PixelRegion hmi::floodFill (DecodedImage &image, int x, int y, std::uint32_t color)
 Remplit, de proche en proche, la zone connexe (4-connexité) de même couleur que le pixel de départ.
std::optional< std::uint32_t > hmi::pickColor (const DecodedImage &image, int x, int y) noexcept
 Couleur du pixel à une position donnée (outil pipette).
std::vector< std::uint32_t > hmi::readRegion (const DecodedImage &image, const PixelRegion &region)
 Copie les pixels d'une région, ligne par ligne — capture le « avant » ou l'« après » d'une entrée d'historique (hmi::PixelHistory).
void hmi::writeRegion (DecodedImage &image, const PixelRegion &region, const std::vector< std::uint32_t > &data)
 Écrit des pixels dans une région — inverse de readRegion, utilisé par hmi::PixelHistory pour restaurer un instantané annulé/rétabli.
PixelRegion hmi::flipHorizontal (DecodedImage &image, const PixelRegion &region)
 Retourne une région horizontalement (miroir gauche-droite), en place.
PixelRegion hmi::flipVertical (DecodedImage &image, const PixelRegion &region)
 Retourne une région verticalement (miroir haut-bas), en place.
PixelRegion hmi::rotateClockwise (DecodedImage &image, const PixelRegion &region)
 Pivote le contenu d'une région d'un quart de tour, sens horaire.
PixelRegion hmi::rotateCounterClockwise (DecodedImage &image, const PixelRegion &region)
 Pivote le contenu d'une région d'un quart de tour, sens antihoraire (trois quarts de tour horaires, pour ne pas dupliquer la logique de rotation).
PixelRegion hmi::moveRegion (DecodedImage &image, const PixelRegion &region, int dx, int dy)
 Déplace le contenu d'une région d'un décalage donné.
PixelClipboard hmi::copyRegion (const DecodedImage &image, const PixelRegion &region)
 Copie les pixels d'une région dans un presse-papiers autonome (ne référence plus image).
PixelRegion hmi::pasteClipboard (DecodedImage &image, const PixelClipboard &clipboard, int x, int y)
 Colle un presse-papiers dans l'image, coin haut-gauche à (x, y).

Detailed Description

Opérations pures sur un tampon de pixels RGBA (atelier pixel art, LOT-54 TACHE-02).

Fonctions libres, sans état, sans Qt ni GPU (EX-NFR-010) : ce que fait chaque outil du canevas (TACHE-03) sur hmi::DecodedImage — le même type que decodeImageFile/encodeImageFile (TACHE-01), pour que le canevas édite, charge et enregistre le même tampon sans conversion.