5 #include <QGraphicsScene>
7 /////////////////////////////////////////////////////////////////
9 /////////////////////////////////////////////////////////////////
11 ArrowObj::ArrowObj(MapObj *parent) : MapObj(parent) { init(); }
24 pen.setStyle(Qt::SolidLine);
25 arrowBegin = scene()->addPolygon(QPolygonF(), pen);
26 arrowBegin->setZValue(dZ_XLINK);
27 arrowEnd = scene()->addPolygon(QPolygonF(), pen);
28 arrowEnd->setZValue(dZ_XLINK);
30 line = scene()->addLine(QLineF(), pen);
31 line->setZValue(dZ_XLINK);
34 useFixedLength = false;
36 setStyleEnd(HeadFull);
39 void ArrowObj::setPen(QPen p)
44 // end shall have same style as xlink
46 pen_solid.setStyle(Qt::SolidLine);
47 arrowBegin->setPen(pen_solid);
48 arrowEnd->setPen(pen_solid);
50 setStyleBegin(styleBegin);
51 setStyleEnd(styleEnd);
54 QPen ArrowObj::getPen() { return pen; }
56 void ArrowObj::setArrowSize(qreal r) { arrowSize = r; }
58 qreal ArrowObj::getArrowSize() { return arrowSize; }
60 void ArrowObj::setUseFixedLength(bool b) { useFixedLength = b; }
62 bool ArrowObj::getUseFixedLength() { return useFixedLength; }
64 void ArrowObj::setFixedLength(int i) { fixedLength = i; }
66 int ArrowObj::getFixedLength() { return fixedLength; }
68 void ArrowObj::show() { setVisibility(true); }
70 void ArrowObj::hide() { setVisibility(false); }
72 void ArrowObj::setVisibility(bool b)
74 MapObj::setVisibility(b);
80 if (useFixedLength && fixedLength == 0)
91 void ArrowObj::setEndPoint(QPointF p)
95 line->setLine(absPos.x(), absPos.y(), p.x(), p.y());
96 arrowEnd->setPos(absPos);
98 qreal a = getAngle(endPoint - absPos);
99 arrowEnd->setRotation(-a / 6.28 * 360);
100 arrowEnd->setPos(endPoint);
103 QPointF ArrowObj::getEndPoint() { return endPoint; }
105 void ArrowObj::setStyleBegin(const QString &s)
108 setStyleBegin(ArrowObj::HeadFull);
110 setStyleBegin(ArrowObj::None);
113 void ArrowObj::setStyleBegin(OrnamentStyle os)
116 switch (styleBegin) {
118 arrowEnd->setPolygon(getArrowHead());
119 arrowBegin->setBrush(pen.color());
124 arrowBegin->setPolygon(QPolygonF());
129 ArrowObj::OrnamentStyle ArrowObj::getStyleBegin() { return styleBegin; }
131 void ArrowObj::setStyleEnd(const QString &s)
134 setStyleEnd(ArrowObj::HeadFull);
136 setStyleEnd(ArrowObj::None);
139 void ArrowObj::setStyleEnd(OrnamentStyle os)
144 arrowEnd->setPolygon(getArrowHead());
145 arrowEnd->setBrush(pen.color());
150 arrowEnd->setPolygon(QPolygonF());
155 QPolygonF ArrowObj::getArrowHead()
159 b = a + QPointF(-arrowSize * 2, -arrowSize);
160 c = a + QPointF(-arrowSize * 2, +arrowSize);
165 ArrowObj::OrnamentStyle ArrowObj::getStyleEnd() { return styleEnd; }
167 QString ArrowObj::styleToString(const OrnamentStyle &os)
177 qWarning() << "ArrowObj::styleToString unknown style " << os;