From 88f0dff63924cecbca1ad201958108d88e06141c Mon Sep 17 00:00:00 2001 From: uid68734 <uid68734> Date: Sat, 27 Dec 2003 18:13:09 +0000 Subject: [PATCH] * fixed 32 bit decoding bug. * fixed bug where png2swf did not compile due to a missing jpeglib. --- src/png2swf.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/png2swf.c b/src/png2swf.c index e033e93..5b9a262 100644 --- a/src/png2swf.c +++ b/src/png2swf.c @@ -355,6 +355,7 @@ void applyfilter4(int mode, U8*src, U8*old, U8*dest, int width) dest[1] = src[0]+(old[1]+lastr)/2; dest[2] = src[1]+(old[2]+lastg)/2; dest[3] = src[2]+(old[3]+lastb)/2; + lasta = dest[0]; lastr = dest[1]; lastg = dest[2]; lastb = dest[3]; @@ -538,6 +539,7 @@ TAG *MovieAddFrame(SWF * swf, TAG * t, char *sname, int id) int pos=0; int opaque=0; int transparent=0; + int semitransparent=0; /* in case for mode 2, the following also performs 24->32 bit conversion */ for(y=0;y<header.height;y++) { int mode = imagedata[pos++]; //filter mode @@ -568,7 +570,6 @@ TAG *MovieAddFrame(SWF * swf, TAG * t, char *sname, int id) applyfilter3(mode, src, old, dest, header.width); } -#ifdef HAVE_LIBJPEG /* the image is now compressed and stored in data. Now let's take a look at the alpha values to determine which bitmap type we should write */ @@ -577,15 +578,21 @@ TAG *MovieAddFrame(SWF * swf, TAG * t, char *sname, int id) U8*l = &data2[(y*header.width)*4]; for(x=0;x<header.width;x++) { if(l[x*4+0]==255) transparent++; - if(l[x*4+0]==0) opaque++; + else if(l[x*4+0]==0) opaque++; + else semitransparent++; } } /* mode 6 images which are not fully opaque or fully transparent will be stored as definejpeg3 */ if(header.mode == 6 && transparent != header.width*header.height - && opaque != header.width*header.height) { - + && opaque != header.width*header.height) +#ifndef HAVE_JPEGLIB + fprintf(stderr, "Warning: No jpeg lib compiled in- not able to store transparency information\n"); +#else + { fprintf(stderr, "Image has transparency information. Storing as DefineBitsJpeg3 Tag (jpeg+alpha)\n"); + if(VERBOSE(2)) + printf("Image is semi-transparent\n"); // we always use quality 100, since png2swf is expected to // use more or less lossless compression -- 1.7.10.4