[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/character.cpp server/cha...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/character.cpp server/cha... |
Date: |
Tue, 30 Jan 2007 18:29:40 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/01/30 18:29:40
Modified files:
. : ChangeLog
server : character.cpp character.h sprite_instance.cpp
Log message:
* server/: character.{h,cpp}, sprite_instance.cpp:
Made generic gettersetter definitions statics
in the 'character' class. Ready for reuse in button
instances and whichever other ActionScript class
associated with a character (_x,_y,_width...).
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2198&r2=1.2199
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.41&r2=1.42
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.140&r2=1.141
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2198
retrieving revision 1.2199
diff -u -b -r1.2198 -r1.2199
--- ChangeLog 30 Jan 2007 17:41:16 -0000 1.2198
+++ ChangeLog 30 Jan 2007 18:29:40 -0000 1.2199
@@ -1,4 +1,12 @@
-2007-01-25 Martin Guy <address@hidden>
+2007-01-30 Sandro Santilli <address@hidden>
+
+ * server/: character.{h,cpp}, sprite_instance.cpp:
+ Made generic gettersetter definitions statics
+ in the 'character' class. Ready for reuse in button
+ instances and whichever other ActionScript class
+ associated with a character (_x,_y,_width...).
+
+2007-01-30 Martin Guy <address@hidden>
* configure.ac: Fix message about Debian packages required for boost
Index: server/character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/character.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- server/character.cpp 13 Dec 2006 12:00:06 -0000 1.15
+++ server/character.cpp 30 Jan 2007 18:29:40 -0000 1.16
@@ -18,7 +18,7 @@
//
//
-/* $Id: character.cpp,v 1.15 2006/12/13 12:00:06 strk Exp $ */
+/* $Id: character.cpp,v 1.16 2007/01/30 18:29:40 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -28,6 +28,8 @@
#include "sprite_instance.h"
#include "drag_state.h" // for do_mouse_drag (to be moved in movie_root)
#include "VM.h" // for do_mouse_drag (to be moved in movie_root)
+#include "fn_call.h" // for shared ActionScript getter-setters
+#include "GnashException.h" // for shared ActionScript getter-setters
(ensure_character)
namespace gnash
{
@@ -187,6 +189,375 @@
}
+//---------------------------------------------------------------------
+//
+// Shared ActionScript getter-setters
+//
+//---------------------------------------------------------------------
+
+// Wrapper around dynamic_cast to implement user warning.
+// To be used by builtin properties and methods.
+static character*
+ensure_character(as_object* obj)
+{
+ character* ret = dynamic_cast<character*>(obj);
+ if ( ! ret )
+ {
+ throw ActionException("builtin method or gettersetter for
character objects called against non-character instance");
+ }
+ return ret;
+}
+
+void
+character::onrollover_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ ptr->get_event_handler(event_id::ROLL_OVER, fn.result);
+ }
+ else // setter
+ {
+ ptr->set_event_handler(event_id::ROLL_OVER, fn.arg(0));
+ }
+
+}
+
+void
+character::x_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ matrix m = ptr->get_matrix();
+ fn.result->set_double(TWIPS_TO_PIXELS(m.m_[0][2]));
+ }
+ else // setter
+ {
+ matrix m = ptr->get_matrix();
+ m.m_[0][2] =
infinite_to_fzero(PIXELS_TO_TWIPS(fn.arg(0).to_number()));
+ ptr->set_matrix(m);
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+
+}
+
+void
+character::y_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ matrix m = ptr->get_matrix();
+ fn.result->set_double(TWIPS_TO_PIXELS(m.m_[1][2]));
+ }
+ else // setter
+ {
+ matrix m = ptr->get_matrix();
+ m.m_[1][2] =
infinite_to_fzero(PIXELS_TO_TWIPS(fn.arg(0).to_number()));
+ ptr->set_matrix(m);
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+
+}
+
+void
+character::xscale_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ matrix m = ptr->get_matrix();
+ float xscale = m.get_x_scale();
+ fn.result->set_double(xscale * 100); // result in percent
+ }
+ else // setter
+ {
+ matrix m = ptr->get_matrix();
+
+ double scale_percent = fn.arg(0).to_number();
+
+ // Handle bogus values
+ if (isnan(scale_percent))
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror("Attempt to set _xscale to %g, refused",
+ scale_percent);
+ );
+ return;
+ }
+ else if (scale_percent < 0 )
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror("Attempt to set _xscale to %g, use 0",
+ scale_percent);
+ );
+ scale_percent = 0;
+ }
+
+ // input is in percent
+ float scale = (float)scale_percent/100.f;
+
+ // Decompose matrix and insert the desired value.
+ float x_scale = scale;
+ float y_scale = m.get_y_scale();
+ float rotation = m.get_rotation();
+ m.set_scale_rotation(x_scale, y_scale, rotation);
+
+ ptr->set_matrix(m);
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+
+}
+
+void
+character::yscale_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ matrix m = ptr->get_matrix();
+ float yscale = m.get_y_scale();
+ fn.result->set_double(yscale * 100); // result in percent
+ }
+ else // setter
+ {
+ matrix m = ptr->get_matrix();
+
+ double scale_percent = fn.arg(0).to_number();
+
+ // Handle bogus values
+ if (isnan(scale_percent))
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror("Attempt to set _yscale to %g, refused",
+ scale_percent);
+ );
+ return;
+ }
+ else if (scale_percent < 0 )
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror("Attempt to set _yscale to %g, use 0",
+ scale_percent);
+ );
+ scale_percent = 0;
+ }
+
+ // input is in percent
+ float scale = (float)scale_percent/100.f;
+
+ // Decompose matrix and insert the desired value.
+ float x_scale = m.get_x_scale();
+ float y_scale = scale;
+ float rotation = m.get_rotation();
+ m.set_scale_rotation(x_scale, y_scale, rotation);
+
+ ptr->set_matrix(m);
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+
+}
+
+void
+character::xmouse_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ // Local coord of mouse IN PIXELS.
+ int x, y, buttons;
+ VM::get().getRoot().get_mouse_state(x, y, buttons);
+
+ matrix m = ptr->get_world_matrix();
+
+ point a(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
+ point b;
+
+ m.transform_by_inverse(&b, a);
+
+ fn.result->set_double(TWIPS_TO_PIXELS(b.m_x));
+ }
+ else // setter
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror("Attempt to set read-only property '_xmouse'");
+ );
+ }
+}
+
+void
+character::ymouse_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ // Local coord of mouse IN PIXELS.
+ int x, y, buttons;
+ VM::get().getRoot().get_mouse_state(x, y, buttons);
+
+ matrix m = ptr->get_world_matrix();
+
+ point a(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
+ point b;
+
+ m.transform_by_inverse(&b, a);
+
+ fn.result->set_double(TWIPS_TO_PIXELS(b.m_y));
+ }
+ else // setter
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror("Attempt to set read-only property '_ymouse'");
+ );
+ }
+}
+
+void
+character::alpha_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ fn.result->set_double(ptr->get_cxform().m_[3][0] * 100.f);
+ }
+ else // setter
+ {
+ // Set alpha modulate, in percent.
+ cxform cx = ptr->get_cxform();
+ cx.m_[3][0] = infinite_to_fzero(fn.arg(0).to_number()) / 100.f;
+ ptr->set_cxform(cx);
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+
+}
+
+void
+character::visible_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ fn.result->set_bool(ptr->get_visible());
+ }
+ else // setter
+ {
+ ptr->set_visible(fn.arg(0).to_bool());
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+
+}
+
+void
+character::width_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ fn.result->set_double(TWIPS_TO_PIXELS(ptr->get_width()));
+ }
+ else // setter
+ {
+ // @@ tulrich: is parameter in world-coords or local-coords?
+ matrix m = ptr->get_matrix();
+ m.m_[0][0] =
infinite_to_fzero(PIXELS_TO_TWIPS(fn.arg(0).to_number()));
+ float w = ptr->get_width();
+ if (fabsf(w) > 1e-6f)
+ {
+ m.m_[0][0] /= w;
+ }
+ ptr->set_matrix(m);
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+}
+
+void
+character::height_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ fn.result->set_double(TWIPS_TO_PIXELS(ptr->get_height()));
+ }
+ else // setter
+ {
+ // @@ tulrich: is parameter in world-coords or local-coords?
+ matrix m = ptr->get_matrix();
+ m.m_[1][1] =
infinite_to_fzero(PIXELS_TO_TWIPS(fn.arg(0).to_number()));
+ float h = ptr->get_height(); // WARNING: was get_width
originally, sounds as a bug
+ if (fabsf(h) > 1e-6f)
+ {
+ m.m_[1][1] /= h;
+ }
+ ptr->set_matrix(m);
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+}
+
+void
+character::rotation_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ // Verified against Macromedia player using
samples/test_rotation.swf
+ float angle = ptr->get_matrix().get_rotation();
+
+ // Result is CLOCKWISE DEGREES, [-180,180]
+ angle *= 180.0f / float(M_PI);
+
+ fn.result->set_double(angle);
+ }
+ else // setter
+ {
+ // @@ tulrich: is parameter in world-coords or local-coords?
+ matrix m = ptr->get_matrix();
+
+ // Decompose matrix and insert the desired value.
+ float x_scale = m.get_x_scale();
+ float y_scale = m.get_y_scale();
+ // input is in degrees
+ float rotation = (float) fn.arg(0).to_number() * float(M_PI) /
180.f;
+ m.set_scale_rotation(x_scale, y_scale, rotation);
+
+ ptr->set_matrix(m);
+ ptr->transformedByScript(); // m_accept_anim_moves = false;
+ }
+}
+
+void
+character::parent_getset(const fn_call& fn)
+{
+ character* ptr = ensure_character(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ // NOTE: will be NULL for root frame !
+ // should it be 'ptr' instead ?
+ fn.result->set_as_object(ptr->get_parent());
+ }
+ else // setter
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror("Attempt to set read-only property '_parent'");
+ );
+ }
+}
+
+
+
} // namespace gnash
// Local Variables:
Index: server/character.h
===================================================================
RCS file: /sources/gnash/gnash/server/character.h,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- server/character.h 26 Jan 2007 13:17:09 -0000 1.41
+++ server/character.h 30 Jan 2007 18:29:40 -0000 1.42
@@ -18,7 +18,7 @@
//
//
-/* $Id: character.h,v 1.41 2007/01/26 13:17:09 strk Exp $ */
+/* $Id: character.h,v 1.42 2007/01/30 18:29:40 strk Exp $ */
#ifndef GNASH_CHARACTER_H
#define GNASH_CHARACTER_H
@@ -126,6 +126,40 @@
bool _dynamicallyCreated;
+
+
+ /// @{ Common ActionScript getter-setters for characters
+
+public: // TODO: make protected
+
+ static void onrollover_getset(const fn_call& fn);
+
+ static void x_getset(const fn_call& fn);
+
+ static void y_getset(const fn_call& fn);
+
+ static void xscale_getset(const fn_call& fn);
+
+ static void yscale_getset(const fn_call& fn);
+
+ static void xmouse_getset(const fn_call& fn);
+
+ static void ymouse_getset(const fn_call& fn);
+
+ static void alpha_getset(const fn_call& fn);
+
+ static void visible_getset(const fn_call& fn);
+
+ static void width_getset(const fn_call& fn);
+
+ static void height_getset(const fn_call& fn);
+
+ static void rotation_getset(const fn_call& fn);
+
+ static void parent_getset(const fn_call& fn);
+
+ /// @} Common ActionScript getter-setters for characters
+
public:
character(character* parent, int id)
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.140
retrieving revision 1.141
diff -u -b -r1.140 -r1.141
--- server/sprite_instance.cpp 29 Jan 2007 07:33:14 -0000 1.140
+++ server/sprite_instance.cpp 30 Jan 2007 18:29:40 -0000 1.141
@@ -860,349 +860,7 @@
}
#ifndef OLD_GET_MEMBER
-// TODO: consider using this same function for *every* character
-static void
-character_x_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- matrix m = ptr->get_matrix();
- fn.result->set_double(TWIPS_TO_PIXELS(m.m_[0][2]));
- }
- else // setter
- {
- matrix m = ptr->get_matrix();
- m.m_[0][2] =
infinite_to_fzero(PIXELS_TO_TWIPS(fn.arg(0).to_number()));
- ptr->set_matrix(m);
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_y_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- matrix m = ptr->get_matrix();
- fn.result->set_double(TWIPS_TO_PIXELS(m.m_[1][2]));
- }
- else // setter
- {
- matrix m = ptr->get_matrix();
- m.m_[1][2] =
infinite_to_fzero(PIXELS_TO_TWIPS(fn.arg(0).to_number()));
- ptr->set_matrix(m);
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_xscale_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- matrix m = ptr->get_matrix();
- float xscale = m.get_x_scale();
- fn.result->set_double(xscale * 100); // result in percent
- }
- else // setter
- {
- matrix m = ptr->get_matrix();
-
- double scale_percent = fn.arg(0).to_number();
-
- // Handle bogus values
- if (isnan(scale_percent))
- {
- IF_VERBOSE_ASCODING_ERRORS(
- log_aserror("Attempt to set _xscale to %g, refused",
- scale_percent);
- );
- return;
- }
- else if (scale_percent < 0 )
- {
- IF_VERBOSE_ASCODING_ERRORS(
- log_aserror("Attempt to set _xscale to %g, use 0",
- scale_percent);
- );
- scale_percent = 0;
- }
-
- // input is in percent
- float scale = (float)scale_percent/100.f;
-
- // Decompose matrix and insert the desired value.
- float x_scale = scale;
- float y_scale = m.get_y_scale();
- float rotation = m.get_rotation();
- m.set_scale_rotation(x_scale, y_scale, rotation);
-
- ptr->set_matrix(m);
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_yscale_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- matrix m = ptr->get_matrix();
- float yscale = m.get_y_scale();
- fn.result->set_double(yscale * 100); // result in percent
- }
- else // setter
- {
- matrix m = ptr->get_matrix();
-
- double scale_percent = fn.arg(0).to_number();
-
- // Handle bogus values
- if (isnan(scale_percent))
- {
- IF_VERBOSE_ASCODING_ERRORS(
- log_aserror("Attempt to set _yscale to %g, refused",
- scale_percent);
- );
- return;
- }
- else if (scale_percent < 0 )
- {
- IF_VERBOSE_ASCODING_ERRORS(
- log_aserror("Attempt to set _yscale to %g, use 0",
- scale_percent);
- );
- scale_percent = 0;
- }
-
- // input is in percent
- float scale = (float)scale_percent/100.f;
-
- // Decompose matrix and insert the desired value.
- float x_scale = m.get_x_scale();
- float y_scale = scale;
- float rotation = m.get_rotation();
- m.set_scale_rotation(x_scale, y_scale, rotation);
-
- ptr->set_matrix(m);
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_xmouse_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- // Local coord of mouse IN PIXELS.
- int x, y, buttons;
- VM::get().getRoot().get_mouse_state(x, y, buttons);
-
- matrix m = ptr->get_world_matrix();
-
- point a(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
- point b;
-
- m.transform_by_inverse(&b, a);
-
- fn.result->set_double(TWIPS_TO_PIXELS(b.m_x));
- }
- else // setter
- {
- IF_VERBOSE_ASCODING_ERRORS(
- log_aserror("Attempt to set read-only property '_xmouse'");
- );
- }
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_ymouse_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- // Local coord of mouse IN PIXELS.
- int x, y, buttons;
- VM::get().getRoot().get_mouse_state(x, y, buttons);
-
- matrix m = ptr->get_world_matrix();
-
- point a(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
- point b;
-
- m.transform_by_inverse(&b, a);
-
- fn.result->set_double(TWIPS_TO_PIXELS(b.m_y));
- }
- else // setter
- {
- IF_VERBOSE_ASCODING_ERRORS(
- log_aserror("Attempt to set read-only property '_ymouse'");
- );
- }
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_alpha_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- fn.result->set_double(ptr->get_cxform().m_[3][0] * 100.f);
- }
- else // setter
- {
- // Set alpha modulate, in percent.
- cxform cx = ptr->get_cxform();
- cx.m_[3][0] = infinite_to_fzero(fn.arg(0).to_number()) / 100.f;
- ptr->set_cxform(cx);
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_visible_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- fn.result->set_bool(ptr->get_visible());
- }
- else // setter
- {
- ptr->set_visible(fn.arg(0).to_bool());
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_width_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- fn.result->set_double(TWIPS_TO_PIXELS(ptr->get_width()));
- }
- else // setter
- {
- // @@ tulrich: is parameter in world-coords or local-coords?
- matrix m = ptr->get_matrix();
- m.m_[0][0] =
infinite_to_fzero(PIXELS_TO_TWIPS(fn.arg(0).to_number()));
- float w = ptr->get_width();
- if (fabsf(w) > 1e-6f)
- {
- m.m_[0][0] /= w;
- }
- ptr->set_matrix(m);
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-}
-// TODO: consider using this same function for *every* character
-static void
-character_height_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- fn.result->set_double(TWIPS_TO_PIXELS(ptr->get_height()));
- }
- else // setter
- {
- // @@ tulrich: is parameter in world-coords or local-coords?
- matrix m = ptr->get_matrix();
- m.m_[1][1] =
infinite_to_fzero(PIXELS_TO_TWIPS(fn.arg(0).to_number()));
- float h = ptr->get_height(); // WARNING: was get_width
originally, sounds as a bug
- if (fabsf(h) > 1e-6f)
- {
- m.m_[1][1] /= h;
- }
- ptr->set_matrix(m);
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_rotation_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- // Verified against Macromedia player using
samples/test_rotation.swf
- float angle = ptr->get_matrix().get_rotation();
-
- // Result is CLOCKWISE DEGREES, [-180,180]
- angle *= 180.0f / float(M_PI);
-
- fn.result->set_double(angle);
- }
- else // setter
- {
- // @@ tulrich: is parameter in world-coords or local-coords?
- matrix m = ptr->get_matrix();
-
- // Decompose matrix and insert the desired value.
- float x_scale = m.get_x_scale();
- float y_scale = m.get_y_scale();
- // input is in degrees
- float rotation = (float) fn.arg(0).to_number() * float(M_PI) /
180.f;
- m.set_scale_rotation(x_scale, y_scale, rotation);
-
- ptr->set_matrix(m);
- ptr->transformedByScript(); // m_accept_anim_moves = false;
- }
-}
-
-// TODO: consider using this same function for *every* character
-static void
-character_parent_getset(const fn_call& fn)
-{
- character* ptr = ensure_character(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- // NOTE: will be NULL for root frame !
- // should it be 'ptr' instead ?
- fn.result->set_as_object(ptr->get_parent());
- }
- else // setter
- {
- IF_VERBOSE_ASCODING_ERRORS(
- log_aserror("Attempt to set read-only property '_parent'");
- );
- }
-}
static void
sprite_currentframe_getset(const fn_call& fn)
@@ -1356,22 +1014,6 @@
}
static void
-sprite_onrollover_getset(const fn_call& fn)
-{
- sprite_instance* ptr = ensure_sprite(fn.this_ptr);
-
- if ( fn.nargs == 0 ) // getter
- {
- ptr->get_event_handler(event_id::ROLL_OVER, fn.result);
- }
- else // setter
- {
- ptr->set_event_handler(event_id::ROLL_OVER, fn.arg(0));
- }
-
-}
-
-static void
sprite_onrollout_getset(const fn_call& fn)
{
sprite_instance* ptr = ensure_sprite(fn.this_ptr);
@@ -1480,40 +1122,40 @@
// Properties (TODO: move to appropriate SWF version section)
//
- gettersetter = new builtin_function(&character_x_getset, NULL);
+ gettersetter = new builtin_function(&character::x_getset, NULL);
o.init_property("_x", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_y_getset, NULL);
+ gettersetter = new builtin_function(&character::y_getset, NULL);
o.init_property("_y", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_xscale_getset, NULL);
+ gettersetter = new builtin_function(&character::xscale_getset, NULL);
o.init_property("_xscale", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_yscale_getset, NULL);
+ gettersetter = new builtin_function(&character::yscale_getset, NULL);
o.init_property("_yscale", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_xmouse_getset, NULL);
+ gettersetter = new builtin_function(&character::xmouse_getset, NULL);
o.init_property("_xmouse", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_ymouse_getset, NULL);
+ gettersetter = new builtin_function(&character::ymouse_getset, NULL);
o.init_property("_ymouse", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_alpha_getset, NULL);
+ gettersetter = new builtin_function(&character::alpha_getset, NULL);
o.init_property("_alpha", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_visible_getset, NULL);
+ gettersetter = new builtin_function(&character::visible_getset, NULL);
o.init_property("_visible", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_width_getset, NULL);
+ gettersetter = new builtin_function(&character::width_getset, NULL);
o.init_property("_width", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_height_getset, NULL);
+ gettersetter = new builtin_function(&character::height_getset, NULL);
o.init_property("_height", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_rotation_getset, NULL);
+ gettersetter = new builtin_function(&character::rotation_getset, NULL);
o.init_property("_rotation", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&character_parent_getset, NULL);
+ gettersetter = new builtin_function(&character::parent_getset, NULL);
o.init_property("_parent", *gettersetter, *gettersetter);
gettersetter = new builtin_function(&sprite_currentframe_getset, NULL);
@@ -1546,7 +1188,7 @@
gettersetter = new builtin_function(&sprite_soundbuftime_getset, NULL);
o.init_property("_soundbuftime", *gettersetter, *gettersetter);
- gettersetter = new builtin_function(&sprite_onrollover_getset, NULL);
+ gettersetter = new builtin_function(&character::onrollover_getset,
NULL);
o.init_property("onRollOver", *gettersetter, *gettersetter);
gettersetter = new builtin_function(&sprite_onrollout_getset, NULL);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/character.cpp server/cha...,
Sandro Santilli <=