Fixed garbage trying to create a FourCC pixel format.
This commit is contained in:
parent
61b11f87da
commit
a1ac5f42e0
1 changed files with 57 additions and 62 deletions
|
@ -83,6 +83,12 @@ SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 * Rmask,
|
||||||
{
|
{
|
||||||
Uint32 masks[4];
|
Uint32 masks[4];
|
||||||
|
|
||||||
|
/* This function doesn't work with FourCC pixel formats */
|
||||||
|
if (SDL_ISPIXELFORMAT_FOURCC(format)) {
|
||||||
|
SDL_SetError("Unknown pixel format");
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize the values here */
|
/* Initialize the values here */
|
||||||
if (SDL_BYTESPERPIXEL(format) <= 2) {
|
if (SDL_BYTESPERPIXEL(format) <= 2) {
|
||||||
*bpp = SDL_BITSPERPIXEL(format);
|
*bpp = SDL_BITSPERPIXEL(format);
|
||||||
|
@ -444,26 +450,6 @@ SDL_AllocFormat(Uint32 pixel_format)
|
||||||
int
|
int
|
||||||
SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
|
SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
|
||||||
{
|
{
|
||||||
/* Set up the format */
|
|
||||||
SDL_zerop(format);
|
|
||||||
format->format = pixel_format;
|
|
||||||
format->BitsPerPixel = SDL_BITSPERPIXEL(pixel_format);
|
|
||||||
format->BytesPerPixel = SDL_BYTESPERPIXEL(pixel_format);
|
|
||||||
if (SDL_ISPIXELFORMAT_INDEXED(pixel_format)) {
|
|
||||||
/* Palettized formats have no mask info */
|
|
||||||
format->Rloss = 8;
|
|
||||||
format->Gloss = 8;
|
|
||||||
format->Bloss = 8;
|
|
||||||
format->Aloss = 8;
|
|
||||||
format->Rshift = 0;
|
|
||||||
format->Gshift = 0;
|
|
||||||
format->Bshift = 0;
|
|
||||||
format->Ashift = 0;
|
|
||||||
format->Rmask = 0;
|
|
||||||
format->Gmask = 0;
|
|
||||||
format->Bmask = 0;
|
|
||||||
format->Amask = 0;
|
|
||||||
} else {
|
|
||||||
int bpp;
|
int bpp;
|
||||||
Uint32 Rmask, Gmask, Bmask, Amask;
|
Uint32 Rmask, Gmask, Bmask, Amask;
|
||||||
Uint32 mask;
|
Uint32 mask;
|
||||||
|
@ -474,6 +460,13 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set up the format */
|
||||||
|
SDL_zerop(format);
|
||||||
|
format->format = pixel_format;
|
||||||
|
format->BitsPerPixel = bpp;
|
||||||
|
format->BytesPerPixel = (bpp + 7) / 8;
|
||||||
|
|
||||||
|
format->Rmask = Rmask;
|
||||||
format->Rshift = 0;
|
format->Rshift = 0;
|
||||||
format->Rloss = 8;
|
format->Rloss = 8;
|
||||||
if (Rmask) {
|
if (Rmask) {
|
||||||
|
@ -482,6 +475,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
|
||||||
for (; (mask & 0x01); mask >>= 1)
|
for (; (mask & 0x01); mask >>= 1)
|
||||||
--format->Rloss;
|
--format->Rloss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
format->Gmask = Gmask;
|
||||||
format->Gshift = 0;
|
format->Gshift = 0;
|
||||||
format->Gloss = 8;
|
format->Gloss = 8;
|
||||||
if (Gmask) {
|
if (Gmask) {
|
||||||
|
@ -490,6 +485,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
|
||||||
for (; (mask & 0x01); mask >>= 1)
|
for (; (mask & 0x01); mask >>= 1)
|
||||||
--format->Gloss;
|
--format->Gloss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
format->Bmask = Bmask;
|
||||||
format->Bshift = 0;
|
format->Bshift = 0;
|
||||||
format->Bloss = 8;
|
format->Bloss = 8;
|
||||||
if (Bmask) {
|
if (Bmask) {
|
||||||
|
@ -498,6 +495,8 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
|
||||||
for (; (mask & 0x01); mask >>= 1)
|
for (; (mask & 0x01); mask >>= 1)
|
||||||
--format->Bloss;
|
--format->Bloss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
format->Amask = Amask;
|
||||||
format->Ashift = 0;
|
format->Ashift = 0;
|
||||||
format->Aloss = 8;
|
format->Aloss = 8;
|
||||||
if (Amask) {
|
if (Amask) {
|
||||||
|
@ -506,11 +505,7 @@ SDL_InitFormat(SDL_PixelFormat * format, Uint32 pixel_format)
|
||||||
for (; (mask & 0x01); mask >>= 1)
|
for (; (mask & 0x01); mask >>= 1)
|
||||||
--format->Aloss;
|
--format->Aloss;
|
||||||
}
|
}
|
||||||
format->Rmask = Rmask;
|
|
||||||
format->Gmask = Gmask;
|
|
||||||
format->Bmask = Bmask;
|
|
||||||
format->Amask = Amask;
|
|
||||||
}
|
|
||||||
format->palette = NULL;
|
format->palette = NULL;
|
||||||
format->refcount = 1;
|
format->refcount = 1;
|
||||||
format->next = NULL;
|
format->next = NULL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue