[QGIS Commit] r10725 - trunk/qgis/src/plugins/diagram_overlay

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon May 4 09:47:03 EDT 2009


Author: mhugent
Date: 2009-05-04 09:47:03 -0400 (Mon, 04 May 2009)
New Revision: 10725

Modified:
   trunk/qgis/src/plugins/diagram_overlay/qgsdiagramoverlay.cpp
Log:
Bugfix: consider multiple overlay objects for multitypes (or also possible no overlay objects if the feature is too small)

Modified: trunk/qgis/src/plugins/diagram_overlay/qgsdiagramoverlay.cpp
===================================================================
--- trunk/qgis/src/plugins/diagram_overlay/qgsdiagramoverlay.cpp	2009-05-04 11:55:44 UTC (rev 10724)
+++ trunk/qgis/src/plugins/diagram_overlay/qgsdiagramoverlay.cpp	2009-05-04 13:47:03 UTC (rev 10725)
@@ -135,24 +135,29 @@
         {
           if ( it.value() )
           {
-            QgsPoint overlayPosition = it.value()->position();
+            QList<QgsPoint> positionList = it.value()->positions();
             const QgsCoordinateTransform* ct = context.coordinateTransform();
-            if ( ct )
-            {
-              overlayPosition = ct->transform( overlayPosition );
-            }
-            context.mapToPixel().transform( &overlayPosition );
-            int shiftX = currentDiagramImage->width() / 2;
-            int shiftY = currentDiagramImage->height() / 2;
 
-            if ( painter )
+            QList<QgsPoint>::const_iterator positionIt = positionList.constBegin();
+            for(; positionIt != positionList.constEnd(); ++positionIt)
             {
-              painter->save();
-              painter->scale( 1.0 / context.rasterScaleFactor(), 1.0 / context.rasterScaleFactor() );
-              //painter->drawRect(( int )( overlayPosition.x() * context.rasterScaleFactor() ) - shiftX, ( int )( overlayPosition.y() * context.rasterScaleFactor() ) - shiftY, it.value()->width(), it.value()->height());
-              painter->drawImage(( int )( overlayPosition.x() * context.rasterScaleFactor() ) - shiftX, ( int )( overlayPosition.y() * context.rasterScaleFactor() ) - shiftY, *currentDiagramImage );
+                QgsPoint overlayPosition = *positionIt;
+                if ( ct )
+                {
+                    overlayPosition = ct->transform(overlayPosition);
+                }
+                context.mapToPixel().transform( &overlayPosition );
+                int shiftX = currentDiagramImage->width() / 2;
+                int shiftY = currentDiagramImage->height() / 2;
 
-              painter->restore();
+                if ( painter )
+                {
+                    painter->save();
+                    painter->scale( 1.0 / context.rasterScaleFactor(), 1.0 / context.rasterScaleFactor() );
+                    //painter->drawRect(( int )( overlayPosition.x() * context.rasterScaleFactor() ) - shiftX, ( int )( overlayPosition.y() * context.rasterScaleFactor() ) - shiftY, it.value()->width(), it.value()->height());
+                    painter->drawImage(( int )( overlayPosition.x() * context.rasterScaleFactor() ) - shiftX, ( int )( overlayPosition.y() * context.rasterScaleFactor() ) - shiftY, *currentDiagramImage );
+                    painter->restore();
+                }
             }
           }
         }



More information about the QGIS-commit mailing list