diff --git a/src/quadtree.cpp b/src/quadtree.cpp index 0d6de13..66808e1 100644 --- a/src/quadtree.cpp +++ b/src/quadtree.cpp @@ -45,17 +45,27 @@ QuadTree::~QuadTree(void) { } SDL_Surface * QuadTree::image(short niveau_p) { - // Temporaire, créer une image noire - (void)niveau_p; - SDL_Surface * nouvelle_image = SDL_CreateRGBSurface(0, dimensions.first, dimensions.second, 32, 0, 0, 0, 0); - if(SDL_LockSurface(nouvelle_image) == 0) { - SDL_memset(nouvelle_image->pixels, static_cast(SDL_MapRGB(nouvelle_image->format, 0, 0, 0)), static_cast(nouvelle_image->h * nouvelle_image->pitch)); - SDL_UnlockSurface(nouvelle_image); - } else { - exit(1); + if(final || niveau == niveau_p) { + SDL_Surface * couleur_unie = SDL_CreateRGBSurface(0, dimensions.first, dimensions.second, 32, r_mask, g_mask, b_mask, a_mask); + if(SDL_LockSurface(couleur_unie) == 0) { + SDL_memset(couleur_unie->pixels, static_cast( + SDL_MapRGB(couleur_unie->format, couleur.r, couleur.g, couleur.b) + ), static_cast(couleur_unie->h * couleur_unie->pitch)); + + SDL_UnlockSurface(couleur_unie); + } + + return couleur_unie; } - return nouvelle_image; + return colleQuatreImages( + std::array{ + nord_ouest->image(niveau_p), + sud_ouest->image(niveau_p), + nord_est->image(niveau_p), + sud_est->image(niveau_p) + } + ); } SDL_Color QuadTree::calculeCouleur(SDL_Surface * s) {