Skip to content

Commit 52a2fed

Browse files
committedNov 27, 2014
Fix size scaling ignored for line symbology (fix #11751)
1 parent 35556de commit 52a2fed

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed
 

‎src/core/symbology-ng/qgslinesymbollayerv2.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,12 @@ void QgsSimpleLineSymbolLayerV2::renderPolyline( const QPolygonF& points, QgsSym
302302
return;
303303
}
304304

305+
//size scaling by field
306+
if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale )
307+
{
308+
applySizeScale( context, mPen, mSelPen );
309+
}
310+
305311
double offset = mOffset;
306312
applyDataDefinedSymbology( context, mPen, mSelPen, offset );
307313

@@ -458,24 +464,24 @@ QgsSymbolLayerV2* QgsSimpleLineSymbolLayerV2::createFromSld( QDomElement &elemen
458464
return l;
459465
}
460466

467+
void QgsSimpleLineSymbolLayerV2::applySizeScale( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen )
468+
{
469+
double scaledWidth = mWidth * QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
470+
pen.setWidthF( scaledWidth );
471+
selPen.setWidthF( scaledWidth );
472+
}
473+
461474
void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen, double& offset )
462475
{
463476
if ( mDataDefinedProperties.isEmpty() )
464477
return; // shortcut
465478

466479
//data defined properties
467-
double scaledWidth = 0;
468480
QgsExpression* strokeWidthExpression = expression( "width" );
469481
if ( strokeWidthExpression )
470482
{
471-
scaledWidth = strokeWidthExpression->evaluate( const_cast<QgsFeature*>( context.feature() ) ).toDouble()
472-
* QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
473-
pen.setWidthF( scaledWidth );
474-
selPen.setWidthF( scaledWidth );
475-
}
476-
else if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale )
477-
{
478-
scaledWidth = mWidth * QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
483+
double scaledWidth = strokeWidthExpression->evaluate( const_cast<QgsFeature*>( context.feature() ) ).toDouble()
484+
* QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
479485
pen.setWidthF( scaledWidth );
480486
selPen.setWidthF( scaledWidth );
481487
}

‎src/core/symbology-ng/qgslinesymbollayerv2.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ class CORE_EXPORT QgsSimpleLineSymbolLayerV2 : public QgsLineSymbolLayerV2
137137
private:
138138
//helper functions for data defined symbology
139139
void applyDataDefinedSymbology( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen, double& offset );
140+
void applySizeScale( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen );
140141
};
141142

142143
/////////

0 commit comments

Comments
 (0)
Please sign in to comment.