X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfcombine.c;h=6fcbe64ceab7382ec567615dbbb605683870eec4;hb=6b92e9496d0ed61b9619565ac0888bd0e3522ae2;hp=403419df80d542e7546b498aec287f99066849ec;hpb=435afb74a9aedfe10a49f0a181833705c9cbcf82;p=swftools.git diff --git a/src/swfcombine.c b/src/swfcombine.c index 403419d..6fcbe64 100644 --- a/src/swfcombine.c +++ b/src/swfcombine.c @@ -288,7 +288,7 @@ static void makestackmaster(SWF*swf) TAG*tag; int t; SRECT box; - int fileversion = 1; + int fileversion = config.zlib?6:3; int frameRate = 256; RGBA rgb; rgb.r=rgb.b=rgb.g=0; @@ -480,13 +480,19 @@ TAG* write_sprite_defines(TAG*tag, SWF*sprite) case ST_SETBACKGROUNDCOLOR: msg(" deliberately ignoring BACKGROUNDCOLOR tag"); break; + case ST_SHOWFRAME: + msg(" deliberately ignoring SHOWFRAME tag"); + break; + case ST_REFLEX: + msg(" deliberately ignoring REFLEX tag"); + break; case 40: case 49: case 51: - msg(" found tag %d. This is a Generator template, isn't it?", tag->id); + msg(" found tag %d. This is a Generator template, isn't it?", rtag->id); break; default: - msg(" funny tag: %d is neither defining nor sprite", tag->id); + msg(" funny tag: %d is neither defining nor sprite", rtag->id); } } } @@ -663,6 +669,7 @@ TAG* write_master(TAG*tag, SWF*master, SWF*slave, int spriteid, int replaceddefi int frame = 0; int sframe = 0; int slavewritten = 0; + int deletedepth = -1; TAG* rtag = master->firstTag; TAG* stag = slave->firstTag; @@ -720,7 +727,7 @@ TAG* write_master(TAG*tag, SWF*master, SWF*slave, int spriteid, int replaceddefi swf_SetBlock(tag, rtag->data, rtag->len); } } - if(frame == slaveframe) + if(frame == slaveframe) /* only happens with config.isframe: put slave at specific frame */ { if(flags&FLAGS_WRITESLAVE) { outputslave = 1; @@ -729,7 +736,8 @@ TAG* write_master(TAG*tag, SWF*master, SWF*slave, int spriteid, int replaceddefi if((flags&FLAGS_WRITESPRITE) && !slavewritten) { int id = get_free_id(masterbitmap); - int depth = 0; + int depth = 65535; + deletedepth = 65536; if(config.clip) { msg(" Can't combine --clip and --frame"); } @@ -770,6 +778,12 @@ TAG* write_master(TAG*tag, SWF*master, SWF*slave, int spriteid, int replaceddefi rtag->id, rtag->len); tag = swf_InsertTag(tag, rtag->id); write_changepos(tag, rtag, config.mastermovex, config.mastermovey, config.masterscalex, config.masterscaley, 1); + + if(rtag->id == ST_SHOWFRAME && deletedepth) { + tag = swf_InsertTag(tag, ST_REMOVEOBJECT2); + swf_SetU16(tag, deletedepth); + deletedepth = -1; + } } } rtag = rtag->next; @@ -1218,9 +1232,11 @@ int main(int argn, char *argv[]) fi = open(outputname, O_BINARY|O_RDWR|O_TRUNC|O_CREAT, 0777); - if(config.zlib) + if(config.zlib) { + if(newswf.fileVersion < 6) + newswf.fileVersion = 6; swf_WriteSWC(fi, &newswf); - else { + } else { newswf.compressed = 0; swf_WriteSWF(fi, &newswf); }