16#ifndef QGSMODELARROWITEM_H
17#define QGSMODELARROWITEM_H
21#include <QGraphicsPathItem>
24class QgsModelComponentGraphicItem;
35class GUI_EXPORT QgsModelArrowItem :
public QObject,
public QGraphicsPathItem
52 QgsModelArrowItem( QgsModelComponentGraphicItem *startItem, Qt::Edge startEdge,
int startIndex,
bool startIsOutgoing, Marker startMarker,
53 QgsModelComponentGraphicItem *endItem, Qt::Edge endEdge,
int endIndex,
bool endIsIncoming, Marker endMarker );
61 QgsModelArrowItem( QgsModelComponentGraphicItem *startItem, Qt::Edge startEdge,
int startIndex, Marker startMarker,
62 QgsModelComponentGraphicItem *endItem, Marker endMarker );
70 QgsModelArrowItem( QgsModelComponentGraphicItem *startItem, Marker startMarker,
71 QgsModelComponentGraphicItem *endItem, Qt::Edge endEdge,
int endIndex, Marker endMarker );
78 QgsModelArrowItem( QgsModelComponentGraphicItem *startItem, Marker startMarker,
79 QgsModelComponentGraphicItem *endItem, Marker endMarker );
81 void paint( QPainter *painter,
const QStyleOptionGraphicsItem *option, QWidget *widget =
nullptr )
override;
86 void setPenStyle( Qt::PenStyle style );
97 QPointF bezierPointForCurve(
const QPointF &point, Qt::Edge edge,
bool incoming )
const;
99 void drawArrowHead( QPainter *painter,
const QPointF &point,
const QPointF &vector );
101 QgsModelComponentGraphicItem *mStartItem =
nullptr;
102 Qt::Edge mStartEdge = Qt::LeftEdge;
103 int mStartIndex = -1;
104 bool mStartIsOutgoing =
true;
107 QgsModelComponentGraphicItem *mEndItem =
nullptr;
108 Qt::Edge mEndEdge = Qt::LeftEdge;
110 bool mEndIsIncoming =
false;