gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash/server sprite_instance.cpp


From: Vitaly Alexeev
Subject: [Gnash-commit] gnash/server sprite_instance.cpp
Date: Wed, 20 Sep 2006 12:08:13 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Vitaly Alexeev <alexeev>        06/09/20 12:08:13

Modified files:
        server         : sprite_instance.cpp 

Log message:
        added getDepth()

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.52&r2=1.53

Patches:
Index: sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -b -r1.52 -r1.53
--- sprite_instance.cpp 20 Sep 2006 11:44:19 -0000      1.52
+++ sprite_instance.cpp 20 Sep 2006 12:08:12 -0000      1.53
@@ -117,6 +117,22 @@
        sprite->set_play_state(movie_interface::STOP);
 }
 
+static void sprite_get_depth(const fn_call& fn)
+{
+       assert(dynamic_cast<sprite_instance*>(fn.this_ptr));
+       sprite_instance* sprite = static_cast<sprite_instance*>(fn.this_ptr);
+       if (sprite == NULL)
+       {
+           sprite = dynamic_cast<sprite_instance*>(fn.env->get_target());
+       }
+
+       assert(sprite);
+       int n = sprite->get_depth();
+
+       // Macromedia Flash help says: depth starts at -16383 (0x3FFF)
+       fn.result->set_int( - (n + 16383 - 1));
+}
+
 //swapDepths(target:Object) : Void
 static void sprite_swap_depths(const fn_call& fn)
 {
@@ -142,7 +158,9 @@
        else
        if (fn.arg(0).get_type() == as_value::NUMBER)
        {
-               int target_depth = int(fn.arg(0).to_number());
+               // Macromedia Flash help says: depth starts at -16383 (0x3FFF)
+               int target_depth = int(fn.arg(0).to_number()) + 16383 + 1;
+
                sprite_instance* parent = (sprite_instance*) 
sprite->get_parent();
                target = (sprite_instance*) 
parent->get_character_at_depth(target_depth);
        }
@@ -625,6 +643,7 @@
        as_builtins.set_member("createTextField", &sprite_create_text_field);
        as_builtins.set_member("duplicateMovieClip", 
&sprite_duplicate_movieclip);
        as_builtins.set_member("swapDepths", &sprite_swap_depths);
+       as_builtins.set_member("getDepth", &sprite_get_depth);
 
        // @TODO
        //as_builtins.set_member("startDrag", &sprite_start_drag);




reply via email to

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