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

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