Mylloon
9e89f0f943
- Define final variable in the constructor - Modifications on dimensions calculation when concatenation - Save latest piece of quadtree before crash (debug)
49 lines
1.2 KiB
C++
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;
|
|
|
|
// Morceaux de l'image
|
|
QuadTree * nord_ouest;
|
|
QuadTree * nord_est;
|
|
QuadTree * sud_ouest;
|
|
QuadTree * sud_est;
|
|
|
|
// Est vrai si l'on ne doit pas diviser l'image
|
|
bool final;
|
|
|
|
// Calcule la couleur qui apparaît majoritairement dans l'image
|
|
SDL_Color calculeCouleur(SDL_Surface *);
|
|
|
|
// Vrai si tout les pixels de l'images sont identiques
|
|
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 avec un certain niveau de compression
|
|
SDL_Surface * image(short);
|
|
};
|
|
|
|
#endif
|