17#ifndef QGSLAYOUTITEMPOLYLINE_H 
   18#define QGSLAYOUTITEMPOLYLINE_H 
   22#include <QGraphicsPathItem> 
   66    int type() 
const override;
 
   67    QIcon 
icon() 
const override;
 
   69    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 );
 
  198    bool _addNode( 
int indexPoint, QPointF newPoint, 
double radius ) 
override;
 
  213    std::unique_ptr<QgsLineSymbol> mPolylineStyleSymbol;
 
  216    MarkerMode mStartMarker = NoMarker;
 
  218    MarkerMode mEndMarker = NoMarker;
 
  221    double mArrowHeadWidth = 4.0;
 
  224    double mStartArrowHeadHeight = 0.0;
 
  227    double mEndArrowHeadHeight = 0.0;
 
  230    QString mStartMarkerFile;
 
  233    QString mEndMarkerFile;
 
  236    double mArrowHeadStrokeWidth = 1.0;
 
  238    QColor mArrowHeadStrokeColor = Qt::black;
 
  239    QColor mArrowHeadFillColor = Qt::black;
 
  242    void createDefaultPolylineStyleSymbol();
 
  248    void refreshSymbol();
 
  250    void drawStartMarker( QPainter *painter );
 
  251    void drawEndMarker( QPainter *painter );
 
  253    void drawArrow( QPainter *painter, QPointF center, 
double angle );
 
  255    void updateMarkerSvgSizes();
 
  266    static void drawArrowHead( QPainter *p, 
double x, 
double y, 
double angle, 
double arrowHeadWidth );
 
  267    void drawSvgMarker( QPainter *p, QPointF point, 
double angle, 
const QString &markerPath, 
double height ) 
const;
 
  269    double computeMarkerMargin() 
const;
 
  271    friend class TestQgsLayoutPolyline;
 
QgsCompositionConverter class converts a QGIS 2.x composition to a QGIS 3.x layout.
 
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.
 
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.
 
MarkerMode
Vertex marker mode.
 
@ ArrowHead
Show arrow marker.
 
@ SvgMarker
Show SVG marker.
 
@ NoMarker
Don't show marker.
 
~QgsLayoutItemPolyline() override
 
QColor arrowHeadStrokeColor() const
Returns the color used to draw the stroke around the the arrow head.
 
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.
 
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.
 
An abstract layout item that provides generic methods for node based shapes such as polygon or polyli...
 
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 void _draw(QgsLayoutItemRenderContext &context, const QStyleOptionGraphicsItem *itemStyle=nullptr)=0
Method called in paint.
 
virtual bool _addNode(int nodeIndex, QPointF newNode, double radius)=0
Method called in addNode.
 
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
 
A line symbol type, for rendering LineString and MultiLineString geometries.
 
The class is used as a container of context for various read/write operations on other objects.
 
An interface for classes which can visit style entity (e.g.
 
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)