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