QuadTree class
- Store everything inside a class (dimensions, color, pieces of image, methods to cut, merge pieces and export the fully rendered image
This commit is contained in:
parent
1014f64f2a
commit
a512ca52b1
1 changed files with 49 additions and 0 deletions
49
includes/quadtree.hpp
Normal file
49
includes/quadtree.hpp
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
#ifndef COMPRESSION_QUADTREE_HPP
|
||||||
|
#define COMPRESSION_QUADTREE_HPP 1
|
||||||
|
|
||||||
|
#include <SDL_image.h>
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
class QuadTree {
|
||||||
|
// Niveau de profondeur du morceau de l'image
|
||||||
|
// 0 -> image de base
|
||||||
|
// 10 -> image coupé en 4
|
||||||
|
short niveau;
|
||||||
|
|
||||||
|
// La couleur qui est représentée
|
||||||
|
SDL_Color couleur;
|
||||||
|
|
||||||
|
// Dimensions du morceau de l'image
|
||||||
|
std::pair<short, short> dimensions;
|
||||||
|
|
||||||
|
// Est vrai si l'on ne doit pas diviser l'image
|
||||||
|
bool final = true;
|
||||||
|
|
||||||
|
// Morceaux de l'image
|
||||||
|
QuadTree * nord_ouest;
|
||||||
|
QuadTree * nord_est;
|
||||||
|
QuadTree * sud_ouest;
|
||||||
|
QuadTree * sud_est;
|
||||||
|
|
||||||
|
// Calcule la couleur qui apparaît majoritairement dans l'image
|
||||||
|
SDL_Color calculeCouleur(SDL_Surface *);
|
||||||
|
|
||||||
|
// Vérifie si l'ont doit encore diviser l'image
|
||||||
|
bool verificationEgalitee(SDL_Surface *);
|
||||||
|
|
||||||
|
// Coupe l'image en 4
|
||||||
|
std::array<SDL_Surface *, 4> coupeEnQuatre(SDL_Surface *);
|
||||||
|
|
||||||
|
// Colle 4 images en une seule
|
||||||
|
SDL_Surface * colleQuatreImages(std::array<SDL_Surface *, 4>);
|
||||||
|
|
||||||
|
public:
|
||||||
|
QuadTree(SDL_Surface *, short = 0);
|
||||||
|
|
||||||
|
~QuadTree(void);
|
||||||
|
|
||||||
|
// Renvoie l'image compressée
|
||||||
|
SDL_Surface * image(short);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Reference in a new issue