/* little/big endian stuff */
+#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))
typedef struct _SOUNDINFO
{
U8 stop;
- U8 multiple; //continue playing if already started
+ U8 nomultiple; //continue playing if already started
U32 inpoint;
U32 outpoint;
// 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);
int swf_ShapeSetCircle(TAG * t,SHAPE * s,S32 x,S32 y,S32 rx,S32 ry);
int swf_ShapeSetEnd(TAG * t);
+void swf_ShapeSetBitmapRect(TAG * t, U16 gfxid, int width, int height);
+
SHAPELINE* swf_ParseShapeData(U8*data, int bits, int fillbits, int linebits);
SHAPE2* swf_ShapeToShape2(SHAPE*shape);
SHAPE* swf_Shape2ToShape(SHAPE2*shape);
// 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);