X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.h;h=2dc338d134b4902de4a9e892a278ed162e51061f;hb=34de503961eb25613a5b3f2a8e5bdb5d1f5de0e9;hp=db6617625e1f558ac15a17cd6c889d05f85ebb0b;hpb=a970a6438fa892d043faac61ea6e27c8c88f79fa;p=swftools.git diff --git a/lib/rfxswf.h b/lib/rfxswf.h index db66176..2dc338d 100644 --- a/lib/rfxswf.h +++ b/lib/rfxswf.h @@ -13,6 +13,10 @@ #ifndef __RFX_SWF_INCLUDED__ #define __RFX_SWF_INCLUDED__ +#ifdef __cplusplus +extern "C" { +#endif + #include #include #include @@ -34,9 +38,6 @@ /* little/big endian stuff */ -//#define SWAP16(s) ((U16) ((U8*)&s)[0] | ((U16) ((U8*)&s)[1] << 8)) -//#define SWAP32(s) ((U32) ((U8*)&s)[0] | ((U32) ((U8*)&s)[1] << 8) | ((U32) ((U8*)&s)[2] << 16) | ((U32) ((U8*)&s)[3] << 24)) - #define PUT16(ptr,x) {((U8*)(ptr))[0]=(U8)(x);((U8*)(ptr))[1]=(U8)((x)>>8);} #define PUT32(ptr,x) {((U8*)(ptr))[0]=(U8)(x);((U8*)(ptr))[1]=(U8)((x)>>8);((U8*)(ptr))[2]=(U8)((x)>>16);((U8*)(ptr))[3]=(U8)((x)>>24);} #define GET16(ptr) (((U16)(((U8*)(ptr))[0]))+(((U16)(((U8*)(ptr))[1]))<<8)) @@ -95,7 +96,7 @@ typedef struct _MATRIX } MATRIX, * LPMATRIX; typedef struct _CXFORM -{ S16 a0, a1; +{ S16 a0, a1; /* mult, add */ S16 r0, r1; S16 g0, g1; S16 b0, b1; @@ -177,12 +178,19 @@ void swf_FoldAll(SWF*swf); void swf_UnFoldAll(SWF*swf); void swf_FoldSprite(TAG*tag); void swf_UnFoldSprite(TAG*tag); +int swf_IsFolded(TAG*tag); + +// tag reordering: + +void swf_OptimizeTagOrder(SWF*swf); // basic routines: TAG * swf_InsertTag(TAG * after,U16 id); // updates frames, if necessary int swf_DeleteTag(TAG * t); +void swf_ClearTag(TAG * t); //frees tag data + void swf_SetTagPos(TAG * t,U32 pos); // resets Bitcount U32 swf_GetTagPos(TAG * t); @@ -207,7 +215,7 @@ U32 swf_GetU32(TAG * t); void swf_GetRGB(TAG * t, RGBA * col); void swf_GetRGBA(TAG * t, RGBA * col); void swf_GetGradient(TAG * t, GRADIENT * gradient, char alpha); - +char* swf_GetString(TAG*t); int swf_SetU8(TAG * t,U8 v); // resets Bitcount int swf_SetU16(TAG * t,U16 v); int swf_SetU32(TAG * t,U32 v); @@ -224,6 +232,13 @@ int swf_SetCXForm(TAG * t,CXFORM * cx,U8 alpha); int swf_SetRGB(TAG * t,RGBA * col); int swf_SetRGBA(TAG * t,RGBA * col); +// helper functions: + +void swf_ExpandRect(SRECT*src, SPOINT add); +void swf_ExpandRect2(SRECT*src, SRECT*add); +SPOINT swf_TurnPoint(SPOINT p, MATRIX* m); +SRECT swf_TurnRect(SRECT r, MATRIX* m); + // Function Macros #define swf_GetS8(tag) ((S8)swf_GetU8(tag)) @@ -239,8 +254,12 @@ int swf_SetRGBA(TAG * t,RGBA * col); #define swf_SetFixed(tag,v) swf_SetU32(tag,(U32)v) #define swf_SetString(t,s) swf_SetBlock(t,s,strlen(s)+1) +#ifndef FAILED #define FAILED(b) ((b)<0) -#define SUCCEDED(b) ((b)>=0) +#endif +#ifndef SUCCEEDED +#define SUCCEEDED(b) ((b)>=0) +#endif // Tag IDs (adopted from J. C. Kessels' Form2Flash) @@ -495,6 +514,7 @@ int swf_FontSetDefine(TAG * t,SWFFONT * f); int swf_FontSetDefine2(TAG * t,SWFFONT * f); int swf_FontSetInfo(TAG * t,SWFFONT * f); +void swf_FontCreateLayout(SWFFONT*f); void swf_FontAddLayout(SWFFONT * f, int ascent, int descent, int leading); int swf_FontExtract_DefineTextCallback(int id,SWFFONT * f,TAG * t,int jobs, @@ -518,7 +538,7 @@ int swf_TextPrintDefineText(TAG * t,SWFFONT * f); void swf_SetEditText(TAG*tag, U16 flags, SRECT r, char*text, RGBA*color, int maxlength, U16 font, U16 height, EditTextLayout*layout, char*variable); -void swf_SetDefineText(TAG*tag, SWFFONT*font, RGBA*rgb, char*text, int scale); +SRECT swf_SetDefineText(TAG*tag, SWFFONT*font, RGBA*rgb, char*text, int scale); // swfdump.c @@ -609,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) @@ -646,6 +667,7 @@ U8 swf_isDefiningTag(TAG * t); U8 swf_isPseudoDefiningTag(TAG * t); U8 swf_isAllowedSpriteTag(TAG * t); U16 swf_GetDefineID(TAG * t); +SRECT swf_GetDefineBBox(TAG * t); void swf_SetDefineID(TAG * t, U16 newid); U16 swf_GetPlaceID(TAG * t); //PLACEOBJECT, PLACEOBJECT2 (sometimes), REMOVEOBJECT U16 swf_GetDepth(TAG * t); //PLACEOBJECT,PLACEOBJECT2,REMOVEOBJECT,REMOVEOBJECT2 @@ -811,5 +833,9 @@ void swf_SetPlaceObject(TAG * t,SWFPLACEOBJECT* obj); void swf_GetPlaceObject(TAG * t,SWFPLACEOBJECT* obj); void swf_PlaceObjectFree(SWFPLACEOBJECT* obj); +#ifdef __cplusplus +} +#endif + #endif