X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfdump.c;h=eb6b32b90a80ff4171ed57e2a21ceb1bc2489f9f;hb=b393b0a6f5fc9266369a4913f7453ef347f2a7ad;hp=d17a94a8d3324cbb3d9d3cd03d2b377410e90be1;hpb=706eaa27c94e5ebd9912ffadeeaa0e4656e10bc3;p=swftools.git diff --git a/src/swfdump.c b/src/swfdump.c index d17a94a..eb6b32b 100644 --- a/src/swfdump.c +++ b/src/swfdump.c @@ -473,6 +473,48 @@ void handleVideoFrame(TAG*tag, char*prefix) printf(" quant: %d ", quantizer); } +void dumpFilter(FILTER*filter) +{ + if(filter->type == FILTERTYPE_BLUR) { + FILTER_BLUR*f = (FILTER_BLUR*)filter; + printf("blurx: %f blury: %f\n", f->blurx, f->blury); + printf("passes: %d\n", f->passes); + } if(filter->type == FILTERTYPE_DROPSHADOW) { + FILTER_DROPSHADOW*f = (FILTER_DROPSHADOW*)filter; + printf("blurx: %f blury: %f\n", f->blurx, f->blury); + printf("passes: %d\n", f->passes); + printf("angle: %f distance: %f\n", f->angle, f->distance); + printf("strength: %f passes: %d\n", f->strength, f->passes); + printf("flags: %s%s%s\n", + f->knockout?"knockout ":"", + f->composite?"composite ":"", + f->innershadow?"innershadow ":""); + } if(filter->type == FILTERTYPE_BEVEL) { + FILTER_BEVEL*f = (FILTER_BEVEL*)filter; + printf("blurx: %f blury: %f\n", f->blurx, f->blury); + printf("passes: %d\n", f->passes); + printf("angle: %f distance: %f\n", f->angle, f->distance); + printf("strength: %f passes: %d\n", f->strength, f->passes); + printf("flags: %s%s%s%s\n", + f->ontop?"ontop":"", + f->knockout?"knockout ":"", + f->composite?"composite ":"", + f->innershadow?"innershadow ":""); + } if(filter->type == FILTERTYPE_GRADIENTGLOW) { + FILTER_GRADIENTGLOW*f = (FILTER_GRADIENTGLOW*)filter; + swf_DumpGradient(stdout, f->gradient); + printf("blurx: %f blury: %f\n", f->blurx, f->blury); + printf("angle: %f distance: %f\n", f->angle, f->distance); + printf("strength: %f passes: %d\n", f->strength, f->passes); + printf("flags: %s%s%s%s\n", + f->knockout?"knockout ":"", + f->ontop?"ontop ":"", + f->composite?"composite ":"", + f->innershadow?"innershadow ":""); + } + rfx_free(filter); +} + void handlePlaceObject23(TAG*tag, char*prefix) { U8 flags,flags2=0; @@ -524,12 +566,20 @@ void handlePlaceObject23(TAG*tag, char*prefix) if(flags2&1) { // filter list U8 num = swf_GetU8(tag); - printf("%d filters\n"); + if(placements) + printf("\n%d filters\n", num); char*filtername[] = {"dropshadow","blur","glow","bevel","gradientglow","convolution","colormatrix","gradientbevel"}; - for(;num;num--) { - U8 type = swf_GetU8(tag); - printf("filter %d: %02x (%s)\n", type, typetype, (filter->typetype]:"?"); + dumpFilter(filter); + } } } if(flags2&2) { // blend mode @@ -628,7 +678,7 @@ char* fillstyle2str(FILLSTYLE*style) case 0x00: sprintf(stylebuf, "SOLID %02x%02x%02x%02x", style->color.r, style->color.g, style->color.b, style->color.a); break; - case 0x10: case 0x12: + case 0x10: case 0x11: case 0x12: case 0x13: sprintf(stylebuf, "GRADIENT (%d steps)", style->gradient.num); break; case 0x40: case 0x42: @@ -989,7 +1039,7 @@ int main (int argc,char ** argv) printf(" at depth %04d", swf_GetDepth(tag)); - if(tag->data[1]&4) + if(tag->id == ST_PLACEOBJECT3 && tag->data[1]&4) printf(" as bitmap"); swf_SetTagPos(tag, 0); @@ -1085,6 +1135,26 @@ int main (int argc,char ** argv) printf("\n"); } } + else if(tag->id == ST_CSMTEXTSETTINGS) { + U16 id = swf_GetU16(tag); + U8 flags = swf_GetU8(tag); + printf(" ("); + if(flags&0x40) { + printf("flashtype,"); + } + switch(((flags>>3)&7)) { + case 0:printf("no grid,");break; + case 1:printf("pixel grid,");break; + case 2:printf("subpixel grid,");break; + case 3:printf("unknown grid,");break; + } + if(flags&0x87) + printf("unknown[%08x],", flags); + float thickness = swf_GetFixed(tag); + float sharpness = swf_GetFixed(tag); + printf("s=%.2f,t=%.2f)\n", thickness, sharpness); + swf_GetU8(tag); + } else if(tag->id == ST_DEFINEBITSLOSSLESS || tag->id == ST_DEFINEBITSLOSSLESS2) { handleDefineBits(tag);