enhanced font dumping information.
[swftools.git] / lib / modules / swfdump.c
1 /* swfdump.c
2
3    Dump / debug functions
4    
5    Extension module for the rfxswf library.
6    Part of the swftools package.
7
8    Copyright (c) 2001 Rainer Böhme <rfxswf@reflex-studio.de>
9  
10    This file is distributed under the GPL, see file COPYING for details 
11
12 */
13
14 void swf_DumpHeader(FILE * f,SWF * swf)
15 { if (!f) f = stderr;
16   fprintf(f,"File size\t%u\n",swf->fileSize);
17   fprintf(f,"Movie width\t%u\n",(swf->movieSize.xmax - swf->movieSize.xmin)/20);
18   fprintf(f,"Movie height\t%u\n",(swf->movieSize.ymax - swf->movieSize.ymin)/20);
19   fprintf(f,"Frame rate\t%u.%u\n",swf->frameRate>>8,swf->frameRate&0xff);
20   fprintf(f,"Frame count\t%u\n",swf->frameCount);
21 }
22
23 void swf_DumpMatrix(FILE * f,MATRIX * m)
24 { if (!f) f = stderr;
25   fprintf(f,"[%08x][%08x]\n",m->sx,m->r1);
26   fprintf(f,"[%08x][%08x]\n",m->r0,m->sy);
27   fprintf(f," %08x, %08x\n",m->tx,m->ty);
28 }
29
30 void swf_DumpTag(FILE * f,TAG * t)
31 { int i;
32   if (!f) f = stderr;
33   for (i=0;i<t->len;i++)
34   { if (!(i&15)) fprintf(f,"\n");
35     fprintf(f,"%02x ",t->data[i]);
36   }
37   fprintf(f,"\n");
38 }
39
40 void swf_DumpFont(SWFFONT * font)
41 {
42     printf("ID: %d\n", font->id);
43     printf("Version: %d\n", font->version);
44     printf("name: %s\n", font->name);
45     printf("characters: %d\n", font->numchars);
46     printf("biggest mapped ascii value: %d\n", font->maxascii);
47     printf("layout: %s\n", font->layout?"yes":"no");
48     if(font->layout)
49     {
50         printf(" ascent:%d\n", font->layout->ascent);
51         printf(" descent:%d\n", font->layout->descent);
52         printf(" leading:%d\n", font->layout->leading);
53         printf(" bounds: (not shown)\n");
54         printf(" kerning records:%d\n", font->layout->kerningcount);
55         printf(" kerning records: (not shown)\n");
56     }
57     printf("style: %d\n", font->style);
58     printf("encoding: %d\n", font->encoding);
59     printf("language: %d\n", font->language);
60 }
61
62 char* swf_TagGetName(TAG*tag)
63 {
64     switch(tag->id)
65     {
66         case ST_END:
67             return "END";
68         case ST_SHOWFRAME:
69             return "SHOWFRAME";
70         case ST_DEFINESHAPE:
71             return "DEFINESHAPE";
72         case ST_FREECHARACTER:
73             return "FREECHARACTER";
74         case ST_PLACEOBJECT:
75             return "PLACEOBJECT";
76         case ST_REMOVEOBJECT:
77             return "REMOVEOBJECT";
78         case ST_DEFINEBITS:
79             return "DEFINEBITS";
80         case ST_DEFINEBUTTON:
81             return "DEFINEBUTTON";
82         case ST_JPEGTABLES:
83             return "JPEGTABLES";
84         case ST_SETBACKGROUNDCOLOR:
85             return "SETBACKGROUNDCOLOR";
86         case ST_DEFINEFONT:
87             return "DEFINEFONT";
88         case ST_DEFINETEXT:
89             return "DEFINETEXT";
90         case ST_DEFINEEDITTEXT:
91             return "DEFINEEDITTEXT";
92         case ST_DOACTION:
93             return "DOACTION";
94         case ST_DEFINEFONTINFO:
95             return "DEFINEFONTINFO";
96         case ST_DEFINESOUND:
97             return "DEFINESOUND";
98         case ST_STARTSOUND:
99             return "STARTSOUND";
100         case ST_DEFINEBUTTONSOUND:
101             return "DEFINEBUTTONSOUND";
102         case ST_SOUNDSTREAMHEAD:
103             return "SOUNDSTREAMHEAD";
104         case ST_SOUNDSTREAMBLOCK:
105             return "SOUNDSTREAMBLOCK";
106         case ST_DEFINEBITSLOSSLESS:
107             return "DEFINEBITSLOSSLESS";
108         case ST_DEFINEBITSJPEG2:
109             return "DEFINEBITSJPEG2";
110         case ST_DEFINESHAPE2:
111             return "DEFINESHAPE2";
112         case ST_DEFINEBUTTONCXFORM:
113             return "DEFINEBUTTONCXFORM";
114         case ST_PROTECT:
115             return "PROTECT";
116         case ST_PLACEOBJECT2:
117             return "PLACEOBJECT2";
118         case ST_REMOVEOBJECT2:
119             return "REMOVEOBJECT2";
120         case ST_DEFINESHAPE3:
121             return "DEFINESHAPE3";
122         case ST_DEFINETEXT2:
123             return "DEFINETEXT2";
124         case ST_DEFINEBUTTON2:
125             return "DEFINEBUTTON2";
126         case ST_DEFINEBITSJPEG3:
127             return "DEFINEBITSJPEG3";
128         case ST_DEFINEBITSLOSSLESS2:
129             return "DEFINEBITSLOSSLESS2";
130         case ST_DEFINESPRITE:
131             return "DEFINESPRITE";
132         case ST_NAMECHARACTER:
133             return "NAMECHARACTER";
134         case ST_SERIALNUMBER:
135             return "SERIALNUMBER";
136         case ST_GENERATORTEXT:
137             return "GENERATORTEXT";
138         case ST_FRAMELABEL:
139             return "FRAMELABEL";
140         case ST_SOUNDSTREAMHEAD2:
141             return "SOUNDSTREAMHEAD2";
142         case ST_DEFINEMORPHSHAPE:
143             return "DEFINEMORPHSHAPE";
144         case ST_DEFINEFONT2:
145             return "DEFINEFONT2";
146         case ST_TEMPLATECOMMAND:
147             return "TEMPLATECOMMAND";
148         case ST_GENERATOR3:
149             return "GENERATOR3";
150         case ST_EXTERNALFONT:
151             return "EXTERNALFONT";
152         case ST_EXPORTASSETS:
153             return "EXPORTASSETS";
154         case ST_IMPORTASSETS:
155             return "IMPORTASSETS";
156         case ST_ENABLEDEBUGGER:
157             return "ENABLEDEBUGGER";
158         case ST_REFLEX:
159             return "REFLEX";
160         case ST_DOINITACTION:
161             return "DOINITACTION";
162         case ST_DEFINEVIDEOSTREAM:
163             return "DEFINEVIDEOSTREAM";
164         case ST_VIDEOFRAME:
165             return "VIDEOFRAME";
166         case ST_DEFINEFONTINFO2:
167             return "DEFINEFONTINFO2";
168         case ST_FREEALL:
169             return "FREEALL";
170         case ST_MX4:
171             return "MX4";
172     }
173     return 0;
174 }