X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfdump.c;h=294a3f24d836b2a2eab843fee267346451dcc10d;hb=e6db36c966ebae578e1f6cbcaefe5b72206fc996;hp=1f038a67245e55f05c43aa4bca37d71455e5ef2f;hpb=e284a69d156751b38ac92e6eb561942c7a8602ed;p=swftools.git diff --git a/src/swfdump.c b/src/swfdump.c index 1f038a6..294a3f2 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,15 +64,16 @@ static struct options_t options[] = { {"D", "full"}, {"V", "version"}, {"e", "html"}, +{"E", "xhtml"}, {"a", "action"}, {"t", "text"}, {"s", "shapes"}, {"p", "placements"}, +{"b", "bbox"}, {"X", "width"}, {"Y", "height"}, {"r", "rate"}, {"f", "frames"}, -{"b", "bbox"}, {"d", "hex"}, {"u", "used"}, {0,0} @@ -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; @@ -159,6 +166,7 @@ void args_callback_usage(char *name) printf("-t , --text Show text fields (like swfstrings).\n"); printf("-s , --shapes Show shape coordinates/styles\n"); printf("-p , --placements Show placement information\n"); + printf("-b , --bbox Print tag's bounding boxes\n"); printf("-X , --width Prints out a string of the form \"-X width\".\n"); printf("-Y , --height Prints out a string of the form \"-Y height\".\n"); printf("-r , --rate Prints out a string of the form \"-r rate\".\n"); @@ -815,23 +823,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); @@ -915,8 +934,16 @@ int main (int argc,char ** argv) printf(" object"); printf(" at depth %04d", swf_GetDepth(tag)); + + if(tag->data[0]&64) { + SWFPLACEOBJECT po; + swf_GetPlaceObject(tag, &po); + printf(" (clip to %04d)", po.clipdepth); + swf_PlaceObjectFree(&po); + } if(swf_GetName(tag)) printf(" name \"%s\"",swf_GetName(tag)); + } else if(tag->id == ST_REMOVEOBJECT) { printf(" removes id %04d from depth %04d", swf_GetPlaceID(tag), swf_GetDepth(tag));