[Top][All Lists]
[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