Commit 662a1c6c authored by Sam Lantinga's avatar Sam Lantinga

Autogenerated full mask checks for pixel format match

parent 009af96c
...@@ -236,60 +236,107 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, ...@@ -236,60 +236,107 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
{ {
switch (bpp) { switch (bpp) {
case 8: case 8:
switch (Rmask) { if (Rmask == 0) {
case 0:
return SDL_PIXELFORMAT_INDEX8; return SDL_PIXELFORMAT_INDEX8;
case 0xE0: }
return SDL_PIXELFORMAT_RGB332; if (Rmask == 0xE0 &&
Gmask == 0x1C &&
Bmask == 0x03 &&
Amask == 0x00) {
return SDL_PIXELFORMAT_RGB332
} }
break; break;
case 12: case 12:
switch (Rmask) { if (Rmask == 0) {
case 0x0F00: return SDL_PIXELFORMAT_RGB444
return SDL_PIXELFORMAT_RGB444; }
if (Rmask == 0x0F00 &&
Gmask == 0x00F0 &&
Bmask == 0x000F &&
Amask == 0x0000) {
return SDL_PIXELFORMAT_RGB444
} }
break; break;
case 15: case 15:
if (Rmask == 0) { if (Rmask == 0) {
return SDL_PIXELFORMAT_RGB555; return SDL_PIXELFORMAT_RGB555;
} }
if (Rmask == 0x7C00 && Bmask == 0x001F) { /* Fall through to 16-bit checks */
return SDL_PIXELFORMAT_RGB555;
}
if (Rmask == 0x001F && Bmask == 0x7C00) {
return SDL_PIXELFORMAT_BGR555;
}
break;
case 16: case 16:
switch (Rmask) { if (Rmask == 0) {
case 0:
return SDL_PIXELFORMAT_RGB565; return SDL_PIXELFORMAT_RGB565;
case 0xF000: }
return SDL_PIXELFORMAT_RGBA4444; if (Rmask == 0x7C00 &&
case 0x0F00: Gmask == 0x03E0 &&
return SDL_PIXELFORMAT_ARGB4444; Bmask == 0x001F &&
case 0x00F0: Amask == 0x0000) {
return SDL_PIXELFORMAT_BGRA4444; return SDL_PIXELFORMAT_RGB555
case 0x000F: }
return SDL_PIXELFORMAT_ABGR4444; if (Rmask == 0x001F &&
case 0xF800: Gmask == 0x03E0 &&
if (Bmask == 0x001F) { Bmask == 0x7C00 &&
return SDL_PIXELFORMAT_RGB565; Amask == 0x0000) {
} return SDL_PIXELFORMAT_BGR555
break; }
case 0x7C00: if (Rmask == 0x0F00 &&
if (Bmask == 0x001F) { Gmask == 0x00F0 &&
return SDL_PIXELFORMAT_RGB555; Bmask == 0x000F &&
} Amask == 0xF000) {
break; return SDL_PIXELFORMAT_ARGB4444
case 0x001F: }
if (Bmask == 0xF800) { if (Rmask == 0xF000 &&
return SDL_PIXELFORMAT_BGR565; Gmask == 0x0F00 &&
} Bmask == 0x00F0 &&
if (Bmask == 0x7C00) { Amask == 0x000F) {
return SDL_PIXELFORMAT_BGR555; return SDL_PIXELFORMAT_RGBA4444
} }
break; if (Rmask == 0x000F &&
Gmask == 0x00F0 &&
Bmask == 0x0F00 &&
Amask == 0xF000) {
return SDL_PIXELFORMAT_ABGR4444
}
if (Rmask == 0x00F0 &&
Gmask == 0x0F00 &&
Bmask == 0xF000 &&
Amask == 0x000F) {
return SDL_PIXELFORMAT_BGRA4444
}
if (Rmask == 0x7C00 &&
Gmask == 0x03E0 &&
Bmask == 0x001F &&
Amask == 0x8000) {
return SDL_PIXELFORMAT_ARGB1555
}
if (Rmask == 0xF800 &&
Gmask == 0x07C0 &&
Bmask == 0x003E &&
Amask == 0x0001) {
return SDL_PIXELFORMAT_RGBA5551
}
if (Rmask == 0x001F &&
Gmask == 0x03E0 &&
Bmask == 0x7C00 &&
Amask == 0x8000) {
return SDL_PIXELFORMAT_ABGR1555
}
if (Rmask == 0x003E &&
Gmask == 0x07C0 &&
Bmask == 0xF800 &&
Amask == 0x0001) {
return SDL_PIXELFORMAT_BGRA5551
}
if (Rmask == 0xF800 &&
Gmask == 0x07E0 &&
Bmask == 0x001F &&
Amask == 0x0000) {
return SDL_PIXELFORMAT_RGB565
}
if (Rmask == 0x001F &&
Gmask == 0x07E0 &&
Bmask == 0xF800 &&
Amask == 0x0000) {
return SDL_PIXELFORMAT_BGR565
} }
break; break;
case 24: case 24:
...@@ -309,34 +356,50 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, ...@@ -309,34 +356,50 @@ SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask,
#endif #endif
} }
case 32: case 32:
switch (Rmask) { if (Rmask == 0) {
case 0xFF000000: return SDL_PIXELFORMAT_RGB888;
if (Amask == 0x000000FF) { }
return SDL_PIXELFORMAT_RGBA8888; if (Rmask == 0x00FF0000 &&
} Gmask == 0x0000FF00 &&
break; Bmask == 0x000000FF &&
case 0: Amask == 0x00000000) {
case 0x00FF0000: return SDL_PIXELFORMAT_RGB888
if (Amask == 0xFF000000) { }
return SDL_PIXELFORMAT_ARGB8888; if (Rmask == 0x000000FF &&
} else { Gmask == 0x0000FF00 &&
return SDL_PIXELFORMAT_RGB888; Bmask == 0x00FF0000 &&
} Amask == 0x00000000) {
break; return SDL_PIXELFORMAT_BGR888
case 0x0000FF00: }
if (Amask == 0x000000FF) { if (Rmask == 0x00FF0000 &&
return SDL_PIXELFORMAT_BGRA8888; Gmask == 0x0000FF00 &&
} Bmask == 0x000000FF &&
break; Amask == 0xFF000000) {
case 0x000000FF: return SDL_PIXELFORMAT_ARGB8888
if (Amask == 0xFF000000) { }
return SDL_PIXELFORMAT_ABGR8888; if (Rmask == 0xFF000000 &&
} else { Gmask == 0x00FF0000 &&
return SDL_PIXELFORMAT_BGR888; Bmask == 0x0000FF00 &&
} Amask == 0x000000FF) {
break; return SDL_PIXELFORMAT_RGBA8888
case 0x3FF00000: }
return SDL_PIXELFORMAT_ARGB2101010; if (Rmask == 0x000000FF &&
Gmask == 0x0000FF00 &&
Bmask == 0x00FF0000 &&
Amask == 0xFF000000) {
return SDL_PIXELFORMAT_ABGR8888
}
if (Rmask == 0x0000FF00 &&
Gmask == 0x00FF0000 &&
Bmask == 0xFF000000 &&
Amask == 0x000000FF) {
return SDL_PIXELFORMAT_BGRA8888
}
if (Rmask == 0x3FF00000 &&
Gmask == 0x000FFC00 &&
Bmask == 0x000003FF &&
Amask == 0xC0000000) {
return SDL_PIXELFORMAT_ARGB2101010
} }
} }
return SDL_PIXELFORMAT_UNKNOWN; return SDL_PIXELFORMAT_UNKNOWN;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment