diff --git a/examples/common/OpenGLWidget.cpp b/examples/common/OpenGLWidget.cpp index 15f16852..a83fa70d 100644 --- a/examples/common/OpenGLWidget.cpp +++ b/examples/common/OpenGLWidget.cpp @@ -7,6 +7,9 @@ using namespace PolyVox; using namespace std; +//////////////////////////////////////////////////////////////////////////////// +// Public functions +//////////////////////////////////////////////////////////////////////////////// OpenGLWidget::OpenGLWidget(QWidget *parent) :QGLWidget(parent) ,m_viewableRegion(Region(0, 0, 0, 255, 255, 255)) @@ -15,17 +18,41 @@ OpenGLWidget::OpenGLWidget(QWidget *parent) { } +void OpenGLWidget::setShader(QSharedPointer shader) +{ + mShader = shader; +} + void OpenGLWidget::setViewableRegion(Region viewableRegion) { m_viewableRegion = viewableRegion; setupWorldToCameraMatrix(); } -void OpenGLWidget::setShader(QSharedPointer shader) +void OpenGLWidget::mousePressEvent(QMouseEvent* event) { - mShader = shader; + m_CurrentMousePos = event->pos(); + m_LastFrameMousePos = m_CurrentMousePos; + + update(); } +void OpenGLWidget::mouseMoveEvent(QMouseEvent* event) +{ + m_CurrentMousePos = event->pos(); + QPoint diff = m_CurrentMousePos - m_LastFrameMousePos; + m_xRotation += diff.x(); + m_yRotation += diff.y(); + m_LastFrameMousePos = m_CurrentMousePos; + + setupWorldToCameraMatrix(); + + update(); +} + +//////////////////////////////////////////////////////////////////////////////// +// Protected functions +//////////////////////////////////////////////////////////////////////////////// void OpenGLWidget::initializeGL() { GLenum err = glewInit(); @@ -160,27 +187,9 @@ void OpenGLWidget::paintGL() } } -void OpenGLWidget::mousePressEvent(QMouseEvent* event) -{ - m_CurrentMousePos = event->pos(); - m_LastFrameMousePos = m_CurrentMousePos; - - update(); -} - -void OpenGLWidget::mouseMoveEvent(QMouseEvent* event) -{ - m_CurrentMousePos = event->pos(); - QPoint diff = m_CurrentMousePos - m_LastFrameMousePos; - m_xRotation += diff.x(); - m_yRotation += diff.y(); - m_LastFrameMousePos = m_CurrentMousePos; - - setupWorldToCameraMatrix(); - - update(); -} - +//////////////////////////////////////////////////////////////////////////////// +// Private functions +//////////////////////////////////////////////////////////////////////////////// void OpenGLWidget::setupWorldToCameraMatrix() { QVector3D lowerCorner(m_viewableRegion.getLowerX(), m_viewableRegion.getLowerY(), m_viewableRegion.getLowerZ()); diff --git a/examples/common/OpenGLWidget.h b/examples/common/OpenGLWidget.h index a56ed7f1..af660909 100644 --- a/examples/common/OpenGLWidget.h +++ b/examples/common/OpenGLWidget.h @@ -52,17 +52,6 @@ public: // Constructor OpenGLWidget(QWidget *parent); - // Mouse handling - void mouseMoveEvent(QMouseEvent* event); - void mousePressEvent(QMouseEvent* event); - - // The viewable region can be adjusted so that this example framework can be used for different volume sizes. - void setViewableRegion(PolyVox::Region viewableRegion); - - // For our purposes we use a single shader for the whole volume, and - // this example framework is only meant to show a single volume at a time - void setShader(QSharedPointer shader); - // Convert a SurfaceMesh to OpenGL index/vertex buffers. Inlined because it's templatised. template void addMesh(const MeshType& surfaceMesh, const PolyVox::Vector3DInt32& translation = PolyVox::Vector3DInt32(0, 0, 0), float scale = 1.0f) @@ -110,6 +99,17 @@ public: mMeshData.push_back(meshData); } + // For our purposes we use a single shader for the whole volume, and + // this example framework is only meant to show a single volume at a time + void setShader(QSharedPointer shader); + + // The viewable region can be adjusted so that this example framework can be used for different volume sizes. + void setViewableRegion(PolyVox::Region viewableRegion); + + // Mouse handling + void mouseMoveEvent(QMouseEvent* event); + void mousePressEvent(QMouseEvent* event); + protected: // Qt OpenGL functions