X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.h;h=f5868490fc7b7d063277b7434b96063b6ff85a90;hb=275179c87d277416cfcc0d7a346ed60c4545ba31;hp=1994854708f397409f53fd8914bf40d985cfeb8f;hpb=ec424e44ccbd7d6773d01feb8adcd327a5636446;p=swftools.git diff --git a/lib/rfxswf.h b/lib/rfxswf.h index 1994854..f586849 100644 --- a/lib/rfxswf.h +++ b/lib/rfxswf.h @@ -148,6 +148,12 @@ typedef struct _SOUNDINFO U32* right; } SOUNDINFO; +#define FILEATTRIBUTE_USENETWORK 1 +#define FILEATTRIBUTE_AS3 8 +#define FILEATTRIBUTE_SYMBOLCLASS 16 +#define FILEATTRIBUTE_USEACCELERATEDBLIT 32 +#define FILEATTRIBUTE_USEHARDWAREGPU 64 + typedef struct _SWF { U8 fileVersion; U8 compressed; // SWF or SWC? @@ -161,10 +167,12 @@ typedef struct _SWF // Basic Functions +SWF* swf_OpenSWF(char*filename); 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_SaveSWF(SWF * swf, char*filename); 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); @@ -223,6 +231,7 @@ U8 swf_GetU8(TAG * t); // resets Bitcount U16 swf_GetU16(TAG * t); #define swf_GetS16(tag) ((S16)swf_GetU16(tag)) U32 swf_GetU32(TAG * t); +float swf_GetF16(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); @@ -233,6 +242,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); +void swf_SetF16(TAG * t,float f); void swf_SetString(TAG*t,const char*s); /* abc datatypes */ @@ -465,6 +475,8 @@ int swf_SetFillStyle(TAG * t,FILLSTYLE * f); int swf_SetLineStyle(TAG * t,LINESTYLE * l); +void swf_ShapeSetRectangle(TAG*tag, U16 shapeid, int width, int height, RGBA*rgba); +void swf_ShapeSetRectangleWithBorder(TAG*tag, U16 shapeid, int width, int height, RGBA*rgba, int linewidth, RGBA*linecolor); void swf_ShapeSetBitmapRect(TAG * t, U16 gfxid, int width, int height); //SHAPELINE* swf_ParseShapeData(U8*data, int bits, int fillbits, int linebits); @@ -502,8 +514,8 @@ typedef struct _KERNING } SWFKERNING; typedef struct _SWFLAYOUT -{ S16 ascent; - S16 descent; +{ U16 ascent; + U16 descent; S16 leading; SRECT * bounds; U16 kerningcount; @@ -528,6 +540,12 @@ typedef struct _FONTUSAGE #define FONT_ENCODING_ANSI 2 #define FONT_ENCODING_SHIFTJIS 4 +typedef struct _ALIGNZONE +{ + U16 x,y; + U16 dx,dy; +} ALIGNZONE; + typedef struct _SWFFONT { int id; // -1 = not set U8 version; // 0 = not set, 1 = definefont, 2 = definefont2 @@ -542,6 +560,8 @@ typedef struct _SWFFONT U16 * glyph2ascii; int * ascii2glyph; SWFGLYPH * glyph; + ALIGNZONE * alignzones; + U8 alignzone_flags; U8 language; char ** glyphnames; @@ -591,6 +611,8 @@ 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_FontExtract_DefineFontAlignZones(int id, SWFFONT * font, TAG * tag); + int swf_FontIsItalic(SWFFONT * f); int swf_FontIsBold(SWFFONT * f); @@ -608,8 +630,10 @@ int swf_FontUse(SWFFONT* f,U8 * s); int swf_FontSetDefine(TAG * t,SWFFONT * f); int swf_FontSetDefine2(TAG * t,SWFFONT * f); int swf_FontSetInfo(TAG * t,SWFFONT * f); +void swf_FontSetAlignZones(TAG*t, SWFFONT *f); void swf_FontCreateLayout(SWFFONT*f); +void swf_FontCreateAlignZones(SWFFONT * f); void swf_FontAddLayout(SWFFONT * f, int ascent, int descent, int leading); int swf_ParseDefineText(TAG * t, void(*callback)(void*self, int*chars, int*xpos, int nr, int fontid, int fontsize, int xstart, int ystart, RGBA* color), void*self); @@ -730,7 +754,7 @@ 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); -void swf_Relocate(SWF*swf, char*bitmap); // bitmap is 65536 bytes, bitmap[a]==0 means id a is free +char swf_Relocate(SWF*swf, char*bitmap); // bitmap is 65536 bytes, bitmap[a]==0 means id a is free void swf_RelocateDepth(SWF*swf, char*bitmap); // bitmap is 65536 bytes, bitmap[d]==0 means depth d is free TAG* swf_Concatenate (TAG*list1,TAG*list2); // warning: both list1 and list2 are invalid after this call. @@ -748,6 +772,8 @@ void swf_WriteABC(TAG*tag, void*code); void swf_FreeABC(void*code); void swf_AddButtonLinks(SWF*swf, char stop_each_frame, char events); TAG*swf_AddAS3FontDefine(TAG*tag, U16 id, char*fontname); +#include "as3/compiler.h" +#include "as3/import.h" // swfaction.c @@ -905,6 +931,22 @@ int swf_ObjectMove(TAG * t,U16 depth,MATRIX * m,CXFORM * cx); #define PF2_ASBITMAP 0x04 //... +#define BLENDMODE_NORMAL 0 +#define BLENDMODE_NORMAL2 1 +#define BLENDMODE_LAYER 2 +#define BLENDMODE_MULTIPLY 3 +#define BLENDMODE_SCREEN 4 +#define BLENDMODE_LIGHTEN 5 +#define BLENDMODE_DARKEN 6 +#define BLENDMODE_ADD 7 +#define BLENDMODE_SUBSTRACT 8 +#define BLENDMODE_DIFFERENCE 9 +#define BLENDMODE_INVERT 10 +#define BLENDMODE_ALPHA 11 +#define BLENDMODE_ERASE 12 +#define BLENDMODE_OVERLAY 13 +#define BLENDMODE_HARDLIGHT 14 + typedef struct _SWFPLACEOBJECT { U16 depth; U16 id; // may be 0