[QGIS Commit] r8322 - in branches/rendercontext-branch/src:
app/legend core core/renderer core/symbology
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Mon Apr 7 03:10:32 EDT 2008
Author: mhugent
Date: 2008-04-07 03:10:32 -0400 (Mon, 07 Apr 2008)
New Revision: 8322
Modified:
branches/rendercontext-branch/src/app/legend/qgslegend.cpp
branches/rendercontext-branch/src/app/legend/qgslegendlayer.cpp
branches/rendercontext-branch/src/app/legend/qgslegendlayer.h
branches/rendercontext-branch/src/core/qgsmaprender.cpp
branches/rendercontext-branch/src/core/qgsrendercontext.cpp
branches/rendercontext-branch/src/core/qgsrendercontext.h
branches/rendercontext-branch/src/core/qgsvectorlayer.cpp
branches/rendercontext-branch/src/core/qgsvectorlayer.h
branches/rendercontext-branch/src/core/renderer/qgscontinuouscolorrenderer.cpp
branches/rendercontext-branch/src/core/renderer/qgscontinuouscolorrenderer.h
branches/rendercontext-branch/src/core/renderer/qgsgraduatedsymbolrenderer.cpp
branches/rendercontext-branch/src/core/renderer/qgsgraduatedsymbolrenderer.h
branches/rendercontext-branch/src/core/renderer/qgsrenderer.h
branches/rendercontext-branch/src/core/renderer/qgssinglesymbolrenderer.cpp
branches/rendercontext-branch/src/core/renderer/qgssinglesymbolrenderer.h
branches/rendercontext-branch/src/core/renderer/qgsuniquevaluerenderer.cpp
branches/rendercontext-branch/src/core/renderer/qgsuniquevaluerenderer.h
branches/rendercontext-branch/src/core/symbology/qgssymbol.cpp
branches/rendercontext-branch/src/core/symbology/qgssymbol.h
Log:
Scale point images to fit printer resolution
Modified: branches/rendercontext-branch/src/app/legend/qgslegend.cpp
===================================================================
--- branches/rendercontext-branch/src/app/legend/qgslegend.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/app/legend/qgslegend.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -28,6 +28,7 @@
#include "qgslegendlayerfile.h"
#include "qgslegendlayerfilegroup.h"
#include "qgsmapcanvas.h"
+#include "qgsmapcanvasmap.h"
#include "qgsmaplayer.h"
#include "qgsmaplayerregistry.h"
#include "qgsmaprender.h"
@@ -1451,7 +1452,13 @@
//store the current item
QTreeWidgetItem* theCurrentItem = currentItem();
- theLegendLayer->refreshSymbology(key);
+ double widthScale = 1.0;
+ if(mMapCanvas && mMapCanvas->map())
+ {
+ widthScale = mMapCanvas->map()->paintDevice().logicalDpiX()/25.4;
+ }
+
+ theLegendLayer->refreshSymbology(key, widthScale);
//restore the current item again
setCurrentItem(theCurrentItem);
Modified: branches/rendercontext-branch/src/app/legend/qgslegendlayer.cpp
===================================================================
--- branches/rendercontext-branch/src/app/legend/qgslegendlayer.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/app/legend/qgslegendlayer.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -249,7 +249,7 @@
}
}
-void QgsLegendLayer::refreshSymbology(const QString& key)
+void QgsLegendLayer::refreshSymbology(const QString& key, double widthScale)
{
QgsMapLayer* theMapLayer = QgsMapLayerRegistry::instance()->mapLayer(key);
if(!theMapLayer)
@@ -260,7 +260,7 @@
if (theMapLayer->type() == QgsMapLayer::VECTOR) // VECTOR
{
QgsVectorLayer* vlayer = dynamic_cast<QgsVectorLayer*>(theMapLayer);
- vectorLayerSymbology(vlayer); // get and change symbology
+ vectorLayerSymbology(vlayer, widthScale); // get and change symbology
}
else // RASTER
{
@@ -308,7 +308,7 @@
-void QgsLegendLayer::vectorLayerSymbology(const QgsVectorLayer* layer)
+void QgsLegendLayer::vectorLayerSymbology(const QgsVectorLayer* layer, double widthScale)
{
SymbologyList itemList;
@@ -322,7 +322,7 @@
QImage img;
if((*it)->type() == QGis::Point)
{
- img = (*it)->getPointSymbolAsImage();
+ img = (*it)->getPointSymbolAsImage(widthScale);
}
else if((*it)->type() == QGis::Line)
{
Modified: branches/rendercontext-branch/src/app/legend/qgslegendlayer.h
===================================================================
--- branches/rendercontext-branch/src/app/legend/qgslegendlayer.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/app/legend/qgslegendlayer.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -68,7 +68,7 @@
void updateCheckState();
/**Updates symbology of the layer and copies symbology to other layer files in the group*/
- void refreshSymbology(const QString& key);
+ void refreshSymbology(const QString& key, double widthScale = 1.0);
/**Goes through all the legendlayerfiles and adds editing/overview pixmaps to the icon. If not all layer files
have the same editing/overview state, a tristate is applied*/
@@ -94,7 +94,7 @@
protected:
/** Prepare and change symbology for vector layer */
- void vectorLayerSymbology(const QgsVectorLayer* mapLayer);
+ void vectorLayerSymbology(const QgsVectorLayer* mapLayer, double widthScale = 1.0);
/** Prepare and change symbology for raster layer */
void rasterLayerSymbology(QgsRasterLayer* mapLayer);
Modified: branches/rendercontext-branch/src/core/qgsmaprender.cpp
===================================================================
--- branches/rendercontext-branch/src/core/qgsmaprender.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/qgsmaprender.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -243,6 +243,7 @@
double scaleFactor = sceneDpi/25.4; //units should always be mm
double rasterScaleFactor = (thePaintDevice->logicalDpiX() + thePaintDevice->logicalDpiY()) / 2.0 /sceneDpi;
mRenderContext.setScaleFactor(scaleFactor);
+ mRenderContext.setRasterScaleFactor(rasterScaleFactor);
// render all layers in the stack, starting at the base
QListIterator<QString> li(mLayerSet);
Modified: branches/rendercontext-branch/src/core/qgsrendercontext.cpp
===================================================================
--- branches/rendercontext-branch/src/core/qgsrendercontext.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/qgsrendercontext.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -18,7 +18,7 @@
#include "qgsrendercontext.h"
-QgsRenderContext::QgsRenderContext(): mPainter(0), mCoordTransform(0), mDrawEditingInformation(false), mForceVectorOutput(true), mRenderingStopped(false), mScaleFactor(1.0)
+QgsRenderContext::QgsRenderContext(): mPainter(0), mCoordTransform(0), mDrawEditingInformation(false), mForceVectorOutput(true), mRenderingStopped(false), mScaleFactor(1.0), mRasterScaleFactor(1.0)
{
}
Modified: branches/rendercontext-branch/src/core/qgsrendercontext.h
===================================================================
--- branches/rendercontext-branch/src/core/qgsrendercontext.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/qgsrendercontext.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -42,6 +42,8 @@
const QgsMapToPixel& mapToPixel() const {return mMapToPixel;}
double scaleFactor() const {return mScaleFactor;}
+
+ double rasterScaleFactor() const {return mRasterScaleFactor;}
bool renderingStopped() const {return mRenderingStopped;}
@@ -58,6 +60,7 @@
void setDrawEditingInformation(bool b){mDrawEditingInformation = b;}
void setRenderingStopped(bool stopped){mRenderingStopped = stopped;}
void setScaleFactor(double factor){mScaleFactor = factor;}
+ void setRasterScaleFactor(double factor){mRasterScaleFactor = factor;}
void setPainter(QPainter* p){mPainter = p;}
private:
@@ -87,6 +90,9 @@
/**Factor to scale line widths and point marker sizes*/
double mScaleFactor;
+
+ /**Factor to scale rasters*/
+ double mRasterScaleFactor;
};
#endif
Modified: branches/rendercontext-branch/src/core/qgsvectorlayer.cpp
===================================================================
--- branches/rendercontext-branch/src/core/qgsvectorlayer.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/qgsvectorlayer.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -738,7 +738,7 @@
/* Scale factor of the marker image*/
/* We set this to the symbolScale, and if it is NOT changed, */
/* we don't have to do another scaling here */
- double markerScaleFactor = renderContext.scaleFactor();
+ double markerScaleFactor = renderContext.rasterScaleFactor();
if(mEditable)
{
@@ -820,12 +820,12 @@
//QgsDebugMsg(QString("markerScale before renderFeature(): %1").arg(markerScaleFactor));
// markerScalerFactore reflects the wanted scaling of the marker
- mRenderer->renderFeature(renderContext.painter(), fet, &marker, &markerScaleFactor, sel, renderContext.scaleFactor());
+ mRenderer->renderFeature(renderContext.painter(), fet, &marker, sel, renderContext.scaleFactor(), renderContext.rasterScaleFactor());
// markerScalerFactore now reflects the actual scaling of the marker that the render performed.
//QgsDebugMsg(QString("markerScale after renderFeature(): %1").arg(markerScaleFactor));
- double scale = renderContext.scaleFactor() / markerScaleFactor;
- drawFeature(renderContext.painter() , fet, &(renderContext.mapToPixel()), renderContext.coordTransform(), &marker, scale, renderContext.drawEditingInformation());
+ double scale = renderContext.scaleFactor() / markerScaleFactor;
+ drawFeature(renderContext.painter() , fet, &(renderContext.mapToPixel()), renderContext.coordTransform(), &marker, renderContext.scaleFactor(), renderContext.rasterScaleFactor(), renderContext.drawEditingInformation());
++featureCount;
}
@@ -844,7 +844,7 @@
// markerScalerFactore now reflects the actual scaling of the marker that the render performed.
QgsDebugMsg(QString("markerScale after renderFeature(): %1").arg(markerScaleFactor));
- double scale = renderContext.scaleFactor() / markerScaleFactor;
+ //double scale = renderContext.scaleFactor() / markerScaleFactor;
if (mChangedGeometries.contains((*it).featureId()))
{
@@ -853,7 +853,7 @@
// give a deep copy of the geometry to mCachedGeometry because it will be erased at each redraw
mCachedGeometries.insert((*it).featureId(), QgsGeometry(*((*it).geometry())) );
- drawFeature(renderContext.painter(), *it, &(renderContext.mapToPixel()), renderContext.coordTransform(), &marker, scale, renderContext.drawEditingInformation());
+ drawFeature(renderContext.painter(), *it, &(renderContext.mapToPixel()), renderContext.coordTransform(), &marker, renderContext.scaleFactor(), renderContext.rasterScaleFactor(), renderContext.drawEditingInformation());
}
}
@@ -2933,7 +2933,8 @@
const QgsMapToPixel* theMapToPixelTransform,
const QgsCoordinateTransform* ct,
QImage * marker,
- double markerScaleFactor,
+ double widthScale,
+ double rasterScaleFactor,
bool drawingToEditingCanvas)
{
// Only have variables, etc outside the switch() statement that are
@@ -2970,10 +2971,11 @@
transformPoint(x, y, theMapToPixelTransform, ct);
//QPointF pt(x - (marker->width()/2), y - (marker->height()/2));
- QPointF pt(x/markerScaleFactor - (marker->width()/2), y/markerScaleFactor - (marker->height()/2));
+ QPointF pt(x*rasterScaleFactor - (marker->width()/2), y*rasterScaleFactor - (marker->height()/2));
p->save();
- p->scale(markerScaleFactor,markerScaleFactor);
+ //p->scale(markerScaleFactor,markerScaleFactor);
+ p->scale(1.0/rasterScaleFactor, 1.0/rasterScaleFactor);
p->drawImage(pt, *marker);
p->restore();
@@ -2987,7 +2989,8 @@
ptr += 4;
p->save();
- p->scale(markerScaleFactor, markerScaleFactor);
+ //p->scale(markerScaleFactor, markerScaleFactor);
+ p->scale(1.0/rasterScaleFactor, 1.0/rasterScaleFactor);
for (register unsigned int i = 0; i < nPoints; ++i)
{
@@ -3006,7 +3009,8 @@
transformPoint(x, y, theMapToPixelTransform, ct);
//QPointF pt(x - (marker->width()/2), y - (marker->height()/2));
- QPointF pt(x/markerScaleFactor - (marker->width()/2), y/markerScaleFactor - (marker->height()/2));
+ //QPointF pt(x/markerScaleFactor - (marker->width()/2), y/markerScaleFactor - (marker->height()/2));
+ QPointF pt(x, y);
#if defined(Q_WS_X11)
// Work around a +/- 32768 limitation on coordinates in X11
Modified: branches/rendercontext-branch/src/core/qgsvectorlayer.h
===================================================================
--- branches/rendercontext-branch/src/core/qgsvectorlayer.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/qgsvectorlayer.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -427,6 +427,7 @@
const QgsMapToPixel* cXf,
const QgsCoordinateTransform* ct,
QImage* marker,
+ double widthScale,
double markerScaleFactor,
bool drawingToEditingCanvas);
Modified: branches/rendercontext-branch/src/core/renderer/qgscontinuouscolorrenderer.cpp
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgscontinuouscolorrenderer.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgscontinuouscolorrenderer.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -72,8 +72,7 @@
mMaximumSymbol = sy;
}
-void QgsContinuousColorRenderer::renderFeature(QPainter * p, QgsFeature & f, QImage* img,
- double* scalefactor, bool selected, double widthScale)
+void QgsContinuousColorRenderer::renderFeature(QPainter * p, QgsFeature & f, QImage* img, bool selected, double widthScale, double rasterScaleFactor)
{
if ((mMinimumSymbol && mMaximumSymbol))
{
@@ -137,8 +136,6 @@
*img = QgsMarkerCatalogue::instance()->imageMarker ( mMinimumSymbol->pointSymbolName(), mMinimumSymbol->pointSize(),
pen, brush);
-
- if ( scalefactor ) *scalefactor = 1;
}
else if ( mVectorType == QGis::Line )
{
Modified: branches/rendercontext-branch/src/core/renderer/qgscontinuouscolorrenderer.h
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgscontinuouscolorrenderer.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgscontinuouscolorrenderer.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -36,7 +36,7 @@
QgsContinuousColorRenderer& operator=(const QgsContinuousColorRenderer& other);
virtual ~QgsContinuousColorRenderer();
/**Renders the feature using the minimum and maximum value of the classification field*/
- void renderFeature(QPainter* p, QgsFeature& f, QImage* img, double* scalefactor, bool selected, double widthScale = 1.);
+ void renderFeature(QPainter* p, QgsFeature& f, QImage* img, bool selected, double widthScale = 1.0, double rasterScaleFactor = 1.0);
/**Returns the number of the classification field*/
int classificationField() const;
/**Sets the id of the classification field*/
Modified: branches/rendercontext-branch/src/core/renderer/qgsgraduatedsymbolrenderer.cpp
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgsgraduatedsymbolrenderer.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgsgraduatedsymbolrenderer.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -93,8 +93,7 @@
return (symbolForFeature(f) != 0);
}
-void QgsGraduatedSymbolRenderer::renderFeature(QPainter * p, QgsFeature & f, QImage* img,
- double* scalefactor, bool selected, double widthScale)
+void QgsGraduatedSymbolRenderer::renderFeature(QPainter * p, QgsFeature & f, QImage* img, bool selected, double widthScale, double rasterScaleFactor)
{
QgsSymbol* theSymbol = symbolForFeature(&f);
if(!theSymbol)
@@ -132,7 +131,7 @@
QgsDebugMsg(QString("Feature has rotation factor %1").arg(rotation));
}
*img = theSymbol->getPointSymbolAsImage( widthScale, selected, mSelectionColor,
- *scalefactor * fieldScale, rotation);
+ rasterScaleFactor * fieldScale, rotation);
}
// Line, polygon
Modified: branches/rendercontext-branch/src/core/renderer/qgsgraduatedsymbolrenderer.h
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgsgraduatedsymbolrenderer.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgsgraduatedsymbolrenderer.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -45,7 +45,7 @@
\param p a painter (usually the one from the current map canvas)
\param f a pointer to a feature to render
\param t the transform object containing the information how to transform the map coordinates to screen coordinates*/
- void renderFeature(QPainter* p, QgsFeature& f, QImage* img, double* scalefactor, bool selected, double widthScale = 1.);
+ void renderFeature(QPainter* p, QgsFeature& f, QImage* img, bool selected, double widthScale = 1.0, double rasterScaleFactor = 1.0);
/**Sets the number of the classicifation field
\param field the number of the field to classify*/
void setClassificationField(int field);
Modified: branches/rendercontext-branch/src/core/renderer/qgsrenderer.h
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgsrenderer.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgsrenderer.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -57,7 +57,7 @@
@param f a pointer to the feature to be rendered
@param pic pointer to an image (used for point symbols)
@param scalefactor pointer to the scale factor for the marker image*/
- virtual void renderFeature(QPainter* p, QgsFeature& f,QImage* pic, double* scalefactor, bool selected, double widthScale = 1.)=0;
+ virtual void renderFeature(QPainter* p, QgsFeature& f,QImage* pic, bool selected, double widthScale = 1.0, double rasterScaleFactor = 1.0)=0;
/**Reads the renderer configuration from an XML file
@param rnode the DOM node to read
@param vl the vector layer which will be associated with the renderer*/
Modified: branches/rendercontext-branch/src/core/renderer/qgssinglesymbolrenderer.cpp
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgssinglesymbolrenderer.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgssinglesymbolrenderer.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -89,8 +89,7 @@
updateSymbolAttributes();
}
-void QgsSingleSymbolRenderer::renderFeature(QPainter * p, QgsFeature & f, QImage* img,
- double* scalefactor, bool selected, double widthScale)
+void QgsSingleSymbolRenderer::renderFeature(QPainter * p, QgsFeature & f, QImage* img, bool selected, double widthScale, double rasterScaleFactor)
{
// Point
if ( img && mVectorType == QGis::Point) {
@@ -114,7 +113,7 @@
}
*img = mSymbol->getPointSymbolAsImage( widthScale, selected, mSelectionColor,
- *scalefactor * fieldScale, rotation);
+ rasterScaleFactor * fieldScale, rotation);
}
Modified: branches/rendercontext-branch/src/core/renderer/qgssinglesymbolrenderer.h
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgssinglesymbolrenderer.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgssinglesymbolrenderer.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -35,7 +35,7 @@
/*Returns a pointer to mSymbol*/
const QgsSymbol* symbol() const;
/**Renders an OGRFeature*/
- void renderFeature(QPainter* p, QgsFeature& f, QImage* img, double* scalefactor, bool selected, double widthScale = 1.);
+ void renderFeature(QPainter* p, QgsFeature& f, QImage* img, bool selected, double widthScale = 1.0, double rasterScaleFactor = 1.0);
/**Reads the renderer configuration from an XML file
@param rnode the DOM node to read
@param vl the vector layer which will be associated with the renderer*/
Modified: branches/rendercontext-branch/src/core/renderer/qgsuniquevaluerenderer.cpp
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgsuniquevaluerenderer.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgsuniquevaluerenderer.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -102,8 +102,7 @@
return (symbolForFeature(f) != 0);
}
-void QgsUniqueValueRenderer::renderFeature(QPainter* p, QgsFeature& f,QImage* img,
- double* scalefactor, bool selected, double widthScale)
+void QgsUniqueValueRenderer::renderFeature(QPainter* p, QgsFeature& f,QImage* img, bool selected, double widthScale, double rasterScaleFactor)
{
QgsSymbol* symbol = symbolForFeature(&f);
if(!symbol) //no matching symbol
@@ -140,7 +139,7 @@
QgsDebugMsg(QString("Feature has rotation factor %1").arg(rotation));
}
*img = symbol->getPointSymbolAsImage( widthScale, selected, mSelectionColor,
- *scalefactor * fieldScale, rotation);
+ rasterScaleFactor * fieldScale, rotation);
}
// Line, polygon
else if ( mVectorType != QGis::Point )
Modified: branches/rendercontext-branch/src/core/renderer/qgsuniquevaluerenderer.h
===================================================================
--- branches/rendercontext-branch/src/core/renderer/qgsuniquevaluerenderer.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/renderer/qgsuniquevaluerenderer.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -31,7 +31,7 @@
/** Determines if a feature will be rendered or not
@param f a pointer to the feature to determine if rendering will happen*/
bool willRenderFeature(QgsFeature *f);
- void renderFeature(QPainter* p, QgsFeature& f,QImage* img, double* scalefactor, bool selected, double widthScale = 1.);
+ void renderFeature(QPainter* p, QgsFeature& f,QImage* img, bool selected, double widthScale = 1.0, double rasterScaleFactor = 1.0);
/**Reads the renderer configuration from an XML file
@param rnode the DOM node to read
@param vl the vector layer which will be associated with the renderer*/
Modified: branches/rendercontext-branch/src/core/symbology/qgssymbol.cpp
===================================================================
--- branches/rendercontext-branch/src/core/symbology/qgssymbol.cpp 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/symbology/qgssymbol.cpp 2008-04-07 07:10:32 UTC (rev 8322)
@@ -271,19 +271,19 @@
|| ( selected && mSelectionColor != selectionColor ) )
{
if ( selected ) {
- cache( selectionColor );
+ cache2( widthScale, selectionColor );
} else {
- cache( mSelectionColor );
+ cache2( widthScale, mSelectionColor );
}
}
if ( selected )
{
- return mPointSymbolImageSelected;
+ return mPointSymbolImageSelected2;
}
else
{
- return mPointSymbolImage;
+ return mPointSymbolImage2;
}
}
@@ -298,19 +298,21 @@
}
QImage preRotateImage;
+ QPen pen = mPen;
+ double newWidth = mPen.width() * widthScale * scale;
+ pen.setWidth(mPen.width() * widthScale * scale);
if ( selected )
{
- QPen pen = mPen;
pen.setColor ( selectionColor );
QBrush brush = mBrush;
- preRotateImage = QgsMarkerCatalogue::instance()->imageMarker ( mPointSymbolName, (int)(mPointSize * scale),
+ preRotateImage = QgsMarkerCatalogue::instance()->imageMarker ( mPointSymbolName, (int)(mPointSize * scale * widthScale),
pen, mBrush );
}
else
{
- preRotateImage = QgsMarkerCatalogue::instance()->imageMarker ( mPointSymbolName, (int)(mPointSize * scale),
- mPen, mBrush );
+ preRotateImage = QgsMarkerCatalogue::instance()->imageMarker ( mPointSymbolName, (int)(mPointSize * scale * widthScale),
+ pen, mBrush );
}
QMatrix rotationMatrix;
@@ -348,7 +350,7 @@
pen.setWidth ( (int) ( widthScale * pen.width() ) );
- mPointSymbolImage2 = QgsMarkerCatalogue::instance()->imageMarker ( mPointSymbolName, mPointSize,
+ mPointSymbolImage2 = QgsMarkerCatalogue::instance()->imageMarker ( mPointSymbolName, mPointSize * widthScale,
pen, mBrush, false );
QBrush brush = mBrush;
@@ -356,7 +358,7 @@
pen.setColor ( selectionColor );
mPointSymbolImageSelected2 = QgsMarkerCatalogue::instance()->imageMarker (
- mPointSymbolName, mPointSize, pen, brush, false );
+ mPointSymbolName, mPointSize * widthScale, pen, brush, false );
mSelectionColor2 = selectionColor;
Modified: branches/rendercontext-branch/src/core/symbology/qgssymbol.h
===================================================================
--- branches/rendercontext-branch/src/core/symbology/qgssymbol.h 2008-04-07 03:22:56 UTC (rev 8321)
+++ branches/rendercontext-branch/src/core/symbology/qgssymbol.h 2008-04-07 07:10:32 UTC (rev 8322)
@@ -107,7 +107,7 @@
bool selected = false,
QColor selectionColor = Qt::yellow,
double scale = 1.0,
- double rotation = 1.0);
+ double rotation = 0.0);
/**Writes the contents of the symbol to a configuration file
@ return true in case of success*/
More information about the QGIS-commit
mailing list