50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
#ifndef COMPRESSION_QUADTREE_HPP
|
|
#define COMPRESSION_QUADTREE_HPP 1
|
|
|
|
#include <SDL_image.h>
|
|
#include <array>
|
|
|
|
class QuadTree {
|
|
// Niveau de qualité de l'image
|
|
// 0 -> qualité minimale
|
|
// 10 -> qualité maximale
|
|
short niveau;
|
|
|
|
// La couleur majoritaire dans l'image
|
|
SDL_Color couleur;
|
|
|
|
// Dimensions 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 la surface
|
|
bool final;
|
|
|
|
// Format de l'image (SDL_PixelFormatEnum)
|
|
Uint32 format;
|
|
|
|
// Calcule la couleur qui apparaît majoritairement dans la surface
|
|
SDL_Color calculeCouleur(SDL_Surface *);
|
|
|
|
// Vrai si tout les pixels de la surface ont la même couleur
|
|
bool verificationEgalitee(SDL_Surface *);
|
|
|
|
// Sépare l'image en 4
|
|
std::array<SDL_Surface *, 4> coupeEnQuatre(SDL_Surface *);
|
|
|
|
// Fusionne 4 images en une
|
|
SDL_Surface * colleQuatreImages(std::array<SDL_Surface *, 4>);
|
|
|
|
public:
|
|
QuadTree(SDL_Surface *, short = 0);
|
|
|
|
// Renvoie l'image avec un certain niveau de compression
|
|
SDL_Surface * image(short);
|
|
};
|
|
|
|
#endif
|