From 49448c3fa88c7ddde83a663aa2b6f5f2ce7ffe55 Mon Sep 17 00:00:00 2001 From: jef Date: Mon, 28 Dec 2009 14:04:16 +0000 Subject: [PATCH] fix #2329 git-svn-id: http://svn.osgeo.org/qgis/trunk@12632 c8812cc2-4d05-0410-92ff-de0c093fc19c --- .../renderer/qgsgraduatedsymbolrenderer.cpp | 17 ++++++++++++++++- src/core/renderer/qgsuniquevaluerenderer.cpp | 16 +++++++++++++++- src/core/symbology/qgsmarkercatalogue.cpp | 4 ++-- src/core/symbology/qgssymbol.cpp | 4 ++-- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/core/renderer/qgsgraduatedsymbolrenderer.cpp b/src/core/renderer/qgsgraduatedsymbolrenderer.cpp index 1bb49e3a7d2..b9191b8baa8 100644 --- a/src/core/renderer/qgsgraduatedsymbolrenderer.cpp +++ b/src/core/renderer/qgsgraduatedsymbolrenderer.cpp @@ -165,7 +165,22 @@ void QgsGraduatedSymbolRenderer::renderFeature( QgsRenderContext &renderContext, oldName = theSymbol->pointSymbolName(); theSymbol->setNamedPointSymbol( name ); } - *img = theSymbol->getPointSymbolAsImage( renderContext.scaleFactor(), selected, mSelectionColor, fieldScale, + + double scale = renderContext.scaleFactor(); + + if ( theSymbol->pointSizeUnits() ) + { + /* Calc scale (still not nice) */ + QgsPoint point; + point = renderContext.mapToPixel().transform( 0, 0 ); + double x1 = point.x(); + point = renderContext.mapToPixel().transform( 1000, 0 ); + double x2 = point.x(); + + scale *= ( x2 - x1 ) * 0.001; + } + + *img = theSymbol->getPointSymbolAsImage( scale, selected, mSelectionColor, fieldScale, rotation, renderContext.rasterScaleFactor(), opacity ); if ( !oldName.isNull() ) diff --git a/src/core/renderer/qgsuniquevaluerenderer.cpp b/src/core/renderer/qgsuniquevaluerenderer.cpp index eb2650c8acf..26e9801c2f3 100644 --- a/src/core/renderer/qgsuniquevaluerenderer.cpp +++ b/src/core/renderer/qgsuniquevaluerenderer.cpp @@ -141,7 +141,21 @@ void QgsUniqueValueRenderer::renderFeature( QgsRenderContext &renderContext, Qgs symbol->setNamedPointSymbol( name ); } - *img = symbol->getPointSymbolAsImage( renderContext.scaleFactor(), selected, mSelectionColor, + double scale = renderContext.scaleFactor(); + + if ( symbol->pointSizeUnits() ) + { + /* Calc scale (still not nice) */ + QgsPoint point; + point = renderContext.mapToPixel().transform( 0, 0 ); + double x1 = point.x(); + point = renderContext.mapToPixel().transform( 1000, 0 ); + double x2 = point.x(); + + scale *= ( x2 - x1 ) * 0.001; + } + + *img = symbol->getPointSymbolAsImage( scale, selected, mSelectionColor, fieldScale, rotation, renderContext.rasterScaleFactor(), opacity ); if ( !oldName.isNull() ) diff --git a/src/core/symbology/qgsmarkercatalogue.cpp b/src/core/symbology/qgsmarkercatalogue.cpp index 769484e13dc..9a01834a22a 100644 --- a/src/core/symbology/qgsmarkercatalogue.cpp +++ b/src/core/symbology/qgsmarkercatalogue.cpp @@ -300,7 +300,7 @@ void QgsMarkerCatalogue::hardMarker( QPainter * thepPainter, int imageSize, QStr // width is necessary. double r = s / 2; // get half the size of the figure to be rendered (the radius) - QgsDebugMsg( QString( "Hard marker size %1" ).arg( s ) ); + QgsDebugMsgLevel( QString( "Hard marker size %1" ).arg( s ), 3 ); // Find out center coordinates of the QImage to draw on. double x_c = ( double )( imageSize / 2 ) + 0.5; // add 1/2 pixel for proper rounding when the figure's coordinates are added @@ -309,7 +309,7 @@ void QgsMarkerCatalogue::hardMarker( QPainter * thepPainter, int imageSize, QStr thepPainter->setPen( pen ); thepPainter->setBrush( brush ); - QgsDebugMsg( QString( "Hard marker radius %1" ).arg( r ) ); + QgsDebugMsgLevel( QString( "Hard marker radius %1" ).arg( r ), 3 ); // If radius is 0, draw a circle, so it wont disappear. if ( name == "circle" || r < 1 ) diff --git a/src/core/symbology/qgssymbol.cpp b/src/core/symbology/qgssymbol.cpp index 00971430b76..e5c2cb4c1e2 100644 --- a/src/core/symbology/qgssymbol.cpp +++ b/src/core/symbology/qgssymbol.cpp @@ -411,9 +411,9 @@ QImage QgsSymbol::getPointSymbolAsImage( double widthScale, bool selected, QColo } else { - QgsDebugMsg( QString( "marker:%1 mPointSize:%2 mPointSizeUnits:%3 scale:%4 widthScale:%5 rasterScaleFactor:%6 opacity:%7" ) + QgsDebugMsgLevel( QString( "marker:%1 mPointSize:%2 mPointSizeUnits:%3 scale:%4 widthScale:%5 rasterScaleFactor:%6 opacity:%7" ) .arg( mPointSymbolName ).arg( mSize ).arg( mSizeInMapUnits ? "true" : "false" ) - .arg( scale ).arg( widthScale ).arg( rasterScaleFactor ).arg( opacity ) ); + .arg( scale ).arg( widthScale ).arg( rasterScaleFactor ).arg( opacity ), 3 ); preRotateImage = QgsMarkerCatalogue::instance()->imageMarker(