X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfdump.c;h=c69d28f2bc35fc4ca9ef892edb9610b26e4dcc35;hb=9d1556507170bc827fca8ebbaa27862c978c6c33;hp=051b8a20a12ff8c866b38e8a598f1ea0fa4a89b9;hpb=458c53f3b2fe6e6ae3f106084f536701a94dccbf;p=swftools.git
diff --git a/src/swfdump.c b/src/swfdump.c
index 051b8a2..c69d28f 100644
--- a/src/swfdump.c
+++ b/src/swfdump.c
@@ -51,6 +51,7 @@ static char * indent = " ";
static int placements = 0;
static int action = 0;
static int html = 0;
+static int xhtml = 0;
static int xy = 0;
static int showtext = 0;
static int showshapes = 0;
@@ -63,6 +64,7 @@ static struct options_t options[] = {
{"D", "full"},
{"V", "version"},
{"e", "html"},
+{"E", "xhtml"},
{"a", "action"},
{"t", "text"},
{"s", "shapes"},
@@ -103,6 +105,11 @@ int args_callback_option(char*name,char*val)
html = 1;
return 0;
}
+ else if(name[0]=='E') {
+ html = 1;
+ xhtml = 1;
+ return 0;
+ }
else if(name[0]=='X') {
xy |= 1;
return 0;
@@ -456,11 +463,13 @@ void handleVideoFrame(TAG*tag, char*prefix)
void handlePlaceObject2(TAG*tag, char*prefix)
{
- U8 flags = swf_GetU8(tag);
+ U8 flags;
MATRIX m;
CXFORM cx;
char pstr[3][160];
int ppos[3] = {0,0,0};
+ swf_SetTagPos(tag, 0);
+ flags = swf_GetU8(tag);
swf_GetU16(tag); //depth
//flags&1: move
@@ -551,16 +560,19 @@ void handlePlaceObject2(TAG*tag, char*prefix)
void handlePlaceObject(TAG*tag, char*prefix)
{
TAG*tag2 = swf_InsertTag(0, ST_PLACEOBJECT2);
-
- U16 id = swf_GetU16(tag);
- U16 depth = swf_GetU16(tag);
+ U16 id, depth;
MATRIX matrix;
CXFORM cxform;
+
+ swf_SetTagPos(tag, 0);
+ id = swf_GetU16(tag);
+ depth = swf_GetU16(tag);
swf_GetMatrix(tag, &matrix);
swf_GetCXForm(tag, &cxform, 0);
- swf_SetU8(tag2, 14);
+ swf_SetU8(tag2, 14 /* char, matrix, cxform */);
swf_SetU16(tag2, depth);
+ swf_SetU16(tag2, id);
swf_SetMatrix(tag2, &matrix);
swf_SetCXForm(tag2, &cxform, 1);
@@ -816,23 +828,34 @@ int main (int argc,char ** argv)
fprintf(stderr, "Fileversion>9\n");
exit(1);
}
- printf("\n", xsize, ysize, fileversions[swf.fileVersion],
- filename, filename, xsize, ysize);
+
+ if(xhtml) {
+ printf("\n\n", filename, xsize, ysize, filename);
+ } else {
+ printf("\n", xsize, ysize, fileversions[swf.fileVersion],
+ filename, filename, xsize, ysize);
+ }
return 0;
}
printf("[HEADER] File version: %d\n", swf.fileVersion);
@@ -916,7 +939,8 @@ int main (int argc,char ** argv)
printf(" object");
printf(" at depth %04d", swf_GetDepth(tag));
-
+
+ swf_SetTagPos(tag, 0);
if(tag->data[0]&64) {
SWFPLACEOBJECT po;
swf_GetPlaceObject(tag, &po);