QgsMapCanvasLineSymbolItem can render linestrings

This commit is contained in:
Nyall Dawson 2020-09-15 13:50:51 +10:00
parent 252149375c
commit 76cf6029a2
2 changed files with 15 additions and 5 deletions

View File

@ -166,12 +166,19 @@ QgsMapCanvasLineSymbolItem::QgsMapCanvasLineSymbolItem( QgsMapCanvas *canvas )
setSymbol( qgis::make_unique< QgsLineSymbol >() );
}
void QgsMapCanvasLineSymbolItem::setLine( const QLineF &line )
void QgsMapCanvasLineSymbolItem::setLine( const QPolygonF &line )
{
mLine = line;
update();
}
void QgsMapCanvasLineSymbolItem::setLine( const QLineF &line )
{
mLine.clear();
mLine << line.p1() << line.p2();
update();
}
QRectF QgsMapCanvasLineSymbolItem::boundingRect() const
{
return mMapCanvas->rect();
@ -179,9 +186,7 @@ QRectF QgsMapCanvasLineSymbolItem::boundingRect() const
void QgsMapCanvasLineSymbolItem::renderSymbol( QgsRenderContext &context, const QgsFeature &feature )
{
QPolygonF points;
points << mLine.p1() << mLine.p2();
lineSymbol()->renderPolyline( points, &feature, context );
lineSymbol()->renderPolyline( mLine, &feature, context );
}
QgsLineSymbol *QgsMapCanvasLineSymbolItem::lineSymbol()

View File

@ -140,6 +140,11 @@ class APP_EXPORT QgsMapCanvasLineSymbolItem: public QgsMapCanvasSymbolItem
QgsMapCanvasLineSymbolItem( QgsMapCanvas *canvas = nullptr );
/**
* Sets the line to draw (in map coordinates)
*/
void setLine( const QPolygonF &line );
/**
* Sets the line to draw (in map coordinates)
*/
@ -151,7 +156,7 @@ class APP_EXPORT QgsMapCanvasLineSymbolItem: public QgsMapCanvasSymbolItem
private:
QLineF mLine;
QPolygonF mLine;
QgsLineSymbol *lineSymbol();
};