5 #include <QGraphicsScene>
7 /////////////////////////////////////////////////////////////////
9 /////////////////////////////////////////////////////////////////
11 ArrowObj::ArrowObj (MapObj* parent):MapObj(parent)
16 ArrowObj::~ArrowObj ()
23 void ArrowObj::init ()
27 pen.setStyle (Qt::SolidLine);
28 arrowBegin=scene()->addPolygon (QPolygonF(), pen );
29 arrowBegin->setZValue (dZ_XLINK);
30 arrowEnd=scene()->addPolygon (QPolygonF(), pen );
31 arrowEnd->setZValue (dZ_XLINK);
33 line=scene()->addLine ( QLineF(), pen );
34 line->setZValue (dZ_XLINK);
39 setStyleEnd (HeadFull);
42 void ArrowObj::setPen (QPen p)
47 // end shall have same style as xlink
49 pen_solid.setStyle (Qt::SolidLine);
50 arrowBegin->setPen( pen_solid );
51 arrowEnd->setPen( pen_solid );
53 setStyleBegin( styleBegin );
54 setStyleEnd( styleEnd );
57 QPen ArrowObj::getPen()
62 void ArrowObj::setArrowSize(qreal r)
67 qreal ArrowObj::getArrowSize()
72 void ArrowObj::setUseFixedLength( bool b)
77 bool ArrowObj::getUseFixedLength()
79 return useFixedLength;
82 void ArrowObj::setFixedLength(int i)
87 int ArrowObj::getFixedLength()
94 setVisibility( true );
99 setVisibility( false );
102 void ArrowObj::setVisibility (bool b)
104 MapObj::setVisibility (b);
107 if (styleEnd != None)
111 if (useFixedLength && fixedLength == 0)
123 void ArrowObj::setEndPoint (QPointF p)
127 line->setLine(absPos.x(),absPos.y(), p.x(), p.y());
128 arrowEnd->setPos(absPos);
130 qreal a = getAngle( endPoint - absPos );
131 arrowEnd->setRotation( -a / 6.28 * 360);
132 arrowEnd->setPos( endPoint );
135 QPointF ArrowObj::getEndPoint ()
140 void ArrowObj::setStyleBegin (const QString &s)
143 setStyleBegin( ArrowObj::HeadFull );
145 setStyleBegin( ArrowObj::None );
148 void ArrowObj::setStyleBegin (OrnamentStyle os)
154 arrowEnd->setPolygon( getArrowHead() );
155 arrowBegin->setBrush( pen.color() );
159 arrowBegin->setPolygon( QPolygonF() );
164 ArrowObj::OrnamentStyle ArrowObj::getStyleBegin()
169 void ArrowObj::setStyleEnd (const QString &s)
172 setStyleEnd( ArrowObj::HeadFull );
174 setStyleEnd( ArrowObj::None );
177 void ArrowObj::setStyleEnd (OrnamentStyle os)
183 arrowEnd->setPolygon( getArrowHead() );
184 arrowEnd->setBrush( pen.color() );
188 arrowEnd->setPolygon( QPolygonF() );
193 QPolygonF ArrowObj::getArrowHead()
197 b = a + QPointF( -arrowSize *2, -arrowSize);
198 c = a + QPointF( -arrowSize *2, +arrowSize);
203 ArrowObj::OrnamentStyle ArrowObj::getStyleEnd()
208 QString ArrowObj::styleToString(const OrnamentStyle &os)
212 case HeadFull: return "HeadFull"; break;
213 case None: return "None"; break;
214 default: qWarning()<<"ArrowObj::styleToString unknown style "<<os;