X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fmain.c;h=d72a11f3eec2228282edc3bf45918fc5cd0b2d2d;hb=6a35c7253ba161c50a18ecc86e46d0b3ead9a2a0;hp=e17f62775eca5ffbc038a9e738cfa2814698e096;hpb=818266df7c2107eb7c4c65fb47002815cf3e6f72;p=swftools.git diff --git a/lib/as3/main.c b/lib/as3/main.c index e17f627..d72a11f 100644 --- a/lib/as3/main.c +++ b/lib/as3/main.c @@ -30,9 +30,13 @@ #include "tokenizer.h" #include "parser.tab.h" #include "parser.h" +#include "compiler.h" -void test_lexer() +void test_lexer(char*filename) { + char*fullfilename = enter_file(filename, 0); + FILE*fi = fopen(fullfilename, "rb"); + avm2_set_in(fi); while(1) { int token = avm2_lex(); if(token==T_EOF) @@ -56,41 +60,30 @@ int main(int argn, char*argv[]) } filename=argv[1]; - registry_init(); - - add_include_dir(getcwd(buf, 512)); - char*fullfilename = enter_file(filename, 0); - - FILE*fi = fopen(fullfilename, "rb"); - if(!fi) { - perror(fullfilename); - return 1; - } - initialize_state(); - avm2_set_in(fi); - if(argn>2 && !strcmp(argv[2], "-lex")) { - test_lexer(); + test_lexer(filename); return 0; } - avm2_parse(); - void*code = finalize_state(); + + as3_add_include_dir(getcwd(buf, 512)); + as3_parse_file(filename); + void*code = as3_getcode(); SWF swf; memset(&swf, 0, sizeof(swf)); swf.fileVersion = 9; swf.frameRate = 0x2500; swf.movieSize.xmin = swf.movieSize.ymin = 0; - swf.movieSize.xmax = 1024*20; - swf.movieSize.ymax = 768*20; + swf.movieSize.xmax = 20*20; + swf.movieSize.ymax = 10*20; TAG*tag = swf.firstTag = swf_InsertTag(0, ST_DOABC); swf_WriteABC(tag, code); - if(globalclass) { + if(as3_getglobalclass()) { tag = swf_InsertTag(tag, ST_SYMBOLCLASS); swf_SetU16(tag, 1); swf_SetU16(tag, 0); - swf_SetString(tag, globalclass); + swf_SetString(tag, as3_getglobalclass()); } else { printf("Warning: no global public MovieClip subclass\n"); } @@ -104,5 +97,7 @@ int main(int argn, char*argv[]) swf_WriteSWF(f,&swf); close(f); + swf_FreeTags(&swf); + return 0; }