#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
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
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);
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
// 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);
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);
{ int* chars;
char is_reduced;
int used_glyphs;
+ int glyphs_specified;
} FONTUSAGE;
#define FONT_STYLE_BOLD 1
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;
void swf_uncgi(); // same behaviour as Steven Grimm's uncgi-library
+// swfabc.c
+
+void AVM2_InsertStops(SWF*swf);
+void swf_DissassembleABC(TAG*tag);
+
// swfaction.c
typedef struct _ActionTAG
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
FILTER*swf_NewFilter(U8 type);
void swf_DeleteFilter(FILTER*f);
-void AVM2_InsertStops(SWF*swf);
-
#ifdef __cplusplus
}
#endif