From a512ca52b12283765e30fe947a8fcf811b9ebff7 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sun, 8 May 2022 17:35:43 +0200 Subject: [PATCH] QuadTree class - Store everything inside a class (dimensions, color, pieces of image, methods to cut, merge pieces and export the fully rendered image --- includes/quadtree.hpp | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 includes/quadtree.hpp 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