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, QgsModelComponentGraphicItem *endItem, Qt::Edge endEdge, 
int endIndex, 
bool endIsIncoming, Marker endMarker );
 
   60    QgsModelArrowItem( QgsModelComponentGraphicItem *startItem, Qt::Edge startEdge, 
int startIndex, Marker startMarker, QgsModelComponentGraphicItem *endItem, Marker endMarker );
 
   68    QgsModelArrowItem( QgsModelComponentGraphicItem *startItem, Marker startMarker, QgsModelComponentGraphicItem *endItem, Qt::Edge endEdge, 
int endIndex, Marker endMarker );
 
   75    QgsModelArrowItem( QgsModelComponentGraphicItem *startItem, Marker startMarker, QgsModelComponentGraphicItem *endItem, Marker endMarker );
 
   77    void paint( QPainter *painter, 
const QStyleOptionGraphicsItem *option, QWidget *widget = 
nullptr ) 
override;
 
   82    void setPenStyle( Qt::PenStyle style );
 
   92    QPointF bezierPointForCurve( 
const QPointF &point, Qt::Edge edge, 
bool incoming, 
bool hasSpecificDirectionalFlow ) 
const;
 
   94    void drawArrowHead( QPainter *painter, 
const QPointF &point, 
const QPointF &vector );
 
   96    QgsModelComponentGraphicItem *mStartItem = 
nullptr;
 
   97    Qt::Edge mStartEdge = Qt::LeftEdge;
 
   99    bool mStartIsOutgoing = 
true;
 
  102    QgsModelComponentGraphicItem *mEndItem = 
nullptr;
 
  103    Qt::Edge mEndEdge = Qt::LeftEdge;
 
  105    bool mEndIsIncoming = 
false;