34
34
#include < cmath>
35
35
36
36
QgsSymbolV2::QgsSymbolV2 ( SymbolType type, QgsSymbolLayerV2List layers )
37
- : mType( type ), mLayers( layers ), mAlpha( 1.0 ), mRenderHints( 0 )
37
+ : mType( type ), mLayers( layers ), mAlpha( 1.0 ), mRenderHints( 0 ), mLayer( NULL )
38
38
{
39
39
40
40
// check they're all correct symbol layers
@@ -215,17 +215,24 @@ bool QgsSymbolV2::changeSymbolLayer( int index, QgsSymbolLayerV2* layer )
215
215
216
216
void QgsSymbolV2::startRender ( QgsRenderContext& context, const QgsVectorLayer* layer )
217
217
{
218
+ mLayer = layer;
219
+
218
220
QgsSymbolV2RenderContext symbolContext ( context, outputUnit (), mAlpha , false , mRenderHints );
219
- symbolContext.setLayer ( layer );
221
+ symbolContext.setLayer ( mLayer );
222
+
220
223
for ( QgsSymbolLayerV2List::iterator it = mLayers .begin (); it != mLayers .end (); ++it )
221
224
( *it )->startRender ( symbolContext );
222
225
}
223
226
224
227
void QgsSymbolV2::stopRender ( QgsRenderContext& context )
225
228
{
226
229
QgsSymbolV2RenderContext symbolContext ( context, outputUnit (), mAlpha , false , mRenderHints );
230
+ symbolContext.setLayer ( mLayer );
231
+
227
232
for ( QgsSymbolLayerV2List::iterator it = mLayers .begin (); it != mLayers .end (); ++it )
228
233
( *it )->stopRender ( symbolContext );
234
+
235
+ mLayer = NULL ;
229
236
}
230
237
231
238
void QgsSymbolV2::setColor ( const QColor& color )
@@ -252,6 +259,8 @@ void QgsSymbolV2::drawPreviewIcon( QPainter* painter, QSize size )
252
259
{
253
260
QgsRenderContext context = QgsSymbolLayerV2Utils::createRenderContext ( painter );
254
261
QgsSymbolV2RenderContext symbolContext ( context, outputUnit (), mAlpha , false , mRenderHints );
262
+ symbolContext.setLayer ( mLayer );
263
+
255
264
for ( QgsSymbolLayerV2List::iterator it = mLayers .begin (); it != mLayers .end (); ++it )
256
265
{
257
266
if ( mType == Fill && ( *it )->type () == Line )
@@ -532,6 +541,8 @@ QgsSymbolV2::ScaleMethod QgsMarkerSymbolV2::scaleMethod()
532
541
void QgsMarkerSymbolV2::renderPoint ( const QPointF& point, const QgsFeature* f, QgsRenderContext& context, int layer, bool selected )
533
542
{
534
543
QgsSymbolV2RenderContext symbolContext ( context, outputUnit (), mAlpha , selected, mRenderHints , f );
544
+ symbolContext.setLayer ( mLayer );
545
+
535
546
if ( layer != -1 )
536
547
{
537
548
if ( layer >= 0 && layer < mLayers .count () )
@@ -600,6 +611,8 @@ double QgsLineSymbolV2::width()
600
611
void QgsLineSymbolV2::renderPolyline ( const QPolygonF& points, const QgsFeature* f, QgsRenderContext& context, int layer, bool selected )
601
612
{
602
613
QgsSymbolV2RenderContext symbolContext ( context, outputUnit (), mAlpha , selected, mRenderHints , f );
614
+ symbolContext.setLayer ( mLayer );
615
+
603
616
if ( layer != -1 )
604
617
{
605
618
if ( layer >= 0 && layer < mLayers .count () )
@@ -635,6 +648,8 @@ QgsFillSymbolV2::QgsFillSymbolV2( QgsSymbolLayerV2List layers )
635
648
void QgsFillSymbolV2::renderPolygon ( const QPolygonF& points, QList<QPolygonF>* rings, const QgsFeature* f, QgsRenderContext& context, int layer, bool selected )
636
649
{
637
650
QgsSymbolV2RenderContext symbolContext ( context, outputUnit (), mAlpha , selected, mRenderHints , f );
651
+ symbolContext.setLayer ( mLayer );
652
+
638
653
if ( layer != -1 )
639
654
{
640
655
if ( layer >= 0 && layer < mLayers .count () )
0 commit comments