- printf("-o outputfile explicitly specify output file. (otherwise, output.swf will be used)\n");
- 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) Use more than one -v for greater effect \n");
- printf("-x xpos (move x) Adjust position of slave by xpos twips (1/20 pixel)\n");
- printf("-y ypos (move y) Adjust position of slave by ypos twips (1/20 pixel)\n");
- printf("-s scale (scale) Adjust size of slave by scale%\n");
+ printf("-o outputfile --output explicitly specify output file. (otherwise, output.swf will be used\n");
+ printf("-t --stack place each slave in a seperate frame (no master movie\n");
+ printf("-T --stack1 place each slave in the first frame (no master movie\n");
+ printf("-m --merge Don't store the slaves in Sprites/MovieClips\n");
+ printf("-a --cat concatenate all slave files (no master movie\n");
+ 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 Use more than one -v for greater effect \n");
+ printf("-d --dummy Don't require slave objects \n");
+ printf("-f --frame The following identifier is a frame or framelabel, not an id or objectname\n");
+ printf("-x xpos --movex x Adjust position of slave by xpos twips (1/20 pixel\n");
+ printf("-y ypos --movey y Adjust position of slave by ypos twips (1/20 pixel\n");
+ printf("-s scale --scale Adjust size of slave by scale%\n");
+ printf("-r framerate --rate Set movie framerate (100 frames/sec\n");
+ printf("-X width --width Force movie width to scale (default: use master width (not with -t\n");
+ printf("-Y height --height Force movie height to scale (default: use master height (not with -t\n");
+ printf("-z zlib --zlib Enable Flash 6 (MX) Zlib Compression\n");
+}
+
+static void zlib_error(int ret, char* msg, z_stream*zs)
+{
+ fprintf(stderr, "%s: zlib error (%d): last zlib error: %s\n",
+ msg,
+ ret,
+ zs->msg?zs->msg:"unknown");
+ perror("errno:");
+ exit(1);
+}
+
+static char* fi_depack(FILE* fi, unsigned int * setlength) {
+ char * mem;
+ z_stream zs;
+ int ret;
+ char buffer1[8192], *buffer2;
+ int memsize = 8192;
+ int mempos = 0;
+ memset(&zs,0,sizeof(z_stream));
+ zs.zalloc = Z_NULL;
+ zs.zfree = Z_NULL;
+ zs.opaque = Z_NULL;
+ buffer2 = malloc(8192);
+
+ ret = inflateInit(&zs);
+ if (ret != Z_OK) zlib_error(ret, "inflate_init", &zs);
+
+ fread(buffer2, 8, 1, fi);
+ buffer2[0] = 'F';
+
+ zs.next_out = &buffer2[8];
+ zs.avail_out = 8192-8;
+ zs.avail_in = 0;
+
+ while(1)
+ {
+ if(!zs.avail_in) {
+ zs.avail_in = fread(buffer1, 1, 8192, fi);
+ zs.next_in = buffer1;
+ }
+ if(zs.avail_in)
+ ret = inflate(&zs, Z_NO_FLUSH);
+ else
+ ret = inflate(&zs, Z_FINISH);
+
+ if (ret == Z_STREAM_END)
+ break;
+ if (ret != Z_OK) zlib_error(ret, "inflate_init", &zs);
+
+ if (zs.avail_out == 0)
+ {
+ buffer2 = realloc(buffer2, memsize + 8192);
+ zs.avail_out = 8192;
+ zs.next_out = &buffer2[memsize];
+ memsize += 8192;
+ }
+ }
+ *setlength = (zs.next_out - (Bytef*)buffer2);
+ ret = inflateEnd(&zs);
+ if(ret != Z_OK) zlib_error(ret, "inflate_init", &zs);
+ return buffer2;