X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfbbox.c;h=ecb83e30ab34078dd3c5e6ee3cc626187ccc462e;hb=3cd41fca50349a2e03d5bca74fc5b38d76a4238a;hp=52296f81ba5e923a7a458d4e90dc14434a98b78f;hpb=8abfd308ae4bb43437e79e716b58d54e66f254f9;p=swftools.git diff --git a/src/swfbbox.c b/src/swfbbox.c index 52296f8..ecb83e3 100644 --- a/src/swfbbox.c +++ b/src/swfbbox.c @@ -46,9 +46,9 @@ static struct options_t options[] = { {"e", "expand"}, {"O", "optimize"}, {"S", "swifty"}, +{"c", "clip"}, {"o", "output"}, {"v", "verbose"}, -{"c", "clip"}, {"V", "version"}, {0,0} }; @@ -89,7 +89,8 @@ int args_callback_option(char*name,char*val) return 0; } else if(!strcmp(name, "q")) { - verbose --; + if(verbose) + verbose --; return 0; } else if(!strcmp(name, "e")) { @@ -122,6 +123,7 @@ void args_callback_usage(char *name) printf("-e , --expand Write out a new file using the recalculated bounding box\n"); printf("-O , --optimize Recalculate bounding boxes\n"); printf("-S , --swifty Print out transformed bounding boxes\n"); + printf("-c , --clip Clip bounding boxes to movie size\n"); printf("-o , --output Set output filename to (for -O)\n"); printf("-v , --verbose Be more verbose\n"); printf("-V , --version Print program version and exit\n"); @@ -232,8 +234,9 @@ static placement_t* readPlacements(SWF*swf) while(tag) { if(tag->id == ST_PLACEOBJECT || tag->id == ST_PLACEOBJECT2) { SWFPLACEOBJECT*po = rfx_alloc(sizeof(SWFPLACEOBJECT)); + int id; swf_GetPlaceObject(tag, po); - int id = po->id; + id = po->id; if(po->move) { fprintf(stderr, "MOVE tags not supported with -c"); } @@ -291,8 +294,10 @@ static SRECT clipBBox(TAG*tag, SRECT mbbox, SRECT r) return r; } - printf("ID %d\n", id); - swf_DumpMatrix(stdout, &m); + if(verbose) { + printf("ID %d\n", id); + swf_DumpMatrix(stdout, &m); + } mbbox.xmin -= m.tx; mbbox.ymin -= m.ty; mbbox.xmax -= m.tx; @@ -301,25 +306,29 @@ static SRECT clipBBox(TAG*tag, SRECT mbbox, SRECT r) mbbox.xmax *= 65536.0/m.sx; mbbox.ymin *= 65536.0/m.sy; mbbox.ymax *= 65536.0/m.sy; - - printf("border: %f/%f/%f/%f - rect: %f/%f/%f/%f\n", - mbbox.xmin /20.0, - mbbox.ymin /20.0, - mbbox.xmax /20.0, - mbbox.ymax /20.0, - r.xmin /20.0, - r.ymin /20.0, - r.xmax /20.0, - r.ymax /20.0); + + if(verbose) { + printf("border: %f/%f/%f/%f - rect: %f/%f/%f/%f\n", + mbbox.xmin /20.0, + mbbox.ymin /20.0, + mbbox.xmax /20.0, + mbbox.ymax /20.0, + r.xmin /20.0, + r.ymin /20.0, + r.xmax /20.0, + r.ymax /20.0); + } r = swf_ClipRect(mbbox, r); - - printf("new rect: %f/%f/%f/%f\n", - r.xmin /20.0, - r.ymin /20.0, - r.xmax /20.0, - r.ymax /20.0); + + if(verbose) { + printf("new rect: %f/%f/%f/%f\n", + r.xmin /20.0, + r.ymin /20.0, + r.xmax /20.0, + r.ymax /20.0); + } return r; } @@ -354,7 +363,7 @@ static void textcallback(void*self, int*chars, int*xpos, int nr, int fontid, int /* not tested yet- the matrix/fontsize calculation is probably all wrong */ int x = xstart + xpos[t]; int y = ystart; - int ch; + int ch = 0; SRECT newglyphbbox, glyphbbox = font->layout->bounds[chars[t]]; MATRIX m = bounds->m; SPOINT p;