From 10b4df2100fec3cc57a8ffc2889dc157298c7160 Mon Sep 17 00:00:00 2001 From: chebuzz Date: Tue, 17 Aug 2010 19:53:24 +0000 Subject: [PATCH] GCS/ModelView - Add scroll-to-zoom functionality and resize fix. git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1311 ebee16cc-31ac-478f-84a7-5cbb03baadba --- .../modelview/modelviewgadgetwidget.cpp | 23 ++++++++++--------- .../plugins/modelview/modelviewgadgetwidget.h | 5 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ground/src/plugins/modelview/modelviewgadgetwidget.cpp b/ground/src/plugins/modelview/modelviewgadgetwidget.cpp index fbebcdcde..b4184117b 100644 --- a/ground/src/plugins/modelview/modelviewgadgetwidget.cpp +++ b/ground/src/plugins/modelview/modelviewgadgetwidget.cpp @@ -46,14 +46,14 @@ ModelViewGadgetWidget::ModelViewGadgetWidget(QWidget *parent) m_Light.setPosition(4000.0, 40000.0, 80000.0); m_Light.setAmbientColor(Qt::lightGray); - QColor repColor; - repColor.setRgbF(1.0, 0.11372, 0.11372, 0.0); - m_MoverController= m_pFactory->createDefaultMoverController(repColor, &m_GlView); - m_GlView.cameraHandle()->setDefaultUpVector(glc::Y_AXIS); m_GlView.cameraHandle()->setRightView(); //m_GlView.cameraHandle()->setIsoView(); + QColor repColor; + repColor.setRgbF(1.0, 0.11372, 0.11372, 0.0); + m_MoverController= m_pFactory->createDefaultMoverController(repColor, &m_GlView); + // Get required UAVObjects ExtensionSystem::PluginManager* pm = ExtensionSystem::PluginManager::instance(); UAVObjectManager* objManager = pm->getObject(); @@ -82,7 +82,7 @@ void ModelViewGadgetWidget::initializeGL() if (!vboEnable) { GLC_State::setVboUsage(false); - qDebug("VBOs disabled. Enable for better performance if GPU supports it."); + qDebug("VBOs disabled. Enable for better performance if GPU supports it. (Most do)"); } m_GlView.reframe(m_ModelBoundingBox); @@ -95,12 +95,6 @@ void ModelViewGadgetWidget::initializeGL() m_MotionTimer.start(100); } -void ModelViewGadgetWidget::resizeEvent(QResizeEvent *event) -{ -// m_GlView.setWinGLSize(width(), height()); - QWidget::resizeEvent(event); -} - void ModelViewGadgetWidget::paintGL() { // Clear screen @@ -159,6 +153,13 @@ void ModelViewGadgetWidget::CreateScene() } } +void ModelViewGadgetWidget::wheelEvent(QWheelEvent * e) +{ + double delta = m_GlView.cameraHandle()->distEyeTarget() - (e->delta()/120) ; + m_GlView.cameraHandle()->setDistEyeTarget(delta); + m_GlView.setDistMinAndMax(m_World.boundingBox()); +} + void ModelViewGadgetWidget::mousePressEvent(QMouseEvent *e) { if (m_MoverController.hasActiveMover()) return; diff --git a/ground/src/plugins/modelview/modelviewgadgetwidget.h b/ground/src/plugins/modelview/modelviewgadgetwidget.h index f6f23709a..20d18e3d0 100644 --- a/ground/src/plugins/modelview/modelviewgadgetwidget.h +++ b/ground/src/plugins/modelview/modelviewgadgetwidget.h @@ -56,9 +56,6 @@ public: void reloadScene(); void updateAttitude(int value); -protected: - void resizeEvent(QResizeEvent *event); - private: void initializeGL(); void paintGL(); @@ -70,6 +67,7 @@ private: void mousePressEvent(QMouseEvent * e); void mouseMoveEvent(QMouseEvent * e); void mouseReleaseEvent(QMouseEvent * e); + void wheelEvent(QWheelEvent * e); ////////////////////////////////////////////////////////////////////// // Private slots Functions @@ -86,6 +84,7 @@ private: GLC_BoundingBox m_ModelBoundingBox; //! The timer used for motion QTimer m_MotionTimer; + int yMouseStart; QString acFilename; QString bgFilename;