mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
Fix size scaling ignored for line symbology (fix #11751)
This commit is contained in:
parent
35556de96f
commit
52a2feda5a
@ -302,6 +302,12 @@ void QgsSimpleLineSymbolLayerV2::renderPolyline( const QPolygonF& points, QgsSym
|
||||
return;
|
||||
}
|
||||
|
||||
//size scaling by field
|
||||
if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale )
|
||||
{
|
||||
applySizeScale( context, mPen, mSelPen );
|
||||
}
|
||||
|
||||
double offset = mOffset;
|
||||
applyDataDefinedSymbology( context, mPen, mSelPen, offset );
|
||||
|
||||
@ -458,24 +464,24 @@ QgsSymbolLayerV2* QgsSimpleLineSymbolLayerV2::createFromSld( QDomElement &elemen
|
||||
return l;
|
||||
}
|
||||
|
||||
void QgsSimpleLineSymbolLayerV2::applySizeScale( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen )
|
||||
{
|
||||
double scaledWidth = mWidth * QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
|
||||
pen.setWidthF( scaledWidth );
|
||||
selPen.setWidthF( scaledWidth );
|
||||
}
|
||||
|
||||
void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen, double& offset )
|
||||
{
|
||||
if ( mDataDefinedProperties.isEmpty() )
|
||||
return; // shortcut
|
||||
|
||||
//data defined properties
|
||||
double scaledWidth = 0;
|
||||
QgsExpression* strokeWidthExpression = expression( "width" );
|
||||
if ( strokeWidthExpression )
|
||||
{
|
||||
scaledWidth = strokeWidthExpression->evaluate( const_cast<QgsFeature*>( context.feature() ) ).toDouble()
|
||||
* QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
|
||||
pen.setWidthF( scaledWidth );
|
||||
selPen.setWidthF( scaledWidth );
|
||||
}
|
||||
else if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale )
|
||||
{
|
||||
scaledWidth = mWidth * QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
|
||||
double scaledWidth = strokeWidthExpression->evaluate( const_cast<QgsFeature*>( context.feature() ) ).toDouble()
|
||||
* QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
|
||||
pen.setWidthF( scaledWidth );
|
||||
selPen.setWidthF( scaledWidth );
|
||||
}
|
||||
|
@ -137,6 +137,7 @@ class CORE_EXPORT QgsSimpleLineSymbolLayerV2 : public QgsLineSymbolLayerV2
|
||||
private:
|
||||
//helper functions for data defined symbology
|
||||
void applyDataDefinedSymbology( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen, double& offset );
|
||||
void applySizeScale( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen );
|
||||
};
|
||||
|
||||
/////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user