summaryrefslogtreecommitdiff
path: root/common/view.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/view.cpp')
-rw-r--r--common/view.cpp132
1 files changed, 100 insertions, 32 deletions
diff --git a/common/view.cpp b/common/view.cpp
index 27e0595..237a398 100644
--- a/common/view.cpp
+++ b/common/view.cpp
@@ -5,67 +5,135 @@
#include <stdlib.h>
#include "project.h"
#include "view.h"
+#include "system.h"
-View::View (Project *pProject, GLWindow *share)
- : GLWindow (share)
+View::View(Project *pProject, GLWindow *share)
+ : GLWindow(share)
{
- m_pProject = pProject;
+ m_Project = pProject;
}
-View::~View ()
+View::~View()
{
- if (m_pProject != NULL)
- m_pProject->RemoveView (this);
+ if (m_Project != NULL)
+ m_Project->RemoveView(this);
}
-void View::OnDraw ()
+LC_CURSOR_TYPE View::GetCursor(int Ptx, int Pty) const
{
- MakeCurrent ();
+ // TODO: check if we're the focused window and return just the default arrow if we aren't.
- m_pProject->SetViewSize (m_nWidth, m_nHeight);
- m_pProject->Render (false);
+ switch (m_Project->GetAction())
+ {
+ case LC_ACTION_SELECT:
+ if (Sys_KeyDown(KEY_CONTROL))
+ return LC_CURSOR_SELECT_GROUP;
+ else
+ return LC_CURSOR_SELECT;
- SwapBuffers ();
+ case LC_ACTION_INSERT:
+ return LC_CURSOR_BRICK;
+
+ case LC_ACTION_LIGHT:
+ return LC_CURSOR_LIGHT;
+
+ case LC_ACTION_SPOTLIGHT:
+ return LC_CURSOR_SPOTLIGHT;
+
+ case LC_ACTION_CAMERA:
+ return LC_CURSOR_CAMERA;
+
+ case LC_ACTION_MOVE:
+ return LC_CURSOR_MOVE;
+
+ case LC_ACTION_ROTATE:
+ return LC_CURSOR_ROTATE;
+
+ case LC_ACTION_ERASER:
+ return LC_CURSOR_DELETE;
+
+ case LC_ACTION_PAINT:
+ return LC_CURSOR_PAINT;
+
+ case LC_ACTION_ZOOM:
+ return LC_CURSOR_ZOOM;
+
+ case LC_ACTION_ZOOM_REGION:
+ return LC_CURSOR_ZOOM_REGION;
+
+ case LC_ACTION_PAN:
+ return LC_CURSOR_PAN;
+
+ case LC_ACTION_ROTATE_VIEW:
+ switch (m_Project->GetOverlayMode())
+ {
+ case LC_OVERLAY_X: return LC_CURSOR_ROTATEX;
+ case LC_OVERLAY_Y: return LC_CURSOR_ROTATEY;
+ case LC_OVERLAY_Z: return LC_CURSOR_ROLL;
+ case LC_OVERLAY_XYZ: return LC_CURSOR_ROTATE_VIEW;
+ default:
+ LC_ASSERT_FALSE("Unknown cursor type.");
+ return LC_CURSOR_NONE;
+ }
+
+ case LC_ACTION_ROLL:
+ return LC_CURSOR_ROLL;
+
+ case LC_ACTION_CURVE:
+ default:
+ LC_ASSERT_FALSE("Unknown cursor type.");
+ return LC_CURSOR_NONE;
+ }
+}
+
+void View::OnDraw()
+{
+ MakeCurrent();
+
+ m_Project->SetViewSize(m_nWidth, m_nHeight);
+ m_Project->Render(false);
+
+ SwapBuffers();
}
-void View::OnInitialUpdate ()
+void View::OnInitialUpdate()
{
- GLWindow::OnInitialUpdate ();
- m_pProject->AddView (this);
+ GLWindow::OnInitialUpdate();
+ m_Project->AddView(this);
}
-void View::OnLeftButtonDown (int x, int y, bool bControl, bool bShift)
+void View::OnLeftButtonDown(int x, int y, bool bControl, bool bShift)
{
- m_pProject->SetViewSize (m_nWidth, m_nHeight);
- m_pProject->OnLeftButtonDown (x, y, bControl, bShift);
+ m_Project->SetViewSize(m_nWidth, m_nHeight);
+ m_Project->OnLeftButtonDown(x, y, bControl, bShift);
}
-void View::OnLeftButtonUp (int x, int y, bool bControl, bool bShift)
+void View::OnLeftButtonUp(int x, int y, bool bControl, bool bShift)
{
- m_pProject->SetViewSize (m_nWidth, m_nHeight);
- m_pProject->OnLeftButtonUp (x, y, bControl, bShift);
+ m_Project->SetViewSize(m_nWidth, m_nHeight);
+ m_Project->OnLeftButtonUp(x, y, bControl, bShift);
}
-void View::OnLeftButtonDoubleClick (int x, int y, bool bControl, bool bShift)
+void View::OnLeftButtonDoubleClick(int x, int y, bool bControl, bool bShift)
{
- m_pProject->SetViewSize (m_nWidth, m_nHeight);
- m_pProject->OnLeftButtonDoubleClick (x, y, bControl, bShift);
+ m_Project->SetViewSize(m_nWidth, m_nHeight);
+ m_Project->OnLeftButtonDoubleClick(x, y, bControl, bShift);
}
-void View::OnRightButtonDown (int x, int y, bool bControl, bool bShift)
+void View::OnRightButtonDown(int x, int y, bool bControl, bool bShift)
{
- m_pProject->SetViewSize (m_nWidth, m_nHeight);
- m_pProject->OnRightButtonDown (x, y, bControl, bShift);
+ m_Project->SetViewSize(m_nWidth, m_nHeight);
+ m_Project->OnRightButtonDown(x, y, bControl, bShift);
}
-void View::OnRightButtonUp (int x, int y, bool bControl, bool bShift)
+void View::OnRightButtonUp(int x, int y, bool bControl, bool bShift)
{
- m_pProject->SetViewSize (m_nWidth, m_nHeight);
- m_pProject->OnRightButtonUp (x, y, bControl, bShift);
+ m_Project->SetViewSize(m_nWidth, m_nHeight);
+ m_Project->OnRightButtonUp(x, y, bControl, bShift);
}
-void View::OnMouseMove (int x, int y, bool bControl, bool bShift)
+void View::OnMouseMove(int x, int y, bool bControl, bool bShift)
{
- m_pProject->SetViewSize (m_nWidth, m_nHeight);
- m_pProject->OnMouseMove (x, y, bControl, bShift);
+ m_Project->SetViewSize(m_nWidth, m_nHeight);
+ m_Project->OnMouseMove(x, y, bControl, bShift);
}