gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp
Date: Sun, 05 Nov 2006 15:12:57 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/11/05 15:12:57

Modified files:
        .              : ChangeLog 
        server         : sprite_instance.cpp 

Log message:
                * server/sprite_instance.cpp: stubbed attachMovie, added
                  comment about possible improvement of 
sprite_duplicate_movieclip,
                  added some use of the new IF_VERBOSE_ASCODING_ERRORS macro

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1527&r2=1.1528
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.73&r2=1.74

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1527
retrieving revision 1.1528
diff -u -b -r1.1527 -r1.1528
--- ChangeLog   5 Nov 2006 14:15:36 -0000       1.1527
+++ ChangeLog   5 Nov 2006 15:12:57 -0000       1.1528
@@ -1,5 +1,8 @@
 2006-11-05 Sandro Santilli <address@hidden>
 
+       * server/sprite_instance.cpp: stubbed attachMovie, added
+         comment about possible improvement of sprite_duplicate_movieclip,
+         added some use of the new IF_VERBOSE_ASCODING_ERRORS macro
        * libbase/log.h: added IF_VERBOSE_MALFORMED_SWF and
          IF_VERBOSE_ASCODING_ERRORS macros.
        * server/swf/ASHandlers.cpp (ActionSubstring): early

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -b -r1.73 -r1.74
--- server/sprite_instance.cpp  4 Nov 2006 22:53:02 -0000       1.73
+++ server/sprite_instance.cpp  5 Nov 2006 15:12:57 -0000       1.74
@@ -120,6 +120,76 @@
        }
 }
 
+// attachMovie(idName:String, newName:String,
+//             depth:Number [, initObject:Object]) : MovieClip
+static void sprite_attach_movie(const fn_call& fn)
+{
+       sprite_instance* sprite = dynamic_cast<sprite_instance*>(fn.this_ptr);
+       if (sprite == NULL)
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_error("attachMovie called against an object"
+                       " which is NOT a MovieClip (%s), "
+                       "returning undefined", typeid(fn.this_ptr).name());
+               );
+               fn.result->set_undefined();
+               return;
+       }
+
+       if (fn.nargs < 3 || fn.nargs > 4)
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_error("attachMovie called with wrong number of arguments"
+                       " expected 3 to 4, got (%d) - returning undefined",
+                       fn.nargs);
+               );
+               fn.result->set_undefined();
+               return;
+       }
+
+       // Get exported resource 
+       std::string id_name = fn.arg(0).to_std_string();
+       smart_ptr<resource> exported = 
sprite->get_movie_definition()->get_exported_resource(id_name.c_str());
+       if ( exported == NULL )
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_error("attachMovie: '%s': no such exported resource - "
+                       "returning undefined",
+                       id_name.c_str());
+               );
+               fn.result->set_undefined();
+               return;
+       }
+       movie_definition* exported_movie = 
dynamic_cast<movie_definition*>(exported.get_ptr());
+       if ( ! exported_movie )
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_error("attachMovie: exported resource '%s' "
+                       "is not a movie definition (%s) -- "
+                       "returning undefined",
+                       id_name.c_str(),
+                       typeid(*(exported.get_ptr())).name());
+               );
+               fn.result->set_undefined();
+               return;
+       }
+
+       std::string newname = fn.arg(1).to_std_string();
+       int depth_val = int(fn.arg(2).to_number());
+
+       if (fn.nargs > 3 )
+       {
+               as_object* initObject = fn.arg(3).to_object();
+               //if ( initObject ) newch->copyProperties(*initObject);
+       }
+
+       log_error("MovieClip.attachMovie() unimplemented -- "
+               "returning undefined");
+       fn.result->set_undefined();
+       //fn.result->set_as_object(newch);
+       return;
+}
+
 //createEmptyMovieClip(name:String, depth:Number) : MovieClip
 static void sprite_create_empty_movieclip(const fn_call& fn)
 {
@@ -236,6 +306,12 @@
            return;
        }
 
+       // strk question: Would a call to 
+       //   sprite->get_movie_defition()->create_instance()
+       //   and an add_display_object taking a character_instance
+       //   instead of a character *id* be more appropriate ?
+       //   (sounds more general)
+
        // Copy event handlers from sprite
        // We should not copy 'm_action_buffer' since the 'm_method' already 
contains it
        std::vector<swf_event*> event_handlers;
@@ -560,9 +636,11 @@
        if (sprite == NULL)
        {
                // Handle programming errors
+               IF_VERBOSE_ASCODING_ERRORS (
                log_error("getNextHighestDepth called against an object"
                        " which is NOT a MovieClip (%s), "
                        "returning undefined", typeid(fn.this_ptr).name());
+               );
                fn.result->set_undefined();
                return;
        }
@@ -691,6 +769,11 @@
        as_builtins.set_member("createEmptyMovieClip", 
&sprite_create_empty_movieclip);
        as_builtins.set_member("removeMovieClip", &sprite_remove_movieclip);
 
+       if ( target_version  >= 5 )
+       {
+               as_builtins.set_member("attachMovie", &sprite_attach_movie);
+       }
+
        // The following interfaces should only
        // be available when target SWF version is equal
        // or above 7




reply via email to

[Prev in Thread] Current Thread [Next in Thread]