[QGIS Commit] r11275 - in trunk/qgis/src: core core/renderer core/symbology providers/osm

svn_qgis at osgeo.org svn_qgis at osgeo.org
Wed Aug 5 11:22:00 EDT 2009


Author: homann
Date: 2009-08-05 11:22:00 -0400 (Wed, 05 Aug 2009)
New Revision: 11275

Modified:
   trunk/qgis/src/core/qgsvectorlayer.cpp
   trunk/qgis/src/core/renderer/qgscontinuouscolorrenderer.cpp
   trunk/qgis/src/core/renderer/qgscontinuouscolorrenderer.h
   trunk/qgis/src/core/renderer/qgsgraduatedsymbolrenderer.cpp
   trunk/qgis/src/core/renderer/qgsgraduatedsymbolrenderer.h
   trunk/qgis/src/core/renderer/qgsrenderer.h
   trunk/qgis/src/core/renderer/qgssinglesymbolrenderer.cpp
   trunk/qgis/src/core/renderer/qgssinglesymbolrenderer.h
   trunk/qgis/src/core/renderer/qgsuniquevaluerenderer.cpp
   trunk/qgis/src/core/renderer/qgsuniquevaluerenderer.h
   trunk/qgis/src/core/symbology/qgsmarkercatalogue.cpp
   trunk/qgis/src/core/symbology/qgsmarkercatalogue.h
   trunk/qgis/src/core/symbology/qgssymbol.cpp
   trunk/qgis/src/core/symbology/qgssymbol.h
   trunk/qgis/src/providers/osm/osmrenderer.cpp
   trunk/qgis/src/providers/osm/osmrenderer.h
Log:
Made point symbols respect the layer transparency setting. Fixes #1220

Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp	2009-08-05 15:22:00 UTC (rev 11275)
@@ -739,8 +739,14 @@
 
         //QgsDebugMsg(QString("markerScale before renderFeature(): %1").arg(markerScaleFactor));
         // markerScalerFactore reflects the wanted scaling of the marker
-        mRenderer->renderFeature( rendererContext, fet, &marker, sel );
 
+        double opacity = 1.0;
+        if ( !mRenderer->usesTransparency() )
+        {
+          opacity = ( mTransparencyLevel * 1.0) / 255.0;
+        }
+        mRenderer->renderFeature( rendererContext, fet, &marker, sel, opacity );
+
         // markerScalerFactore now reflects the actual scaling of the marker that the render performed.
         //QgsDebugMsg(QString("markerScale after renderFeature(): %1").arg(markerScaleFactor));
 

Modified: trunk/qgis/src/core/renderer/qgscontinuouscolorrenderer.cpp
===================================================================
--- trunk/qgis/src/core/renderer/qgscontinuouscolorrenderer.cpp	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgscontinuouscolorrenderer.cpp	2009-08-05 15:22:00 UTC (rev 11275)
@@ -74,7 +74,7 @@
   mMaximumSymbol = sy;
 }
 
-void QgsContinuousColorRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature & f, QImage* img, bool selected )
+void QgsContinuousColorRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature & f, QImage* img, bool selected, double opacity )
 {
   QPainter *p = renderContext.painter();
 
@@ -148,7 +148,9 @@
       brush.setStyle( Qt::SolidPattern );
 
       *img = QgsMarkerCatalogue::instance()->imageMarker( mMinimumSymbol->pointSymbolName(),
-             mMinimumSymbol->pointSize() * renderContext.scaleFactor() * renderContext.rasterScaleFactor(), pen, brush );
+                                                          mMinimumSymbol->pointSize() * renderContext.scaleFactor() * renderContext.rasterScaleFactor(),
+                                                          pen, brush, opacity );
+
     }
     else if ( mGeometryType == QGis::Line )
     {

Modified: trunk/qgis/src/core/renderer/qgscontinuouscolorrenderer.h
===================================================================
--- trunk/qgis/src/core/renderer/qgscontinuouscolorrenderer.h	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgscontinuouscolorrenderer.h	2009-08-05 15:22:00 UTC (rev 11275)
@@ -38,7 +38,7 @@
 
     /**Renders the feature using the minimum and maximum value of the classification field
      * added in 1.2 */
-    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected );
+    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected, double opacity = 1.0 );
 
     /**Returns the number of the classification field*/
     int classificationField() const;

Modified: trunk/qgis/src/core/renderer/qgsgraduatedsymbolrenderer.cpp
===================================================================
--- trunk/qgis/src/core/renderer/qgsgraduatedsymbolrenderer.cpp	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgsgraduatedsymbolrenderer.cpp	2009-08-05 15:22:00 UTC (rev 11275)
@@ -116,7 +116,7 @@
   return ( symbolForFeature( f ) != 0 );
 }
 
-void QgsGraduatedSymbolRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature & f, QImage* img, bool selected )
+void QgsGraduatedSymbolRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature & f, QImage* img, bool selected, double opacity )
 {
   QPainter *p = renderContext.painter();
   QgsSymbol* theSymbol = symbolForFeature( &f );
@@ -165,7 +165,8 @@
       oldName = theSymbol->pointSymbolName();
       theSymbol->setNamedPointSymbol( name );
     }
-    *img = theSymbol->getPointSymbolAsImage( renderContext.scaleFactor(), selected, mSelectionColor, fieldScale, rotation, renderContext.rasterScaleFactor() );
+    *img = theSymbol->getPointSymbolAsImage( renderContext.scaleFactor(), selected, mSelectionColor, fieldScale,
+                                             rotation, renderContext.rasterScaleFactor(), opacity );
 
     if ( !oldName.isNull() )
     {

Modified: trunk/qgis/src/core/renderer/qgsgraduatedsymbolrenderer.h
===================================================================
--- trunk/qgis/src/core/renderer/qgsgraduatedsymbolrenderer.h	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgsgraduatedsymbolrenderer.h	2009-08-05 15:22:00 UTC (rev 11275)
@@ -71,7 +71,7 @@
      \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
      \note added in 1.2 */
-    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected );
+    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected, double opacity = 1.0 );
 
     /**Sets the classicifation field by index
     \param field the number of the field to classify*/

Modified: trunk/qgis/src/core/renderer/qgsrenderer.h
===================================================================
--- trunk/qgis/src/core/renderer/qgsrenderer.h	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgsrenderer.h	2009-08-05 15:22:00 UTC (rev 11275)
@@ -72,7 +72,11 @@
 
     /**A vector layer passes features to a renderer object to change the brush and pen of the qpainter
       @note added in 1.2 */
-    virtual void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* pic, bool selected ) = 0;
+    //void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* pic, bool selected )
+    //{
+    //  void renderFeature( renderContext, f, pic, selected, 255); 
+    //}
+    virtual void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* pic, bool selected, double opacity = 1.0 ) = 0;
 
     /**Reads the renderer configuration from an XML file
      @param rnode the Dom node to read

Modified: trunk/qgis/src/core/renderer/qgssinglesymbolrenderer.cpp
===================================================================
--- trunk/qgis/src/core/renderer/qgssinglesymbolrenderer.cpp	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgssinglesymbolrenderer.cpp	2009-08-05 15:22:00 UTC (rev 11275)
@@ -94,7 +94,7 @@
   updateSymbolAttributes();
 }
 
-void QgsSingleSymbolRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature & f, QImage* img, bool selected )
+void QgsSingleSymbolRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature & f, QImage* img, bool selected, double opacity )
 {
   QPainter *p = renderContext.painter();
 
@@ -156,7 +156,7 @@
       scale *= ( x2 - x1 ) * 0.001;
     }
 
-    *img = sy->getPointSymbolAsImage( scale, selected, mSelectionColor, fieldScale, rotation, renderContext.rasterScaleFactor() );
+    *img = sy->getPointSymbolAsImage( scale, selected, mSelectionColor, fieldScale, rotation, renderContext.rasterScaleFactor(), opacity );
   }
 
   // Line, polygon

Modified: trunk/qgis/src/core/renderer/qgssinglesymbolrenderer.h
===================================================================
--- trunk/qgis/src/core/renderer/qgssinglesymbolrenderer.h	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgssinglesymbolrenderer.h	2009-08-05 15:22:00 UTC (rev 11275)
@@ -40,7 +40,7 @@
 
     /**Renders a feature
      * added in 1.2 */
-    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected );
+    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected, double opacity = 1.0 );
 
     /**Reads the renderer configuration from an XML file
      @param rnode the Dom node to read

Modified: trunk/qgis/src/core/renderer/qgsuniquevaluerenderer.cpp
===================================================================
--- trunk/qgis/src/core/renderer/qgsuniquevaluerenderer.cpp	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgsuniquevaluerenderer.cpp	2009-08-05 15:22:00 UTC (rev 11275)
@@ -105,7 +105,7 @@
   return ( symbolForFeature( f ) != 0 );
 }
 
-void QgsUniqueValueRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected )
+void QgsUniqueValueRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected, double opacity )
 {
   QPainter *p = renderContext.painter();
   QgsSymbol* symbol = symbolForFeature( &f );
@@ -152,7 +152,8 @@
     }
 
     *img = symbol->getPointSymbolAsImage( renderContext.scaleFactor(), selected, mSelectionColor,
-                                          fieldScale, rotation, renderContext.rasterScaleFactor() );
+                                          fieldScale, rotation, renderContext.rasterScaleFactor(),
+                                          opacity );
     if ( !oldName.isNull() )
     {
       symbol->setNamedPointSymbol( oldName );

Modified: trunk/qgis/src/core/renderer/qgsuniquevaluerenderer.h
===================================================================
--- trunk/qgis/src/core/renderer/qgsuniquevaluerenderer.h	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/renderer/qgsuniquevaluerenderer.h	2009-08-05 15:22:00 UTC (rev 11275)
@@ -34,7 +34,7 @@
 
     /** Render feature
      * added in 1.2 */
-    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected );
+    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* img, bool selected, double opacity = 1.0 );
 
     /**Reads the renderer configuration from an XML file
      @param rnode the Dom node to read

Modified: trunk/qgis/src/core/symbology/qgsmarkercatalogue.cpp
===================================================================
--- trunk/qgis/src/core/symbology/qgsmarkercatalogue.cpp	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/symbology/qgsmarkercatalogue.cpp	2009-08-05 15:22:00 UTC (rev 11275)
@@ -113,7 +113,7 @@
   return QgsMarkerCatalogue::mMarkerCatalogue;
 }
 
-QImage QgsMarkerCatalogue::imageMarker( QString fullName, double size, QPen pen, QBrush brush, bool qtBug )
+QImage QgsMarkerCatalogue::imageMarker( QString fullName, double size, QPen pen, QBrush brush, double opacity )
 {
 
   //
@@ -149,6 +149,7 @@
   QPainter myPainter;
   myPainter.begin( &myImage );
   myPainter.setRenderHint( QPainter::Antialiasing );
+  myPainter.setOpacity( opacity );
 
   //
   // Now pass the paintdevice along to have the marker rendered on it
@@ -182,7 +183,7 @@
 
   if ( fullName.startsWith( "hard:" ) )
   {
-    hardMarker( &myPainter, imageSize, fullName.mid( 5 ), size, pen, brush, qtBug );
+    hardMarker( &myPainter, imageSize, fullName.mid( 5 ), size, pen, brush);
 #ifdef IMAGEDEBUG
     QgsDebugMsg( "*** Saving hard marker to hardMarker.png ***" );
 #ifdef QGISDEBUG
@@ -195,7 +196,7 @@
   return QImage(); // empty
 }
 
-QPicture QgsMarkerCatalogue::pictureMarker( QString fullName, double size, QPen pen, QBrush brush, bool qtBug )
+QPicture QgsMarkerCatalogue::pictureMarker( QString fullName, double size, QPen pen, QBrush brush, double opacity)
 {
 
   //
@@ -218,6 +219,7 @@
 
   QPainter myPainter( &myPicture );
   myPainter.setRenderHint( QPainter::Antialiasing );
+  myPainter.setOpacity( opacity );
 
   //
   // Now pass the paintdevice along to have the marker rndered on it
@@ -233,7 +235,7 @@
 
   if ( fullName.left( 5 ) == "hard:" )
   {
-    hardMarker( &myPainter, ( int ) size, fullName.mid( 5 ), size, pen, brush, qtBug );
+    hardMarker( &myPainter, ( int ) size, fullName.mid( 5 ), size, pen, brush );
     return myPicture;
   }
 
@@ -285,7 +287,7 @@
   return true;
 }
 
-void QgsMarkerCatalogue::hardMarker( QPainter * thepPainter, int imageSize, QString name, double s, QPen pen, QBrush brush, bool qtBug )
+void QgsMarkerCatalogue::hardMarker( QPainter * thepPainter, int imageSize, QString name, double s, QPen pen, QBrush brush )
 {
   // Size of polygon symbols is calculated so that the boundingbox is circumscribed
   // around a circle with diameter mPointSize

Modified: trunk/qgis/src/core/symbology/qgsmarkercatalogue.h
===================================================================
--- trunk/qgis/src/core/symbology/qgsmarkercatalogue.h	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/symbology/qgsmarkercatalogue.h	2009-08-05 15:22:00 UTC (rev 11275)
@@ -43,12 +43,12 @@
     /** Returns pixmap of the marker
      * \param fullName full name, e.g. hard:circle, svg:/home/usr1/marker1.svg
      */
-    QImage imageMarker( QString fullName, double size, QPen pen, QBrush brush, bool qtBug = true );
+    QImage imageMarker( QString fullName, double size, QPen pen, QBrush brush, double opacity = 1.0);
 
     /** Returns qpicture of the marker
      * \param fullName full name, e.g. hard:circle, svg:/home/usr1/marker1.svg
      */
-    QPicture pictureMarker( QString fullName, double size, QPen pen, QBrush brush, bool qtBug = true );
+    QPicture pictureMarker( QString fullName, double size, QPen pen, QBrush brush, double opacity = 1.0 );
 
     /** Returns a pixmap given a file name of a svg marker
      *  NOTE: this method needs to be public static for QgsMarkerDialog::visualizeMarkers */
@@ -71,7 +71,7 @@
     QStringList mList;
 
     /** Hard coded */
-    void hardMarker( QPainter * thepPainter, int imageSize, QString name, double size, QPen pen, QBrush brush, bool qtBug = true );
+    void hardMarker( QPainter * thepPainter, int imageSize, QString name, double size, QPen pen, QBrush brush );
 
     bool fontMarker( QPainter * thepPainter, QString name, double size );
 

Modified: trunk/qgis/src/core/symbology/qgssymbol.cpp
===================================================================
--- trunk/qgis/src/core/symbology/qgssymbol.cpp	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/symbology/qgssymbol.cpp	2009-08-05 15:22:00 UTC (rev 11275)
@@ -352,19 +352,19 @@
   return img; //this is ok because of qts sharing mechanism
 }
 
-QImage QgsSymbol::getCachedPointSymbolAsImage( double widthScale,
-    bool selected, QColor selectionColor )
+QImage QgsSymbol::getCachedPointSymbolAsImage( double widthScale, bool selected, QColor selectionColor, double opacity )
 {
   if ( !mCacheUpToDate2
-       || ( selected && mSelectionColor != selectionColor ) )
+       || ( selected && mSelectionColor != selectionColor ) || ( opacity != mOpacity ) )
   {
     if ( selected )
     {
-      cache2( widthScale, selectionColor );
+      cache2( widthScale, selectionColor, opacity);
     }
     else
     {
-      cache2( widthScale, mSelectionColor );
+      
+      cache2( widthScale, mSelectionColor, opacity );
     }
   }
 
@@ -379,14 +379,15 @@
 }
 
 QImage QgsSymbol::getPointSymbolAsImage( double widthScale, bool selected, QColor selectionColor, double scale,
-    double rotation, double rasterScaleFactor )
+double rotation, double rasterScaleFactor, double opacity )
 {
+
   if ( 1.0 == ( scale * rasterScaleFactor ) && 0 == rotation )
   {
     if ( mWidthScale < 0 || widthScale == mWidthScale )
     {
-      // If scale is 1.0 and rotation 0.0, use cached image.
-      return getCachedPointSymbolAsImage( widthScale, selected, selectionColor );
+      // If scale is 1.0, rotation 0.0  use cached image.
+      return getCachedPointSymbolAsImage( widthScale, selected, selectionColor, opacity );
     }
   }
 
@@ -402,18 +403,19 @@
     preRotateImage = QgsMarkerCatalogue::instance()->imageMarker(
                        mPointSymbolName,
                        ( float )( mSize * scale * widthScale * rasterScaleFactor ),
-                       pen, mBrush );
+                       pen, mBrush, opacity );
   }
   else
   {
-    QgsDebugMsg( QString( "marker:%1 mPointSize:%2 mPointSizeUnits:%3 scale:%4 widthScale:%5 rasterScaleFactor:%6" )
-                 .arg( mPointSymbolName )
-                 .arg( mSize ).arg( mSizeInMapUnits ? "true" : "false" )
-                 .arg( scale ).arg( widthScale ).arg( rasterScaleFactor ) );
+    QgsDebugMsg( 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 ) );
+
+
     preRotateImage = QgsMarkerCatalogue::instance()->imageMarker(
                        mPointSymbolName,
                        ( float )( mSize * scale * widthScale * rasterScaleFactor ),
-                       pen, mBrush );
+                       pen, mBrush, opacity );
   }
 
   QMatrix rotationMatrix;
@@ -443,7 +445,7 @@
   mCacheUpToDate = true;
 }
 
-void QgsSymbol::cache2( double widthScale, QColor selectionColor )
+void QgsSymbol::cache2( double widthScale, QColor selectionColor, double opacity )
 {
 // QgsDebugMsg(QString("widthScale = %1").arg(widthScale));
 
@@ -451,18 +453,21 @@
   pen.setWidthF( widthScale * pen.widthF() );
 
   mPointSymbolImage2 = QgsMarkerCatalogue::instance()->imageMarker( mPointSymbolName, mSize * widthScale,
-                       pen, mBrush, false );
+                       pen, mBrush, opacity);
 
   QBrush brush = mBrush;
   brush.setColor( selectionColor );
   pen.setColor( selectionColor );
 
   mPointSymbolImageSelected2 = QgsMarkerCatalogue::instance()->imageMarker(
-                                 mPointSymbolName, mSize * widthScale, pen, brush,  false );
+                                 mPointSymbolName, mSize * widthScale, pen, brush, opacity );
 
   mSelectionColor2 = selectionColor;
 
   mWidthScale = widthScale;
+
+  mOpacity = opacity;
+
   mCacheUpToDate2 = true;
 }
 

Modified: trunk/qgis/src/core/symbology/qgssymbol.h
===================================================================
--- trunk/qgis/src/core/symbology/qgssymbol.h	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/core/symbology/qgssymbol.h	2009-08-05 15:22:00 UTC (rev 11275)
@@ -108,7 +108,9 @@
     /** Get QImage representation of point symbol with current settings
     */
     virtual QImage getCachedPointSymbolAsImage( double widthScale = 1.0,
-        bool selected = false, QColor selectionColor = Qt::yellow );
+                                                bool selected = false,
+                                                QColor selectionColor = Qt::yellow,
+                                                double opacity = 1.0);
 
     /** Get QImage representation of point symbol with current settings
      * and scaled (can be slow when scale != 1.0)
@@ -118,7 +120,8 @@
                                           QColor selectionColor = Qt::yellow,
                                           double scale = 1.0,
                                           double rotation = 0.0,
-                                          double rasterScaleFactor = 1.0 );
+                                          double rasterScaleFactor = 1.0,
+                                          double opacity = 1.0);
 
     /**Writes the contents of the symbol to a configuration file
       @ return true in case of success*/
@@ -193,11 +196,14 @@
     QImage mPointSymbolImage2;
     QImage mPointSymbolImageSelected2;
 
+    /* The alpha channel of the symbol */
+    double mOpacity;
+
     /* Create point symbol mPointSymbolImage/mPointSymbolImage cache */
     void cache( QColor selectionColor );
 
     /* Create point symbol mPointSymbolImage2 cache */
-    void cache2( double widthScale, QColor selectionColor );
+    void cache2( double widthScale, QColor selectionColor, double opacity);
 
     /* mPointSymbolImage/mPointSymbolImage cache updated */
     bool mCacheUpToDate;

Modified: trunk/qgis/src/providers/osm/osmrenderer.cpp
===================================================================
--- trunk/qgis/src/providers/osm/osmrenderer.cpp	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/providers/osm/osmrenderer.cpp	2009-08-05 15:22:00 UTC (rev 11275)
@@ -92,7 +92,7 @@
 }
 
 
-void OsmRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* pic, bool selected )
+void OsmRenderer::renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* pic, bool selected, double opacity )
 {
 //    QgsDebugMsg("RENDERING FEAT:" + f.id());
   QPainter* p = renderContext.painter();
@@ -104,7 +104,7 @@
     QPen pen = osmstyle.get_pen( tags );
     QColor penColor = pen.color();
     p->setPen( osmstyle.get_pen( tags ) );
-    p->setOpacity( 1.0 );
+    p->setOpacity( opacity );
   }
   else if ( mGeomType == QGis::Polygon )
   {
@@ -112,12 +112,12 @@
     p->setPen( osmstyle.get_pen_brush( tags, br ) );
     p->setBrush( br );
     p->setBackgroundMode( Qt::TransparentMode );
-    p->setOpacity( 0.5 );
+    p->setOpacity( opacity );
   }
   else if ( mGeomType == QGis::Point )
   {
     *pic = osmstyle.get_image( tags );
-    p->setOpacity( 1.0 );
+    p->setOpacity( opacity  );
   }
 }
 

Modified: trunk/qgis/src/providers/osm/osmrenderer.h
===================================================================
--- trunk/qgis/src/providers/osm/osmrenderer.h	2009-08-05 13:25:06 UTC (rev 11274)
+++ trunk/qgis/src/providers/osm/osmrenderer.h	2009-08-05 15:22:00 UTC (rev 11275)
@@ -40,7 +40,7 @@
     bool willRenderFeature( QgsFeature *f );
 
     // A vector layer passes features to a renderer object to change the brush and pen of the qpainter.
-    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* pic, bool selected );
+    void renderFeature( QgsRenderContext &renderContext, QgsFeature& f, QImage* pic, bool selected, double opacity = 1.0 );
 
     // Reads the renderer configuration from an XML file.
     int readXML( const QDomNode &rnode, QgsVectorLayer &vl );



More information about the QGIS-commit mailing list