From 65262f121dd71064b204dd04be856c8411347642 Mon Sep 17 00:00:00 2001 From: Stephane ALBERT <stephane.albert@c-s.fr> Date: Wed, 27 Apr 2016 15:26:01 +0200 Subject: [PATCH] BUG: MANTIS-1204: Fixed desynchronized gamma between image-view and quicklook-view. --- Code/Application/Monteverdi/mvdMainWindow.cxx | 9 +++++ .../Common/Gui/mvdAbstractImageViewRenderer.h | 34 ++++++++++++++++++- Code/Common/Gui/mvdImageViewRenderer.cxx | 16 ++++++--- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/Code/Application/Monteverdi/mvdMainWindow.cxx b/Code/Application/Monteverdi/mvdMainWindow.cxx index 28f36c91bc..03332abb4a 100644 --- a/Code/Application/Monteverdi/mvdMainWindow.cxx +++ b/Code/Application/Monteverdi/mvdMainWindow.cxx @@ -181,6 +181,15 @@ MainWindow bool isGLSL = m_ImageView->GetRenderer()->CheckGLCapabilities( &m_GLSL140 ); + // MANTIS-1204 + // { + // + // Forward GLSL state to quicklook view. + assert( GetQuicklookView()!=NULL ); + assert( GetQuicklookView()->GetRenderer()!=NULL ); + + GetQuicklookView()->GetRenderer()->SetGLSLEnabled( isGLSL ); + // } assert( m_ShaderWidget!=NULL ); diff --git a/Code/Common/Gui/mvdAbstractImageViewRenderer.h b/Code/Common/Gui/mvdAbstractImageViewRenderer.h index aac347f879..909533b4e2 100644 --- a/Code/Common/Gui/mvdAbstractImageViewRenderer.h +++ b/Code/Common/Gui/mvdAbstractImageViewRenderer.h @@ -215,6 +215,12 @@ public: /** */ inline bool IsBypassRenderingEnabled() const; + /** + */ + inline bool SetGLSLEnabled( bool ); + /** + */ + inline bool IsGLSLEnabled() const; /** */ inline bool ZoomToRegion( const PointType & origin, @@ -264,7 +270,8 @@ protected: AbstractImageViewRenderer( QObject* parent = NULL ) : QObject( parent ), m_StackedLayerModel( NULL ), - m_BypassRenderingEnabled( false ) + m_BypassRenderingEnabled( false ), + m_GLSLEnabled( true ) { } @@ -330,6 +337,9 @@ private: /** */ bool m_BypassRenderingEnabled: 1; + /** + */ + bool m_GLSLEnabled: 1; /*-[ PRIVATE SLOTS SECTION ]-----------------------------------------------*/ @@ -419,6 +429,28 @@ AbstractImageViewRenderer return bypass; } +/*****************************************************************************/ +inline +bool +AbstractImageViewRenderer +::IsGLSLEnabled() const +{ + return m_GLSLEnabled; +} + +/*****************************************************************************/ +inline +bool +AbstractImageViewRenderer +::SetGLSLEnabled( bool isEnabled ) +{ + bool wasEnabled = m_GLSLEnabled; + + m_GLSLEnabled = isEnabled; + + return wasEnabled; +} + /*****************************************************************************/ inline void diff --git a/Code/Common/Gui/mvdImageViewRenderer.cxx b/Code/Common/Gui/mvdImageViewRenderer.cxx index 4da26d3569..8dc1be9d05 100644 --- a/Code/Common/Gui/mvdImageViewRenderer.cxx +++ b/Code/Common/Gui/mvdImageViewRenderer.cxx @@ -197,15 +197,15 @@ ImageViewRenderer ); } + // + // Set GLSL effects state. + SetGLSLEnabled( isOk ); + // // Return if check has succeeded. if( isOk ) return true; - // - // Disable GLSL effects. - m_EffectsEnabled = false; - // // Construct message. QString message( @@ -696,6 +696,8 @@ ImageViewRenderer imageSettings->SetMaxBlue( settings.GetHighIntensity(RGBW_CHANNEL_BLUE ) ); } + // qDebug() << this << " gamma: " << settings.GetGamma(); + imageSettings->SetGamma( settings.GetGamma() ); if( properties==NULL ) @@ -722,6 +724,10 @@ ImageViewRenderer if( !fragmentShader.IsNull() ) { + // If this point is reached, shader is not null which means + // that isGLSLEnabled() is true. + assert( IsGLSLEnabled() ); + otb::StandardShader::Pointer shader( otb::DynamicCast< otb::StandardShader >( fragmentShader ) ); @@ -877,7 +883,7 @@ ImageViewRenderer // << "\tQString:" << vectorImageModel->GetFilename() // << "\tstd::string" << QFile::encodeName( vectorImageModel->GetFilename() ); - if( m_EffectsEnabled ) + if( IsGLSLEnabled() ) { // qDebug() << "Created shader for" << FromStdString( it->first ); -- GitLab