X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=src%2Fas3compile.c;h=9ee4569edc28092ba7498a6114d64a15f0260089;hp=89252f5f7236d1262401ca1dccb9600ae47a6fbd;hb=c63b2bf21dc1df9a736f0b4c08f6cba828cdab92;hpb=65dec90461cf9ceb574ba89189a65980960a3f56 diff --git a/src/as3compile.c b/src/as3compile.c index 89252f5..9ee4569 100644 --- a/src/as3compile.c +++ b/src/as3compile.c @@ -40,6 +40,7 @@ static int flashversion = 9; static int verbose = 1; static char local_with_networking = 0; static char local_with_filesystem = 0; +static char*mainclass = 0; static struct options_t options[] = { {"h", "help"}, @@ -47,11 +48,16 @@ static struct options_t options[] = { {"v", "verbose"}, {"q", "quiet"}, {"C", "cgi"}, +{"R", "resolve"}, +{"D", "define"}, {"X", "width"}, {"Y", "height"}, {"r", "rate"}, +{"M", "mainclass"}, {"l", "library"}, {"I", "include"}, +{"N", "local-with-network"}, +{"L", "local-with-filesystem"}, {"T", "flashversion"}, {"o", "output"}, {0,0} @@ -72,6 +78,10 @@ int args_callback_option(char*name,char*val) framerate = atof(val); return 1; } + else if(!strcmp(name, "M")) { + mainclass = val; + return 1; + } else if(!strcmp(name, "v")) { verbose++; return 0; @@ -96,14 +106,26 @@ int args_callback_option(char*name,char*val) do_cgi = 1; return 0; } - else if(!strcmp(name, "-l")) { + else if(!strcmp(name, "l")) { as3_import_file(val); return 1; } - else if(!strcmp(name, "-I")) { + else if(!strcmp(name, "I")) { as3_add_include_dir(val); return 1; } + else if(!strcmp(name, "R")) { + as3_set_option("recurse","1"); + return 0; + } + else if(!strcmp(name, "D")) { + if(!strstr(val, "::")) { + fprintf(stderr, "Error: compile definition must contain \"::\"\n"); + exit(1); + } + as3_set_define(val); + return 1; + } else if (!strcmp(name, "N")) { local_with_networking = 1; @@ -134,11 +156,16 @@ void args_callback_usage(char *name) printf("-v , --verbose Increase verbosity\n"); printf("-q , --quiet Decrease verbosity\n"); printf("-C , --cgi Output to stdout (for use in CGI environments)\n"); + printf("-R , --resolve Try to resolve undefined classes automatically.\n"); + printf("-D , --define Set a compile time variable (for doing conditional compilation)\n"); printf("-X , --width Set target SWF width\n"); printf("-Y , --height Set target SWF width\n"); printf("-r , --rate Set target SWF framerate\n"); - printf("-l , --library Include library file \n"); - printf("-I , --include Add include dir \n"); + printf("-M , --mainclass Set the name of the main class (extending flash.display.MovieClip or .Sprite)\n"); + printf("-l , --library Include library file . can be an .abc or .swf file.\n"); + printf("-I , --include Add additional include dir .\n"); + printf("-N , --local-with-network Make output file \"local with networking\"\n"); + printf("-L , --local-with-filesystem Make output file \"local with filesystem\"\n"); printf("-T , --flashversion Set target SWF flash version to .\n"); printf("-o , --output Set output file to .\n"); printf("\n"); @@ -186,7 +213,6 @@ int main (int argc,char ** argv) } else { as3_add_include_dir(currentdir); } - registry_init(); int t; processargs(argc, argv); @@ -201,7 +227,12 @@ int main (int argc,char ** argv) //as3_warning("output name not given, writing to %s", outputname); } - as3_parse_file(filename); + if(!strcmp(filename, ".")) { + as3_parse_directory("."); + } else { + as3_parse_file(filename); + } + void*code = as3_getcode(); SWF swf; @@ -215,11 +246,13 @@ int main (int argc,char ** argv) TAG*tag = swf.firstTag = swf_InsertTag(0, ST_DOABC); swf_WriteABC(tag, code); - if(as3_getglobalclass()) { + if(!mainclass) + mainclass = as3_getglobalclass(); + if(mainclass) { tag = swf_InsertTag(tag, ST_SYMBOLCLASS); swf_SetU16(tag, 1); swf_SetU16(tag, 0); - swf_SetString(tag, as3_getglobalclass()); + swf_SetString(tag, mainclass); } else { as3_warning("no global public MovieClip subclass"); }