Skip to content

Commit

Permalink
Fix attributes from some symbols were not available for data defined
Browse files Browse the repository at this point in the history
symbology (line marker, line pattern)
  • Loading branch information
nyalldawson committed May 19, 2015
1 parent 2abdfa0 commit e94a8cc
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 0 deletions.
2 changes: 2 additions & 0 deletions python/core/symbology-ng/qgsfillsymbollayerv2.sip
Expand Up @@ -759,6 +759,8 @@ class QgsLinePatternFillSymbolLayer: QgsImageFillSymbolLayer
bool setSubSymbol( QgsSymbolV2* symbol );
QgsSymbolV2* subSymbol();

QSet<QString> usedAttributes() const;

};

class QgsPointPatternFillSymbolLayer : QgsImageFillSymbolLayer
Expand Down
2 changes: 2 additions & 0 deletions python/core/symbology-ng/qgslinesymbollayerv2.sip
Expand Up @@ -207,6 +207,8 @@ class QgsMarkerLineSymbolLayerV2 : QgsLineSymbolLayerV2
void setMapUnitScale( const QgsMapUnitScale& scale );
QgsMapUnitScale mapUnitScale() const;

QSet<QString> usedAttributes() const;

protected:

void renderPolylineInterval( const QPolygonF& points, QgsSymbolV2RenderContext& context );
Expand Down
8 changes: 8 additions & 0 deletions src/core/symbology-ng/qgsfillsymbollayerv2.cpp
Expand Up @@ -2314,6 +2314,14 @@ QgsSymbolV2* QgsLinePatternFillSymbolLayer::subSymbol()
return mFillLineSymbol;
}

QSet<QString> QgsLinePatternFillSymbolLayer::usedAttributes() const
{
QSet<QString> attr = QgsFillSymbolLayerV2::usedAttributes();
if ( mFillLineSymbol )
attr.unite( mFillLineSymbol->usedAttributes() );
return attr;
}

double QgsLinePatternFillSymbolLayer::estimateMaxBleed() const
{
return 0;
Expand Down
2 changes: 2 additions & 0 deletions src/core/symbology-ng/qgsfillsymbollayerv2.h
Expand Up @@ -925,6 +925,8 @@ class CORE_EXPORT QgsLinePatternFillSymbolLayer: public QgsImageFillSymbolLayer
bool setSubSymbol( QgsSymbolV2* symbol ) override;
QgsSymbolV2* subSymbol() override;

QSet<QString> usedAttributes() const override;

protected:
/**Distance (in mm or map units) between lines*/
double mDistance;
Expand Down
8 changes: 8 additions & 0 deletions src/core/symbology-ng/qgslinesymbollayerv2.cpp
Expand Up @@ -1495,6 +1495,14 @@ QgsMapUnitScale QgsMarkerLineSymbolLayerV2::mapUnitScale() const
return QgsMapUnitScale();
}

QSet<QString> QgsMarkerLineSymbolLayerV2::usedAttributes() const
{
QSet<QString> attr = QgsLineSymbolLayerV2::usedAttributes();
if ( mMarker )
attr.unite( mMarker->usedAttributes() );
return attr;
}

double QgsMarkerLineSymbolLayerV2::estimateMaxBleed() const
{
return ( mMarker->size() / 2.0 ) + mOffset;
Expand Down
2 changes: 2 additions & 0 deletions src/core/symbology-ng/qgslinesymbollayerv2.h
Expand Up @@ -256,6 +256,8 @@ class CORE_EXPORT QgsMarkerLineSymbolLayerV2 : public QgsLineSymbolLayerV2
void setMapUnitScale( const QgsMapUnitScale& scale ) override;
QgsMapUnitScale mapUnitScale() const override;

QSet<QString> usedAttributes() const override;

protected:

void renderPolylineInterval( const QPolygonF& points, QgsSymbolV2RenderContext& context );
Expand Down

0 comments on commit e94a8cc

Please sign in to comment.