36 lines
1.5 KiB
C
36 lines
1.5 KiB
C
|
#ifndef VGRAPHICSPOINT_H
|
||
|
#define VGRAPHICSPOINT_H
|
||
|
|
||
|
#include <QGraphicsLineItem>
|
||
|
#include <QGraphicsEllipseItem>
|
||
|
#include "widgets/vgraphicssimpletextitem.h"
|
||
|
#include "../container/vpointf.h"
|
||
|
|
||
|
class VGraphicsPoint: public QGraphicsEllipseItem
|
||
|
{
|
||
|
public:
|
||
|
VGraphicsPoint(QGraphicsItem *parent);
|
||
|
virtual ~VGraphicsPoint();
|
||
|
public slots:
|
||
|
virtual void NameChangePosition(const QPointF pos)=0;
|
||
|
protected:
|
||
|
qreal radius;
|
||
|
VGraphicsSimpleTextItem *namePoint;
|
||
|
QGraphicsLineItem *lineName;
|
||
|
virtual void UpdateNamePosition(qreal mx, qreal my)=0;
|
||
|
void RefreshLine();
|
||
|
virtual void hoverMoveEvent ( QGraphicsSceneHoverEvent * event );
|
||
|
virtual void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event );
|
||
|
virtual void RefreshPointGeometry(const VPointF &point)=0;
|
||
|
private:
|
||
|
VGraphicsPoint(const VGraphicsPoint &point);
|
||
|
const VGraphicsPoint &operator=(const VGraphicsPoint &point);
|
||
|
QPointF LineIntersectRect(QRectF rec, QLineF line) const;
|
||
|
qint32 LineIntersectCircle(QPointF center, qreal radius, QLineF line, QPointF &p1,
|
||
|
QPointF &p2) const;
|
||
|
QPointF ClosestPoint(QLineF line, QPointF p) const;
|
||
|
QPointF addVector (QPointF p, QPointF p1, QPointF p2, qreal k) const;
|
||
|
};
|
||
|
|
||
|
#endif // VGRAPHICSPOINT_H
|