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" - " \n" - " \n" - " \n" - " \n" - " \n" - " \n" - "\n", xsize, ysize, fileversions[swf.fileVersion], - filename, filename, xsize, ysize); + + if(xhtml) { + printf("\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n\n", filename, xsize, ysize, filename); + } else { + printf("\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\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);