From 10bb7105946bc0a892a9daf42ec5181ad9994fcf Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Fri, 27 Jan 2017 19:57:18 -0200 Subject: several control elements methods implemented Node position buggy --- Project/ControlElement.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'Project/ControlElement.h') diff --git a/Project/ControlElement.h b/Project/ControlElement.h index 69f9d83..9414d38 100644 --- a/Project/ControlElement.h +++ b/Project/ControlElement.h @@ -3,12 +3,58 @@ #include "Element.h" +class Node +{ +public: + enum NodeType { NODE_IN = 0, NODE_OUT }; + + Node(wxPoint2DDouble position = wxPoint2DDouble(0, 0), NodeType nodeType = NODE_IN, double borderSize = 0.0); + ~Node(); + + wxRect2DDouble GetRect() const { return m_rect; } + void SetRect(wxRect2DDouble rect) { m_rect = rect; } + + wxPoint2DDouble GetPosition() const { return m_rect.GetPosition(); } + void SetPosition(wxPoint2DDouble position); + + NodeType GetNodeType() const { return m_nodeType; } + void SetNodeType(NodeType nodeType) { m_nodeType = nodeType; } + + double GetRadius() const { return m_radius; } + std::vector GetInTrianglePts() const { return m_triPts; } + + void StartMove(wxPoint2DDouble position); + void Move(wxPoint2DDouble position); + bool Contains(wxPoint2DDouble position) const { return m_rect.Contains(position); } + +protected: + wxRect2DDouble m_rect; + NodeType m_nodeType; + + wxPoint2DDouble m_moveStartPt; + wxPoint2DDouble m_movePos; + + double m_radius = 3.0; + std::vector m_triPts; + std::vector m_triPtsMovePos; +}; + class ControlElement : public Element { public: ControlElement(); ~ControlElement(); + virtual void StartMove(wxPoint2DDouble position); + virtual void Move(wxPoint2DDouble position); + + void SetNodeList(std::vector nodeList) { m_nodeList = nodeList; } + std::vector GetNodeList() const { return m_nodeList; } + + virtual void DrawNodes() const; + +protected: + std::vector m_nodeList; }; #endif // CONTROLELEMENT_H -- cgit