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
|
||||
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 *);
|
||||
|
||||
// Coupe l'image en 4
|
||||
|
|
|
@ -85,8 +85,28 @@ SDL_Color QuadTree::calculeCouleur(SDL_Surface * s) {
|
|||
return color;
|
||||
}
|
||||
|
||||
bool QuadTree::verificationEgalitee(SDL_Surface *) {
|
||||
// Temporaire
|
||||
bool QuadTree::verificationEgalitee(SDL_Surface * s) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue