X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fpng.c;h=95f5b11d8c645d8ed005c1f9a47f9c08063b92d1;hb=d4e0ae0071722b1cc50bfc41fe64066783aa24a5;hp=e30587204e14ed8571b98ab6b84598ef06721cac;hpb=4513e3be4df534f961bdca64480631fe798c67fb;p=swftools.git diff --git a/lib/png.c b/lib/png.c index e305872..95f5b11 100644 --- a/lib/png.c +++ b/lib/png.c @@ -99,12 +99,12 @@ static int png_read_header(FILE*fi, struct png_header*header) unsigned char*data; fread(head2,8,1,fi); if(strncmp((const char*)head,(const char*)head2,4)) - return 0; + return 0; // not a png file while(png_read_chunk(&id, &len, &data, fi)) { //printf("Chunk: %c%c%c%c (len:%d)\n", id[0],id[1],id[2],id[3], len); - if(!strncasecmp(id, "IHDR", 4)) { + if(!strncmp(id, "IHDR", 4)) { char a,b,c,f,i; if(len < 8) exit(1); header->width = data[0]<<24|data[1]<<16|data[2]<<8|data[3]; @@ -439,7 +439,7 @@ static void inline applyfilter4(int mode, unsigned char*src, unsigned char*old, } -EXPORT int getPNGdimensions(char*sname, int*destwidth, int*destheight) +EXPORT int getPNGdimensions(const char*sname, int*destwidth, int*destheight) { FILE*fi; struct png_header header; @@ -448,7 +448,6 @@ EXPORT int getPNGdimensions(char*sname, int*destwidth, int*destheight) return 0; } if(!png_read_header(fi, &header)) { - fprintf(stderr, "Error reading header from file %s\n", sname); return 0; } @@ -457,7 +456,7 @@ EXPORT int getPNGdimensions(char*sname, int*destwidth, int*destheight) return 1; } -EXPORT int getPNG(char*sname, int*destwidth, int*destheight, unsigned char**destdata) +EXPORT int getPNG(const char*sname, int*destwidth, int*destheight, unsigned char**destdata) { char tagid[4]; int len; @@ -485,7 +484,6 @@ EXPORT int getPNG(char*sname, int*destwidth, int*destheight, unsigned char**dest } if(!png_read_header(fi, &header)) { - printf("Error reading header from file %s\n", sname); return 0; } @@ -619,6 +617,9 @@ EXPORT int getPNG(char*sname, int*destwidth, int*destheight, unsigned char**dest int x,y; int pos=0; *destdata = data2; + + unsigned char* firstline = malloc(header.width*4); + memset(firstline,0,header.width*4); for(y=0;y