mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//size scaling by field
|
||||||
|
if ( context.renderHints() & QgsSymbolV2::DataDefinedSizeScale )
|
||||||
|
{
|
||||||
|
applySizeScale( context, mPen, mSelPen );
|
||||||
|
}
|
||||||
|
|
||||||
double offset = mOffset;
|
double offset = mOffset;
|
||||||
applyDataDefinedSymbology( context, mPen, mSelPen, offset );
|
applyDataDefinedSymbology( context, mPen, mSelPen, offset );
|
||||||
|
|
||||||
@ -458,24 +464,24 @@ QgsSymbolLayerV2* QgsSimpleLineSymbolLayerV2::createFromSld( QDomElement &elemen
|
|||||||
return l;
|
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 )
|
void QgsSimpleLineSymbolLayerV2::applyDataDefinedSymbology( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen, double& offset )
|
||||||
{
|
{
|
||||||
if ( mDataDefinedProperties.isEmpty() )
|
if ( mDataDefinedProperties.isEmpty() )
|
||||||
return; // shortcut
|
return; // shortcut
|
||||||
|
|
||||||
//data defined properties
|
//data defined properties
|
||||||
double scaledWidth = 0;
|
|
||||||
QgsExpression* strokeWidthExpression = expression( "width" );
|
QgsExpression* strokeWidthExpression = expression( "width" );
|
||||||
if ( strokeWidthExpression )
|
if ( strokeWidthExpression )
|
||||||
{
|
{
|
||||||
scaledWidth = strokeWidthExpression->evaluate( const_cast<QgsFeature*>( context.feature() ) ).toDouble()
|
double scaledWidth = strokeWidthExpression->evaluate( const_cast<QgsFeature*>( context.feature() ) ).toDouble()
|
||||||
* QgsSymbolLayerV2Utils::lineWidthScaleFactor( context.renderContext(), mWidthUnit, mWidthMapUnitScale );
|
* 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 );
|
|
||||||
pen.setWidthF( scaledWidth );
|
pen.setWidthF( scaledWidth );
|
||||||
selPen.setWidthF( scaledWidth );
|
selPen.setWidthF( scaledWidth );
|
||||||
}
|
}
|
||||||
|
@ -137,6 +137,7 @@ class CORE_EXPORT QgsSimpleLineSymbolLayerV2 : public QgsLineSymbolLayerV2
|
|||||||
private:
|
private:
|
||||||
//helper functions for data defined symbology
|
//helper functions for data defined symbology
|
||||||
void applyDataDefinedSymbology( QgsSymbolV2RenderContext& context, QPen& pen, QPen& selPen, double& offset );
|
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