diff --git a/common/ViewerProperties.cc b/common/ViewerProperties.cc index 5ac61c86758b81cb0a78e545a75049f947fa99c9..5ccfc84ee833b0b862595fe1d29ad24630279da7 100644 --- a/common/ViewerProperties.cc +++ b/common/ViewerProperties.cc @@ -82,6 +82,7 @@ namespace Viewer { sceneRadius_(1.0), trackballCenter_(ACG::Vec3d( 0.0, 0.0, 0.0 )), trackballRadius_(1.0), + stereo_(false), viewerId_(_id) { settingsSection_ = "Viewer" + QString::number(_id) + "/"; diff --git a/common/ViewerProperties.hh b/common/ViewerProperties.hh index 785c23dd2442520ae504de35f52c5f2b4da4f0bd..952e725cf9b481e51bba3d0fd5579bb0010a526f 100644 --- a/common/ViewerProperties.hh +++ b/common/ViewerProperties.hh @@ -497,7 +497,25 @@ namespace Viewer { double trackballRadius_; /** @} */ + + //=========================================================================== + //=========================================================================== + /** @name Stereo Settings + * @{ */ + //=========================================================================== + //=========================================================================== + public: + + void stereo(bool _stereo) { stereo_ = _stereo; emit updated(); }; + bool stereo() {return stereo_; }; + + private: + /// Flag if stereo should be enabled for the current viewer + bool stereo_; + + + /** @} */ signals: diff --git a/widgets/glWidget/QtBaseViewer.cc b/widgets/glWidget/QtBaseViewer.cc index 2d53f57c29ae73b398af77115f650165f4cc568f..a276dbec83d646d8fc0b6bfd88ebff3a8415a77c 100644 --- a/widgets/glWidget/QtBaseViewer.cc +++ b/widgets/glWidget/QtBaseViewer.cc @@ -182,9 +182,6 @@ glViewer::glViewer( QGraphicsScene* _scene, trackMouse_ = false; - // stereo - stereo_ = false; - // Note: we start locked (initialization of updateLocked_) // will be unlocked in initializeGL() @@ -422,7 +419,7 @@ void glViewer::updateProjectionMatrix() glstate_->reset_projection(); // In stereo mode we have to use a perspective matrix - if (stereo_ || projectionMode_ == PERSPECTIVE_PROJECTION) + if ( properties_.stereo() || projectionMode_ == PERSPECTIVE_PROJECTION) { double aspect; @@ -597,7 +594,7 @@ void glViewer::drawScene() // Check if we use build in default renderers if ( renderManager().activeId( properties_.viewerId() ) == 0 ) { - if (stereo_) drawScene_stereo(); + if ( properties_.stereo()) drawScene_stereo(); else drawScene_mono(); } else { renderManager().active( properties_.viewerId() )->plugin->render(glstate_,properties_); @@ -954,7 +951,7 @@ void glViewer::paintGL() glColor4f(1.0,0.0,0.0,1.0); // clear (stereo mode clears buffers on its own) - if (!stereo_) + if (! properties_.stereo()) glstate_->clearBuffers (); properties_.unLockUpdate(); @@ -1872,7 +1869,7 @@ void glViewer::viewWheelEvent( QWheelEvent* _event) if (_event->modifiers() == Qt::ShiftModifier) factor = properties_.wheelZoomFactorShift(); - if (projectionMode() == PERSPECTIVE_PROJECTION || stereo_) + if (projectionMode() == PERSPECTIVE_PROJECTION || properties_.stereo()) { double d = -(double)_event->delta() / 120.0 * 0.2 * factor * properties_.trackballRadius() / 3.0; translate( ACG::Vec3d(0.0, 0.0, d) ); @@ -2161,7 +2158,7 @@ void glViewer::updateCursorPosition (QPointF _scenePos) cursorPositionValid_ = false; } // only do real pick in stereo mode - else if (stereo_ && OpenFlipperSettings().value("Core/Gui/glViewer/stereoMousePick",true).toBool() && + else if ( properties_.stereo() && OpenFlipperSettings().value("Core/Gui/glViewer/stereoMousePick",true).toBool() && pick (ACG::SceneGraph::PICK_ANYTHING, _scenePos.toPoint(), nodeIdx, targetIdx, &tmp)) { // the point we get back will contain the view transformation and we have to revert it diff --git a/widgets/glWidget/QtBaseViewer.hh b/widgets/glWidget/QtBaseViewer.hh index 2fdcc91e92a2d7410a0b02a47ba0edcbe5f56ebd..cbbbf4a7984a88d73bd88b99944b7de8ab3a81fd 100644 --- a/widgets/glWidget/QtBaseViewer.hh +++ b/widgets/glWidget/QtBaseViewer.hh @@ -678,8 +678,6 @@ private: private: - bool stereo_; - // custom anaglyph stuff int agTexWidth_; int agTexHeight_; diff --git a/widgets/glWidget/QtBaseViewerStereo.cc b/widgets/glWidget/QtBaseViewerStereo.cc index 54518e104983bbdba6b772f1a69f41cfa39e6d26..8a0b724933d0b1baafc8c36338bfd8bac4065063 100644 --- a/widgets/glWidget/QtBaseViewerStereo.cc +++ b/widgets/glWidget/QtBaseViewerStereo.cc @@ -91,9 +91,9 @@ static const char* customAnaglyphProg = { void glViewer::setStereoMode(bool _b) { - stereo_ = _b; + properties_.stereo(_b); - if (!stereo_) { + if (! properties_.stereo()) { makeCurrent(); ACG::GLState::drawBuffer(GL_BACK); }