-/* swfdump.c\r
-\r
- Dump / debug functions\r
- \r
- Extension module for the rfxswf library.\r
- Part of the swftools package.\r
-\r
- Copyright (c) 2001 Rainer Böhme <rfxswf@reflex-studio.de>\r
- \r
- This file is distributed under the GPL, see file COPYING for details \r
-\r
-*/\r
-\r
-void DumpHeader(FILE * f,LPSWF swf)\r
-{ if (!f) f = stderr;\r
- fprintf(f,"File size\t%u\n",swf->FileSize);\r
- fprintf(f,"Movie width\t%u\n",(swf->MovieSize.xmax - swf->MovieSize.xmin)/20);\r
- fprintf(f,"Movie height\t%u\n",(swf->MovieSize.ymax - swf->MovieSize.ymin)/20);\r
- fprintf(f,"Frame rate\t%u.%u\n",swf->FrameRate>>8,swf->FrameRate&0xff);\r
- fprintf(f,"Frame count\t%u\n",swf->FrameCount);\r
-}\r
-\r
-void DumpMatrix(FILE * f,LPMATRIX m)\r
-{ if (!f) f = stderr;\r
- fprintf(f,"[%08x][%08x]\n",m->sx,m->r1);\r
- fprintf(f,"[%08x][%08x]\n",m->r0,m->sy);\r
- fprintf(f," %08x, %08x\n",m->tx,m->ty);\r
-}\r
-\r
-void DumpTag(FILE * f,LPTAG t)\r
-{ int i;\r
- if (!f) f = stderr;\r
- for (i=0;i<t->len;i++)\r
- { if (!(i&15)) fprintf(f,"\n");\r
- fprintf(f,"%02x ",t->data[i]);\r
- }\r
- fprintf(f,"\n");\r
-}\r
-\r
-char* getTagName(TAG*tag)\r
-{\r
- switch(tag->id)\r
- {\r
- case ST_END:\r
- return "END";\r
- case ST_SHOWFRAME:\r
- return "SHOWFRAME";\r
- case ST_DEFINESHAPE:\r
- return "DEFINESHAPE";\r
- case ST_FREECHARACTER:\r
- return "FREECHARACTER";\r
- case ST_PLACEOBJECT:\r
- return "PLACEOBJECT";\r
- case ST_REMOVEOBJECT:\r
- return "REMOVEOBJECT";\r
- case ST_DEFINEBITS:\r
- return "DEFINEBITS";\r
- case ST_DEFINEBUTTON:\r
- return "DEFINEBUTTON";\r
- case ST_JPEGTABLES:\r
- return "JPEGTABLES";\r
- case ST_SETBACKGROUNDCOLOR:\r
- return "SETBACKGROUNDCOLOR";\r
- case ST_DEFINEFONT:\r
- return "DEFINEFONT";\r
- case ST_DEFINETEXT:\r
- return "DEFINETEXT";\r
- case ST_DOACTION:\r
- return "DOACTION";\r
- case ST_DEFINEFONTINFO:\r
- return "DEFINEFONTINFO";\r
- case ST_DEFINESOUND:\r
- return "DEFINESOUND";\r
- case ST_STARTSOUND:\r
- return "STARTSOUND";\r
- case ST_DEFINEBUTTONSOUND:\r
- return "DEFINEBUTTONSOUND";\r
- case ST_SOUNDSTREAMHEAD:\r
- return "SOUNDSTREAMHEAD";\r
- case ST_SOUNDSTREAMBLOCK:\r
- return "SOUNDSTREAMBLOCK";\r
- case ST_DEFINEBITSLOSSLESS:\r
- return "DEFINEBITSLOSSLESS";\r
- case ST_DEFINEBITSJPEG2:\r
- return "DEFINEBITSJPEG2";\r
- case ST_DEFINESHAPE2:\r
- return "DEFINESHAPE2";\r
- case ST_DEFINEBUTTONCXFORM:\r
- return "DEFINEBUTTONCXFORM";\r
- case ST_PROTECT:\r
- return "PROTECT";\r
- case ST_PLACEOBJECT2:\r
- return "PLACEOBJECT2";\r
- case ST_REMOVEOBJECT2:\r
- return "REMOVEOBJECT2";\r
- case ST_DEFINESHAPE3:\r
- return "DEFINESHAPE3";\r
- case ST_DEFINETEXT2:\r
- return "DEFINETEXT2";\r
- case ST_DEFINEBUTTON2:\r
- return "DEFINEBUTTON2";\r
- case ST_DEFINEBITSJPEG3:\r
- return "DEFINEBITSJPEG3";\r
- case ST_DEFINEBITSLOSSLESS2:\r
- return "DEFINEBITSLOSSLESS2";\r
- case ST_DEFINESPRITE:\r
- return "DEFINESPRITE";\r
- case ST_NAMECHARACTER:\r
- return "NAMECHARACTER";\r
- case ST_SERIALNUMBER:\r
- return "SERIALNUMBER";\r
- case ST_GENERATORTEXT:\r
- return "GENERATORTEXT";\r
- case ST_FRAMELABEL:\r
- return "FRAMELABEL";\r
- case ST_SOUNDSTREAMHEAD2:\r
- return "SOUNDSTREAMHEAD2";\r
- case ST_DEFINEMORPHSHAPE:\r
- return "DEFINEMORPHSHAPE";\r
- case ST_DEFINEFONT2:\r
- return "DEFINEFONT2";\r
- case ST_TEMPLATECOMMAND:\r
- return "TEMPLATECOMMAND";\r
- case ST_GENERATOR3:\r
- return "GENERATOR3";\r
- case ST_EXTERNALFONT:\r
- return "EXTERNALFONT";\r
- case ST_REFLEX:\r
- return "REFLEX";\r
- }\r
-}\r
+/* swfdump.c
+
+ Dump / debug functions
+
+ Extension module for the rfxswf library.
+ Part of the swftools package.
+
+ Copyright (c) 2001 Rainer Böhme <rfxswf@reflex-studio.de>
+
+ This file is distributed under the GPL, see file COPYING for details
+
+*/
+
+void swf_DumpHeader(FILE * f,SWF * swf)
+{ if (!f) f = stderr;
+ fprintf(f,"File size\t%u\n",swf->fileSize);
+ fprintf(f,"Movie width\t%u\n",(swf->movieSize.xmax - swf->movieSize.xmin)/20);
+ fprintf(f,"Movie height\t%u\n",(swf->movieSize.ymax - swf->movieSize.ymin)/20);
+ fprintf(f,"Frame rate\t%u.%u\n",swf->frameRate>>8,swf->frameRate&0xff);
+ fprintf(f,"Frame count\t%u\n",swf->frameCount);
+}
+
+void swf_DumpMatrix(FILE * f,MATRIX * m)
+{ if (!f) f = stderr;
+ fprintf(f,"[%08x][%08x]\n",m->sx,m->r1);
+ fprintf(f,"[%08x][%08x]\n",m->r0,m->sy);
+ fprintf(f," %08x, %08x\n",m->tx,m->ty);
+}
+
+void swf_DumpTag(FILE * f,TAG * t)
+{ int i;
+ if (!f) f = stderr;
+ for (i=0;i<t->len;i++)
+ { if (!(i&15)) fprintf(f,"\n");
+ fprintf(f,"%02x ",t->data[i]);
+ }
+ fprintf(f,"\n");
+}
+
+void swf_DumpFont(SWFFONT * font)
+{
+ printf("ID: %d\n", font->id);
+ printf("Version: %d\n", font->version);
+ printf("name: %s\n", font->name);
+ printf("characters: %d\n", font->numchars);
+ printf("layout: %s\n", font->layout?"yes":"no");
+ if(font->layout)
+ {
+ printf(" ascent:%d\n", font->layout->ascent);
+ printf(" descent:%d\n", font->layout->descent);
+ printf(" leading:%d\n", font->layout->leading);
+ printf(" bounds: (not shown)\n");
+ printf(" kerning records:%d\n", font->layout->kerningcount);
+ printf(" kerning records: (not shown)\n");
+ }
+}
+
+char* swf_TagGetName(TAG*tag)
+{
+ switch(tag->id)
+ {
+ case ST_END:
+ return "END";
+ case ST_SHOWFRAME:
+ return "SHOWFRAME";
+ case ST_DEFINESHAPE:
+ return "DEFINESHAPE";
+ case ST_FREECHARACTER:
+ return "FREECHARACTER";
+ case ST_PLACEOBJECT:
+ return "PLACEOBJECT";
+ case ST_REMOVEOBJECT:
+ return "REMOVEOBJECT";
+ case ST_DEFINEBITS:
+ return "DEFINEBITS";
+ case ST_DEFINEBUTTON:
+ return "DEFINEBUTTON";
+ case ST_JPEGTABLES:
+ return "JPEGTABLES";
+ case ST_SETBACKGROUNDCOLOR:
+ return "SETBACKGROUNDCOLOR";
+ case ST_DEFINEFONT:
+ return "DEFINEFONT";
+ case ST_DEFINETEXT:
+ return "DEFINETEXT";
+ case ST_DEFINEEDITTEXT:
+ return "DEFINEEDITTEXT";
+ case ST_DOACTION:
+ return "DOACTION";
+ case ST_DEFINEFONTINFO:
+ return "DEFINEFONTINFO";
+ case ST_DEFINESOUND:
+ return "DEFINESOUND";
+ case ST_STARTSOUND:
+ return "STARTSOUND";
+ case ST_DEFINEBUTTONSOUND:
+ return "DEFINEBUTTONSOUND";
+ case ST_SOUNDSTREAMHEAD:
+ return "SOUNDSTREAMHEAD";
+ case ST_SOUNDSTREAMBLOCK:
+ return "SOUNDSTREAMBLOCK";
+ case ST_DEFINEBITSLOSSLESS:
+ return "DEFINEBITSLOSSLESS";
+ case ST_DEFINEBITSJPEG2:
+ return "DEFINEBITSJPEG2";
+ case ST_DEFINESHAPE2:
+ return "DEFINESHAPE2";
+ case ST_DEFINEBUTTONCXFORM:
+ return "DEFINEBUTTONCXFORM";
+ case ST_PROTECT:
+ return "PROTECT";
+ case ST_PLACEOBJECT2:
+ return "PLACEOBJECT2";
+ case ST_REMOVEOBJECT2:
+ return "REMOVEOBJECT2";
+ case ST_DEFINESHAPE3:
+ return "DEFINESHAPE3";
+ case ST_DEFINETEXT2:
+ return "DEFINETEXT2";
+ case ST_DEFINEBUTTON2:
+ return "DEFINEBUTTON2";
+ case ST_DEFINEBITSJPEG3:
+ return "DEFINEBITSJPEG3";
+ case ST_DEFINEBITSLOSSLESS2:
+ return "DEFINEBITSLOSSLESS2";
+ case ST_DEFINESPRITE:
+ return "DEFINESPRITE";
+ case ST_NAMECHARACTER:
+ return "NAMECHARACTER";
+ case ST_SERIALNUMBER:
+ return "SERIALNUMBER";
+ case ST_GENERATORTEXT:
+ return "GENERATORTEXT";
+ case ST_FRAMELABEL:
+ return "FRAMELABEL";
+ case ST_SOUNDSTREAMHEAD2:
+ return "SOUNDSTREAMHEAD2";
+ case ST_DEFINEMORPHSHAPE:
+ return "DEFINEMORPHSHAPE";
+ case ST_DEFINEFONT2:
+ return "DEFINEFONT2";
+ case ST_TEMPLATECOMMAND:
+ return "TEMPLATECOMMAND";
+ case ST_GENERATOR3:
+ return "GENERATOR3";
+ case ST_EXTERNALFONT:
+ return "EXTERNALFONT";
+ case ST_EXPORTASSETS:
+ return "EXPORTASSETS";
+ case ST_IMPORTASSETS:
+ return "IMPORTASSETS";
+ case ST_ENABLEDEBUGGER:
+ return "ENABLEDEBUGGER";
+ case ST_REFLEX:
+ return "REFLEX";
+ case ST_DOINITACTION:
+ return "DOINITACTION";
+ case ST_DEFINEVIDEOSTREAM:
+ return "DEFINEVIDEOSTREAM";
+ case ST_VIDEOFRAME:
+ return "VIDEOFRAME";
+ case ST_DEFINEFONTINFO2:
+ return "DEFINEFONTINFO2";
+ case ST_FREEALL:
+ return "FREEALL";
+ case ST_MX4:
+ return "MX4";
+ }
+ return 0;
+}