]> git.imager.perl.org - imager.git/blobdiff - tga.c
- added VERSION numbers to most .pms
[imager.git] / tga.c
diff --git a/tga.c b/tga.c
index 04f684c8065f1e39f18ae3b673b45a8c40b4bbee..13758117f0576e4108b63b949410a9cc2cb9ddda 100644 (file)
--- a/tga.c
+++ b/tga.c
@@ -38,7 +38,7 @@ Some of these functions are internal.
 
 
 typedef struct {
-  char  idlength;
+  unsigned char  idlength;
   char  colourmaptype;
   char  datatypecode;
   short int colourmaporigin;
@@ -320,14 +320,14 @@ tga_header_unpack(tga_header *header, unsigned char headbuf[18]) {
 }
 
 
-
+/* 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 */ 
@@ -341,7 +341,7 @@ tga_header_verify(unsigned char headbuf[18]) {
 
   switch (header.colourmaptype) { 
   default:
-               printf("bad colourmaptype!\n");
+    /*printf("bad colourmaptype!\n");*/
     return 0;
   case 0:
   case 1:
@@ -464,7 +464,7 @@ destination is compressed.
 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;
@@ -598,7 +598,7 @@ Returns NULL on error.
 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;
@@ -607,7 +607,6 @@ i_readtga_wiol(io_glue *ig, int length) {
   tga_header header;
   unsigned char headbuf[18];
   unsigned char *databuf;
-  unsigned char *reorderbuf;
 
   i_color *linebuf = NULL;
   i_clear_error();
@@ -696,7 +695,6 @@ i_readtga_wiol(io_glue *ig, int length) {
   
   mapped = 1;
   switch (header.datatypecode) {
-    int tbpp;
   case 2:  /* Uncompressed, rgb images          */
   case 10: /* Compressed,   rgb images          */
     mapped = 0;
@@ -719,6 +717,12 @@ i_readtga_wiol(io_glue *ig, int length) {
   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);
@@ -758,6 +762,7 @@ i_readtga_wiol(io_glue *ig, int length) {
   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;
@@ -778,7 +783,6 @@ Writes an image in targa format.  Returns 0 on error.
 
 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];
@@ -829,7 +833,6 @@ i_writetga_wiol(i_img *img, io_glue *ig, int wierdpack, int compress, char *idst
 
   io_glue_commit_types(ig);
   
-  header.idlength;
   header.idlength = idlen;
   header.colourmaptype   = mapped ? 1 : 0;
   header.datatypecode    = mapped ? 1 : img->channels == 1 ? 3 : 2;
@@ -868,8 +871,6 @@ i_writetga_wiol(i_img *img, io_glue *ig, int wierdpack, int compress, char *idst
   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) {