gnash-commit
[Top][All Lists]
Advanced

[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);




reply via email to

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