int swf_ShapeNew(SHAPE ** s);
void swf_ShapeFree(SHAPE * s);
+char swf_ShapeIsEmpty(SHAPE*s);
int swf_GetSimpleShape(TAG * t,SHAPE ** s); // without Linestyle/Fillstyle Record
int swf_SetSimpleShape(TAG * t,SHAPE * s); // without Linestyle/Fillstyle Record
typedef struct _SWFLAYOUT
{ U16 ascent;
U16 descent;
- S16 leading;
+ U16 leading;
SRECT * bounds;
U16 kerningcount;
SWFKERNING * kerning;
SHAPE * shape;
} SWFGLYPH;
+typedef struct _SWFGLYPHPAIR
+{
+ U16 char1;
+ U16 char2;
+ int num;
+} SWFGLYPHPAIR;
+
typedef struct _FONTUSAGE
{ int* chars;
char is_reduced;
int used_glyphs;
int glyphs_specified;
+ U16 smallest_size;
+
+ SWFGLYPHPAIR* neighbors;
+ int num_neighbors;
+ int neighbors_size;
+ int* neighbors_hash;
+ int neighbors_hash_size;
} FONTUSAGE;
#define FONT_STYLE_BOLD 1
typedef struct _SWFFONT
{ int id; // -1 = not set
- U8 version; // 0 = not set, 1 = definefont, 2 = definefont2
+ U8 version; // 0 = not set, 1 = definefont, 2 = definefont2, 3 = definefont3
U8 * name;
SWFLAYOUT * layout;
int numchars;
U16 * glyph2ascii;
int * ascii2glyph;
+ int * glyph2glyph; // only if the font is resorted
SWFGLYPH * glyph;
ALIGNZONE * alignzones;
U8 alignzone_flags;
int swf_FontReduce_swfc(SWFFONT * f);
int swf_FontInitUsage(SWFFONT * f);
-int swf_FontUseGlyph(SWFFONT * f, int glyph);
+int swf_FontUseGlyph(SWFFONT * f, int glyph, U16 size);
+void swf_FontUsePair(SWFFONT * f, int char1, int char2);
+int swf_FontUseGetPair(SWFFONT * f, int char1, int char2);
int swf_FontUseAll(SWFFONT* f);
-int swf_FontUseUTF8(SWFFONT * f, U8 * s);
+int swf_FontUseUTF8(SWFFONT * f, const U8 * s, U16 size);
int swf_FontUse(SWFFONT* f,U8 * s);
+void swf_FontSort(SWFFONT * font);
int swf_FontSetDefine(TAG * t,SWFFONT * f);
int swf_FontSetDefine2(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);
+void swf_FontPostprocess(SWF*swf);
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);
// swffont.c
-SWFFONT* swf_LoadTrueTypeFont(const char*filename);
+SWFFONT* swf_LoadTrueTypeFont(const char*filename, char flashtype);
SWFFONT* swf_LoadT1Font(const char*filename);
-SWFFONT* swf_LoadFont(const char*filename);
+SWFFONT* swf_LoadFont(const char*filename, char flashtype);
void swf_SetLoadFontParameters(int scale, int skip_unused, int full_unicode);
RGBA* swf_DefineLosslessBitsTagToImage(TAG*tag, int*width, int*height);
RGBA* swf_ExtractImage(TAG*tag, int*dwidth, int*dheight);
-RGBA* swf_ImageScale(RGBA*data, int width, int height, int newwidth, int newheight);
TAG* swf_AddImage(TAG*tag, int bitid, RGBA*mem, int width, int height, int quality);
// swfsound.c
extern char*blendModeNames[];
-int swf_ObjectPlace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const U8 * name);
-int swf_ObjectPlaceClip(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const U8 * name, U16 clipaction);
-int swf_ObjectPlaceBlend(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const U8 * name, U8 blendmode);
+int swf_ObjectPlace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const char* name);
+int swf_ObjectPlaceClip(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const char* name, U16 clipaction);
+int swf_ObjectPlaceBlend(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const char* name, U8 blendmode);
int swf_ObjectMove(TAG * t,U16 depth,MATRIX * m,CXFORM * cx);
#define PF_MOVE 0x01
MATRIX matrix;
CXFORM cxform;
U16 ratio;
- U8*name;
+ char*name;
U16 clipdepth;
ActionTAG* actions;
U8 blendmode;