moved scripts to scripts.c
authorMatthias Kramm <kramm@quiss.org>
Wed, 28 Jan 2009 17:01:23 +0000 (18:01 +0100)
committerMatthias Kramm <kramm@quiss.org>
Wed, 28 Jan 2009 17:01:23 +0000 (18:01 +0100)
lib/as3/abc.c

index edebba2..4375300 100644 (file)
@@ -1310,265 +1310,3 @@ void swf_FreeABC(void*code)
     abc_file_free(file);
 }
 
-void swf_AddButtonLinks(SWF*swf, char stop_each_frame, char events)
-{
-    int num_frames = 0;
-    int has_buttons = 0;
-    TAG*tag=swf->firstTag;
-    while(tag) {
-        if(tag->id == ST_SHOWFRAME)
-            num_frames++;
-        if(tag->id == ST_DEFINEBUTTON || tag->id == ST_DEFINEBUTTON2)
-            has_buttons = 1;
-        tag = tag->next;
-    }
-
-    abc_file_t*file = abc_file_new();
-    abc_method_body_t*c = 0;
-   
-    abc_class_t*cls = abc_class_new2(file, "rfx::MainTimeline", "flash.display::MovieClip");
-    abc_class_protectedNS(cls, "rfx:MainTimeline");
-  
-    TAG*abctag = swf_InsertTagBefore(swf, swf->firstTag, ST_DOABC);
-    
-    tag = swf_InsertTag(abctag, ST_SYMBOLCLASS);
-    swf_SetU16(tag, 1);
-    swf_SetU16(tag, 0);
-    swf_SetString(tag, "rfx.MainTimeline");
-
-    c = abc_class_getstaticconstructor(cls, 0)->body;
-    c->old.max_stack = 1;
-    c->old.local_count = 1;
-    c->old.init_scope_depth = 9;
-    c->old.max_scope_depth = 10;
-
-    __ getlocal_0(c);
-    __ pushscope(c);
-    __ returnvoid(c);
-
-    c = abc_class_getconstructor(cls, 0)->body;
-    c->old.max_stack = 3;
-    c->old.local_count = 1;
-    c->old.init_scope_depth = 10;
-    c->old.max_scope_depth = 11;
-    
-    debugfile(c, "constructor.as");
-
-    __ getlocal_0(c);
-    __ pushscope(c);
-
-    __ getlocal_0(c);
-    __ constructsuper(c,0);
-
-    __ getlex(c, "[package]flash.system::Security");
-    __ pushstring(c, "*");
-    __ callpropvoid(c, "[package]::allowDomain", 1);
-    
-    if(stop_each_frame || has_buttons) {
-        int frame = 0;
-        tag = swf->firstTag;
-        abc_method_body_t*f = 0; //frame script
-        while(tag && tag->id!=ST_END) {
-            char framename[80];
-            char needs_framescript=0;
-            char buttonname[80];
-            char functionname[80];
-            sprintf(framename, "[packageinternal]rfx::frame%d", frame);
-            
-            if(!f && (tag->id == ST_DEFINEBUTTON || tag->id == ST_DEFINEBUTTON2 || stop_each_frame)) {
-                /* make the contructor add a frame script */
-                __ findpropstrict(c,"[package]::addFrameScript");
-                __ pushbyte(c,frame);
-                __ getlex(c,framename);
-                __ callpropvoid(c,"[package]::addFrameScript",2);
-
-                f = abc_class_method(cls, 0, multiname_fromstring(framename))->body;
-                f->old.max_stack = 3;
-                f->old.local_count = 1;
-                f->old.init_scope_depth = 10;
-                f->old.max_scope_depth = 11;
-                __ debugfile(f, "framescript.as");
-                __ debugline(f, 1);
-                __ getlocal_0(f);
-                __ pushscope(f);
-                if(stop_each_frame) {
-                    __ findpropstrict(f, "[package]::stop");
-                    __ callpropvoid(f, "[package]::stop", 0);
-                }
-            }
-
-            if(tag->id == ST_DEFINEBUTTON || tag->id == ST_DEFINEBUTTON2) {
-                U16 id = swf_GetDefineID(tag);
-                sprintf(buttonname, "::button%d", swf_GetDefineID(tag));
-                __ getlex(f,buttonname);
-                __ getlex(f,"flash.events::MouseEvent");
-                __ getproperty(f, "::CLICK");
-                sprintf(functionname, "::clickbutton%d", swf_GetDefineID(tag));
-                __ getlex(f,functionname);
-                __ callpropvoid(f, "::addEventListener" ,2);
-
-                needs_framescript = 1;
-
-                abc_method_body_t*h =
-                    abc_class_method(cls, 0, multiname_fromstring(functionname))->body;
-                list_append(h->method->parameters, multiname_fromstring("flash.events::MouseEvent"));
-
-                h->old.max_stack = 6;
-                h->old.local_count = 2;
-                h->old.init_scope_depth = 10;
-                h->old.max_scope_depth = 11;
-                __ getlocal_0(h);
-                __ pushscope(h);
-
-                ActionTAG*oldaction = swf_ButtonGetAction(tag);
-                if(oldaction && oldaction->op == ACTION__GOTOFRAME) {
-                    int framenr = GET16(oldaction->data);
-                    if(!events) {
-                        __ findpropstrict(h,"[package]::gotoAndStop");
-                        __ pushuint(h,framenr+1);
-                        __ callpropvoid(h,"[package]::gotoAndStop", 1);
-                    } else {
-                        char framename[80];
-                        sprintf(framename, "frame%d", framenr);
-                        __ getlocal_0(h); //this
-                        __ findpropstrict(h, "[package]flash.events::TextEvent");
-                        __ pushstring(h, "link");
-                        __ pushtrue(h);
-                        __ pushtrue(h);
-                        __ pushstring(h, framename);
-                        __ constructprop(h,"[package]flash.events::TextEvent", 4);
-                        __ callpropvoid(h,"[package]::dispatchEvent", 1);
-                    }
-                } else if(oldaction && oldaction->op == ACTION__GETURL) {
-                    if(!events) {
-                        __ findpropstrict(h,"flash.net::navigateToURL");
-                        __ findpropstrict(h,"flash.net::URLRequest");
-                        // TODO: target _blank
-                        __ pushstring(h,oldaction->data); //url
-                        __ constructprop(h,"flash.net::URLRequest", 1);
-                        __ callpropvoid(h,"flash.net::navigateToURL", 1);
-                    } else {
-                        __ getlocal_0(h); //this
-                        __ findpropstrict(h, "[package]flash.events::TextEvent");
-                        __ pushstring(h, "link");
-                        __ pushtrue(h);
-                        __ pushtrue(h);
-                        __ pushstring(h,oldaction->data); //url
-                        __ constructprop(h,"[package]flash.events::TextEvent", 4);
-                        __ callpropvoid(h,"[package]::dispatchEvent", 1);
-                    }
-                } else if(oldaction) {
-                    fprintf(stderr, "Warning: Couldn't translate button code of button %d to flash 9 abc action\n", id);
-                }
-                __ returnvoid(h);
-                swf_ActionFree(oldaction);
-            }
-            if(tag->id == ST_SHOWFRAME) {
-                if(f) {
-                    __ returnvoid(f);
-                    f = 0;
-                }
-                frame++;
-            }
-            tag = tag->next;
-        }
-        if(f) {
-            __ returnvoid(f);
-        }
-    }
-    __ returnvoid(c);
-
-    tag = swf->firstTag;
-    while(tag) {
-        if(tag->id == ST_DEFINEBUTTON || tag->id == ST_DEFINEBUTTON2) {
-            char buttonname[80];
-            sprintf(buttonname, "::button%d", swf_GetDefineID(tag));
-            multiname_t*s = multiname_fromstring(buttonname);
-            //abc_class_slot(cls, multiname_fromstring(buttonname), s);
-            abc_class_slot(cls, multiname_fromstring(buttonname), 
-                                multiname_fromstring("flash.display::SimpleButton"));
-        }
-        tag = tag->next;
-    }
-
-
-    abc_script_t*s = abc_initscript(file);
-    c = s->method->body;
-    c->old.max_stack = 2;
-    c->old.local_count = 1;
-    c->old.init_scope_depth = 1;
-    c->old.max_scope_depth = 9;
-
-    __ getlocal_0(c);
-    __ pushscope(c);
-    __ getscopeobject(c, 0);
-    __ getlex(c,"::Object");
-    __ pushscope(c);
-    __ getlex(c,"flash.events::EventDispatcher");
-    __ pushscope(c);
-    __ getlex(c,"flash.display::DisplayObject");
-    __ pushscope(c);
-    __ getlex(c,"flash.display::InteractiveObject");
-    __ pushscope(c);
-    __ getlex(c,"flash.display::DisplayObjectContainer");
-    __ pushscope(c);
-    __ getlex(c,"flash.display::Sprite");
-    __ pushscope(c);
-    __ getlex(c,"flash.display::MovieClip");
-    __ pushscope(c);
-    __ getlex(c,"flash.display::MovieClip");
-    __ newclass(c,cls);
-    __ popscope(c);
-    __ popscope(c);
-    __ popscope(c);
-    __ popscope(c);
-    __ popscope(c);
-    __ popscope(c);
-    __ popscope(c);
-    __ initproperty(c,"rfx::MainTimeline");
-    __ returnvoid(c);
-
-    //abc_method_body_addClassTrait(c, "rfx:MainTimeline", 1, cls);
-    multiname_t*classname = multiname_fromstring("rfx::MainTimeline");
-    abc_initscript_addClassTrait(s, classname, cls);
-    multiname_destroy(classname);
-
-    swf_WriteABC(abctag, file);
-}
-
-TAG*swf_AddAS3FontDefine(TAG*tag, U16 id, char*fontname)
-{
-    tag = swf_InsertTag(tag, ST_DOABC);
-    abc_file_t*file = abc_file_new();
-
-    //abc_class_t*cls = abc_class_new2(file, fontname, "flash.display::MovieClip");
-    //abc_class_slot(cls, multiname_fromstring(fontname), multiname_fromstring("flash.text::Font"));
-
-    abc_class_t*cls = abc_class_new2(file, fontname, "flash.text::Font");
-
-    abc_script_t*s = abc_initscript(file);
-    code_t*c = s->method->body->code;
-    c = abc_getlocal_0(c);
-    c = abc_pushscope(c);
-    c = abc_getscopeobject(c, 0);
-    c = abc_getlex(c,"flash.text::Font");
-    c = abc_pushscope(c);
-    c = abc_getlex(c,"flash.text::Font");
-    c = abc_newclass(c,cls);
-    c = abc_popscope(c);
-    c = abc_initproperty(c, fontname);
-    c = abc_returnvoid(c);
-    s->method->body->code = c;
-
-    abc_initscript_addClassTrait(s, multiname_fromstring(fontname), cls);
-    swf_WriteABC(tag, file);
-       
-    tag = swf_InsertTag(tag, ST_SYMBOLCLASS);
-    swf_SetU16(tag, 1);
-    swf_SetU16(tag, id);
-    swf_SetString(tag, fontname);
-
-    return tag;
-}
-
-