gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog backend/render_handler.h backen...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen...
Date: Wed, 23 Apr 2008 14:29:37 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/04/23 14:29:37

Modified files:
        .              : ChangeLog 
        backend        : render_handler.h render_handler_agg.cpp 
                         render_handler_ogl.cpp 
        gui            : gui.cpp gui.h 
        server         : render.cpp render.h 

Log message:
                * server/render.{cpp,h}: drop get_scale interface (unused).
                * backend/render_handler.h: add set_translation method, to
                  go togheter with set_scale for setting a "stage matrix".
                * backend/render_handler_agg.cpp, 
backend/render_handler_ogl.cpp:
                  Implement set_translation.
                * gui/gui.{cpp,h}: add x/y offset private member, compute 
offsets
                  and scales on resize_view configuring renderer accordingly
                  (align stage to center).
                  Use scale/offset in notify_mouse_moved for proper 
Window-to-Stage
                  coordinate conversion.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6357&r2=1.6358
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler.h?cvsroot=gnash&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg.cpp?cvsroot=gnash&r1=1.134&r2=1.135
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_ogl.cpp?cvsroot=gnash&r1=1.109&r2=1.110
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gui.cpp?cvsroot=gnash&r1=1.153&r2=1.154
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gui.h?cvsroot=gnash&r1=1.88&r2=1.89
http://cvs.savannah.gnu.org/viewcvs/gnash/server/render.cpp?cvsroot=gnash&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/gnash/server/render.h?cvsroot=gnash&r1=1.21&r2=1.22

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6357
retrieving revision 1.6358
diff -u -b -r1.6357 -r1.6358
--- ChangeLog   23 Apr 2008 13:50:51 -0000      1.6357
+++ ChangeLog   23 Apr 2008 14:29:36 -0000      1.6358
@@ -1,5 +1,18 @@
 2008-04-23 Sandro Santilli <address@hidden>
 
+       * server/render.{cpp,h}: drop get_scale interface (unused).
+       * backend/render_handler.h: add set_translation method, to
+         go togheter with set_scale for setting a "stage matrix".
+       * backend/render_handler_agg.cpp, backend/render_handler_ogl.cpp:
+         Implement set_translation.
+       * gui/gui.{cpp,h}: add x/y offset private member, compute offsets
+         and scales on resize_view configuring renderer accordingly
+         (align stage to center).
+         Use scale/offset in notify_mouse_moved for proper Window-to-Stage
+         coordinate conversion. 
+
+2008-04-23 Sandro Santilli <address@hidden>
+
        * server/movie_root.cpp (clear): remove key/mouse listeners. Fixes
          an assertion failure running levels.swf with PARANOIA_LEVEL > 1.
 

Index: backend/render_handler.h
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler.h,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- backend/render_handler.h    27 Mar 2008 13:04:31 -0000      1.59
+++ backend/render_handler.h    23 Apr 2008 14:29:36 -0000      1.60
@@ -590,7 +590,9 @@
     // nop
   }
 
-  virtual void get_scale(point& /*scale*/) {
+  /// Sets the x/y offset for the movie  
+  virtual void set_translation(float /*xoff*/, float /*yoff*/) {
+    // nop
   }
     
 protected:

Index: backend/render_handler_agg.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_agg.cpp,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -b -r1.134 -r1.135
--- backend/render_handler_agg.cpp      2 Apr 2008 12:24:18 -0000       1.134
+++ backend/render_handler_agg.cpp      23 Apr 2008 14:29:36 -0000      1.135
@@ -2014,18 +2014,17 @@
   }
   
   void set_scale(float new_xscale, float new_yscale) {
-    /*xscale = new_xscale/20.0f;
-    yscale = new_yscale/20.0f;*/
     
     scale_set=true;
     
+    log_debug("AGG scale being set, will discard translation");
     stage_matrix.set_identity();
     stage_matrix.set_scale(new_xscale/20.0f, new_yscale/20.0f);
   }
 
-  virtual void get_scale(point& scale) {
-    scale.x = PIXELS_TO_TWIPS(stage_matrix.get_x_scale());
-    scale.y = PIXELS_TO_TWIPS(stage_matrix.get_y_scale());
+  void set_translation(float xoff, float yoff) {
+    log_debug("AGG translation being set, will discard translation");
+    stage_matrix.set_translation(xoff, yoff);
   }
   
   virtual unsigned int getBytesPerPixel() const {

Index: backend/render_handler_ogl.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_ogl.cpp,v
retrieving revision 1.109
retrieving revision 1.110
diff -u -b -r1.109 -r1.110
--- backend/render_handler_ogl.cpp      12 Mar 2008 23:19:04 -0000      1.109
+++ backend/render_handler_ogl.cpp      23 Apr 2008 14:29:36 -0000      1.110
@@ -1604,11 +1604,6 @@
     _yscale = yscale;
   }
 
-  virtual void get_scale(point& scale) {
-    scale.x = _xscale;
-    scale.y = _yscale;
-  }
-  
   virtual void set_invalidated_regions(const InvalidatedRanges& ranges)
   {
 #if 0

Index: gui/gui.cpp
===================================================================
RCS file: /sources/gnash/gnash/gui/gui.cpp,v
retrieving revision 1.153
retrieving revision 1.154
diff -u -b -r1.153 -r1.154
--- gui/gui.cpp 23 Apr 2008 11:43:48 -0000      1.153
+++ gui/gui.cpp 23 Apr 2008 14:29:37 -0000      1.154
@@ -84,7 +84,9 @@
     _mouseShown(true),
     _maxAdvances(0),
     _xscale(1.0f),
-    _yscale(1.0f)
+    _yscale(1.0f),
+    _xoffset(0),
+    _yoffset(0)
 #ifdef GNASH_FPS_DEBUG
     ,fps_counter(0)
     ,fps_counter_total(0)
@@ -123,7 +125,9 @@
     _mouseShown(true),
     _maxAdvances(0),
     _xscale(scale),
-    _yscale(scale)
+    _yscale(scale),
+    _xoffset(0), // TODO: x and y offset will need update !
+    _yoffset(0)
 #ifdef GNASH_FPS_DEBUG
     ,fps_counter(0)    
     ,fps_counter_total(0)    
@@ -219,7 +223,7 @@
 void
 Gui::resize_view(int width, int height)
 {
-//     GNASH_REPORT_FUNCTION;
+       GNASH_REPORT_FUNCTION;
 
        assert(width>0);
        assert(height>0);
@@ -232,11 +236,12 @@
                        _stage->set_display_viewport(0, 0, width, height);
                }
 
-               if ( _stage && _stage->isRescalingAllowed() )
-               {
                        float swfwidth = _movieDef->get_width_pixels();
                        float swfheight = _movieDef->get_height_pixels();
 
+               if ( _stage && _stage->isRescalingAllowed() )
+               {
+
                        // set new scale value ( user-pixel / pseudo-pixel )
                        _xscale = width / swfwidth;
                        _yscale = height / swfheight;
@@ -244,9 +249,37 @@
                        // always scale proportionally
                        if (_xscale < _yscale) _yscale = _xscale;
                        else if (_yscale < _xscale) _xscale = _yscale;
+               }
+               else
+               {
+                       _xscale = _yscale = 1.0f;
+               }
                        
-                       _renderer->set_scale(_xscale, _yscale);
+               _xoffset=0;
+               _yoffset=0;
+
+               // TODO: check Stage.getAlignMode
+               {
+                       // Align to center
+
+                       // Offsets in pixels
+                       float defWidth = swfwidth *= _xscale;
+                       float defHeight = swfheight *= _yscale;
+                       if ( width > defWidth )
+                       {
+                               float diffWidth = width-defWidth;
+                               _xoffset = diffWidth/2.0;
                }
+                       if ( width > defHeight )
+                       {
+                               float diffHeight = height-defHeight;
+                               _yoffset = diffHeight/2.0;
+                       }
+               }
+
+               // TODO: have a generic set_matrix ?
+               _renderer->set_scale(_xscale, _yscale);
+               _renderer->set_translation(_xoffset, _yoffset);
 
        }
        else
@@ -368,10 +401,10 @@
        if ( _stopped ) return;
 
        // A stage pseudopixel is user pixel / _xscale wide
-       float x = ux / _xscale;
+       float x = (ux-_xoffset) / _xscale;
 
        // A stage pseudopixel is user pixel / _xscale high
-       float y = uy / _yscale;
+       float y = (uy-_yoffset) / _yscale;
 
 #ifdef DEBUG_MOUSE_COORDINATES
        log_debug(_("mouse @ %d,%d"), x, y);

Index: gui/gui.h
===================================================================
RCS file: /sources/gnash/gnash/gui/gui.h,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -b -r1.88 -r1.89
--- gui/gui.h   23 Apr 2008 11:43:48 -0000      1.88
+++ gui/gui.h   23 Apr 2008 14:29:37 -0000      1.89
@@ -412,6 +412,12 @@
     /// Height of a window pixel, in stage pseudopixel units.
     float           _yscale;
 
+    /// Window pixel X offset of stage origin
+    float           _xoffset;
+
+    /// Window pixel Y offset of stage origin
+    float           _yoffset;
+
     bool display(movie_root* m);
     
 #ifdef GNASH_FPS_DEBUG

Index: server/render.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/render.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- server/render.cpp   4 Dec 2007 11:45:29 -0000       1.23
+++ server/render.cpp   23 Apr 2008 14:29:37 -0000      1.24
@@ -77,15 +77,6 @@
                        if (s_render_handler) 
s_render_handler->delete_bitmap_info(bi);
                }
 
-               void get_scale(point& scale) {
-                       if (s_render_handler) {
-                               s_render_handler->get_scale(scale);
-                       } else {
-                               scale.x = 1.0;
-                               scale.y = 1.0;
-                       }
-               }
-
                // Returns the format the current renderer wants videoframes in.
                int videoFrameFormat() {
                        if (s_render_handler) return 
s_render_handler->videoFrameFormat();

Index: server/render.h
===================================================================
RCS file: /sources/gnash/gnash/server/render.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- server/render.h     4 Dec 2007 11:45:29 -0000       1.21
+++ server/render.h     23 Apr 2008 14:29:37 -0000      1.22
@@ -43,9 +43,6 @@
                /// See render_handler::create_bitmap_info_rgba (in 
backend/render_handler.h)
                bitmap_info*    create_bitmap_info_rgba(image::rgba* im);
 
-               /// See render_handler::get_scale (in backend/render_handler.h)
-               void get_scale(point& scale);
-
                /// See render_handler::delete_bitmap_info (in 
backend/render_handler.h)
                void    delete_bitmap_info(bitmap_info* bi);
 




reply via email to

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