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++
Raw Normal View History

#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 *);
2022-05-09 11:18:08 +02:00
// 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);
2022-05-09 11:35:20 +02:00
// Renvoie l'image avec un certain niveau de compression
SDL_Surface * image(short);
};
#endif