#ifndef SPLINEITEM_H
#define SPLINEITEM_H
-#include <QtCore>
#include <QGraphicsPathItem>
class BPoint;
+class QGraphicsView;
class SplineItem : public QObject, public QGraphicsPathItem
{
Q_OBJECT
public:
- SplineItem(const QList <BPoint> &points, QGraphicsItem* parent = 0, QGraphicsScene *scene = 0);
+ explicit SplineItem(const QList <BPoint> &points, QGraphicsItem* parent = 0, QGraphicsScene *scene = 0);
enum { Type = UserType + 10 };
virtual int type() const;
- void updateSpline();
- QList <BPoint> getPoints();
+ bool editing() const;
+
+ void updateSpline(bool editing = false);
+ QList <BPoint> getPoints() const;
+ void setPoints(const QList <BPoint> &points);
+
+ void removeChild(QGraphicsItem *child);
+
+protected:
+ void mousePressEvent(QGraphicsSceneMouseEvent *event);
+ void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+ void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+ void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
+
+private:
+ int getClosestPointOnCurve(const QPointF &point, double *tFinal);
+
+ bool m_closed;
+ bool m_editing;
+ QGraphicsView *m_view;
signals:
- void changed();
+ void changed(bool editing);
};
#endif