X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.h;h=d1473bdbafecf640bb1de8bb62f8e239eeb49093;hb=90877f310a0df21107db114d03d3f5c02cdf2110;hp=fe3c7e12c72d124376769d8d7cd31cb70aa35326;hpb=0784a8a882e7b98299fb6a90f0f9a7ebb322562b;p=swftools.git diff --git a/lib/rfxswf.h b/lib/rfxswf.h index fe3c7e1..d1473bd 100644 --- a/lib/rfxswf.h +++ b/lib/rfxswf.h @@ -48,11 +48,11 @@ extern "C" { #define NO_MP3 #endif -typedef signed long SFIXED; -typedef signed long SCOORD; +typedef signed SFIXED; +typedef signed SCOORD; -#define SCOORD_MAX 0x7fffffff -#define SCOORD_MIN -0x80000000 +#define SCOORD_MAX 0x7fffffffl +#define SCOORD_MIN -0x80000000l // Basic Structures @@ -156,6 +156,7 @@ typedef struct _SWF U16 frameRate; U16 frameCount; // valid after load and save TAG * firstTag; + U32 fileAttributes; // for SWFs >= Flash9 } SWF; // Basic Functions @@ -164,7 +165,6 @@ int swf_ReadSWF2(reader_t*reader, SWF * swf); // Reads SWF via callback int swf_ReadSWF(int handle,SWF * swf); // Reads SWF to memory (malloc'ed), returns length or <0 if fails int swf_WriteSWF2(writer_t*writer, SWF * swf); // Writes SWF via callback, returns length or <0 if fails int swf_WriteSWF(int handle,SWF * swf); // Writes SWF to file, returns length or <0 if fails -int swf_WriteSWC(int handle, SWF * swf); // for convenience, equal to swf->compressed=1;swf_WriteSWF(..) int swf_WriteCGI(SWF * swf); // Outputs SWF with valid CGI header to stdout void swf_FreeTags(SWF * swf); // Frees all malloc'ed memory for swf SWF* swf_CopySWF(SWF*swf); @@ -193,7 +193,7 @@ void swf_OptimizeTagOrder(SWF*swf); 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); +TAG * swf_DeleteTag(SWF*swf, 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 @@ -212,9 +212,11 @@ U8* swf_GetTagLenPtr(TAG * t); U32 swf_GetBits(TAG * t,int nbits); S32 swf_GetSBits(TAG * t,int nbits); int swf_SetBits(TAG * t,U32 v,int nbits); +int swf_CountUBits(U32 v,int nbits); +int swf_CountBits(U32 v,int nbits); int swf_GetBlock(TAG * t,U8 * b,int l); // resets Bitcount -int swf_SetBlock(TAG * t,U8 * b,int l); +int swf_SetBlock(TAG * t,const U8 * b,int l); U8 swf_GetU8(TAG * t); // resets Bitcount U16 swf_GetU16(TAG * t); @@ -223,6 +225,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); +void swf_SetGradient(TAG * tag, GRADIENT * gradient, char alpha); void swf_FreeGradient(GRADIENT* gradient); char* swf_GetString(TAG*t); int swf_SetU8(TAG * t,U8 v); // resets Bitcount @@ -253,6 +256,7 @@ int swf_VerifyPassword(TAG * t, const char * password); // helper functions: +SRECT swf_ClipRect(SRECT border, SRECT r); void swf_ExpandRect(SRECT*src, SPOINT add); void swf_ExpandRect2(SRECT*src, SRECT*add); void swf_ExpandRect3(SRECT*src, SPOINT center, int radius); @@ -439,6 +443,10 @@ int swf_ShapeSetLine(TAG * t,SHAPE * s,S32 x,S32 y); int swf_ShapeSetCurve(TAG * t,SHAPE * s,S32 x,S32 y,S32 ax,S32 ay); int swf_ShapeSetCircle(TAG * t,SHAPE * s,S32 x,S32 y,S32 rx,S32 ry); int swf_ShapeSetEnd(TAG * t); +int swf_SetShapeStyleCount(TAG * t,U16 n); +int swf_SetFillStyle(TAG * t,FILLSTYLE * f); +int swf_SetLineStyle(TAG * t,LINESTYLE * l); + void swf_ShapeSetBitmapRect(TAG * t, U16 gfxid, int width, int height); @@ -494,6 +502,7 @@ typedef struct _FONTUSAGE { int* chars; char is_reduced; int used_glyphs; + int glyphs_specified; } FONTUSAGE; #define FONT_STYLE_BOLD 1 @@ -507,8 +516,8 @@ typedef struct _SWFFONT U8 version; // 0 = not set, 1 = definefont, 2 = definefont2 U8 * name; SWFLAYOUT * layout; - U16 numchars; - U16 maxascii; // highest mapped ascii value + int numchars; + int maxascii; // highest mapped ascii/unicode value U8 style; U8 encoding; @@ -789,6 +798,12 @@ RGBA swf_GetSWFBackgroundColor(SWF*swf); void swf_uncgi(); // same behaviour as Steven Grimm's uncgi-library +// swfabc.c + +void* swf_ReadABC(TAG*tag); +void swf_WriteABC(TAG*tag, void*code); +void swf_AddButtonLinks(SWF*swf, char stop_each_frame); + // swfaction.c typedef struct _ActionTAG @@ -924,11 +939,25 @@ void action_fixjump(ActionMarker m1, ActionMarker m2); extern char*blendModeNames[]; -int swf_ObjectPlace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name); -int swf_ObjectPlaceClip(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name, U16 clipaction); -int swf_ObjectPlaceBlend(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name, U8 blendmode); +int swf_ObjectPlace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const U8 * name); +int swf_ObjectPlaceClip(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const U8 * name, U16 clipaction); +int swf_ObjectPlaceBlend(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const U8 * name, U8 blendmode); int swf_ObjectMove(TAG * t,U16 depth,MATRIX * m,CXFORM * cx); +#define PF_MOVE 0x01 +#define PF_CHAR 0x02 +#define PF_MATRIX 0x04 +#define PF_CXFORM 0x08 +#define PF_RATIO 0x10 +#define PF_NAME 0x20 +#define PF_CLIPDEPTH 0x40 +#define PF_ACTIONEVENT 0x80 + +#define PF2_FILTERS 0x01 +#define PF2_BLENDMODE 0x02 +#define PF2_ASBITMAP 0x04 +//... + typedef struct _SWFPLACEOBJECT { U16 depth; U16 id; // may be 0 @@ -1065,11 +1094,22 @@ typedef struct _FILTER_BLUR { int passes; } FILTER_BLUR; +typedef struct _FILTER_GLOW { + U8 type; + RGBA rgba; + double blurx; + double blury; + double strength; + int passes; + char innerglow; + char knockout; + char composite; +} FILTER_GLOW; + void swf_SetFilter(TAG*tag, FILTER*f); FILTER*swf_GetFilter(TAG*tag); FILTER*swf_NewFilter(U8 type); - -void AVM2_InsertStops(SWF*swf); +void swf_DeleteFilter(FILTER*f); #ifdef __cplusplus }