gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/button_character_instanc...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/button_character_instanc...
Date: Thu, 01 Nov 2007 21:54:46 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/11/01 21:54:46

Modified files:
        .              : ChangeLog 
        server         : button_character_instance.cpp character.cpp 
                         character.h movie_root.cpp movie_root.h 
                         sprite_instance.cpp 

Log message:
                * server/character.{cpp,h}: remove the do_mouse_drag
                  method. It's silly to call it for each sprite or button
                  when at the end only a single character (if any) would
                  do something useful with that.
                * server/: button_character_instance.cpp, sprite_instance.cpp:
                  remove the do_mouse_drag call from the (advance) function.
                * server/movie_root.{cpp,h}: Move the doMouseDrag method
                  here, as a private one, called from advance. Also, drag
                  anyway, even if not correctly, when the drag is not
                  lock-centered (to be fixed later).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4756&r2=1.4757
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&r1=1.62&r2=1.63
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.105&r2=1.106
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.cpp?cvsroot=gnash&r1=1.114&r2=1.115
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.h?cvsroot=gnash&r1=1.84&r2=1.85
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.374&r2=1.375

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4756
retrieving revision 1.4757
diff -u -b -r1.4756 -r1.4757
--- ChangeLog   1 Nov 2007 20:21:54 -0000       1.4756
+++ ChangeLog   1 Nov 2007 21:54:44 -0000       1.4757
@@ -1,3 +1,16 @@
+2007-11-01 Sandro Santilli <address@hidden>
+
+       * server/character.{cpp,h}: remove the do_mouse_drag
+         method. It's silly to call it for each sprite or button
+         when at the end only a single character (if any) would
+         do something useful with that.
+       * server/: button_character_instance.cpp, sprite_instance.cpp:
+         remove the do_mouse_drag call from the (advance) function.
+       * server/movie_root.{cpp,h}: Move the doMouseDrag method
+         here, as a private one, called from advance. Also, drag
+         anyway, even if not correctly, when the drag is not
+         lock-centered (to be fixed later).
+
 2007-11-01 Bastiaan Jacques <address@hidden>
 
        * backend/render_handler.h: Document that draw_poly draws a

Index: server/button_character_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- server/button_character_instance.cpp        30 Oct 2007 18:55:42 -0000      
1.62
+++ server/button_character_instance.cpp        1 Nov 2007 21:54:45 -0000       
1.63
@@ -375,8 +375,6 @@
 button_character_instance::advance(float delta_time)
 {
 //                     printf("%s:\n", __PRETTY_FUNCTION__); // FIXME:
-       // Implement mouse-drag.
-       character::do_mouse_drag();
 
        matrix  mat = get_world_matrix();
 

Index: server/character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/character.cpp,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- server/character.cpp        26 Oct 2007 13:03:56 -0000      1.59
+++ server/character.cpp        1 Nov 2007 21:54:45 -0000       1.60
@@ -17,7 +17,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 // 
 
-/* $Id: character.cpp,v 1.59 2007/10/26 13:03:56 strk Exp $ */
+/* $Id: character.cpp,v 1.60 2007/11/01 21:54:45 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -51,60 +51,6 @@
 }
 
 
-// TODO: this should likely go in movie_root instead !
-void
-character::do_mouse_drag()
-{
-       drag_state st;
-       _vm.getRoot().get_drag_state(st);
-       if ( this == st.getCharacter() )
-       {
-               // We're being dragged!
-               int     x, y, buttons;
-               get_root_movie()->get_mouse_state(x, y, buttons);
-
-               point world_mouse(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
-               if ( st.hasBounds() )
-               {
-                       // Clamp mouse coords within a defined rect.
-                       // (it is assumed that drag_state keeps
-                       st.getBounds().clamp(world_mouse);
-               }
-
-               if (st.isLockCentered())
-               {
-                   matrix      world_mat = get_world_matrix();
-                   point       local_mouse;
-                   world_mat.transform_by_inverse(&local_mouse, world_mouse);
-
-                   matrix      parent_world_mat;
-                   if (m_parent != NULL)
-                       {
-                           parent_world_mat = m_parent->get_world_matrix();
-                       }
-
-                   point       parent_mouse;
-                   parent_world_mat.transform_by_inverse(&parent_mouse, 
world_mouse);
-                                       
-                   // Place our origin so that it coincides with the mouse 
coords
-                   // in our parent frame.
-                   matrix      local = get_matrix();
-                   local.set_translation( parent_mouse.m_x, parent_mouse.m_y );
-                   set_matrix(local);
-               }
-               else
-               {
-                       // FIXME: Implement relative drag...
-                       static bool warned_relative_drag = false;
-                       if ( ! warned_relative_drag )
-                       {
-                               log_unimpl(_("Relative drag"));
-                               warned_relative_drag = true;
-                       }
-               }
-       }
-}
-
 matrix
 character::get_world_matrix() const
 {

Index: server/character.h
===================================================================
RCS file: /sources/gnash/gnash/server/character.h,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -b -r1.105 -r1.106
--- server/character.h  30 Oct 2007 17:29:23 -0000      1.105
+++ server/character.h  1 Nov 2007 21:54:45 -0000       1.106
@@ -19,7 +19,7 @@
 //
 //
 
-/* $Id: character.h,v 1.105 2007/10/30 17:29:23 strk Exp $ */
+/* $Id: character.h,v 1.106 2007/11/01 21:54:45 strk Exp $ */
 
 #ifndef GNASH_CHARACTER_H
 #define GNASH_CHARACTER_H
@@ -220,9 +220,6 @@
 
        boost::intrusive_ptr<character> m_parent;
 
-       /// Implement mouse-dragging for this movie.
-       void do_mouse_drag();
-
        /// look for '.', 'this',  '..', '_parent', '_level0' and '_root'
        //
        /// NOTE: case insensitive up to SWF6, sensitive from SWF7 up

Index: server/movie_root.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.cpp,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -b -r1.114 -r1.115
--- server/movie_root.cpp       22 Oct 2007 21:13:16 -0000      1.114
+++ server/movie_root.cpp       1 Nov 2007 21:54:45 -0000       1.115
@@ -666,6 +666,56 @@
        assert(testInvariant());
 }
 
+void
+movie_root::doMouseDrag()
+{
+       character* dragChar = m_drag_state.getCharacter();
+       if ( ! dragChar || dragChar->isUnloaded() ) return; // nothing to do
+
+       int     x, y, buttons;
+       get_mouse_state(x, y, buttons);
+
+       point world_mouse(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
+       if ( m_drag_state.hasBounds() )
+       {
+               // Clamp mouse coords within a defined rect.
+               m_drag_state.getBounds().clamp(world_mouse);
+       }
+
+       if (! m_drag_state.isLockCentered())
+       {
+               // FIXME: Implement relative drag...
+               static bool warned_relative_drag = false;
+               if ( ! warned_relative_drag )
+               {
+                       log_unimpl(_("Relative drag"));
+                       warned_relative_drag = true;
+               }
+       }
+
+#if 0
+       matrix  world_mat = dragChar->get_world_matrix();
+       point   local_mouse;
+       world_mat.transform_by_inverse(&local_mouse, world_mouse);
+#endif
+
+       matrix  parent_world_mat;
+       character* parent = dragChar->get_parent();
+       if (parent != NULL)
+       {
+           parent_world_mat = parent->get_world_matrix();
+       }
+
+       point   parent_mouse;
+       parent_world_mat.transform_by_inverse(&parent_mouse, world_mouse);
+                       
+       // Place our origin so that it coincides with the mouse coords
+       // in our parent frame.
+       matrix  local = dragChar->get_matrix();
+       local.set_translation( parent_mouse.m_x, parent_mouse.m_y );
+       dragChar->set_matrix(local);
+}
+
 unsigned int
 movie_root::add_interval_timer(std::auto_ptr<Timer> timer, bool internal)
 {
@@ -710,6 +760,9 @@
 {
        // GNASH_REPORT_FUNCTION;
 
+       // Do mouse drag, if needed
+       doMouseDrag();
+
        try
        {
 

Index: server/movie_root.h
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.h,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -b -r1.84 -r1.85
--- server/movie_root.h 30 Oct 2007 18:55:42 -0000      1.84
+++ server/movie_root.h 1 Nov 2007 21:54:45 -0000       1.85
@@ -15,7 +15,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/* $Id: movie_root.h,v 1.84 2007/10/30 18:55:42 strk Exp $ */
+/* $Id: movie_root.h,v 1.85 2007/11/01 21:54:45 strk Exp $ */
 
 /// \page events_handling Handling of user events
 ///
@@ -604,6 +604,9 @@
 
 private:
 
+    /// Take care of dragging, if needed
+    void doMouseDrag();
+
     /// Delete all elements on the action queue and empty it.
     void clearActionQueue();
 

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.374
retrieving revision 1.375
diff -u -b -r1.374 -r1.375
--- server/sprite_instance.cpp  29 Oct 2007 21:23:16 -0000      1.374
+++ server/sprite_instance.cpp  1 Nov 2007 21:54:45 -0000       1.375
@@ -2331,9 +2331,6 @@
        // Process any pending loadVariables request
        processCompletedLoadVariableRequests();
 
-       // mouse drag.
-       character::do_mouse_drag();
-
 #ifdef GNASH_DEBUG
        size_t frame_count = m_def->get_frame_count();
 




reply via email to

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