[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