7 #include "linkablemapobj.h"
14 /*! \brief xlinks are used to draw arbitrary connections between branches
15 * (BranchObj) in the map. */
17 /////////////////////////////////////////////////////////////////////////////
18 class XLinkObj : public MapObj {
20 enum CurrentSelection { Unselected, Path, C0, C1 };
21 XLinkObj(QGraphicsItem *, Link *l);
24 virtual QPointF getAbsPos();
25 void setStyleBegin(const QString &s);
26 void setStyleBegin(ArrowObj::OrnamentStyle os);
27 ArrowObj::OrnamentStyle getStyleBegin();
28 void setStyleEnd(const QString &s);
29 void setStyleEnd(ArrowObj::OrnamentStyle os);
30 ArrowObj::OrnamentStyle getStyleEnd();
31 QPointF getBeginPos();
33 virtual void move(QPointF p);
34 virtual void setEnd(QPointF);
35 void setSelection(int cp);
36 void setSelection(CurrentSelection s);
40 void setVisibility(bool);
43 void setC0(const QPointF &p);
46 void setC1(const QPointF &p);
48 bool isInClickBox(const QPointF &p);
49 int ctrlPointInClickBox(const QPointF &p);
50 QPainterPath getClickPath();
51 QPainterPath getSelectionPath();
54 enum StateVis { Hidden, OnlyBegin, OnlyEnd, Full, FullShowControls };
57 static int clickBorder;
58 static int pointRadius;
60 QPainterPath clickPath;
61 QGraphicsPolygonItem *poly; // Arrowhead, when one end is not visible
62 ArrowObj *pointerBegin; // Arrowhead
63 ArrowObj *pointerEnd; // Arrowhead
64 QGraphicsPathItem *path;
68 QPointF c0, c1; // Controlpoints for Bezier path
69 LinkableMapObj::Orientation beginOrient;
70 LinkableMapObj::Orientation endOrient;
71 QGraphicsEllipseItem *ctrl_p0;
72 QGraphicsEllipseItem *ctrl_p1;
74 CurrentSelection curSelection;
76 BranchItem *visBranch; // the "visible" part of a partially scrolled li