git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** empty log message ***
[swftools.git]
/
lib
/
png.c
diff --git
a/lib/png.c
b/lib/png.c
index
fac4f77
..
8578d2d
100644
(file)
--- a/
lib/png.c
+++ b/
lib/png.c
@@
-99,7
+99,7
@@
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))
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))
{
while(png_read_chunk(&id, &len, &data, fi))
{
@@
-197,6
+197,7
@@
static void applyfilter1(int mode, unsigned char*src, unsigned char*old, unsigne
else if(mode==3) {
for(x=0;x<width;x++) {
*dest = *src+(*old+last)/2;
else if(mode==3) {
for(x=0;x<width;x++) {
*dest = *src+(*old+last)/2;
+ last = *dest;
dest++;
old++;
src++;
dest++;
old++;
src++;
@@
-448,7
+449,6
@@
EXPORT int getPNGdimensions(const char*sname, int*destwidth, int*destheight)
return 0;
}
if(!png_read_header(fi, &header)) {
return 0;
}
if(!png_read_header(fi, &header)) {
- fprintf(stderr, "Error reading header from file %s\n", sname);
return 0;
}
return 0;
}
@@
-485,7
+485,6
@@
EXPORT int getPNG(const char*sname, int*destwidth, int*destheight, unsigned char
}
if(!png_read_header(fi, &header)) {
}
if(!png_read_header(fi, &header)) {
- printf("Error reading header from file %s\n", sname);
return 0;
}
return 0;
}
@@
-619,6
+618,9
@@
EXPORT int getPNG(const char*sname, int*destwidth, int*destheight, unsigned char
int x,y;
int pos=0;
*destdata = data2;
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<header.height;y++) {
int mode = imagedata[pos++]; //filter mode
unsigned char*src;
for(y=0;y<header.height;y++) {
int mode = imagedata[pos++]; //filter mode
unsigned char*src;
@@
-639,8
+641,7
@@
EXPORT int getPNG(const char*sname, int*destwidth, int*destheight, unsigned char
}
if(!y) {
}
if(!y) {
- memset(data2,0,header.width*4);
- old = &data2[y*header.width*4];
+ old = firstline;
} else {
old = &data2[(y-1)*header.width*4];
}
} else {
old = &data2[(y-1)*header.width*4];
}
@@
-661,6
+662,7
@@
EXPORT int getPNG(const char*sname, int*destwidth, int*destheight, unsigned char
}
}
}
}
}
}
+ free(firstline);
free(imagedata);
} else if(header.mode == 0 || header.mode == 3) {
COL*rgba = 0;
free(imagedata);
} else if(header.mode == 0 || header.mode == 3) {
COL*rgba = 0;