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;
case 0xF000:
return SDL_PIXELFORMAT_RGBA4444;
case 0x0F00:
return SDL_PIXELFORMAT_ARGB4444;
case 0x00F0:
return SDL_PIXELFORMAT_BGRA4444;
case 0x000F:
return SDL_PIXELFORMAT_ABGR4444;
case 0xF800:
if (Bmask == 0x001F) {
return SDL_PIXELFORMAT_RGB565; return SDL_PIXELFORMAT_RGB565;
} }
break; if (Rmask == 0x7C00 &&
case 0x7C00: Gmask == 0x03E0 &&
if (Bmask == 0x001F) { Bmask == 0x001F &&
return SDL_PIXELFORMAT_RGB555; Amask == 0x0000) {
} return SDL_PIXELFORMAT_RGB555
break; }
case 0x001F: if (Rmask == 0x001F &&
if (Bmask == 0xF800) { Gmask == 0x03E0 &&
return SDL_PIXELFORMAT_BGR565; Bmask == 0x7C00 &&
} Amask == 0x0000) {
if (Bmask == 0x7C00) { return SDL_PIXELFORMAT_BGR555
return SDL_PIXELFORMAT_BGR555; }
} if (Rmask == 0x0F00 &&
break; Gmask == 0x00F0 &&
Bmask == 0x000F &&
Amask == 0xF000) {
return SDL_PIXELFORMAT_ARGB4444
}
if (Rmask == 0xF000 &&
Gmask == 0x0F00 &&
Bmask == 0x00F0 &&
Amask == 0x000F) {
return SDL_PIXELFORMAT_RGBA4444
}
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:
if (Amask == 0x000000FF) {
return SDL_PIXELFORMAT_RGBA8888;
}
break;
case 0:
case 0x00FF0000:
if (Amask == 0xFF000000) {
return SDL_PIXELFORMAT_ARGB8888;
} else {
return SDL_PIXELFORMAT_RGB888; return SDL_PIXELFORMAT_RGB888;
} }
break; if (Rmask == 0x00FF0000 &&
case 0x0000FF00: Gmask == 0x0000FF00 &&
if (Amask == 0x000000FF) { Bmask == 0x000000FF &&
return SDL_PIXELFORMAT_BGRA8888; Amask == 0x00000000) {
} return SDL_PIXELFORMAT_RGB888
break; }
case 0x000000FF: if (Rmask == 0x000000FF &&
if (Amask == 0xFF000000) { Gmask == 0x0000FF00 &&
return SDL_PIXELFORMAT_ABGR8888; Bmask == 0x00FF0000 &&
} else { Amask == 0x00000000) {
return SDL_PIXELFORMAT_BGR888; return SDL_PIXELFORMAT_BGR888
} }
break; if (Rmask == 0x00FF0000 &&
case 0x3FF00000: Gmask == 0x0000FF00 &&
return SDL_PIXELFORMAT_ARGB2101010; Bmask == 0x000000FF &&
Amask == 0xFF000000) {
return SDL_PIXELFORMAT_ARGB8888
}
if (Rmask == 0xFF000000 &&
Gmask == 0x00FF0000 &&
Bmask == 0x0000FF00 &&
Amask == 0x000000FF) {
return SDL_PIXELFORMAT_RGBA8888
}
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