#ifndef ARROWOBJ_H
#define ARROWOBJ_H
#include "mapobj.h"
#include <QPen>
/*! \brief arrows are used to indicate partially hidden ends of xlinks and
also the ends of xlinks.
*/
/////////////////////////////////////////////////////////////////////////////
class ArrowObj:public MapObj {
public:
enum OrnamentStyle {None, HeadFull, Foot};
ArrowObj (MapObj* parent);
virtual ~ArrowObj ();
virtual void init ();
void setPen( QPen pen );
QPen getPen();
void setArrowSize(qreal r);
qreal getArrowSize();
void setFixedLength(int i);
int getFixedLength();
void setUseFixedLength(bool b);
bool getUseFixedLength();
void show();
void hide();
void setVisibility (bool b);
void setEndPoint (QPointF p);
QPointF getEndPoint ();
void setStyleBegin (OrnamentStyle os);
void setStyleBegin (const QString &s);
OrnamentStyle getStyleBegin ();
void setStyleEnd (const QString &s);
void setStyleEnd (OrnamentStyle os);
OrnamentStyle getStyleEnd ();
static QString styleToString(const OrnamentStyle &os);
private:
QPolygonF getArrowHead();
QPen pen;
qreal arrowSize;
int fixedLength;
bool useFixedLength;
QGraphicsPolygonItem *arrowEnd;
QGraphicsPolygonItem *arrowBegin;
QGraphicsLineItem *line;
QPointF endPoint;
OrnamentStyle styleBegin;
OrnamentStyle styleEnd;
};
#endif