summaryrefslogtreecommitdiffstats
path: root/Project/Workspace.h
diff options
context:
space:
mode:
authorThales1330 <thaleslima.ufu@gmail.com>2016-08-01 18:05:11 -0300
committerThales1330 <thaleslima.ufu@gmail.com>2016-08-01 18:05:11 -0300
commit5e0be3d0a505781c31b3d23450fd92d4cc7b7ce7 (patch)
treec3fd7d83e604abaf5f62ab732e9a2383c0def5e0 /Project/Workspace.h
parent3a246308dcd76f70a1b6c3e6b08f0d597b255dba (diff)
downloadPSP.git-5e0be3d0a505781c31b3d23450fd92d4cc7b7ce7.tar.gz
PSP.git-5e0be3d0a505781c31b3d23450fd92d4cc7b7ce7.tar.xz
PSP.git-5e0be3d0a505781c31b3d23450fd92d4cc7b7ce7.zip
Attempt to implement Event Handler in Workspace
fail
Diffstat (limited to 'Project/Workspace.h')
-rw-r--r--Project/Workspace.h42
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