Commit a91f1a1adcb9567fbf2be5879e3c8401878d7e0e

Ryan C. Gordon 2014-07-09T00:01:34

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
diff --git a/src/video/SDL_bmp.c b/src/video/SDL_bmp.c
index 7978635..6708211 100644
--- a/src/video/SDL_bmp.c
+++ b/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;