-ActionTAG* swf_ActionStart();
-void action_End();
-void action_NextFrame();
-void action_PreviousFrame();
-void action_Play();
-void action_Stop();
-void action_ToggleQuality();
-void action_StopSounds();
-void action_Add();
-void action_Subtract();
-void action_Multiply();
-void action_Divide();
-void action_Equals();
-void action_Less();
-void action_And();
-void action_Or();
-void action_Not();
-void action_StringEquals();
-void action_StringLength();
-void action_StringExtract();
-void action_Pop();
-void action_ToInteger();
-void action_GetVariable();
-void action_SetVariable();
-void action_SetTarget2();
-void action_StringAdd();
-void action_GetProperty();
-void action_SetProperty();
-void action_CloneSprite();
-void action_RemoveSprite();
-void action_Trace();
-void action_StartDrag();
-void action_EndDrag();
-void action_StringLess();
-void action_RandomNumber();
-void action_MBStringLength();
-void action_CharToAscii();
-void action_AsciiToChar();
-void action_GetTime();
-void action_MBStringExtract();
-void action_MBCharToAscii();
-void action_MBAsciiToChar();
-void action_Delete();
-void action_Delete2();
-void action_DefineLocal();
-void action_CallFunction();
-void action_Return();
-void action_Modulo();
-void action_NewObject();
-void action_DefineLocal2();
-void action_InitArray();
-void action_Makehash();
-void action_TypeOf();
-void action_TargetPath();
-void action_Enumerate();
-void action_Add2();
-void action_Less2();
-void action_Equals2();
-void action_ToNumber();
-void action_ToString();
-void action_PushDuplicate();
-void action_StackSwap();
-void action_GetMember();
-void action_SetMember();
-void action_Increment();
-void action_Decrement();
-void action_CallMethod();
-void action_NewMethod();
-void action_BitAnd();
-void action_BitOr();
-void action_BitXor();
-void action_BitLShift();
-void action_BitRShift();
-void action_BitURShift();
-void action_GotoFrame(U16 frame);
-void action_GetUrl(char* url, char* label);
-void action_StoreRegister(U8 reg);
-void action_Constantpool(char* constantpool);
-void action_WaitForFrame(U16 frame, U8 skip);
-void action_SetTarget(char* target);
-void action_GotoLabel(char* label);
-void action_WaitForFrame2(U8 skip);
-void action_With(char*object);
-void action_PushString(char*str);
-void action_PushFloat(float f);
-void action_PushNULL();
-void action_PushRegister(U8 reg);
-void action_PushBoolean(char c);
-void action_PushDouble(double d);
-void action_PushInt(int i);
-void action_PushLookup(U8 index);
-void action_Jump(U16 branch);
-void action_GetUrl2(U8 method);
-void action_DefineFunction(U8*data, int len);
-void action_If(U16 branch);
-void action_Call();
-void action_GotoFrame2(U8 method);
-void swf_ActionEnd();
+// using action/actioncompiler.h:
+ActionTAG* swf_ActionCompile(const char* source, int version);
+
+ActionTAG* action_End(ActionTAG*atag);
+ActionTAG* action_NextFrame(ActionTAG*atag);
+ActionTAG* action_PreviousFrame(ActionTAG*atag);
+ActionTAG* action_Play(ActionTAG*atag);
+ActionTAG* action_Stop(ActionTAG*atag);
+ActionTAG* action_ToggleQuality(ActionTAG*atag);
+ActionTAG* action_StopSounds(ActionTAG*atag);
+ActionTAG* action_Add(ActionTAG*atag);
+ActionTAG* action_Subtract(ActionTAG*atag);
+ActionTAG* action_Multiply(ActionTAG*atag);
+ActionTAG* action_Divide(ActionTAG*atag);
+ActionTAG* action_Equals(ActionTAG*atag);
+ActionTAG* action_Less(ActionTAG*atag);
+ActionTAG* action_And(ActionTAG*atag);
+ActionTAG* action_Or(ActionTAG*atag);
+ActionTAG* action_Not(ActionTAG*atag);
+ActionTAG* action_StringEquals(ActionTAG*atag);
+ActionTAG* action_StringLength(ActionTAG*atag);
+ActionTAG* action_StringExtract(ActionTAG*atag);
+ActionTAG* action_Pop(ActionTAG*atag);
+ActionTAG* action_ToInteger(ActionTAG*atag);
+ActionTAG* action_GetVariable(ActionTAG*atag);
+ActionTAG* action_SetVariable(ActionTAG*atag);
+ActionTAG* action_SetTarget2(ActionTAG*atag);
+ActionTAG* action_StringAdd(ActionTAG*atag);
+ActionTAG* action_GetProperty(ActionTAG*atag);
+ActionTAG* action_SetProperty(ActionTAG*atag);
+ActionTAG* action_CloneSprite(ActionTAG*atag);
+ActionTAG* action_RemoveSprite(ActionTAG*atag);
+ActionTAG* action_Trace(ActionTAG*atag);
+ActionTAG* action_StartDrag(ActionTAG*atag);
+ActionTAG* action_EndDrag(ActionTAG*atag);
+ActionTAG* action_StringLess(ActionTAG*atag);
+ActionTAG* action_RandomNumber(ActionTAG*atag);
+ActionTAG* action_MBStringLength(ActionTAG*atag);
+ActionTAG* action_CharToAscii(ActionTAG*atag);
+ActionTAG* action_AsciiToChar(ActionTAG*atag);
+ActionTAG* action_GetTime(ActionTAG*atag);
+ActionTAG* action_MBStringExtract(ActionTAG*atag);
+ActionTAG* action_MBCharToAscii(ActionTAG*atag);
+ActionTAG* action_MBAsciiToChar(ActionTAG*atag);
+ActionTAG* action_Delete(ActionTAG*atag);
+ActionTAG* action_Delete2(ActionTAG*atag);
+ActionTAG* action_DefineLocal(ActionTAG*atag);
+ActionTAG* action_CallFunction(ActionTAG*atag);
+ActionTAG* action_Return(ActionTAG*atag);
+ActionTAG* action_Modulo(ActionTAG*atag);
+ActionTAG* action_NewObject(ActionTAG*atag);
+ActionTAG* action_DefineLocal2(ActionTAG*atag);
+ActionTAG* action_InitArray(ActionTAG*atag);
+ActionTAG* action_Makehash(ActionTAG*atag);
+ActionTAG* action_TypeOf(ActionTAG*atag);
+ActionTAG* action_TargetPath(ActionTAG*atag);
+ActionTAG* action_Enumerate(ActionTAG*atag);
+ActionTAG* action_Add2(ActionTAG*atag);
+ActionTAG* action_Less2(ActionTAG*atag);
+ActionTAG* action_Equals2(ActionTAG*atag);
+ActionTAG* action_ToNumber(ActionTAG*atag);
+ActionTAG* action_ToString(ActionTAG*atag);
+ActionTAG* action_PushDuplicate(ActionTAG*atag);
+ActionTAG* action_StackSwap(ActionTAG*atag);
+ActionTAG* action_GetMember(ActionTAG*atag);
+ActionTAG* action_SetMember(ActionTAG*atag);
+ActionTAG* action_Increment(ActionTAG*atag);
+ActionTAG* action_Decrement(ActionTAG*atag);
+ActionTAG* action_CallMethod(ActionTAG*atag);
+ActionTAG* action_NewMethod(ActionTAG*atag);
+ActionTAG* action_BitAnd(ActionTAG*atag);
+ActionTAG* action_BitOr(ActionTAG*atag);
+ActionTAG* action_BitXor(ActionTAG*atag);
+ActionTAG* action_BitLShift(ActionTAG*atag);
+ActionTAG* action_BitRShift(ActionTAG*atag);
+ActionTAG* action_BitURShift(ActionTAG*atag);
+ActionTAG* action_GotoFrame(ActionTAG*atag, U16 frame);
+ActionTAG* action_GetUrl(ActionTAG*atag, char* url, char* label);
+ActionTAG* action_StoreRegister(ActionTAG*atag, U8 reg);
+ActionTAG* action_Constantpool(ActionTAG*atag, char* constantpool);
+ActionTAG* action_WaitForFrame(ActionTAG*atag, U16 frame, U8 skip);
+ActionTAG* action_SetTarget(ActionTAG*atag, char* target);
+ActionTAG* action_GotoLabel(ActionTAG*atag, char* label);
+ActionTAG* action_WaitForFrame2(ActionTAG*atag, U8 skip);
+ActionTAG* action_With(ActionTAG*atag, char*object);
+ActionTAG* action_PushString(ActionTAG*atag, char*str);
+ActionTAG* action_PushFloat(ActionTAG*atag, float f);
+ActionTAG* action_PushNULL(ActionTAG*atag);
+ActionTAG* action_PushRegister(ActionTAG*atag, U8 reg);
+ActionTAG* action_PushBoolean(ActionTAG*atag, char c);
+ActionTAG* action_PushDouble(ActionTAG*atag, double d);
+ActionTAG* action_PushInt(ActionTAG*atag, int i);
+ActionTAG* action_PushLookup(ActionTAG*atag, U8 index);
+ActionTAG* action_Jump(ActionTAG*atag, U16 branch);
+ActionTAG* action_GetUrl2(ActionTAG*atag, U8 method);
+ActionTAG* action_DefineFunction(ActionTAG*atag, U8*data, int len);
+ActionTAG* action_If(ActionTAG*atag, U16 branch);
+ActionTAG* action_Call(ActionTAG*atag);
+ActionTAG* action_GotoFrame2(ActionTAG*atag, U8 method);
+ActionMarker action_setMarker(ActionTAG*atag);
+void action_fixjump(ActionMarker m1, ActionMarker m2);
+
+// swfobject.c
+
+// The following 3 routines only use placeobject2:
+
+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_ObjectMove(TAG * t,U16 depth,MATRIX * m,CXFORM * cx);
+
+typedef struct _SWFPLACEOBJECT {
+ U16 depth;
+ U16 id; // may be 0
+ char move; //true: move/replace character, false: set character
+ MATRIX matrix;
+ CXFORM cxform;
+ U16 ratio;
+ U8*name;
+ U16 clipdepth;
+ ActionTAG* actions;
+} SWFPLACEOBJECT;
+
+void swf_SetPlaceObject(TAG * t,SWFPLACEOBJECT* obj);
+void swf_GetPlaceObject(TAG * t,SWFPLACEOBJECT* obj);
+void swf_PlaceObjectFree(SWFPLACEOBJECT* obj);
+
+// swfvideo.c
+
+typedef struct _VIDEOSTREAM
+{
+ int width;
+ int height;
+ int linex;
+
+ int owidth;
+ int oheight;
+ int olinex;
+
+ int frame;
+ YUV*oldpic;
+ YUV*current;
+ int bbx;
+ int bby;
+ int*mvdx;
+ int*mvdy;
+ int quant;
+
+ /* modifyable: */
+ int do_motion; //enable motion compensation (slow!)
+
+} VIDEOSTREAM;
+
+void swf_SetVideoStreamDefine(TAG*tag, VIDEOSTREAM*stream, U16 frames, U16 width, U16 height);
+void swf_SetVideoStreamIFrame(TAG*tag, VIDEOSTREAM*s, RGBA*pic, int quant/* 1-31, 1=best quality, 31=best compression*/);
+void swf_SetVideoStreamBlackFrame(TAG*tag, VIDEOSTREAM*s);
+void swf_SetVideoStreamPFrame(TAG*tag, VIDEOSTREAM*s, RGBA*pic, int quant/* 1-31, 1=best quality, 31=best compression*/);
+void swf_SetVideoStreamMover(TAG*tag, VIDEOSTREAM*s, signed char* movex, signed char* movey, void** image, int quant);
+void swf_VideoStreamClear(VIDEOSTREAM*stream);
+
+// swfrender.c
+
+typedef struct RENDERBUF
+{
+ int width;
+ int height;
+ int posx,posy;
+ void*internal;
+} RENDERBUF;
+
+void swf_Render_Init(RENDERBUF*buf, int posx, int posy, int width, int height);
+RGBA* swf_Render(RENDERBUF*dest);
+void swf_RenderShape(RENDERBUF*dest, SHAPE2*shape, MATRIX*m, CXFORM*c, int depth,int clipdepth);
+void swf_Render_AddImage(RENDERBUF*buf, U16 id, RGBA*img, int width, int height);
+void swf_Render_ClearCanvas(RENDERBUF*dest);
+void swf_Render_Delete(RENDERBUF*dest);
+
+#ifdef __cplusplus
+}
+#endif