added more implementation and opcodes
[swftools.git] / lib / modules / swftext.c
index 6c67b48..ee3923e 100644 (file)
@@ -22,6 +22,8 @@
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
 
+#include "../rfxswf.h"
+
 U32 readUTF8char(U8 ** text)
 {
     U32 c = 0;
@@ -118,7 +120,6 @@ int swf_FontEnumerate(SWF * swf, void (*FontCallback) (void*, U16, U8 *), void*s
                int l;
                U8 s[257];
                s[0] = 0;
-               swf_SaveTagPos(t);
                swf_SetTagPos(t, 0);
 
                id = swf_GetU16(t);
@@ -130,8 +131,6 @@ int swf_FontEnumerate(SWF * swf, void (*FontCallback) (void*, U16, U8 *), void*s
                }
 
                (FontCallback) (self, id, s);
-
-               swf_RestoreTagPos(t);
            }
        }
        t = swf_NextTag(t);
@@ -142,7 +141,6 @@ int swf_FontEnumerate(SWF * swf, void (*FontCallback) (void*, U16, U8 *), void*s
 int swf_FontExtract_DefineFont(int id, SWFFONT * f, TAG * t)
 {
     U16 fid;
-    swf_SaveTagPos(t);
     swf_SetTagPos(t, 0);
 
     fid = swf_GetU16(t);
@@ -164,8 +162,6 @@ int swf_FontExtract_DefineFont(int id, SWFFONT * f, TAG * t)
        for (i = 0; i < n; i++)
            swf_GetSimpleShape(t, &f->glyph[i].shape);
     }
-
-    swf_RestoreTagPos(t);
     return id;
 }
 
@@ -174,7 +170,6 @@ int swf_FontExtract_DefineFontInfo(int id, SWFFONT * f, TAG * t)
     U16 fid;
     U16 maxcode;
     U8 flags;
-    swf_SaveTagPos(t);
     swf_SetTagPos(t, 0);
 
     fid = swf_GetU16(t);
@@ -229,17 +224,12 @@ int swf_FontExtract_DefineFontInfo(int id, SWFFONT * f, TAG * t)
        for (i = 0; i < f->numchars; i++)
            f->ascii2glyph[f->glyph2ascii[i]] = i;
     }
-
-    swf_RestoreTagPos(t);
     return id;
 }
 
 int swf_FontExtract_GlyphNames(int id, SWFFONT * f, TAG * tag)
 {
     U16 fid;
-    U16 maxcode;
-    U8 flags;
-    swf_SaveTagPos(tag);
     swf_SetTagPos(tag, 0);
 
     fid = swf_GetU16(tag);
@@ -252,8 +242,6 @@ int swf_FontExtract_GlyphNames(int id, SWFFONT * f, TAG * tag)
            f->glyphnames[t] = strdup(swf_GetString(tag));
        }
     }
-
-    swf_RestoreTagPos(tag);
     return id;
 }
 
@@ -266,7 +254,6 @@ int swf_FontExtract_DefineFont2(int id, SWFFONT * font, TAG * tag)
     U32 offset_start;
     U32 *offset;
     U8 flags1, flags2, namelen;
-    swf_SaveTagPos(tag);
     swf_SetTagPos(tag, 0);
     font->version = 2;
     fid = swf_GetU16(tag);
@@ -382,7 +369,6 @@ int swf_FontExtract_DefineFont2(int id, SWFFONT * font, TAG * tag)
            }
        }
     }
-    swf_RestoreTagPos(t);
     return font->id;
 }
 
@@ -407,7 +393,6 @@ swf_FontExtract_DefineTextCallback(int id, SWFFONT * f, TAG * t, int jobs,
 
     memset(&color, 0, sizeof(color));
 
-    swf_SaveTagPos(t);
     swf_SetTagPos(t, 0);
 
     cid = swf_GetU16(t);
@@ -478,7 +463,6 @@ swf_FontExtract_DefineTextCallback(int id, SWFFONT * f, TAG * t, int jobs,
        }
     }
 
-    swf_RestoreTagPos(t);
     return id;
 }
 
@@ -741,7 +725,7 @@ int swf_FontReduce(SWFFONT * f)
 
 void swf_FontSort(SWFFONT * font)
 {
-    int i, j, k;
+    int i, j;
     int *newplace;
     int *newpos;
     if (!font)
@@ -932,7 +916,6 @@ int swf_FontSetDefine2(TAG * tag, SWFFONT * f)
     U8 flags = 0;
     int t;
     int pos;
-    int pos2;
     swf_SetU16(tag, f->id);
 
     if (f->layout) flags |= 128;               // haslayout
@@ -1139,14 +1122,14 @@ void swf_FontFree(SWFFONT * f)
     rfx_free(f);
 }
 
-int swf_TextSetInfoRecord(TAG * t, SWFFONT * font, U16 size, RGBA * color, int dx, int dy)
+int swf_TextSetInfoRecord(TAG * t, SWFFONT * font, U16 size, RGBA * color, int x, int y)
 {
     U8 flags;
     if (!t)
        return -1;
 
-    flags = TF_TEXTCONTROL | (font ? TF_HASFONT : 0) | (color ? TF_HASCOLOR : 0) | (dx ? TF_HASXOFFSET : 0)
-       | (dy ? TF_HASYOFFSET : 0);
+    flags = TF_TEXTCONTROL | (font ? TF_HASFONT : 0) | (color ? TF_HASCOLOR : 0) | (x ? TF_HASXOFFSET : 0)
+       | (y ? TF_HASYOFFSET : 0);
 
     swf_SetU8(t, flags);
     if (font)
@@ -1157,20 +1140,20 @@ int swf_TextSetInfoRecord(TAG * t, SWFFONT * font, U16 size, RGBA * color, int d
        else
            swf_SetRGB(t, color);
     }
-    if (dx) {
-       if(dx != SET_TO_ZERO) {
-           if(dx>32767 || dx<-32768)
-               fprintf(stderr, "Warning: Horizontal char position overflow: %d\n", dx);
-           swf_SetS16(t, dx);
+    if (x) {
+       if(x != SET_TO_ZERO) {
+           if(x>32767 || x<-32768)
+               fprintf(stderr, "Warning: Horizontal char position overflow: %d\n", x);
+           swf_SetS16(t, x);
        } else {
            swf_SetS16(t, 0);
        }
     }
-    if (dy) {
-       if(dy != SET_TO_ZERO) {
-           if(dy>32767 || dy<-32768)
-               fprintf(stderr, "Warning: Vertical char position overflow: %d\n", dy);
-           swf_SetS16(t, dy);
+    if (y) {
+       if(y != SET_TO_ZERO) {
+           if(y>32767 || y<-32768)
+               fprintf(stderr, "Warning: Vertical char position overflow: %d\n", y);
+           swf_SetS16(t, y);
        } else {
            swf_SetS16(t, 0);
        }