X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfdump.c;h=12c653d04a9584ade0ae9c5843711b8e36b06882;hb=0983af6ba15f2969fa6e0ec068ffe34635ea0c88;hp=852d4abec4559e5dff8fbdc4446a4b796b17e23e;hpb=23c6c9b0eb8b5800d8fcb1a3147e8a09d1bdd31d;p=swftools.git diff --git a/src/swfdump.c b/src/swfdump.c index 852d4ab..12c653d 100644 --- a/src/swfdump.c +++ b/src/swfdump.c @@ -343,12 +343,41 @@ void dumpFont(TAG*tag, char*prefix) swf_Shape2Free(shape); free(shape); } + + /* + not part of the file + + printf("%sencoding table:", prefix, prefix); + char filled0=0, lastfilled=0; + for(t=0;tmaxascii;t++) { + if((t&15)==0) { + printf("\n%s%08x ", prefix, t); + int s; + if(!filled0 && t) { + for(s=t;smaxascii;s++) { + if(font->ascii2glyph[s]>=0) break; + } + if(s>t+32) { + printf("*"); + t = ((s-16)&~15)-1; + continue; + } + } + filled0 = 0; + for(s=t;smaxascii;s++) { + if(font->ascii2glyph[s]>=0) filled0=1; + } + } + printf("%4d ", font->ascii2glyph[t]); + } + printf("\n");*/ + swf_FontFree(font); } -SWF swf; -int fontnum = 0; -SWFFONT**fonts; +static SWF swf; +static int fontnum = 0; +static SWFFONT**fonts; void textcallback(void*self, int*glyphs, int*ypos, int nr, int fontid, int fontsize, int startx, int starty, RGBA*color) { @@ -386,10 +415,24 @@ void textcallback(void*self, int*glyphs, int*ypos, int nr, int fontid, int fonts printf("\n"); } -void handleText(TAG*tag) +void handleText(TAG*tag, char*prefix) { printf("\n"); - swf_ParseDefineText(tag,textcallback, 0); + if(placements) { + swf_SetTagPos(tag, 0); + swf_GetU16(tag); + swf_GetRect(tag, 0); + swf_ResetReadBits(tag); + MATRIX m; + swf_GetMatrix(tag, &m); + printf("%s| Matrix\n",prefix); + printf("%s| %5.3f %5.3f %6.2f\n", prefix, m.sx/65536.0, m.r1/65536.0, m.tx/20.0); + printf("%s| %5.3f %5.3f %6.2f\n", prefix, m.r0/65536.0, m.sy/65536.0, m.ty/20.0); + swf_SetTagPos(tag, 0); + } + if(showtext) { + swf_ParseDefineText(tag,textcallback, 0); + } } void handleDefineSound(TAG*tag) @@ -925,7 +968,7 @@ void dumperror(const char* format, ...) va_list arglist; va_start(arglist, format); - vsprintf(buf, format, arglist); + vsnprintf(buf, sizeof(buf)-1, format, arglist); va_end(arglist); if(!html && !xy) @@ -985,8 +1028,8 @@ int main (int argc,char ** argv) char header[3]; read(f, header, 3); char compressed = (header[0]=='C'); - char isflash = header[0]=='F' && header[1] == 'W' && header[2] == 'S' || - header[0]=='C' && header[1] == 'W' && header[2] == 'S'; + char isflash = (header[0]=='F' && header[1] == 'W' && header[2] == 'S') || + (header[0]=='C' && header[1] == 'W' && header[2] == 'S'); close(f); int fl=strlen(filename); @@ -1047,7 +1090,7 @@ int main (int argc,char ** argv) if(html) { char*fileversions[] = {"","1,0,0,0", "2,0,0,0","3,0,0,0","4,0,0,0", - "5,0,0,0","6,0,23,0","7,0,0,0","8,0,0,0","9,0,0,0","10,0,0,0"}; + "5,0,0,0","6,0,23,0","7,0,0,0","8,0,0,0","9,0,0,0","10,0,0,0", "11,0,0,0", "12,0,0,0"}; if(swf.fileVersion>10) { fprintf(stderr, "Fileversion>10\n"); exit(1); @@ -1072,9 +1115,11 @@ int main (int argc,char ** argv) " \n" " \n" " \n" + " \n" " \n" " \n" "\n", xsize, ysize, fileversions[swf.fileVersion], @@ -1189,17 +1234,19 @@ int main (int argc,char ** argv) else if(tag->id == ST_FILEATTRIBUTES) { swf_SetTagPos(tag, 0); U32 flags = swf_GetU32(tag); - if(flags&1) printf(" usenetwork"); - if(flags&8) printf(" as3"); - if(flags&16) printf(" symbolclass"); - if(flags&~(1|8|16)) + if(flags&FILEATTRIBUTE_USENETWORK) printf(" usenetwork"); + if(flags&FILEATTRIBUTE_AS3) printf(" as3"); + if(flags&FILEATTRIBUTE_SYMBOLCLASS) printf(" symbolclass"); + if(flags&FILEATTRIBUTE_USEHARDWAREGPU) printf(" hardware-gpu"); + if(flags&FILEATTRIBUTE_USEACCELERATEDBLIT) printf(" accelerated-blit"); + if(flags&~(1|8|16|32|64)) printf(" flags=%02x", flags); } else if(tag->id == ST_DOABC) { swf_SetTagPos(tag, 0); U32 flags = swf_GetU32(tag); char*s = swf_GetString(tag); - if(flags) { + if(flags&~1) { printf(" flags=%08x", flags); } if(*s) { @@ -1330,10 +1377,7 @@ int main (int argc,char ** argv) printf(" URL: %s\n", s); } else if(tag->id == ST_DEFINETEXT || tag->id == ST_DEFINETEXT2) { - if(showtext) - handleText(tag); - else - printf("\n"); + handleText(tag, myprefix); } else if(tag->id == ST_DEFINESCALINGGRID) { U16 id = swf_GetU16(tag);