From 91696aaf933633c6902a91de759a79a4792f30ac Mon Sep 17 00:00:00 2001 From: Stephane Albert <stephane.albert@c-s.fr> Date: Mon, 16 Mar 2015 15:39:14 +0100 Subject: [PATCH] ENH: Fixed disapearance of ROI actor in Quicklook view --- .../Common/Gui/mvdAbstractImageViewRenderer.h | 4 ++ Code/Common/Gui/mvdImageViewRenderer.cxx | 24 ++++++- Code/Common/Gui/mvdImageViewRenderer.h | 3 + Code/Common/Gui/mvdQuicklookViewRenderer.cxx | 63 ++++++++++++++++--- Code/Common/Gui/mvdQuicklookViewRenderer.h | 9 ++- 5 files changed, 90 insertions(+), 13 deletions(-) diff --git a/Code/Common/Gui/mvdAbstractImageViewRenderer.h b/Code/Common/Gui/mvdAbstractImageViewRenderer.h index 5a02582797..6a46f617ed 100644 --- a/Code/Common/Gui/mvdAbstractImageViewRenderer.h +++ b/Code/Common/Gui/mvdAbstractImageViewRenderer.h @@ -320,7 +320,11 @@ void AbstractImageViewRenderer ::UpdateScene() { + virtual_PrepareScene(); + virtual_UpdateScene(); + + virtual_FinishScene(); } /*****************************************************************************/ diff --git a/Code/Common/Gui/mvdImageViewRenderer.cxx b/Code/Common/Gui/mvdImageViewRenderer.cxx index 19dfeb1efe..a4d5b2b4ad 100644 --- a/Code/Common/Gui/mvdImageViewRenderer.cxx +++ b/Code/Common/Gui/mvdImageViewRenderer.cxx @@ -404,16 +404,19 @@ void ImageViewRenderer ::UpdateActors( const AbstractImageViewRenderer::RenderingContext * ) { + qDebug() << this << "::virtual_UpdateActors()"; + assert( !m_GlView.IsNull() ); StackedLayerModel * stackedLayerModel = GetLayerStack(); assert( stackedLayerModel!=NULL ); + /* otb::GlImageActor::Pointer refImageActor( GetReferenceActor< otb::GlImageActor >() ); - + */ for( StackedLayerModel::ConstIterator it( stackedLayerModel->Begin() ); it!=stackedLayerModel->End(); @@ -598,7 +601,7 @@ ImageViewRenderer } } - m_GlView->SetRenderingOrder( stackedLayerModel->GetKeys() ); + m_GlView->SetRenderingOrder( stackedLayerModel->GetKeys(), false ); } /*******************************************************************************/ @@ -606,6 +609,8 @@ void ImageViewRenderer ::virtual_UpdateScene() { + qDebug() << this << "::virtual_UpdateScene()"; + assert( !m_GlView.IsNull() ); StackedLayerModel * stackedLayerModel = GetLayerStack(); @@ -623,7 +628,11 @@ ImageViewRenderer it!=keys.end(); ++it ) if( !stackedLayerModel->Contains( *it ) ) + { + qDebug() << "Removed image-actor:" << FromStdString( *it ); + m_GlView->RemoveActor( *it ); + } } @@ -679,6 +688,8 @@ void ImageViewRenderer ::virtual_RefreshScene() { + qDebug() << this << "::virtual_RefreshScene()"; + StackedLayerModel * stackedLayerModel = GetLayerStack(); if( stackedLayerModel==NULL || stackedLayerModel->IsEmpty() ) @@ -723,10 +734,17 @@ ImageViewRenderer if( !m_ReferencePair.second.IsNull() ) { if( referencePair.second.IsNull() ) - emit SetProjectionRequired(); + { + virtual_SetProjection(); + emit SetProjectionRequired(); + } else + { + virtual_UpdateProjection(); + emit UpdateProjectionRequired(); + } } #endif // USE_REMOTE_DESKTOP_DISABLED_RENDERING diff --git a/Code/Common/Gui/mvdImageViewRenderer.h b/Code/Common/Gui/mvdImageViewRenderer.h index 6c7d5151d4..62b0c2ba28 100644 --- a/Code/Common/Gui/mvdImageViewRenderer.h +++ b/Code/Common/Gui/mvdImageViewRenderer.h @@ -253,6 +253,9 @@ private: // Private methods. private: + virtual void virtual_SetProjection() {}; + virtual void virtual_UpdateProjection() {}; + // // AbstractImageViewRenderer overloads. diff --git a/Code/Common/Gui/mvdQuicklookViewRenderer.cxx b/Code/Common/Gui/mvdQuicklookViewRenderer.cxx index 3ef7cb3173..17189f3d66 100644 --- a/Code/Common/Gui/mvdQuicklookViewRenderer.cxx +++ b/Code/Common/Gui/mvdQuicklookViewRenderer.cxx @@ -41,6 +41,7 @@ // // Monteverdi includes (sorted by alphabetic order) #include "Core/mvdDatasetModel.h" +#include "Core/mvdStackedLayerModel.h" #include "Core/mvdTypes.h" #include "Core/mvdVectorImageModel.h" @@ -65,7 +66,6 @@ namespace mvd /*****************************************************************************/ /* CLASS IMPLEMENTATION SECTION */ - /*****************************************************************************/ QuicklookViewRenderer ::QuicklookViewRenderer( QObject* parent ) : @@ -106,25 +106,56 @@ QuicklookViewRenderer /*******************************************************************************/ void QuicklookViewRenderer -::virtual_FinishScene() +::virtual_SetProjection() { - assert( !m_GlView.IsNull() ); + SetWktAndKwl(); +} - // qDebug() << this << "::virtual_FinishScene()"; +/*******************************************************************************/ +void +QuicklookViewRenderer +::virtual_UpdateProjection() +{ + SetWktAndKwl(); +} + +/*******************************************************************************/ +void +QuicklookViewRenderer +::SetWktAndKwl() +{ + qDebug() << this << "::SetWktAndKwl()"; + + assert( GetLayerStack()!=NULL ); + + if( GetLayerStack()->IsEmpty() ) + return; otb::GlImageActor::Pointer referenceGlImageActor( GetReferenceActor< otb::GlImageActor >() ); - if( referenceGlImageActor.IsNull() ) - return; + assert( !referenceGlImageActor.IsNull() ); + + m_GlRoiActor->SetKwl( referenceGlImageActor->GetKwl() ); + m_GlRoiActor->SetWkt( referenceGlImageActor->GetWkt() ); +} + +/*******************************************************************************/ +void +QuicklookViewRenderer +::virtual_FinishScene() +{ + qDebug() << this << "::virtual_FinishScene()"; + + assert( !m_GlView.IsNull() ); + std::string key( m_GlView->AddActor( m_GlRoiActor ) ); m_GlRoiActor->SetVisible( true ); - m_GlRoiActor->SetKwl( referenceGlImageActor->GetKwl() ); - m_GlRoiActor->SetWkt( referenceGlImageActor->GetWkt() ); + qDebug() << "Added roi-actor:" << FromStdString( key ); /* ColorType color; @@ -137,6 +168,18 @@ QuicklookViewRenderer m_GlRoiActor->SetAlpha( 0.2 ); m_GlView->MoveActorToEndOfRenderingOrder( key, true ); + +#if 0 + otb::GlImageActor::Pointer referenceGlImageActor( + GetReferenceActor< otb::GlImageActor >() + ); + + if( referenceGlImageActor.IsNull() ) + return; + + m_GlRoiActor->SetKwl( referenceGlImageActor->GetKwl() ); + m_GlRoiActor->SetWkt( referenceGlImageActor->GetWkt() ); +#endif } /*****************************************************************************/ @@ -144,9 +187,11 @@ void QuicklookViewRenderer ::UpdateActors( const AbstractImageViewRenderer::RenderingContext* c ) { + qDebug() << this << "::UpdateActors()"; + assert( c!=NULL ); - ImageViewRenderer::UpdateActors( c ); + // ImageViewRenderer::UpdateActors( c ); assert( c==dynamic_cast< const QuicklookViewRenderer::RenderingContext * >( c ) diff --git a/Code/Common/Gui/mvdQuicklookViewRenderer.h b/Code/Common/Gui/mvdQuicklookViewRenderer.h index b88393ad9f..873dcab2e3 100644 --- a/Code/Common/Gui/mvdQuicklookViewRenderer.h +++ b/Code/Common/Gui/mvdQuicklookViewRenderer.h @@ -162,9 +162,16 @@ private: // Private methods. private: + void SetWktAndKwl(); + // - // AbstractImageViewRenderer overloads. + // ImageViewRenderer overrides. + virtual void virtual_SetProjection(); + virtual void virtual_UpdateProjection(); + // + // AbstractImageViewRenderer overloads. + // TODO: Move virtual_*Scene() methods to protected section. virtual void virtual_FinishScene(); // -- GitLab