Copy the palette of indexed images, fixes issue with the boats worldmap path which...
authorgrumbel <grumbel@837edb03-e0f3-0310-88ca-d4d4e8b29345>
Sun, 6 Dec 2009 21:40:01 +0000 (21:40 +0000)
committergrumbel <grumbel@837edb03-e0f3-0310-88ca-d4d4e8b29345>
Sun, 6 Dec 2009 21:40:01 +0000 (21:40 +0000)
git-svn-id: http://supertux.lethargik.org/svn/supertux/trunk/supertux@6187 837edb03-e0f3-0310-88ca-d4d4e8b29345

src/video/texture_manager.cpp

index 6caf485..3831132 100644 (file)
@@ -121,7 +121,10 @@ TextureManager::create_image_texture_raw(const std::string& filename, const Rect
   }
   else
   {
-    SDLSurfacePtr subimage(SDL_CreateRGBSurfaceFrom(static_cast<uint8_t*>(image->pixels) + rect.top * image->pitch + rect.left * image->format->BytesPerPixel, 
+    SDLSurfacePtr subimage(SDL_CreateRGBSurfaceFrom(static_cast<uint8_t*>(image->pixels) + 
+                                                    rect.top * image->pitch + 
+                                                    rect.left * image->format->BytesPerPixel, 
+
                                                     rect.get_width(), rect.get_height(),
                                                     image->format->BitsPerPixel,
                                                     image->pitch,
@@ -135,6 +138,11 @@ TextureManager::create_image_texture_raw(const std::string& filename, const Rect
     }
     else
     {
+      if (image->format->palette)
+      { // copy the image palette to subimage if present
+        SDL_SetColors(subimage.get(), image->format->palette->colors, 0, image->format->palette->ncolors);
+      }
+
       Texture* result = VideoSystem::new_texture(subimage.get());
       result->set_filename(filename);
       return result;