X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfcombine.c;h=16589b1662ee4c0dbea90106224fd68084a133e5;hb=7f237d6ab33b067711025e6d8f2d77b534dbe722;hp=13ff22429263883826011e5c49c54e9eca7801a3;hpb=2cfbc88cecba80338fe890bbf67d6a2b92275cf7;p=swftools.git diff --git a/src/swfcombine.c b/src/swfcombine.c index 13ff224..16589b1 100644 --- a/src/swfcombine.c +++ b/src/swfcombine.c @@ -161,6 +161,16 @@ int args_callback_option(char*name,char*val) { config.scalex = config.scaley = atoi(val)/100.0; return 1; } + else if (!strcmp(name, "w")) + { + config.scalex = atoi(val)/100.0; + return 1; + } + else if (!strcmp(name, "h")) + { + config.scaley = atoi(val)/100.0; + return 1; + } else if (!strcmp(name, "t") || !strcmp(name, "T")) { if(master_filename) { @@ -687,7 +697,7 @@ TAG* write_master(TAG*tag, SWF*master, SWF*slave, int spriteid, int replaceddefi } if(tag_ok_for_slave(stag->id)) { tag = swf_InsertTag(tag, stag->id); - swf_SetBlock(tag, stag->data, stag->len); + write_changepos(tag, stag, config.movex, config.movey, config.scalex, config.scaley, 0); } stag = stag->next; } @@ -718,17 +728,19 @@ TAG* write_master(TAG*tag, SWF*master, SWF*slave, int spriteid, int replaceddefi swf_SetDefineID(tag, replaceddefine); } else { /* don't write this tag */ - msg(" replacing tag %d id %d with sprite", rtag->id - ,spriteid); + msg(" replacing tag %d ID %d with sprite", rtag->id ,spriteid); } if(flags&FLAGS_WRITESPRITE) { + msg(" writing sprite defines"); tag = write_sprite_defines(tag, slave); + msg(" writing sprite"); tag = write_sprite(tag, slave, spriteid, replaceddefine); } if(flags&FLAGS_WRITESLAVE) { + msg(" writing slave"); outputslave = 1; } } else { @@ -797,8 +809,9 @@ TAG* write_master(TAG*tag, SWF*master, SWF*slave, int spriteid, int replaceddefi while(stag && stag->id!=ST_END) { if(tag_ok_for_slave(stag->id)) { + msg(" [slave] write tag %02x (%d bytes in body), %.2f %.2f", rtag->id, rtag->len, config.movex /20.0, config.movey /20.0); tag = swf_InsertTag(tag, stag->id); - swf_SetBlock(tag, stag->data, stag->len); + write_changepos(tag, stag, config.movex, config.movey, config.scalex, config.scaley, 0); } stag = stag->next; } @@ -955,6 +968,15 @@ void normalcombine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) char * name = swf_GetName(tag); int id = swf_GetPlaceID(tag); + { + SWFPLACEOBJECT obj; + swf_GetPlaceObject(tag, &obj); + swf_PlaceObjectFree(&obj); + if(obj.clipdepth) { + depthbitmap[obj.clipdepth] = 1; + } + } + if(name) msg(" tagid %02x places object %d named \"%s\"", tag->id, id, name); else @@ -1034,6 +1056,9 @@ void combine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) slaveid = -1; slaveframe = -1; + if(!master->fileVersion && slave) + master->fileVersion = slave->fileVersion; + swf_FoldAll(master); swf_FoldAll(slave); @@ -1045,16 +1070,19 @@ void combine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) if(config.isframe) { - int tmp; - if(slavename && slavename[0]!='#' && (sscanf(slavename, "%d", &tmp) == - strlen(slavename))) { - /* if the name the slave should replace - consists only of digits and the -f - option is given, it probably is not - a frame name but a frame number. - */ - slaveid = tmp; - slavename = 0; + if(slavename && slavename[0]!='#') { + int tmp; + int len; + sscanf(slavename, "%d%n", &tmp, &len); + if(len == strlen(slavename)) { + /* if the name the slave should replace + consists only of digits and the -f + option is given, it probably is not + a frame name but a frame number. + */ + slaveid = tmp; + slavename = 0; + } } if(slaveid>=0) { @@ -1125,6 +1153,11 @@ int main(int argn, char *argv[]) msg(" Can't combine --cat and --merge"); exit(1); } + + if(config.stack && config.cat) { + msg(" Can't combine --cat and --stack"); + exit(1); + } if(config.stack) { if(config.overlay) { @@ -1227,7 +1260,7 @@ int main(int argn, char *argv[]) memset(&slave, 0, sizeof(slave)); slave.firstTag = swf_InsertTag(0, ST_END); slave.frameRate = 0; - slave.fileVersion = 4; + slave.fileVersion = 0; slave.frameCount = 0; } @@ -1242,6 +1275,9 @@ int main(int argn, char *argv[]) } } + if(!newswf.fileVersion) + newswf.fileVersion = 4; + fi = open(outputname, O_BINARY|O_RDWR|O_TRUNC|O_CREAT, 0777); if(config.zlib) {