Browse Source

Make SDL_LoadBMP() work with 32-bit bitmaps from ImageMagick.

Ryan C. Gordon 10 years ago
parent
commit
a91f1a1adc
1 changed files with 10 additions and 0 deletions
  1. 10 0
      src/video/SDL_bmp.c

+ 10 - 0
src/video/SDL_bmp.c

@@ -246,6 +246,16 @@ SDL_LoadBMP_RW(SDL_RWops * src, int freesrc)
             Gmask = SDL_ReadLE32(src);
             Bmask = SDL_ReadLE32(src);
             Amask = SDL_ReadLE32(src);
+
+            /* ImageMagick seems to put out bogus masks here. Pick a default. */
+            if ((Rmask == 0xFFFFFF) && (Gmask == 0xFFFFFF) &&
+                (Bmask == 0xFFFFFF) && (Amask == 0xFFFFFF) ) {
+                Amask = 0xFF000000;
+                Rmask = 0x00FF0000;
+                Gmask = 0x0000FF00;
+                Bmask = 0x000000FF;
+            }
+
             break;
         default:
             break;