+ if(header.mode==6)
+ applyfilter4(mode, src, old, dest, header.width);
+ else if(header.mode==2)
+ applyfilter3(mode, src, old, dest, header.width);
+ }
+
+ /* 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 */
+ if(header.mode == 6)
+ for(y=0;y<header.height;y++) {
+ U8*l = &data2[(y*header.width)*4];
+ for(x=0;x<header.width;x++) {
+ if(l[x*4+0]==255) transparent++;
+ 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)
+#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
+
+ swf_SetJPEGBits3(t, header.width, header.height, (RGBA*)data2, 100);
+ t->id = ST_DEFINEBITSJPEG3;
+ }
+ else
+#endif
+ {
+ swf_SetLosslessBits(t, header.width, header.height, data2, BMF_32BIT);