S16 b0, b1;
} CXFORM, * LPCXFORM;
+typedef struct _GRADIENT
+{
+ int num;
+ U8 ratios[8];
+ RGBA rgba[8];
+} GRADIENT;
+
typedef struct _TAG // NEVER access a Tag-Struct directly !
{ U16 id;
U8 * data;
typedef struct _SWF
{ U8 fileVersion;
+ U8 compressed; // SWF or SWC?
U32 fileSize; // valid after load and save
SRECT movieSize;
U16 frameRate;
int swf_ReadSWF(int handle,SWF * swf); // Reads SWF to memory (malloc'ed), 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); // Write Compressed SWF to file, returns length or <0 if fails
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
U8 swf_GetU8(TAG * t); // resets Bitcount
U16 swf_GetU16(TAG * t);
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);
int swf_SetU8(TAG * t,U8 v); // resets Bitcount
int swf_SetU16(TAG * t,U16 v);
int swf_SetLosslessBitsIndexed(TAG * t,U16 width,U16 height,U8 * bitmap,RGBA * palette,U16 ncolors);
int swf_SetLosslessBitsGrayscale(TAG * t,U16 width,U16 height,U8 * bitmap);
+#ifndef RFXSWF_DISABLESOUND
+
// swfsound.c
void swf_SetSoundStreamHead(TAG*tag, U16 avgnumsamples);
void swf_SetSoundStreamBlock(TAG*tag, S16*samples, int numsamples, char first);
+#endif // RFXSWF_DISABLESOUND
+
// swftools.c
U8 swf_isDefiningTag(TAG * t);
MATRIX * swf_MatrixJoin(MATRIX * d,MATRIX * s1,MATRIX * s2);
MATRIX * swf_MatrixMapTriangle(MATRIX * m,int dx,int dy,
int x0,int y0,int x1,int y1,int x2,int y2);
-
+int swf_GetNumUsedIDs(TAG * t);
+void swf_GetUsedIDs(TAG * t, int * positions);
// swfcgi.c