X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.h;h=da1573ab0af5f10b7d6b6fdcfd7343ec8fb70c25;hb=ec1409176c61594fd6c3c0311f4cea40772d47a6;hp=9fb25464a7e934e9b0b7503369926bb45db897c8;hpb=57a0c65d0d2fee99e2899404b561aeccc121cfc8;p=swftools.git diff --git a/lib/rfxswf.h b/lib/rfxswf.h index 9fb2546..da1573a 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,7 @@ /* 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 PUT8(ptr,x) {((U8*)(ptr))[0]=x;} #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)) @@ -177,6 +179,7 @@ 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: @@ -185,8 +188,12 @@ void swf_OptimizeTagOrder(SWF*swf); // basic routines: TAG * swf_InsertTag(TAG * after,U16 id); // updates frames, if necessary +TAG * swf_InsertTagBefore(SWF*swf, TAG * before,U16 id); // like InsertTag, but insert tag before argument int swf_DeleteTag(TAG * t); +void swf_ClearTag(TAG * t); //frees tag data +void swf_ResetTag(TAG*tag, U16 id); //set's tag position and length to 0, without freeing it + void swf_SetTagPos(TAG * t,U32 pos); // resets Bitcount U32 swf_GetTagPos(TAG * t); @@ -211,7 +218,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); @@ -242,7 +249,6 @@ SRECT swf_TurnRect(SRECT r, MATRIX* m); #define swf_GetS32(tag) ((S32)swf_GetU32(tag)) #define swf_GetCoord(tag) ((SCOORD)swf_GetU32(tag)) #define swf_GetFixed(tag) ((SFIXED)swf_GetU32(tag)) -#define swf_GetString(t) ((char*)(&(t)->data[(t)->pos])) #define swf_SetS8(tag,v) swf_SetU8(tag,(U8)v) #define swf_SetS16(tag,v) swf_SetU16(tag,(U16)v) @@ -251,8 +257,12 @@ SRECT swf_TurnRect(SRECT r, MATRIX* m); #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) @@ -507,6 +517,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, @@ -530,7 +541,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 @@ -621,6 +632,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) @@ -644,7 +656,7 @@ int swf_SetLosslessBitsGrayscale(TAG * t,U16 width,U16 height,U8 * bitmap); // swfsound.c void swf_SetSoundStreamHead(TAG*tag, int avgnumsamples); -void swf_SetSoundStreamBlock(TAG*tag, S16*samples, char first); /* expects 2304 samples */ +void swf_SetSoundStreamBlock(TAG*tag, S16*samples, int seek, char first); /* expects 2304 samples */ void swf_SetSoundDefine(TAG*tag, S16*samples, int num); @@ -658,6 +670,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 @@ -823,5 +836,9 @@ void swf_SetPlaceObject(TAG * t,SWFPLACEOBJECT* obj); void swf_GetPlaceObject(TAG * t,SWFPLACEOBJECT* obj); void swf_PlaceObjectFree(SWFPLACEOBJECT* obj); +#ifdef __cplusplus +} +#endif + #endif