[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