[QGIS Commit] r8265 - in trunk/qgis/src: gui ui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Tue Mar 25 11:36:50 EDT 2008


Author: mhugent
Date: 2008-03-25 11:36:49 -0400 (Tue, 25 Mar 2008)
New Revision: 8265

Modified:
   trunk/qgis/src/gui/qgsmapcanvas.cpp
   trunk/qgis/src/gui/qgsmapcanvas.h
   trunk/qgis/src/ui/qgsoptionsbase.ui
Log:
Applied patch 1004 that adds zoom to direction of mouse cursor

Modified: trunk/qgis/src/gui/qgsmapcanvas.cpp
===================================================================
--- trunk/qgis/src/gui/qgsmapcanvas.cpp	2008-03-25 07:50:49 UTC (rev 8264)
+++ trunk/qgis/src/gui/qgsmapcanvas.cpp	2008-03-25 15:36:49 UTC (rev 8265)
@@ -819,12 +819,30 @@
       // zoom without changing extent
       zoom(e->delta() > 0);
       break;
-      
+
     case WheelZoomAndRecenter:
       // zoom and don't change extent
       zoomWithCenter(e->x(), e->y(), e->delta() > 0);
       break;
-      
+
+    case WheelZoomToMouseCursor:
+    {
+      // zoom map to mouse cursor
+      double scaleFactor = e->delta() > 0 ? 1 / mWheelZoomFactor : mWheelZoomFactor;
+
+      QgsPoint oldCenter(mMapRender->extent().center());
+      QgsPoint mousePos(getCoordinateTransform()->toMapPoint(e->x(), e->y()));
+      QgsPoint newCenter(mousePos.x() + ((oldCenter.x() - mousePos.x()) * scaleFactor), 
+        mousePos.y() + ((oldCenter.y() - mousePos.y()) * scaleFactor));
+
+      // same as zoomWithCenter (no coordinate transformations are needed)
+      QgsRect extent = mMapRender->extent();
+      extent.scale(scaleFactor, &newCenter);
+      setExtent(extent);
+      refresh();
+      break;
+    }
+
     case WheelNothing:
       // well, nothing!
       break;

Modified: trunk/qgis/src/gui/qgsmapcanvas.h
===================================================================
--- trunk/qgis/src/gui/qgsmapcanvas.h	2008-03-25 07:50:49 UTC (rev 8264)
+++ trunk/qgis/src/gui/qgsmapcanvas.h	2008-03-25 15:36:49 UTC (rev 8265)
@@ -95,7 +95,7 @@
 
   public:
     
-    enum WheelAction { WheelZoom, WheelZoomAndRecenter, WheelNothing };
+    enum WheelAction { WheelZoom, WheelZoomAndRecenter, WheelZoomToMouseCursor, WheelNothing };
         
     //! Constructor
     QgsMapCanvas(QWidget * parent = 0, const char *name = 0);

Modified: trunk/qgis/src/ui/qgsoptionsbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsoptionsbase.ui	2008-03-25 07:50:49 UTC (rev 8264)
+++ trunk/qgis/src/ui/qgsoptionsbase.ui	2008-03-25 15:36:49 UTC (rev 8265)
@@ -489,6 +489,11 @@
             </item>
             <item>
              <property name="text" >
+              <string>Zoom to mouse cursor</string>
+             </property>
+            </item>
+            <item>
+             <property name="text" >
               <string>Nothing</string>
              </property>
             </item>



More information about the QGIS-commit mailing list