diff --git a/includes/quadtree.hpp b/includes/quadtree.hpp new file mode 100644 index 0000000..e78c87f --- /dev/null +++ b/includes/quadtree.hpp @@ -0,0 +1,49 @@ +#ifndef COMPRESSION_QUADTREE_HPP +#define COMPRESSION_QUADTREE_HPP 1 + +#include +#include + +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 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 coupeEnQuatre(SDL_Surface *); + + // Colle 4 images en une seule + SDL_Surface * colleQuatreImages(std::array); + + public: + QuadTree(SDL_Surface *, short = 0); + + ~QuadTree(void); + + // Renvoie l'image compressée + SDL_Surface * image(short); +}; + +#endif