[Top][All Lists]
[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: |
Thu, 21 Sep 2006 16:03:30 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Vitaly Alexeev <alexeev> 06/09/21 16:03:30
Modified files:
server : sprite_instance.cpp
Log message:
added remove_movieclip() & create_empty_movieclip()
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.56&r2=1.57
Patches:
Index: sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -b -r1.56 -r1.57
--- sprite_instance.cpp 21 Sep 2006 13:54:45 -0000 1.56
+++ sprite_instance.cpp 21 Sep 2006 16:03:30 -0000 1.57
@@ -115,6 +115,25 @@
sprite->set_play_state(movie_interface::STOP);
}
+//removeMovieClip() : Void
+static void sprite_remove_movieclip(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);
+
+ sprite_instance* parent = (sprite_instance*) sprite->get_parent();
+ if (parent)
+ {
+ parent->remove_display_object(sprite->get_depth(), 0);
+ }
+}
+
//createEmptyMovieClip(name:String, depth:Number) : MovieClip
static void sprite_create_empty_movieclip(const fn_call& fn)
{
@@ -665,6 +684,7 @@
as_builtins.set_member("swapDepths", &sprite_swap_depths);
as_builtins.set_member("getDepth", &sprite_get_depth);
as_builtins.set_member("createEmptyMovieClip",
&sprite_create_empty_movieclip);
+ as_builtins.set_member("removeMovieClip", &sprite_remove_movieclip);
// @TODO
//as_builtins.set_member("startDrag", &sprite_start_drag);
@@ -1033,27 +1053,26 @@
assert(m_action_list.size() == top_action);
}
-// TODO
-character* sprite_instance::add_empty_movieclip(const char* /*name*/, int
/*depth*/)
+character* sprite_instance::add_empty_movieclip(const char* name, int depth)
{
-// cxform color_transform;
-// matrix matrix;
+ cxform color_transform;
+ matrix matrix;
-// movie_definition* mdef = new movie_def_impl(DO_LOAD_BITMAPS,
DO_LOAD_FONT_SHAPES);
-// sprite_instance* sprite = new sprite_instance(m_def.get_ptr(),
m_root, this, 0);
-// m_display_list.remove_display_object(depth);
-// m_display_list.place_character(
-// sprite,
-// depth,
-// color_transform,
-// matrix,
-// 0.0f,
-// 0);
+ // empty_mdef will be deleted during deliting sprite
+ movie_def_impl* empty_mdef = new movie_def_impl(DO_EMPTY_MOVIECLIP,
DO_LOAD_FONT_SHAPES);
-// return sprite;
- log_warning("add_empty_movieclip unimplemented");
+ sprite_instance* sprite = new sprite_instance(empty_mdef, m_root,
this, 0);
+ sprite->set_name(name);
- return NULL;
+ m_display_list.place_character(
+ sprite,
+ depth,
+ color_transform,
+ matrix,
+ 0.0f,
+ 0);
+
+ return sprite;
}
void sprite_instance::clone_display_object(const tu_string& name,