X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfcombine.c;h=1204cc1d07b0c8ddde24f01c07bffc76ccd4da5e;hb=f5fc42d1a3f5a637f00a2316af960dc32371cf48;hp=72d1147b64ef2272c34656fe0a5dd5d9302d58b9;hpb=fba07f954ee57839bb73c6481d4dbc52c4afcc5a;p=swftools.git diff --git a/src/swfcombine.c b/src/swfcombine.c index 72d1147..1204cc1 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) { @@ -275,7 +285,7 @@ void args_callback_usage(char *name) printf("-f , --frame The following identifier is a frame or framelabel, not an id or objectname\n"); printf("-x , --movex x Adjust position of slave by pixels\n"); printf("-y , --movey y Adjust position of slave by pixels\n"); - printf("-s , --scale Adjust size of slave by percent (e.g. 100% = original size)\n"); + printf("-s , --scale Adjust size of slave by percent (e.g. 100%% = original size)\n"); printf("-r , --rate Set movie framerate to (frames/sec)\n"); printf("-X , --width Force movie bbox width to (default: use master width (not with -t))\n"); printf("-Y , --height Force movie bbox height to (default: use master height (not with -t))\n"); @@ -283,6 +293,20 @@ void args_callback_usage(char *name) printf("\n"); } +void removeCommonTags(SWF * swf) +{ + TAG*tag = swf->firstTag; + while(tag) { + if(tag->id == ST_SCENEDESCRIPTION || + tag->id == ST_FILEATTRIBUTES || + tag->id == ST_REFLEX) { + tag = swf_DeleteTag(swf, tag); + } else { + tag = tag->next; + } + } +} + static void makestackmaster(SWF*swf) { TAG*tag; @@ -307,6 +331,7 @@ static void makestackmaster(SWF*swf) } close(fi); swf_RemoveJPEGTables(&head); + removeCommonTags(&head); msg(" File %s has bounding box %d:%d:%d:%d\n", slave_filename[t], head.movieSize.xmin, head.movieSize.ymin, @@ -433,7 +458,7 @@ void jpeg_assert(SWF*master, SWF*slave) { // ok, both have jpegtables, but they're identical. // delete one and don't throw an error - swf_DeleteTag(spos); + swf_DeleteTag(slave, spos); spos = 0; } } @@ -921,9 +946,7 @@ void catcombine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) } tag = swf_InsertTag(tag, ST_END); - tag = newswf->firstTag; - newswf->firstTag = newswf->firstTag->next; //remove temporary tag - swf_DeleteTag(tag); + swf_DeleteTag(newswf, tag); } void normalcombine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) @@ -1035,9 +1058,7 @@ void normalcombine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) FLAGS_WRITEDEFINES|FLAGS_WRITENONDEFINES| FLAGS_WRITESPRITE ); } - tag = newswf->firstTag; - newswf->firstTag = newswf->firstTag->next; //remove temporary tag - swf_DeleteTag(tag); + swf_DeleteTag(newswf, tag); } void combine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) @@ -1176,6 +1197,7 @@ int main(int argn, char *argv[]) exit(1); } swf_RemoveJPEGTables(&master); + removeCommonTags(&master); msg(" Read %d bytes from masterfile\n", ret); close(fi); } @@ -1244,6 +1266,7 @@ int main(int argn, char *argv[]) msg(" Read %d bytes from slavefile\n", ret); close(fi); swf_RemoveJPEGTables(&slave); + removeCommonTags(&slave); } else { @@ -1273,9 +1296,10 @@ int main(int argn, char *argv[]) if(config.zlib) { if(newswf.fileVersion < 6) newswf.fileVersion = 6; - swf_WriteSWC(fi, &newswf); + newswf.compressed = 1; + swf_WriteSWF(fi, &newswf); } else { - newswf.compressed = 0; + newswf.compressed = -1; // don't compress swf_WriteSWF(fi, &newswf); } close(fi);