diff options
Diffstat (limited to 'Project/Workspace.h')
-rw-r--r-- | Project/Workspace.h | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/Project/Workspace.h b/Project/Workspace.h index 193d370..ca4245f 100644 --- a/Project/Workspace.h +++ b/Project/Workspace.h @@ -6,12 +6,19 @@ #include <wx/dcclient.h> #include <wx/msgdlg.h> +class MouseEventsHandler; + #include "WorkspaceBase.h" +//#include "MouseEventsHandler.h" #include "Bus.h" +class Camera; + class Workspace : public WorkspaceBase { protected: + virtual void OnMouseMotion(wxMouseEvent& event); + virtual void OnKeyDown(wxKeyEvent& event) = 0; virtual void OnLeftClickDown(wxMouseEvent& event); virtual void OnPaint(wxPaintEvent& event); @@ -19,17 +26,44 @@ class Workspace : public WorkspaceBase wxGLContext* m_glContext; wxString m_name; - - std::vector<Element*> m_elementList; + + bool m_insertMode = false; + bool m_dragMode = false; + + std::vector<Element*> m_elementList; public: Workspace(wxWindow* parent, wxString name = wxEmptyString); ~Workspace(); - - void Redraw() { this->Refresh(); } + + MouseEventsHandler* m_mouseEventsHandler; + Camera* m_camera; wxString GetName() const { return m_name; } void SetName(wxString name) { m_name = name; } + void SetDragMode(bool dragMode) { this->m_dragMode = dragMode; } + void SetInsertMode(bool insertMode) { this->m_insertMode = insertMode; } + bool IsDragMode() const { return m_dragMode; } + const std::vector<Element*>& GetElementList() const { return m_elementList; } + bool IsInsertMode() const { return m_insertMode; } + void Redraw() { this->Refresh(); } +}; + +class Camera +{ + private: + wxPoint2DDouble m_translation; + double m_scale; + + public: + Camera(); + ~Camera(); + + void SetScale(double scale) { this->m_scale = scale; } + void SetTranslation(const wxPoint2DDouble& translation) { this->m_translation = translation; } + double GetScale() const { return m_scale; } + const wxPoint2DDouble GetTranslation() const { return m_translation; } + wxPoint2DDouble ScreenToWorld(wxPoint2DDouble screenCoords); }; #endif // WORKSPACE_H |