[QGIS Commit] r15605 - trunk/qgis/src/core/symbology-ng

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Mar 25 17:50:30 EDT 2011


Author: wonder
Date: 2011-03-25 14:50:30 -0700 (Fri, 25 Mar 2011)
New Revision: 15605

Modified:
   trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
Log:
Fix simple marker transparency (#3658)


Modified: trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp	2011-03-25 21:37:06 UTC (rev 15604)
+++ trunk/qgis/src/core/symbology-ng/qgsmarkersymbollayerv2.cpp	2011-03-25 21:50:30 UTC (rev 15605)
@@ -74,14 +74,27 @@
 
 void QgsSimpleMarkerSymbolLayerV2::startRender( QgsSymbolV2RenderContext& context )
 {
-  mBrush = QBrush( mColor );
-  mPen = QPen( mBorderColor );
+  QColor brushColor = mColor;
+  QColor penColor = mBorderColor;
+  if ( context.alpha() < 1 )
+  {
+    penColor.setAlphaF( context.alpha() );
+    brushColor.setAlphaF( context.alpha() );
+  }
+  mBrush = QBrush( brushColor );
+  mPen = QPen( penColor );
   mPen.setWidthF( context.outputLineWidth( mPen.widthF() ) );
 
-  QColor selColor = context.selectionColor();
-  mSelBrush = QBrush( selColor );
-  mSelPen = QPen( selColor == mColor ? selColor : mBorderColor );
-  mSelPen.setWidthF( mPen.widthF() );
+  QColor selBrushColor = context.selectionColor();
+  QColor selPenColor = selBrushColor == mColor ? selBrushColor : mBorderColor;
+  if ( context.alpha() < 1 )
+  {
+    selBrushColor.setAlphaF( context.alpha() );
+    selPenColor.setAlphaF( context.alpha() );
+  }
+  mSelBrush = QBrush( selBrushColor );
+  mSelPen = QPen( selPenColor );
+  mSelPen.setWidthF( context.outputLineWidth( mPen.widthF() ) );
 
   bool hasDataDefinedRotation = context.renderHints() & QgsSymbolV2::DataDefinedRotation;
   bool hasDataDefinedSize = context.renderHints() & QgsSymbolV2::DataDefinedSizeScale;
@@ -101,7 +114,7 @@
       // For these set the selected border color to the selected color
 
       if ( mName != "circle" )
-        mSelPen.setColor( selColor );
+        mSelPen.setColor( selBrushColor );
     }
     else
     {
@@ -197,13 +210,6 @@
     drawMarker( &p, context );
     p.end();
   }
-
-  //opacity
-  if ( context.alpha() < 1.0 )
-  {
-    QgsSymbolLayerV2Utils::multiplyImageOpacity( &mCache, context.alpha() );
-    if ( ! selectionIsOpaque ) QgsSymbolLayerV2Utils::multiplyImageOpacity( &mSelCache, context.alpha() );
-  }
 }
 
 void QgsSimpleMarkerSymbolLayerV2::stopRender( QgsSymbolV2RenderContext& context )



More information about the QGIS-commit mailing list