Check if surfaces are identical
This commit is contained in:
parent
cdf531131e
commit
b84f7301d1
2 changed files with 23 additions and 3 deletions
|
@ -28,7 +28,7 @@ class QuadTree {
|
||||||
// Calcule la couleur qui apparaît majoritairement dans l'image
|
// Calcule la couleur qui apparaît majoritairement dans l'image
|
||||||
SDL_Color calculeCouleur(SDL_Surface *);
|
SDL_Color calculeCouleur(SDL_Surface *);
|
||||||
|
|
||||||
// Vérifie si l'ont doit encore diviser l'image
|
// Vrai si tout les pixels de l'images sont identiques
|
||||||
bool verificationEgalitee(SDL_Surface *);
|
bool verificationEgalitee(SDL_Surface *);
|
||||||
|
|
||||||
// Coupe l'image en 4
|
// Coupe l'image en 4
|
||||||
|
|
|
@ -85,8 +85,28 @@ SDL_Color QuadTree::calculeCouleur(SDL_Surface * s) {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QuadTree::verificationEgalitee(SDL_Surface *) {
|
bool QuadTree::verificationEgalitee(SDL_Surface * s) {
|
||||||
// Temporaire
|
if(SDL_LockSurface(s) == 0) {
|
||||||
|
SDL_Color dernier;
|
||||||
|
for(int x = 0; x < s->w; ++x) {
|
||||||
|
for(int y = 0; y < s->h; ++y) {
|
||||||
|
SDL_Color actuel;
|
||||||
|
SDL_GetRGB(*reinterpret_cast<Uint32 *>(
|
||||||
|
static_cast<Uint8 *>(s->pixels) + y * s->pitch + x * s->format->BytesPerPixel
|
||||||
|
), s->format, &actuel.r, &actuel.g, &actuel.b);
|
||||||
|
|
||||||
|
if(x != 0 && y != 0) {
|
||||||
|
if(dernier.r != actuel.r && dernier.g != actuel.g && dernier.b != actuel.b) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dernier = actuel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_UnlockSurface(s);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue