This repository has been archived on 2022-05-19. You can view files and clone it, but cannot push or open issues or pull requests.
CompressionImages/includes/quadtree.hpp
Mylloon a512ca52b1
QuadTree class
- Store everything inside a class (dimensions, color, pieces of image, methods to cut, merge pieces and export the fully rendered image
2022-05-08 17:35:43 +02:00

49 lines
1.2 KiB
C++

#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