X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.c;h=ac896f58c5255fc46016ead7cfe28c78e7b6edc1;hb=6c3ab5574d31504d24710c2756899d49275c1a37;hp=0abd61ac1cb67f75b825b8e681188a07316f64b8;hpb=c76b3f90fcf8511d3c1c37c9acd2b5a3ebc18cb8;p=swftools.git diff --git a/lib/rfxswf.c b/lib/rfxswf.c index 0abd61a..ac896f5 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 @@ -41,6 +47,9 @@ #include "lame/lame.h" #endif #endif +#ifdef __cplusplus +} +#endif #ifdef HAVE_TIME_H #include @@ -268,19 +277,21 @@ double swf_GetFixed(TAG * t) } void swf_SetFixed(TAG * t, double f) { - swf_SetU16(t, (U16)((f-(int)f)*65536)); - swf_SetU16(t, (U16)f); + U16 fr = (U16)(f-(int)f)*65536; + swf_SetU16(t, fr); + swf_SetU16(t, (U16)f - (f<0 && fr!=0)); } 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) { - swf_SetU8(t, (U8)((f-(int)f)*256)); - swf_SetU8(t, (U8)f); + U8 fr = (U8)(f-(int)f)*256; + swf_SetU8(t, fr); + swf_SetU8(t, (U8)f - (f<0 && fr!=0)); } int swf_SetRGB(TAG * t,RGBA * col) @@ -335,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;tfirstTag && 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 @@ -1304,15 +1315,15 @@ 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); } } - if(swf->fileVersion >= 8) { + 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); } } @@ -1491,7 +1502,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; @@ -1530,6 +1541,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"