typedef struct {
- char idlength;
+ unsigned char idlength;
char colourmaptype;
char datatypecode;
short int colourmaporigin;
}
-
+/* this function should never produce diagnostics to stdout, maybe to the logfile */
int
tga_header_verify(unsigned char headbuf[18]) {
tga_header header;
tga_header_unpack(&header, headbuf);
switch (header.datatypecode) {
default:
- printf("bad typecode!\n");
+ /*printf("bad typecode!\n");*/
return 0;
case 0:
case 1: /* Uncompressed, color-mapped images */
switch (header.colourmaptype) {
default:
- printf("bad colourmaptype!\n");
+ /*printf("bad colourmaptype!\n");*/
return 0;
case 0:
case 1:
static
int
tga_dest_write(tga_dest *s, unsigned char *buf, size_t pixels) {
- int cp = 0, j, k;
+ int cp = 0;
if (!s->compressed) {
if (s->ig->writecb(s->ig, buf, pixels*s->bytepp) != pixels*s->bytepp) return 0;
i_img *
i_readtga_wiol(io_glue *ig, int length) {
i_img* img = NULL;
- int x, y, i;
+ int x, y;
int width, height, channels;
int mapped;
char *idstring = NULL;
tga_header header;
unsigned char headbuf[18];
unsigned char *databuf;
- unsigned char *reorderbuf;
i_color *linebuf = NULL;
i_clear_error();
mapped = 1;
switch (header.datatypecode) {
- int tbpp;
case 2: /* Uncompressed, rgb images */
case 10: /* Compressed, rgb images */
mapped = 0;
img = mapped ?
i_img_pal_new(width, height, channels, 256) :
i_img_empty_ch(NULL, width, height, channels);
+
+ if (!img) {
+ if (idstring)
+ myfree(idstring);
+ return NULL;
+ }
if (idstring) {
i_tags_add(&img->tags, "tga_idstring", 0, idstring, header.idlength, 0);
myfree(databuf);
if (linebuf) myfree(linebuf);
+ i_tags_add(&img->tags, "i_format", 0, "tga", -1, 0);
i_tags_addn(&img->tags, "tga_bitspp", 0, mapped?header.colourmapdepth:header.bitsperpixel);
if (src.compressed) i_tags_addn(&img->tags, "compressed", 0, 1);
return img;
undef_int
i_writetga_wiol(i_img *img, io_glue *ig, int wierdpack, int compress, char *idstring, size_t idlen) {
- static int rgb_chan[] = { 2, 1, 0, 3 };
tga_header header;
tga_dest dest;
unsigned char headbuf[18];
io_glue_commit_types(ig);
- header.idlength;
header.idlength = idlen;
header.colourmaptype = mapped ? 1 : 0;
header.datatypecode = mapped ? 1 : img->channels == 1 ? 3 : 2;
mm_log((1, "dest.bytepp = %d\n", dest.bytepp));
if (img->type == i_palette_type) {
- int i;
- int bytepp = bpp_to_bytes(bitspp);
if (!tga_palette_write(ig, img, bitspp, i_colorcount(img))) return 0;
if (!img->virtual && !dest.compressed) {