removed modules from the compile (added headers for functions used by modules)
[swftools.git] / lib / rfxswf.h
index 4b3ca32..792ac14 100644 (file)
 #ifndef __RFX_SWF_INCLUDED__
 #define __RFX_SWF_INCLUDED__
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <math.h>
 #include <string.h>
+#ifndef WIN32
 #include <unistd.h>
+#endif
 #include <fcntl.h>
 #include <ctype.h>
 #include "../config.h"
@@ -41,6 +39,10 @@ extern "C" {
 #include "./mem.h"
 #include "./types.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define DEBUG_RFXSWF
 #ifdef RFXSWF_DISABLESOUND
 #define NO_MP3
@@ -162,7 +164,6 @@ int  swf_ReadSWF2(reader_t*reader, SWF * swf);   // Reads SWF via callback
 int  swf_ReadSWF(int handle,SWF * swf);     // Reads SWF to memory (malloc'ed), returns length or <0 if fails
 int  swf_WriteSWF2(writer_t*writer, SWF * swf);     // Writes SWF via callback, 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);   // for convenience, equal to swf->compressed=1;swf_WriteSWF(..)
 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
 SWF* swf_CopySWF(SWF*swf);
@@ -210,6 +211,8 @@ U8*   swf_GetTagLenPtr(TAG * t);
 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);
@@ -221,13 +224,14 @@ 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);
+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
 int   swf_SetU16(TAG * t,U16 v);
 void  swf_SetS16(TAG * t,int v);
 int   swf_SetU32(TAG * t,U32 v);
-#define swf_SetString(t,s)  swf_SetBlock(t,s,strlen(s)+1)
+#define swf_SetString(t,s)  swf_SetBlock(t,s,strlen((const char *)s)+1)
 
 //int   swf_GetPoint(TAG * t,SPOINT * p);     // resets Bitcount
 int   swf_GetRect(TAG * t,SRECT * r);
@@ -326,11 +330,15 @@ SRECT swf_TurnRect(SRECT r, MATRIX* m);
 #define ST_DEFINEFONTALIGNZONES 73 /* version 8 */
 #define ST_CSMTEXTSETTINGS     74 /* version 8 */
 #define ST_DEFINEFONT3         75 /* version 8 */
+#define ST_SYMBOLCLASS         76 /* version 9 */
 #define ST_METADATA            77 /* version 8 */
 #define ST_DEFINESCALINGGRID    78 /* version 8 */
+#define ST_DOABC               82 /* version 9 */
 #define ST_DEFINESHAPE4                83 /* version 8 */
 #define ST_DEFINEMORPHSHAPE2    84 /* version 8 */
 #define ST_SCENEDESCRIPTION    86 /* version 9 */
+#define ST_DEFINEBINARY                87 /* version 9 */
+#define ST_DEFINEFONTNAME      88 /* version 9 */
 
 /* custom tags- only valid for swftools */
 #define ST_REFLEX              777 /* to identify generator software */
@@ -393,9 +401,10 @@ typedef struct _SHAPE2
     SRECT* bbox; // may be NULL
 } SHAPE2;
 
+enum SHAPELINETYPE {moveTo, lineTo, splineTo};
 typedef struct _SHAPELINE
 {
-    enum {moveTo, lineTo, splineTo} type;
+    enum SHAPELINETYPE type;
     SCOORD x,y;
     SCOORD sx,sy; //only if type==splineTo
     int fillstyle0;
@@ -432,6 +441,10 @@ int   swf_ShapeSetLine(TAG * t,SHAPE * s,S32 x,S32 y);
 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);
 
@@ -554,6 +567,10 @@ int swf_FontEnumerate(SWF * swf,void (*FontCallback) (void*,U16,U8*), void*self)
 int swf_FontExtract(SWF * swf,int id,SWFFONT ** f);
 // Fetches all available information from DefineFont, DefineFontInfo, DefineText, ...
 // id = FontID, id=0 -> Extract first Font
+int swf_FontExtract_DefineFont2(int id, SWFFONT * font, TAG * tag);
+int swf_FontExtract_DefineFontInfo(int id, SWFFONT * f, TAG * t);
+int swf_FontExtract_DefineFont(int id, SWFFONT * f, TAG * t);
+int swf_FontExtract_GlyphNames(int id, SWFFONT * f, TAG * tag);
 
 int swf_FontIsItalic(SWFFONT * f);
 int swf_FontIsBold(SWFFONT * f);
@@ -918,6 +935,20 @@ int swf_ObjectPlaceClip(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * nam
 int swf_ObjectPlaceBlend(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,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
@@ -1054,13 +1085,27 @@ typedef struct _FILTER_BLUR {
     int passes;
 } FILTER_BLUR;
 
+typedef struct _FILTER_GLOW {
+    U8 type;
+    RGBA rgba;
+    double blurx;
+    double blury;
+    double strength;
+    int passes;
+    char innerglow;
+    char knockout;
+    char composite;
+} FILTER_GLOW;
+
 void swf_SetFilter(TAG*tag, FILTER*f);
 FILTER*swf_GetFilter(TAG*tag);
 FILTER*swf_NewFilter(U8 type);
+void swf_DeleteFilter(FILTER*f);
+
+void AVM2_InsertStops(SWF*swf);
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif
-