summaryrefslogtreecommitdiff
path: root/src/modules/loaders/loader_tga.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/loaders/loader_tga.c')
-rw-r--r--src/modules/loaders/loader_tga.c297
1 files changed, 148 insertions, 149 deletions
diff --git a/src/modules/loaders/loader_tga.c b/src/modules/loaders/loader_tga.c
index 80fb749..d132e1e 100644
--- a/src/modules/loaders/loader_tga.c
+++ b/src/modules/loaders/loader_tga.c
@@ -156,7 +156,7 @@ save(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity)
l = y - pl;
if (!progress(im, per, 0, (y - l), im->w, l))
{
- free(buf);
+ free(buf);
fclose(f);
return 2;
}
@@ -192,13 +192,13 @@ load(ImlibImage * im, ImlibProgressFunction progress,
char progress_granularity, char immediate_load)
{
int fd;
- void *seg, *filedata;
+ void *seg, *filedata;
struct stat ss;
int bpp, vinverted = 0;
int rle = 0, footer_present = 0;
- tga_header *header;
- tga_footer *footer;
+ tga_header *header;
+ tga_footer *footer;
if (im->data)
return 0;
@@ -222,7 +222,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
if (seg == MAP_FAILED)
{
close(fd);
- return 0;
+ return 0;
}
filedata = seg;
@@ -239,10 +239,10 @@ load(ImlibImage * im, ImlibProgressFunction progress,
/* skip over header */
filedata = (char *)filedata + sizeof(tga_header);
-
+
/* skip over alphanumeric ID field */
if (header->idLength)
- filedata = (char *)filedata + header->idLength;
+ filedata = (char *)filedata + header->idLength;
/* now parse the header */
@@ -251,20 +251,20 @@ load(ImlibImage * im, ImlibProgressFunction progress,
switch (header->imageType)
{
- case TGA_TYPE_COLOR_RLE:
- case TGA_TYPE_GRAY_RLE:
- rle = 1;
- break;
-
- case TGA_TYPE_COLOR:
- case TGA_TYPE_GRAY:
- rle = 0;
- break;
-
- default:
- munmap(seg, ss.st_size);
- close(fd);
- return 0;
+ case TGA_TYPE_COLOR_RLE:
+ case TGA_TYPE_GRAY_RLE:
+ rle = 1;
+ break;
+
+ case TGA_TYPE_COLOR:
+ case TGA_TYPE_GRAY:
+ rle = 0;
+ break;
+
+ default:
+ munmap(seg, ss.st_size);
+ close(fd);
+ return 0;
}
/* bits per pixel */
@@ -272,7 +272,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
if (!((bpp == 32) || (bpp == 24) || (bpp == 8)))
{
- munmap(seg, ss.st_size);
+ munmap(seg, ss.st_size);
close(fd);
return 0;
}
@@ -283,7 +283,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
if (!IMAGE_DIMENSIONS_OK(im->w, im->h))
{
- munmap(seg, ss.st_size);
+ munmap(seg, ss.st_size);
close(fd);
return 0;
}
@@ -311,7 +311,7 @@ load(ImlibImage * im, ImlibProgressFunction progress,
if (!im->data)
{
im->w = 0;
- munmap(seg, ss.st_size);
+ munmap(seg, ss.st_size);
close(fd);
return 0;
}
@@ -323,13 +323,13 @@ load(ImlibImage * im, ImlibProgressFunction progress,
/* (this is NOT simply width*height*4, due to compression) */
datasize = ss.st_size - sizeof(tga_header) - header->idLength -
- (footer_present ? sizeof(tga_footer) : 0);
+ (footer_present ? sizeof(tga_footer) : 0);
/* buffer is ready for parsing */
/* bufptr is the next byte to be read from the buffer */
bufptr = filedata;
- bufend = filedata + datasize;
+ bufend = filedata + datasize;
/* dataptr is the next 32-bit pixel to be filled in */
dataptr = im->data;
@@ -348,56 +348,50 @@ load(ImlibImage * im, ImlibProgressFunction progress,
else
dataptr = im->data + (y * im->w);
- for (x = 0;
- (x < im->w) && (bufptr + bpp / 8 <= bufend);
- x++) /* for each pixel in the row */
+ for (x = 0; (x < im->w) && (bufptr + bpp / 8 <= bufend); x++) /* for each pixel in the row */
{
switch (bpp)
{
- /* 32-bit BGRA pixels */
- case 32:
- WRITE_RGBA(dataptr,
- *(bufptr + 2), /* R */
- *(bufptr + 1), /* G */
- *(bufptr + 0), /* B */
- *(bufptr + 3) /* A */
- );
- dataptr++;
- bufptr += 4;
- break;
-
- /* 24-bit BGR pixels */
- case 24:
- WRITE_RGBA(dataptr,
- *(bufptr + 2), /* R */
- *(bufptr + 1), /* G */
- *(bufptr + 0), /* B */
- (char)0xff /* A */
- );
- dataptr++;
- bufptr += 3;
- break;
-
- /* 8-bit grayscale */
- case 8:
- WRITE_RGBA(dataptr, /* grayscale */
- *bufptr,
- *bufptr,
- *bufptr, (char)0xff);
- dataptr++;
- bufptr += 1;
- break;
+ /* 32-bit BGRA pixels */
+ case 32:
+ WRITE_RGBA(dataptr, *(bufptr + 2), /* R */
+ *(bufptr + 1), /* G */
+ *(bufptr + 0), /* B */
+ *(bufptr + 3) /* A */
+ );
+ dataptr++;
+ bufptr += 4;
+ break;
+
+ /* 24-bit BGR pixels */
+ case 24:
+ WRITE_RGBA(dataptr, *(bufptr + 2), /* R */
+ *(bufptr + 1), /* G */
+ *(bufptr + 0), /* B */
+ (char)0xff /* A */
+ );
+ dataptr++;
+ bufptr += 3;
+ break;
+
+ /* 8-bit grayscale */
+ case 8:
+ WRITE_RGBA(dataptr, /* grayscale */
+ *bufptr, *bufptr, *bufptr, (char)0xff);
+ dataptr++;
+ bufptr += 1;
+ break;
}
} /* end for (each pixel) */
- }
- if (progress)
- {
- progress(im, 100, 0, 0, im->w, im->h);
- } /* end for (each row) */
+ }
+ if (progress)
+ {
+ progress(im, 100, 0, 0, im->w, im->h);
+ } /* end for (each row) */
}
- /* end if (!RLE) */
+ /* end if (!RLE) */
/* decode RLE compressed data */
else
{
@@ -405,9 +399,9 @@ load(ImlibImage * im, ImlibProgressFunction progress,
DATA32 *final_pixel = dataptr + im->w * im->h;
/* loop until we've got all the pixels or run out of input */
- while ((dataptr < final_pixel) &&
- ((bufptr + 1 + (bpp / 8)) <= bufend))
- {
+ while ((dataptr < final_pixel) &&
+ ((bufptr + 1 + (bpp / 8)) <= bufend))
+ {
int count;
curbyte = *bufptr++;
@@ -419,39 +413,42 @@ load(ImlibImage * im, ImlibProgressFunction progress,
switch (bpp)
{
- case 32:
- blue = *bufptr++;
- green = *bufptr++;
- red = *bufptr++;
- alpha = *bufptr++;
- for (i = 0; (i < count) && (dataptr < final_pixel); i++)
- {
- WRITE_RGBA(dataptr, red, green, blue, alpha);
- dataptr++;
- }
- break;
-
- case 24:
- blue = *bufptr++;
- green = *bufptr++;
- red = *bufptr++;
- for (i = 0; (i < count) && (dataptr < final_pixel); i++)
- {
- WRITE_RGBA(dataptr, red, green, blue,
- (char)0xff);
- dataptr++;
- }
- break;
-
- case 8:
- alpha = *bufptr++;
- for (i = 0; (i < count) && (dataptr < final_pixel); i++)
- {
- WRITE_RGBA(dataptr, alpha, alpha, alpha,
- (char)0xff);
- dataptr++;
- }
- break;
+ case 32:
+ blue = *bufptr++;
+ green = *bufptr++;
+ red = *bufptr++;
+ alpha = *bufptr++;
+ for (i = 0; (i < count) && (dataptr < final_pixel);
+ i++)
+ {
+ WRITE_RGBA(dataptr, red, green, blue, alpha);
+ dataptr++;
+ }
+ break;
+
+ case 24:
+ blue = *bufptr++;
+ green = *bufptr++;
+ red = *bufptr++;
+ for (i = 0; (i < count) && (dataptr < final_pixel);
+ i++)
+ {
+ WRITE_RGBA(dataptr, red, green, blue,
+ (char)0xff);
+ dataptr++;
+ }
+ break;
+
+ case 8:
+ alpha = *bufptr++;
+ for (i = 0; (i < count) && (dataptr < final_pixel);
+ i++)
+ {
+ WRITE_RGBA(dataptr, alpha, alpha, alpha,
+ (char)0xff);
+ dataptr++;
+ }
+ break;
}
} /* end if (RLE packet) */
@@ -465,47 +462,48 @@ load(ImlibImage * im, ImlibProgressFunction progress,
switch (bpp)
{
- /* 32-bit BGRA pixels */
- case 32:
- WRITE_RGBA(dataptr, *(bufptr + 2), /* R */
- *(bufptr + 1), /* G */
- *(bufptr + 0), /* B */
- *(bufptr + 3) /* A */
- );
- dataptr++;
- bufptr += 4;
- break;
-
- /* 24-bit BGR pixels */
- case 24:
- WRITE_RGBA(dataptr, *(bufptr + 2), /* R */
- *(bufptr + 1), /* G */
- *(bufptr + 0), /* B */
- (char)0xff /* A */
- );
- dataptr++;
- bufptr += 3;
- break;
-
- /* 8-bit grayscale */
- case 8:
- WRITE_RGBA(dataptr, *bufptr, /* pseudo-grayscale */
- *bufptr, *bufptr, (char)0xff);
- dataptr++;
- bufptr += 1;
- break;
+ /* 32-bit BGRA pixels */
+ case 32:
+ WRITE_RGBA(dataptr, *(bufptr + 2), /* R */
+ *(bufptr + 1), /* G */
+ *(bufptr + 0), /* B */
+ *(bufptr + 3) /* A */
+ );
+ dataptr++;
+ bufptr += 4;
+ break;
+
+ /* 24-bit BGR pixels */
+ case 24:
+ WRITE_RGBA(dataptr, *(bufptr + 2), /* R */
+ *(bufptr + 1), /* G */
+ *(bufptr + 0), /* B */
+ (char)0xff /* A */
+ );
+ dataptr++;
+ bufptr += 3;
+ break;
+
+ /* 8-bit grayscale */
+ case 8:
+ WRITE_RGBA(dataptr, *bufptr, /* pseudo-grayscale */
+ *bufptr, *bufptr, (char)0xff);
+ dataptr++;
+ bufptr += 1;
+ break;
}
}
} /* end if (raw packet) */
} /* end for (each packet) */
/* must now flip a bottom-up image */
- if (vinverted) tgaflip(im->data, im->w, im->h);
- if (progress)
- {
- progress(im, 100, 0, 0, im->w, im->h);
- } /* end for (each row) */
+ if (vinverted)
+ tgaflip(im->data, im->w, im->h);
+ if (progress)
+ {
+ progress(im, 100, 0, 0, im->w, im->h);
+ } /* end for (each row) */
}
- /* end if (image is RLE) */
+ /* end if (image is RLE) */
}
/* end if (loading pixel data) */
@@ -534,23 +532,24 @@ formats(ImlibLoader * l)
/* flip a DATA32 image block vertically in place */
static void
-tgaflip (DATA32 * in, int w, int h)
+tgaflip(DATA32 * in, int w, int h)
{
- DATA32 *adv, *adv2;
- int x, y;
+ DATA32 *adv, *adv2;
+ int x, y;
adv = in;
adv2 = in + (w * (h - 1));
for (y = 0; y < (h / 2); y++)
{
- DATA32 tmp;
- for (x = 0; x < w; x++)
- {
- tmp = adv[x];
- adv[x] = adv2[x];
- adv2[x] = tmp;
- }
+ DATA32 tmp;
+
+ for (x = 0; x < w; x++)
+ {
+ tmp = adv[x];
+ adv[x] = adv2[x];
+ adv2[x] = tmp;
+ }
adv2 -= w;
adv += w;
}