From 469e1e998167801f48345b52b98d8bcb282b9f53 Mon Sep 17 00:00:00 2001 From: kramm Date: Sun, 2 Feb 2003 20:03:06 +0000 Subject: [PATCH] added definebitsjpeg3 support. --- lib/modules/swfbits.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++--- lib/rfxswf.c | 8 ++--- lib/rfxswf.h | 1 + 3 files changed, 91 insertions(+), 10 deletions(-) diff --git a/lib/modules/swfbits.c b/lib/modules/swfbits.c index cef0c27..bf88c94 100644 --- a/lib/modules/swfbits.c +++ b/lib/modules/swfbits.c @@ -13,7 +13,7 @@ #define OUTBUFFER_SIZE 0x8000 -#ifdef _JPEGLIB_INCLUDED_ +#ifdef HAVE_JPEGLIB typedef struct _JPEGDESTMGR { struct jpeg_destination_mgr mgr; @@ -216,7 +216,7 @@ int swf_SetJPEGBits(TAG * t,char * fname,int quality) return 0; } -#endif // _JPEGLIB_INCLUDED_ +#endif // HAVE_JPEGLIB // Lossless compression texture based on zlib @@ -248,6 +248,7 @@ int RFXSWF_deflate_wraper(TAG * t,z_stream * zs,U8 * data,boolean finish) return 0; } + int swf_SetLosslessBits(TAG * t,U16 width,U16 height,void * bitmap,U8 bitmap_flags) { int res = 0; int bps; @@ -288,7 +289,6 @@ int swf_SetLosslessBits(TAG * t,U16 width,U16 height,void * bitmap,U8 bitmap_fla deflateEnd(&zs); - } else res = -3; // zlib error free(data); } else res = -2; // memory error @@ -394,6 +394,90 @@ int swf_SetLosslessBitsGrayscale(TAG * t,U16 width,U16 height,U8 * bitmap) #endif // HAVE_ZLIB -#undef OUTBUFFER_SIZE +#if defined(HAVE_ZLIB) && defined(HAVE_JPEGLIB) +int swf_SetJPEGBits3(TAG * tag,U16 width,U16 height,RGBA* bitmap, int quality) +{ + JPEGBITS* jpeg; + int y; + int pos; + int res = 0; + U8 * data; + z_stream zs; + + pos = tag->len; + swf_SetU32(tag, 0); //placeholder + jpeg = swf_SetJPEGBitsStart(tag,width,height,quality); + for (y=0;ydata[pos], tag->len - pos - 4); + data=malloc(OUTBUFFER_SIZE); + memset(&zs,0x00,sizeof(z_stream)); + + if (deflateInit(&zs,Z_DEFAULT_COMPRESSION)!=Z_OK) { + fprintf(stderr, "rfxswf: zlib compression failed"); + return -3; + } + + zs.next_out = data; + zs.avail_out = OUTBUFFER_SIZE; + + for (y=0;y -#define _JPEGLIB_INCLUDED_ -#endif // HAVE_JPEGLIB_H -#endif // HAVE_LIBJPEG +#endif // HAVE_JPEGLIB #ifdef HAVE_ZLIB #include @@ -1246,4 +1243,3 @@ void swf_FreeTags(SWF * swf) // Frees all malloc'ed memory for t #include "modules/swfbits.c" #include "modules/swfaction.c" #include "modules/swfsound.c" - diff --git a/lib/rfxswf.h b/lib/rfxswf.h index d32e3d5..2dc338d 100644 --- a/lib/rfxswf.h +++ b/lib/rfxswf.h @@ -629,6 +629,7 @@ int swf_SetJPEGBitsFinish(JPEGBITS * jpegbits); int swf_SetJPEGBits(TAG * t,char * fname,int quality); void swf_SetJPEGBits2(TAG * t,U16 width,U16 height,RGBA * bitmap,int quality); +int swf_SetJPEGBits3(TAG * tag,U16 width,U16 height,RGBA* bitmap, int quality); #define BYTES_PER_SCANLINE(width) ((width+3)&0xfffffffc) -- 1.7.10.4