X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.h;h=9fb25464a7e934e9b0b7503369926bb45db897c8;hb=57a0c65d0d2fee99e2899404b561aeccc121cfc8;hp=af275854ab86768d70cf112df7d8a2ee0877feed;hpb=80c5ca6a38fdb2d948c9db114ee648af63ef6c67;p=swftools.git diff --git a/lib/rfxswf.h b/lib/rfxswf.h index af27585..9fb2546 100644 --- a/lib/rfxswf.h +++ b/lib/rfxswf.h @@ -95,7 +95,7 @@ typedef struct _MATRIX } MATRIX, * LPMATRIX; typedef struct _CXFORM -{ S16 a0, a1; +{ S16 a0, a1; /* mult, add */ S16 r0, r1; S16 g0, g1; S16 b0, b1; @@ -126,6 +126,22 @@ typedef struct _TAG // NEVER access a Tag-Struct directly ! } TAG, * LPTAG; +typedef struct _SOUNDINFO +{ + U8 stop; + U8 multiple; //continue playing if already started + + U32 inpoint; + U32 outpoint; + + U16 loops; + U8 envelopes; + + //envelope: + U32* pos; + U32* left; + U32* right; +} SOUNDINFO; typedef struct _SWF { U8 fileVersion; @@ -162,6 +178,10 @@ void swf_UnFoldAll(SWF*swf); void swf_FoldSprite(TAG*tag); void swf_UnFoldSprite(TAG*tag); +// tag reordering: + +void swf_OptimizeTagOrder(SWF*swf); + // basic routines: TAG * swf_InsertTag(TAG * after,U16 id); // updates frames, if necessary @@ -208,6 +228,13 @@ int swf_SetCXForm(TAG * t,CXFORM * cx,U8 alpha); int swf_SetRGB(TAG * t,RGBA * col); int swf_SetRGBA(TAG * t,RGBA * col); +// helper functions: + +void swf_ExpandRect(SRECT*src, SPOINT add); +void swf_ExpandRect2(SRECT*src, SRECT*add); +SPOINT swf_TurnPoint(SPOINT p, MATRIX* m); +SRECT swf_TurnRect(SRECT r, MATRIX* m); + // Function Macros #define swf_GetS8(tag) ((S8)swf_GetU8(tag)) @@ -215,6 +242,7 @@ int swf_SetRGBA(TAG * t,RGBA * col); #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) @@ -255,6 +283,7 @@ int swf_SetRGBA(TAG * t,RGBA * col); #define ST_PROTECT 24 /* This file should not be importable for editing. */ #define ST_PLACEOBJECT2 26 /* The new style place w/ alpha color transform and name. */ #define ST_REMOVEOBJECT2 28 /* A more compact remove object that omits the character tag (just depth). */ +#define ST_FREEALL 31 /* ? */ #define ST_DEFINESHAPE3 32 /* A shape V3 includes alpha values. */ #define ST_DEFINETEXT2 33 /* A text V2 includes alpha values. */ #define ST_DEFINEBUTTON2 34 /* A button V2 includes color transform, alpha and multiple actions */ @@ -615,8 +644,11 @@ int swf_SetLosslessBitsGrayscale(TAG * t,U16 width,U16 height,U8 * bitmap); // swfsound.c void swf_SetSoundStreamHead(TAG*tag, int avgnumsamples); -/* expects 2304 samples */ -void swf_SetSoundStreamBlock(TAG*tag, S16*samples, char first); +void swf_SetSoundStreamBlock(TAG*tag, S16*samples, char first); /* expects 2304 samples */ + +void swf_SetSoundDefine(TAG*tag, S16*samples, int num); + +void swf_SetSoundInfo(TAG*tag, SOUNDINFO*info); #endif // RFXSWF_DISABLESOUND