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