X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=src%2Fswfcombine.c;h=7daec9c8a1ad2ff20875e6712addde081ea7ef64;hp=557e7bdbd9c31422a50555735e89f0de239e5382;hb=2391d7ae5d8a145a250a8b80ab8c93ba74eba030;hpb=a3da60beb347caba75475e3eaf50947497b99cd3 diff --git a/src/swfcombine.c b/src/swfcombine.c index 557e7bd..7daec9c 100644 --- a/src/swfcombine.c +++ b/src/swfcombine.c @@ -42,11 +42,14 @@ struct config_t char isframe; char local_with_networking; char local_with_filesystem; + char accelerated_blit; + char hardware_gpu; int loglevel; int sizex; char hassizex; int sizey; char hassizey; + int flashversion; int framerate; int movex; int movey; @@ -183,6 +186,16 @@ int args_callback_option(char*name,char*val) { config.local_with_filesystem = 1; return 0; } + else if (!strcmp(name, "B")) + { + config.accelerated_blit = 1; + return 0; + } + else if (!strcmp(name, "G")) + { + config.hardware_gpu = 1; + return 0; + } else if (!strcmp(name, "t") || !strcmp(name, "T")) { if(master_filename) { @@ -216,6 +229,7 @@ static struct options_t options[] = { {"l", "overlay"}, {"c", "clip"}, {"v", "verbose"}, +{"F", "flashversion"}, {"d", "dummy"}, {"f", "frame"}, {"x", "movex"}, @@ -225,6 +239,8 @@ static struct options_t options[] = { {"X", "width"}, {"Y", "height"}, {"N", "local-with-networking"}, +{"G", "hardware-gpu"}, +{"B", "accelerated-blit"}, {"L", "local-with-filesystem"}, {"z", "zlib"}, {0,0} @@ -295,15 +311,18 @@ void args_callback_usage(char *name) printf("-l , --overlay Don't remove any master objects, only overlay new objects\n"); printf("-c , --clip Clip the slave objects by the corresponding master objects\n"); printf("-v , --verbose Be verbose. Use more than one -v for greater effect \n"); + printf("-F , --flashversion Set the flash version of the output file.\n"); printf("-d , --dummy Don't require slave objects (for changing movie attributes)\n"); 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"); printf("-N , --local-with-networking Make output file \"local-with-networking\"\n"); + printf("-G , --hardware-gpu Set the \"use hardware gpu\" bit in the output file\n"); + printf("-B , --accelerated-blit Set the \"use accelerated blit\" bit in the output file\n"); printf("-L , --local-with-filesystem Make output file \"local-with-filesystem\"\n"); printf("-z , --zlib Enable Flash 6 (MX) Zlib Compression\n"); printf("\n"); @@ -875,6 +894,8 @@ void adjustheader(SWF*swf) swf->movieSize.ymax = swf->movieSize.ymin + config.sizey; } + if(config.flashversion) + swf->fileVersion = config.flashversion; } void catcombine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) @@ -887,6 +908,8 @@ void catcombine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) msg(" Can't combine --cat and --frame"); exit(1); } + if(config.flashversion) + master->fileVersion = config.flashversion; tag = master->firstTag; while(tag) @@ -997,6 +1020,29 @@ void normalcombine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) msg(" Slave file attached to object %d.", defineid); } } + } else if(tag->id == ST_EXPORTASSETS) { + int t; + int num = swf_GetU16(tag); + for(t=0;t Slave file attached to object %d exported as %s.", id, name); + } + } + } else if(tag->id == ST_SYMBOLCLASS) { + /* a symbolclass tag is like a define tag: it defines id 0000 */ + int num = swf_GetU16(tag); + int t; + for(t=0;tid == ST_PLACEOBJECT2) { char * name = swf_GetName(tag); int id = swf_GetPlaceID(tag); @@ -1051,6 +1097,7 @@ void normalcombine(SWF*master, char*slave_name, SWF*slave, SWF*newswf) } swf_Relocate (slave, masterbitmap); + if(config.merge) swf_RelocateDepth (slave, depthbitmap); jpeg_assert(slave, master); @@ -1321,6 +1368,10 @@ int main(int argn, char *argv[]) newswf.fileAttributes &= ~FILEATTRIBUTE_USENETWORK; if(config.local_with_networking) newswf.fileAttributes |= FILEATTRIBUTE_USENETWORK; + if(config.accelerated_blit) + newswf.fileAttributes |= FILEATTRIBUTE_USEACCELERATEDBLIT; + if(config.hardware_gpu) + newswf.fileAttributes |= FILEATTRIBUTE_USEHARDWAREGPU; fi = open(outputname, O_BINARY|O_RDWR|O_TRUNC|O_CREAT, 0777); @@ -1334,6 +1385,7 @@ int main(int argn, char *argv[]) swf_WriteSWF(fi, &newswf); } close(fi); - return 0; + + return 0; //ok }