reworked compression handling logic
[swftools.git] / lib / rfxswf.h
index 4b3ca32..903efc9 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);
@@ -227,7 +228,7 @@ 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 +327,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 +398,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;
@@ -554,6 +560,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);
@@ -1058,9 +1068,10 @@ void swf_SetFilter(TAG*tag, FILTER*f);
 FILTER*swf_GetFilter(TAG*tag);
 FILTER*swf_NewFilter(U8 type);
 
+void AVM2_InsertStops(SWF*swf);
+
 #ifdef __cplusplus
 }
 #endif
 
 #endif
-