X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.c;h=3de037452e660c89bc2bd5b01dded6fbd9848d54;hb=edcb4eeac02833226bc1fb28541a6c158b0c03cd;hp=0301f29ab2520446b8f6265b2f4408776f8e2aaf;hpb=f659dade40988bfc309900ed054cb9cbf72e86c8;p=swftools.git diff --git a/lib/rfxswf.c b/lib/rfxswf.c index 0301f29..3de0374 100644 --- a/lib/rfxswf.c +++ b/lib/rfxswf.c @@ -29,7 +29,13 @@ #ifdef HAVE_JPEGLIB #define HAVE_BOOLEAN +#ifdef __cplusplus +extern "C" { +#endif #include +#ifdef __cplusplus +} +#endif #endif // HAVE_JPEGLIB #ifdef HAVE_ZLIB @@ -46,6 +52,10 @@ #include #endif +#ifdef HAVE_IO_H +#include +#endif + #include "./bitio.h" #include "./MD5.h" @@ -268,7 +278,7 @@ double swf_GetFixed(TAG * t) } void swf_SetFixed(TAG * t, double f) { - U16 = (f-(int)f)*65536; + U16 fr = (U16)(f-(int)f)*65536; swf_SetU16(t, fr); swf_SetU16(t, (U16)f - (f<0 && fr!=0)); } @@ -276,11 +286,11 @@ float swf_GetFixed8(TAG * t) { U8 low = swf_GetU8(t); U8 high = swf_GetU8(t); - return high + low*(1/256.0); + return (float)(high + low*(1/256.0)); } void swf_SetFixed8(TAG * t, float f) { - U8 = (f-(int)f)*256; + U8 fr = (U8)(f-(int)f)*256; swf_SetU8(t, fr); swf_SetU8(t, (U8)f - (f<0 && fr!=0)); } @@ -328,7 +338,6 @@ void swf_GetRGBA(TAG * t, RGBA * col) void swf_GetGradient(TAG * tag, GRADIENT * gradient, char alpha) { - GRADIENT dummy; int t; if(!tag) { memset(gradient, 0, sizeof(GRADIENT)); @@ -337,8 +346,8 @@ void swf_GetGradient(TAG * tag, GRADIENT * gradient, char alpha) U8 num = swf_GetU8(tag) & 15; if(gradient) { gradient->num = num; - gradient->rgba = rfx_calloc(sizeof(RGBA)*gradient->num); - gradient->ratios = rfx_calloc(sizeof(gradient->ratios[0])*gradient->num); + gradient->rgba = (RGBA*)rfx_calloc(sizeof(RGBA)*gradient->num); + gradient->ratios = (U8*)rfx_calloc(sizeof(gradient->ratios[0])*gradient->num); } for(t=0;tlen >= 5 && t->pos==0 && @@ -1062,7 +1071,7 @@ void swf_UnFoldSprite(TAG * t) void swf_FoldSprite(TAG * t) { TAG*sprtag=t,*tmp; - U16 id,frames,tmpid; + U16 id,frames; int level; if(t->id!=ST_DEFINESPRITE) return; @@ -1245,6 +1254,7 @@ int swf_ReadSWF2(reader_t*reader, SWF * swf) // Reads SWF to memory (malloc'ed reader_init_zlibinflate(&zreader, reader); reader = &zreader; } + swf->compressed = 0; // derive from version number from now on reader_GetRect(reader, &swf->movieSize); reader->read(reader, &swf->frameRate, 2); @@ -1291,7 +1301,7 @@ int swf_WriteSWF2(writer_t*writer, SWF * swf) // Writes SWF to file, return if ((swf->firstTag && swf->firstTag->id != ST_REFLEX) && (!swf->firstTag->next || swf->firstTag->next->id != ST_REFLEX)) { - swf_SetBlock(swf_InsertTagBefore(swf, swf->firstTag,ST_REFLEX),"rfx",3); + swf_SetBlock(swf_InsertTagBefore(swf, swf->firstTag,ST_REFLEX),(U8*)"rfx",3); } #endif // INSERT_RFX_TAG @@ -1306,7 +1316,7 @@ int swf_WriteSWF2(writer_t*writer, SWF * swf) // Writes SWF to file, return { TAG*scene = swf_InsertTagBefore(swf, swf->firstTag,ST_SCENEDESCRIPTION); swf_SetU16(scene, 1); - swf_SetString(scene, "Scene 1"); + swf_SetString(scene, (U8*)"Scene 1"); swf_SetU8(scene, 0); } } @@ -1314,7 +1324,7 @@ int swf_WriteSWF2(writer_t*writer, SWF * swf) // Writes SWF to file, return if(swf->fileVersion >= 9) { if (swf->firstTag && swf->firstTag->id != ST_FILEATTRIBUTES) { - U32 flags = 0x8; // | 128 = usenetwork, | 8 = hasmetadata + U32 flags = 0x8; // | 128 = usenetwork, | 16 = Actionscript3 | 8 = hasmetadata swf_SetU32(swf_InsertTagBefore(swf, swf->firstTag,ST_FILEATTRIBUTES),flags); } } @@ -1373,11 +1383,10 @@ int swf_WriteSWF2(writer_t*writer, SWF * swf) // Writes SWF to file, return It also means that we don't initialize our own zlib writer, but assume the caller provided one. */ - if(swf->compressed) { + if(swf->compressed==1 || (swf->compressed==0 && swf->fileVersion>=6)) { char*id = "CWS"; writer->write(writer, id, 3); - } - else { + } else { char*id = "FWS"; writer->write(writer, id, 3); } @@ -1386,7 +1395,7 @@ int swf_WriteSWF2(writer_t*writer, SWF * swf) // Writes SWF to file, return PUT32(b4, swf->fileSize); writer->write(writer, b4, 4); - if(swf->compressed) { + if(swf->compressed==1 || (swf->compressed==0 && swf->fileVersion>=6)) { writer_init_zlibdeflate(&zwriter, writer); writer = &zwriter; } @@ -1412,7 +1421,7 @@ int swf_WriteSWF2(writer_t*writer, SWF * swf) // Writes SWF to file, return { if (swf_WriteTag2(writer, t)<0) return -1; t = swf_NextTag(t); } - if(swf->compressed) { + if(swf->compressed==1 || (swf->compressed==0 && swf->fileVersion>=6) || swf->compressed==8) { if(swf->compressed != 8) { zwriter.finish(&zwriter); return writer->pos - writer_lastpos; @@ -1428,7 +1437,6 @@ int swf_WriteSWF(int handle, SWF * swf) // Writes SWF to file, returns leng { writer_t writer; int len = 0; - swf->compressed = 0; if(handle<0) { writer_init_nullwriter(&writer); @@ -1441,22 +1449,6 @@ int swf_WriteSWF(int handle, SWF * swf) // Writes SWF to file, returns leng return len; } -int swf_WriteSWC(int handle, SWF * swf) // Writes SWF to file, returns length or <0 if fails -{ - writer_t writer; - int len = 0; - swf->compressed = 1; - - if(handle<0) { - writer_init_nullwriter(&writer); - len = swf_WriteSWF2(&writer, swf); - } - writer_init_filewriter(&writer, handle); - len = swf_WriteSWF2(&writer, swf); - writer.finish(&writer); - return len; -} - int swf_WriteHeader2(writer_t*writer,SWF * swf) { SWF myswf; @@ -1493,7 +1485,7 @@ int swf_WriteCGI(SWF * swf) SWF* swf_CopySWF(SWF*swf) { - SWF*nswf = rfx_alloc(sizeof(SWF)); + SWF*nswf = (SWF*)rfx_alloc(sizeof(SWF)); TAG*tag, *ntag; memcpy(nswf, swf, sizeof(SWF)); nswf->firstTag = 0; @@ -1532,6 +1524,7 @@ void swf_FreeTags(SWF * swf) // Frees all malloc'ed memory for t #include "modules/swfcgi.c" #include "modules/swfbits.c" #include "modules/swfaction.c" +#include "modules/swfabc.c" #include "modules/swfsound.c" #include "modules/swfdraw.c" #include "modules/swfrender.c"