forked from old/legacy-imlib2
TGA loader - Mostly cosmetic refactoring
This commit is contained in:
parent
83243f08fa
commit
f01353d155
|
@ -196,6 +196,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
|
||||||
DATA32 *dataptr;
|
DATA32 *dataptr;
|
||||||
|
|
||||||
int y, palcnt = 0, palbpp = 0;
|
int y, palcnt = 0, palbpp = 0;
|
||||||
|
unsigned char a, r, g, b;
|
||||||
|
|
||||||
fd = open(im->real_file, O_RDONLY);
|
fd = open(im->real_file, O_RDONLY);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
|
@ -347,36 +348,37 @@ load(ImlibImage * im, ImlibProgressFunction progress,
|
||||||
switch (bpp)
|
switch (bpp)
|
||||||
{
|
{
|
||||||
case 32: /* 32-bit BGRA pixels */
|
case 32: /* 32-bit BGRA pixels */
|
||||||
*dataptr++ =
|
b = *bufptr++;
|
||||||
PIXEL_ARGB(bufptr[3], bufptr[2], bufptr[1],
|
g = *bufptr++;
|
||||||
bufptr[0]);
|
r = *bufptr++;
|
||||||
bufptr += 4;
|
a = *bufptr++;
|
||||||
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 24: /* 24-bit BGR pixels */
|
case 24: /* 24-bit BGR pixels */
|
||||||
*dataptr++ =
|
b = *bufptr++;
|
||||||
PIXEL_ARGB(0xff, bufptr[2], bufptr[1], bufptr[0]);
|
g = *bufptr++;
|
||||||
bufptr += 3;
|
r = *bufptr++;
|
||||||
|
a = 0xff;
|
||||||
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8: /* 8-bit grayscale or palette */
|
case 8: /* 8-bit grayscale or palette */
|
||||||
if (!palette)
|
b = *bufptr++;
|
||||||
|
a = 0xff;
|
||||||
|
if (palette)
|
||||||
{
|
{
|
||||||
*dataptr++ =
|
if (b >= palcnt)
|
||||||
PIXEL_ARGB(0xff, bufptr[0], bufptr[0],
|
goto quit;
|
||||||
bufptr[0]);
|
r = palette[b * palbpp + 2];
|
||||||
|
g = palette[b * palbpp + 1];
|
||||||
|
b = palette[b * palbpp + 0];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (*bufptr >= palcnt)
|
r = g = b;
|
||||||
goto quit;
|
|
||||||
*dataptr++ =
|
|
||||||
PIXEL_ARGB(0xff,
|
|
||||||
palette[*bufptr * palbpp + 2],
|
|
||||||
palette[*bufptr * palbpp + 1],
|
|
||||||
palette[*bufptr * palbpp + 0]);
|
|
||||||
}
|
}
|
||||||
bufptr += 1;
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,13 +388,13 @@ load(ImlibImage * im, ImlibProgressFunction progress,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* decode RLE compressed data */
|
/* decode RLE compressed data */
|
||||||
unsigned char curbyte, red, green, blue, alpha;
|
|
||||||
DATA32 *final_pixel = dataptr + im->w * im->h;
|
DATA32 *final_pixel = dataptr + im->w * im->h;
|
||||||
|
|
||||||
/* loop until we've got all the pixels or run out of input */
|
/* loop until we've got all the pixels or run out of input */
|
||||||
while ((dataptr < final_pixel))
|
while ((dataptr < final_pixel))
|
||||||
{
|
{
|
||||||
int i, count;
|
int i, count;
|
||||||
|
unsigned char curbyte;
|
||||||
|
|
||||||
if ((bufptr + 1 + (bpp / 8)) > bufend)
|
if ((bufptr + 1 + (bpp / 8)) > bufend)
|
||||||
goto quit;
|
goto quit;
|
||||||
|
@ -405,43 +407,40 @@ load(ImlibImage * im, ImlibProgressFunction progress,
|
||||||
switch (bpp)
|
switch (bpp)
|
||||||
{
|
{
|
||||||
case 32:
|
case 32:
|
||||||
blue = *bufptr++;
|
b = *bufptr++;
|
||||||
green = *bufptr++;
|
g = *bufptr++;
|
||||||
red = *bufptr++;
|
r = *bufptr++;
|
||||||
alpha = *bufptr++;
|
a = *bufptr++;
|
||||||
for (i = 0; (i < count) && (dataptr < final_pixel); i++)
|
for (i = 0; (i < count) && (dataptr < final_pixel); i++)
|
||||||
*dataptr++ = PIXEL_ARGB(alpha, red, green, blue);
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 24:
|
case 24:
|
||||||
blue = *bufptr++;
|
b = *bufptr++;
|
||||||
green = *bufptr++;
|
g = *bufptr++;
|
||||||
red = *bufptr++;
|
r = *bufptr++;
|
||||||
alpha = 0xff;
|
a = 0xff;
|
||||||
for (i = 0; (i < count) && (dataptr < final_pixel); i++)
|
for (i = 0; (i < count) && (dataptr < final_pixel); i++)
|
||||||
*dataptr++ = PIXEL_ARGB(alpha, red, green, blue);
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
red = *bufptr++;
|
b = *bufptr++;
|
||||||
alpha = 0xff;
|
a = 0xff;
|
||||||
if (palette && red >= palcnt)
|
if (palette)
|
||||||
goto quit;
|
|
||||||
|
|
||||||
for (i = 0; (i < count) && (dataptr < final_pixel); i++)
|
|
||||||
if (!palette)
|
|
||||||
{
|
{
|
||||||
*dataptr++ = PIXEL_ARGB(alpha, red, red, red);
|
if (b >= palcnt)
|
||||||
|
goto quit;
|
||||||
|
r = palette[b * palbpp + 2];
|
||||||
|
g = palette[b * palbpp + 1];
|
||||||
|
b = palette[b * palbpp + 0];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*dataptr++ =
|
r = g = b;
|
||||||
PIXEL_ARGB(alpha,
|
|
||||||
palette[red * palbpp + 2],
|
|
||||||
palette[red * palbpp + 1],
|
|
||||||
palette[red * palbpp + 0]);
|
|
||||||
}
|
}
|
||||||
|
for (i = 0; (i < count) && (dataptr < final_pixel); i++)
|
||||||
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} /* end if (RLE packet) */
|
} /* end if (RLE packet) */
|
||||||
|
@ -455,37 +454,37 @@ load(ImlibImage * im, ImlibProgressFunction progress,
|
||||||
switch (bpp)
|
switch (bpp)
|
||||||
{
|
{
|
||||||
case 32: /* 32-bit BGRA pixels */
|
case 32: /* 32-bit BGRA pixels */
|
||||||
*dataptr++ =
|
b = *bufptr++;
|
||||||
PIXEL_ARGB(bufptr[3], bufptr[2], bufptr[1],
|
g = *bufptr++;
|
||||||
bufptr[0]);
|
r = *bufptr++;
|
||||||
bufptr += 4;
|
a = *bufptr++;
|
||||||
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 24: /* 24-bit BGR pixels */
|
case 24: /* 24-bit BGR pixels */
|
||||||
*dataptr++ =
|
b = *bufptr++;
|
||||||
PIXEL_ARGB(0xff, bufptr[2], bufptr[1],
|
g = *bufptr++;
|
||||||
bufptr[0]);
|
r = *bufptr++;
|
||||||
bufptr += 3;
|
a = 0xff;
|
||||||
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8: /* 8-bit grayscale or palette */
|
case 8: /* 8-bit grayscale or palette */
|
||||||
if (!palette)
|
b = *bufptr++;
|
||||||
|
a = 0xff;
|
||||||
|
if (palette)
|
||||||
{
|
{
|
||||||
*dataptr++ =
|
if (b >= palcnt)
|
||||||
PIXEL_ARGB(0xff, bufptr[0], bufptr[0],
|
goto quit;
|
||||||
bufptr[0]);
|
r = palette[b * palbpp + 2];
|
||||||
|
g = palette[b * palbpp + 1];
|
||||||
|
b = palette[b * palbpp + 0];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (bufptr[0] >= palcnt)
|
r = g = b;
|
||||||
goto quit;
|
|
||||||
*dataptr++ =
|
|
||||||
PIXEL_ARGB(0xff,
|
|
||||||
palette[*bufptr * palbpp + 2],
|
|
||||||
palette[*bufptr * palbpp + 1],
|
|
||||||
palette[*bufptr * palbpp + 0]);
|
|
||||||
}
|
}
|
||||||
bufptr += 1;
|
*dataptr++ = PIXEL_ARGB(a, r, g, b);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue