X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswftext.c;h=4b90d6f4603f93a2ca81b92b036b7b5be08aab1e;hb=9b55540dea2fbd5c4fc153bde0b32190c10fb87e;hp=ef46afd07800eaaa1c964020be8ce50c0bf142b9;hpb=cfb06dab4b1674078f1306d1c537ad03d00def26;p=swftools.git diff --git a/lib/modules/swftext.c b/lib/modules/swftext.c index ef46afd..4b90d6f 100644 --- a/lib/modules/swftext.c +++ b/lib/modules/swftext.c @@ -24,44 +24,44 @@ #define FF_SHIFTJIS 0x10 #define FF_UNICODE 0x20 -int FontEnumerate(SWF * swf,void (*FontCallback) (U16,U8*)) +int swf_FontEnumerate(SWF * swf,void (*FontCallback) (U16,U8*)) { int n; TAG * t; if (!swf) return -1; - t = swf->FirstTag; + t = swf->firstTag; n = 0; while (t) - { if (GetTagID(t)==ST_DEFINEFONTINFO) + { if (swf_GetTagID(t)==ST_DEFINEFONTINFO) { n++; if (FontCallback) { U16 id; int l; U8 s[257]; - SaveTagPos(t); - SetTagPos(t,0); + swf_SaveTagPos(t); + swf_SetTagPos(t,0); - id = GetU16(t); - l = GetU8(t); - GetBlock(t,s,l); + id = swf_GetU16(t); + l = swf_GetU8(t); + swf_GetBlock(t,s,l); s[l] = 0; (FontCallback)(id,s); - RestoreTagPos(t); + swf_RestoreTagPos(t); } } - t = NextTag(t); + t = swf_NextTag(t); } return n; } -int FontExtract_DefineFont(int id,SWFFONT * f,TAG * t,SHAPE * * shapes) +int swf_FontExtract_DefineFont(int id,SWFFONT * f,TAG * t,SHAPE * * shapes) { U16 fid; - SaveTagPos(t); - SetTagPos(t,0); + swf_SaveTagPos(t); + swf_SetTagPos(t,0); - fid = GetU16(t); + fid = swf_GetU16(t); if ((!id)||(id==fid)) { U16 ofs[MAX_CHAR_PER_FONT]; int n,i; @@ -69,45 +69,45 @@ int FontExtract_DefineFont(int id,SWFFONT * f,TAG * t,SHAPE * * shapes) id = fid; f->id = fid; - ofs[0] = GetU16(t); + ofs[0] = swf_GetU16(t); n = ofs[0]/2; - for (i=1;iname) free(f->name); f->name = (U8*)malloc(l+1); if (f->name) - { GetBlock(t,f->name,l); + { swf_GetBlock(t,f->name,l); f->name[l] = 0; } else - { RestoreTagPos(t); + { swf_RestoreTagPos(t); return -1; } } - f->flags = GetU8(t); + f->flags = swf_GetU8(t); i = 0; while (shapes[i]) - { U16 code = ((f->flags&FF_WIDECODES)?GetU16(t):GetU8(t))%MAX_CHAR_PER_FONT; + { U16 code = ((f->flags&FF_WIDECODES)?swf_GetU16(t):swf_GetU8(t))%MAX_CHAR_PER_FONT; f->glyph[code].shape = shapes[i]; f->glyph[code].gid = i; @@ -117,14 +117,14 @@ int FontExtract_DefineFontInfo(int id,SWFFONT * f,TAG * t,SHAPE * * shapes) } } - RestoreTagPos(t); + swf_RestoreTagPos(t); return id; } #define FEDTJ_PRINT 0x01 #define FEDTJ_MODIFY 0x02 -int FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs) +int swf_FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs) { U16 cid; SRECT r; MATRIX m; @@ -133,37 +133,37 @@ int FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs) fid = 0; - SaveTagPos(t); - SetTagPos(t,0); + swf_SaveTagPos(t); + swf_SetTagPos(t,0); - cid = GetU16(t); - GetRect(t,&r); - GetMatrix(t,&m); - gbits = GetU8(t); - abits = GetU8(t); + cid = swf_GetU16(t); + swf_GetRect(t,&r); + swf_GetMatrix(t,&m); + gbits = swf_GetU8(t); + abits = swf_GetU8(t); - flags = GetU8(t); + flags = swf_GetU8(t); while(flags) { if (flags&TF_TEXTCONTROL) - { if (flags&TF_HASFONT) fid = GetU16(t); + { if (flags&TF_HASFONT) fid = swf_GetU16(t); if (flags&TF_HASCOLOR) - { GetU8(t); // rgb - GetU8(t); - GetU8(t); - if (GetTagID(t)==ST_DEFINETEXT2) GetU8(t); + { swf_GetU8(t); // rgb + swf_GetU8(t); + swf_GetU8(t); + if (swf_GetTagID(t)==ST_DEFINETEXT2) swf_GetU8(t); } - if (flags&TF_HASXOFFSET) GetS16(t); - if (flags&TF_HASYOFFSET) GetS16(t); - if (flags&TF_HASFONT) GetU16(t); + if (flags&TF_HASXOFFSET) swf_GetS16(t); + if (flags&TF_HASYOFFSET) swf_GetS16(t); + if (flags&TF_HASFONT) swf_GetU16(t); } else { int i; for (i=0;icodes[glyph]; if (jobs&FEDTJ_PRINT) printf("%c",code); @@ -173,14 +173,14 @@ int FontExtract_DefineText(int id,SWFFONT * f,TAG * t,int jobs) } if ((id==fid)&&(jobs&FEDTJ_PRINT)) printf("\n"); } - flags = GetU8(t); + flags = swf_GetU8(t); } - RestoreTagPos(t); + swf_RestoreTagPos(t); return id; } -int FontExtract(SWF * swf,int id,SWFFONT * * font) +int swf_FontExtract(SWF * swf,int id,SWFFONT * * font) { TAG * t; SWFFONT * f; SHAPE * shapes[MAX_CHAR_PER_FONT]; @@ -193,36 +193,36 @@ int FontExtract(SWF * swf,int id,SWFFONT * * font) memset(shapes,0x00,sizeof(shapes)); memset(f,0x00,sizeof(SWFFONT)); - t = swf->FirstTag; + t = swf->firstTag; while (t) { int nid = 0; - switch (GetTagID(t)) + switch (swf_GetTagID(t)) { case ST_DEFINEFONT: - nid = FontExtract_DefineFont(id,f,t,shapes); + nid = swf_FontExtract_DefineFont(id,f,t,shapes); break; case ST_DEFINEFONTINFO: - nid = FontExtract_DefineFontInfo(id,f,t,shapes); + nid = swf_FontExtract_DefineFontInfo(id,f,t,shapes); break; case ST_DEFINETEXT: case ST_DEFINETEXT2: - nid = FontExtract_DefineText(id,f,t,FEDTJ_MODIFY); + nid = swf_FontExtract_DefineText(id,f,t,FEDTJ_MODIFY); break; } if (nid>0) id = nid; - t = NextTag(t); + t = swf_NextTag(t); } return 0; } -int FontIsItalic(SWFFONT * f) { return f->flags&FF_ITALIC; } -int FontIsBold(SWFFONT * f) { return f->flags&FF_BOLD; } +int swf_FontIsItalic(SWFFONT * f) { return f->flags&FF_ITALIC; } +int swf_FontIsBold(SWFFONT * f) { return f->flags&FF_BOLD; } -int FontSetID(SWFFONT * f,U16 id) { if (!f) return -1; f->id = id; return 0; } +int swf_FontSetID(SWFFONT * f,U16 id) { if (!f) return -1; f->id = id; return 0; } -int FontReduce(SWFFONT * f,FONTUSAGE * use) +int swf_FontReduce(SWFFONT * f,FONTUSAGE * use) { int i,j; if ((!f)||(!use)) return -1; @@ -237,7 +237,7 @@ int FontReduce(SWFFONT * f,FONTUSAGE * use) j++; } else - { ShapeFree(f->glyph[i].shape); + { swf_ShapeFree(f->glyph[i].shape); f->glyph[i].shape = 0; f->glyph[i].gid = 0; f->glyph[i].advance = 0; @@ -247,13 +247,13 @@ int FontReduce(SWFFONT * f,FONTUSAGE * use) return j; } -int FontInitUsage(FONTUSAGE * use) +int swf_FontInitUsage(FONTUSAGE * use) { if (!use) return -1; memset(&use->code,0x00,sizeof(use->code)); return 0; } -int FontUse(FONTUSAGE * use,U8 * s) +int swf_FontUse(FONTUSAGE * use,U8 * s) { if ((!use)||(!s)) return -1; while (s[0]) { use->code[s[0]] = 1; @@ -262,49 +262,49 @@ int FontUse(FONTUSAGE * use,U8 * s) return 0; } -int FontSetDefine(TAG * t,SWFFONT * f) +int swf_FontSetDefine(TAG * t,SWFFONT * f) { U16 ofs[MAX_CHAR_PER_FONT]; int p,i,j; if ((!t)||(!f)) return -1; - ResetBitcount(t); - SetU16(t,f->id); + swf_ResetWriteBits(t); + swf_SetU16(t,f->id); p = 0; j = 0; for (i=0;iglyph[i].shape) { ofs[j++] = p; - p+=SetSimpleShape(NULL,f->glyph[i].shape); + p+=swf_SetSimpleShape(NULL,f->glyph[i].shape); } - for (i=0;iglyph[i].shape) - SetSimpleShape(t,f->glyph[i].shape); + swf_SetSimpleShape(t,f->glyph[i].shape); - ResetBitcount(t); + swf_ResetWriteBits(t); return 0; } -int FontSetInfo(TAG * t,SWFFONT * f) +int swf_FontSetInfo(TAG * t,SWFFONT * f) { int l,i; if ((!t)||(!f)) return -1; - ResetBitcount(t); - SetU16(t,f->id); + swf_ResetWriteBits(t); + swf_SetU16(t,f->id); l = strlen(f->name); if (l>255) l = 255; - SetU8(t,l); - SetBlock(t,f->name,l); - SetU8(t,f->flags&0xfe); // no Wide-Codes + swf_SetU8(t,l); + swf_SetBlock(t,f->name,l); + swf_SetU8(t,f->flags&0xfe); // no Wide-Codes for (i=0;iglyph[i].shape) - SetU8(t,i); + swf_SetU8(t,i); return 0; } -int FontExport(int handle,SWFFONT * f) +int swf_FontExport(int handle,SWFFONT * f) { int l; int i; if (!f) return 0; @@ -335,7 +335,7 @@ int FontExport(int handle,SWFFONT * f) for (i=0;iglyph[i].shape) - { int ll = ShapeExport(handle,f->glyph[i].shape); + { int ll = swf_ShapeExport(handle,f->glyph[i].shape); if (ll<0) return -1; l+=ll; } @@ -344,7 +344,7 @@ int FontExport(int handle,SWFFONT * f) return l; } -int FontImport(int handle,SWFFONT * * font) +int swf_FontImport(int handle,SWFFONT * * font) { SWFFONT * f; int layout; int i = 0; @@ -385,7 +385,7 @@ int FontImport(int handle,SWFFONT * * font) for (i=0;iglyph[i].shape) - { if (ShapeImport(handle,&f->glyph[i].shape)<0) goto fehler; + { if (swf_ShapeImport(handle,&f->glyph[i].shape)<0) goto fehler; } } @@ -395,19 +395,19 @@ int FontImport(int handle,SWFFONT * * font) fehler: if (f) for (;iglyph[i].shape = NULL; - FontFree(f); + swf_FontFree(f); font[0] = NULL; return -1; } -int TextPrintDefineText(TAG * t,SWFFONT * f) -{ int id = GetTagID(t); - if ((id==ST_DEFINETEXT)||(id==ST_DEFINETEXT2)) FontExtract_DefineText(f->id,f,t,FEDTJ_PRINT); +int swf_TextPrintDefineText(TAG * t,SWFFONT * f) +{ int id = swf_GetTagID(t); + if ((id==ST_DEFINETEXT)||(id==ST_DEFINETEXT2)) swf_FontExtract_DefineText(f->id,f,t,FEDTJ_PRINT); else return -1; return 0; } -void LayoutFree(SWFLAYOUT * l) +void swf_LayoutFree(SWFLAYOUT * l) { if (l) { if (l->kerning.data) free(l->kerning.data); l->kerning.data = NULL; @@ -415,52 +415,52 @@ void LayoutFree(SWFLAYOUT * l) free(l); } -void FontFree(SWFFONT * f) +void swf_FontFree(SWFFONT * f) { if (f) { int i; if (f->name) free(f->name); - if (f->layout) LayoutFree(f->layout); + if (f->layout) swf_LayoutFree(f->layout); f->name = NULL; f->layout = NULL; for (i=0;iglyph[i].shape) - { ShapeFree(f->glyph[i].shape); + { swf_ShapeFree(f->glyph[i].shape); f->glyph[i].shape = NULL; } } free(f); } -int TextSetInfoRecord(TAG * t,SWFFONT * font,U16 size,RGBA * color,S16 dx,S16 dy) +int swf_TextSetInfoRecord(TAG * t,SWFFONT * font,U16 size,RGBA * color,S16 dx,S16 dy) { 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); - SetU8(t,flags); - if (font) SetU16(t,font->id); + swf_SetU8(t,flags); + if (font) swf_SetU16(t,font->id); if (color) - { if (GetTagID(t)==ST_DEFINETEXT2) SetRGBA(t,color); - else SetRGB(t,color); + { if (swf_GetTagID(t)==ST_DEFINETEXT2) swf_SetRGBA(t,color); + else swf_SetRGB(t,color); } - if (dx) SetS16(t,dx); - if (dy) SetS16(t,dy); - if (font) SetU16(t,size); + if (dx) swf_SetS16(t,dx); + if (dy) swf_SetS16(t,dy); + if (font) swf_SetU16(t,size); return 0; } -int TextCountBits(SWFFONT * font,U8 * s,int scale,U8 * gbits,U8 * abits) +int swf_TextCountBits(SWFFONT * font,U8 * s,int scale,U8 * gbits,U8 * abits) { U16 g,a; if ((!s)||(!font)||((!gbits)&&(!abits))) return -1; g = a = 0; while(s[0]) - { g = CountBits(font->glyph[s[0]].gid,g); - a = CountBits((((U32)font->glyph[s[0]].advance)*scale)/100,a); + { g = swf_CountBits(font->glyph[s[0]].gid,g); + a = swf_CountBits((((U32)font->glyph[s[0]].advance)*scale)/100,a); s++; } @@ -470,25 +470,25 @@ int TextCountBits(SWFFONT * font,U8 * s,int scale,U8 * gbits,U8 * abits) return 0; } -int TextSetCharRecord(TAG * t,SWFFONT * font,U8 * s,int scale,U8 gbits,U8 abits) +int swf_TextSetCharRecord(TAG * t,SWFFONT * font,U8 * s,int scale,U8 gbits,U8 abits) { int l,i; if ((!t)||(!font)||(!s)) return -1; l = strlen(s); if (l>0x7f) l = 0x7f; - SetU8(t,l); + swf_SetU8(t,l); for (i=0;iglyph[s[i]].gid,gbits); - SetBits(t,(((U32)font->glyph[s[i]].advance)*scale)/100,abits); + { swf_SetBits(t,font->glyph[s[i]].gid,gbits); + swf_SetBits(t,(((U32)font->glyph[s[i]].advance)*scale)/100,abits); } - ResetBitcount(t); + swf_ResetWriteBits(t); return 0; } -U32 TextGetWidth(SWFFONT * font,U8 * s,int scale) +U32 swf_TextGetWidth(SWFFONT * font,U8 * s,int scale) { U32 res = 0; if (font&&s) @@ -498,6 +498,5 @@ U32 TextGetWidth(SWFFONT * font,U8 * s,int scale) } if (scale) res = (res*scale)/100; } - return res; }