17#ifndef QGSLAYOUTITEMPOLYLINE_H
18#define QGSLAYOUTITEMPOLYLINE_H
25#include <QGraphicsPathItem>
65 int type()
const override;
66 QIcon
icon()
const override;
68 QPainterPath
shape()
const override;
96 void setStartMarker( MarkerMode mode );
110 void setEndMarker( MarkerMode mode );
116 void setArrowHeadWidth(
double width );
129 void setStartSvgMarkerPath(
const QString &path );
143 void setEndSvgMarkerPath(
const QString &path );
164 void setArrowHeadStrokeColor(
const QColor &color );
178 void setArrowHeadFillColor(
const QColor &color );
185 void setArrowHeadStrokeWidth(
double width );
197 bool _addNode(
int indexPoint, QPointF newPoint,
double radius )
override;
211 std::unique_ptr<QgsLineSymbol> mPolylineStyleSymbol;
214 MarkerMode mStartMarker = NoMarker;
216 MarkerMode mEndMarker = NoMarker;
219 double mArrowHeadWidth = 4.0;
222 double mStartArrowHeadHeight = 0.0;
225 double mEndArrowHeadHeight = 0.0;
228 QString mStartMarkerFile;
231 QString mEndMarkerFile;
234 double mArrowHeadStrokeWidth = 1.0;
236 QColor mArrowHeadStrokeColor = Qt::black;
237 QColor mArrowHeadFillColor = Qt::black;
240 void createDefaultPolylineStyleSymbol();
246 void refreshSymbol();
248 void drawStartMarker( QPainter *painter );
249 void drawEndMarker( QPainter *painter );
251 void drawArrow( QPainter *painter, QPointF center,
double angle );
253 void updateMarkerSvgSizes();
264 static void drawArrowHead( QPainter *p,
double x,
double y,
double angle,
double arrowHeadWidth );
265 void drawSvgMarker( QPainter *p, QPointF point,
double angle,
const QString &markerPath,
double height )
const;
267 double computeMarkerMargin()
const;
Layout item for node based polyline shapes.
double arrowHeadStrokeWidth() const
Returns the pen width in millimeters for the stroke of the arrow head.
QString startSvgMarkerPath() const
Returns the path the an SVG marker drawn at the start of the line.
QString endSvgMarkerPath() const
Returns the path the an SVG marker drawn at the end of the line.
QgsLineSymbol * symbol()
Returns the line symbol used to draw the shape.
QColor arrowHeadFillColor() const
Returns the color used to fill the arrow head.
MarkerMode endMarker() const
Returns the end marker mode, which controls what marker is drawn at the end of the line.
friend class TestQgsLayoutPolyline
MarkerMode
Vertex marker mode.
@ ArrowHead
Show arrow marker.
@ SvgMarker
Show SVG marker.
@ NoMarker
Don't show marker.
QPainterPath shape() const override
~QgsLayoutItemPolyline() override
static QgsLayoutItemPolyline * create(QgsLayout *layout)
Returns a new polyline item for the specified layout.
QColor arrowHeadStrokeColor() const
Returns the color used to draw the stroke around the the arrow head.
friend class QgsCompositionConverter
void setSymbol(QgsLineSymbol *symbol)
Sets the symbol used to draw the shape.
MarkerMode startMarker() const
Returns the start marker mode, which controls what marker is drawn at the start of the line.
double arrowHeadWidth() const
Returns the width of line arrow heads in mm.
QgsLayoutItemPolyline(QgsLayout *layout)
Constructor for QgsLayoutItemPolyline for the specified layout.
Contains settings and helpers relating to a render of a QgsLayoutItem.
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified style entity visitor, causing it to visit all style entities associated with th...
virtual QIcon icon() const
Returns the item's icon.
int type() const override
Returns a unique graphics item type identifier.
virtual QString displayName() const
Gets item display name.
virtual void updateBoundingRect()
Called when the bounding rect of the item should recalculated.
virtual bool _removeNode(int nodeIndex)=0
Method called in removeNode.
virtual void _writeXmlStyle(QDomDocument &doc, QDomElement &elmt, const QgsReadWriteContext &context) const =0
Method called in writeXml.
bool readPropertiesFromElement(const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context) override
Sets item state from a DOM element.
bool writePropertiesToElement(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const override
Stores item state within an XML DOM element.
virtual void _readXmlStyle(const QDomElement &elmt, const QgsReadWriteContext &context)=0
Method called in readXml.
virtual bool isValid() const =0
Must be reimplemented in subclasses.
virtual void _draw(QgsLayoutItemRenderContext &context, const QStyleOptionGraphicsItem *itemStyle=nullptr)=0
Method called in paint.
QgsLayoutNodesItem(QgsLayout *layout)
Constructor for QgsLayoutNodesItem, attached to the specified layout.
virtual bool _addNode(int nodeIndex, QPointF newNode, double radius)=0
Method called in addNode.
const QgsLayout * layout() const
Returns the layout the object is attached to.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
A line symbol type, for rendering LineString and MultiLineString geometries.
A container for the context for various read/write operations on objects.
An interface for classes which can visit style entity (e.g.