From a04fd2a77b1fe7bc54a9841fce7ed05c9abe6341 Mon Sep 17 00:00:00 2001 From: Cyrille Valladeau <cyrille.valladeau@c-s.fr> Date: Tue, 3 Jan 2012 10:31:59 +0100 Subject: [PATCH] BUG: fix bug #449. We didn't deal with image wwith less than 3 bands for the histogram of the slide/show --- .../Viewer/View/otbViewerViewGUI.cxx | 110 ++++++++++-------- 1 file changed, 59 insertions(+), 51 deletions(-) diff --git a/Code/Visualization/Viewer/View/otbViewerViewGUI.cxx b/Code/Visualization/Viewer/View/otbViewerViewGUI.cxx index 1a0df475f3..b7bceef31c 100644 --- a/Code/Visualization/Viewer/View/otbViewerViewGUI.cxx +++ b/Code/Visualization/Viewer/View/otbViewerViewGUI.cxx @@ -533,17 +533,6 @@ ViewerViewGUI //Get the pixelView PixelDescriptionViewType::Pointer pixelView = m_ViewerModel->GetObjectList().at(selectedItem-1).pPixelView; - // //Edit the Widget - // m_WidgetManagerList->GetNthElement(selectedItem-1)->UnRegisterAll(); - // m_WidgetManagerList->GetNthElement(selectedItem-1)->RegisterFullWidget(currentVisuView->GetFullWidget()); - // m_WidgetManagerList->GetNthElement(selectedItem-1)->RegisterScrollWidget(currentVisuView->GetScrollWidget()); - // m_WidgetManagerList->GetNthElement(selectedItem-1)->RegisterZoomWidget(currentVisuView->GetZoomWidget()); - // m_WidgetManagerList->GetNthElement(selectedItem-1)->RegisterPixelDescriptionWidget(pixelView->GetPixelDescriptionWidget()); - // m_WidgetManagerList->GetNthElement(selectedItem-1)->RegisterHistogramWidget(curveWidget); - // m_WidgetManagerList->GetNthElement(selectedItem-1)->SetLabel(this->CutFileName(selectedItem-1)); - // m_WidgetManagerList->GetNthElement(selectedItem-1)->Show(); - - //widgetList->GetNthElement(selectedItem-1)->UnRegisterAll(); widgetList->GetNthElement(selectedItem-1)->RegisterFullWidget(currentVisuView->GetFullWidget()); widgetList->GetNthElement(selectedItem-1)->RegisterScrollWidget(currentVisuView->GetScrollWidget()); widgetList->GetNthElement(selectedItem-1)->RegisterZoomWidget(currentVisuView->GetZoomWidget()); @@ -1041,29 +1030,29 @@ ViewerViewGUI } - void - ViewerViewGUI - ::Diaporama() - { - if (guiImageList->size() == 0 || guiDiaporama->shown()) - { - // no image selected, return - return; - } +void +ViewerViewGUI +::Diaporama() +{ + if (guiImageList->size() == 0 || guiDiaporama->shown()) + { + // no image selected, return + return; + } - if(guiLinkSetupWindow->shown() == 0) - { - guiDiaporama->show(); + if(guiLinkSetupWindow->shown() == 0) + { + guiDiaporama->show(); + //Close the showed image without clearing the ShowedList + this->CloseAllDisplayedImages(false); - //Close the showed image without clearing the ShowedList - this->CloseAllDisplayedImages(false); + //Show the diaporama widget + this->DisplayDiaporama(); - //Show the diaporama widget - this->DisplayDiaporama(); - UpdateDiaporamaProgressBar(); - } - } + UpdateDiaporamaProgressBar(); + } +} /** @@ -1080,21 +1069,21 @@ ViewerViewGUI return fileNameCut.c_str(); } - void - ViewerViewGUI - ::DisplayDiaporama() - { - //Get the view stored in the model +void +ViewerViewGUI +::DisplayDiaporama() +{ + //Get the view stored in the model CurvesWidgetType::Pointer curveWidget = m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pCurveWidget; VisuViewPointerType currentVisuView = m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pVisuView; - + //First get the histogram list RenderingFunctionType::Pointer pRenderingFunction = m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pRenderFunction; - + HistogramCurveType::Pointer rhistogram = HistogramCurveType::New(); HistogramCurveType::Pointer ghistogram = HistogramCurveType::New(); HistogramCurveType::Pointer bhistogram = HistogramCurveType::New(); - + //Color Definition HistogramCurveType::ColorType Red; HistogramCurveType::ColorType Green; @@ -1105,28 +1094,47 @@ ViewerViewGUI Red[0] = 1.; Red[3] = 0.5; Green[1]= 1.; Green[3] = 0.5; Blue[2] = 1.; Blue[3] = 0.5; - + ghistogram->SetHistogramColor(Green); ghistogram->SetLabelColor(Green); bhistogram->SetHistogramColor(Blue); bhistogram->SetLabelColor(Blue); rhistogram->SetHistogramColor(Red); rhistogram->SetLabelColor(Red); - - rhistogram->SetHistogram(m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pLayer->GetHistogramList()->GetNthElement(0)); - ghistogram->SetHistogram(m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pLayer->GetHistogramList()->GetNthElement(1)); - bhistogram->SetHistogram(m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pLayer->GetHistogramList()->GetNthElement(2)); - + + const unsigned int nbBands = m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pLayer->GetHistogramList()->Size(); + curveWidget->ClearAllCurves(); - curveWidget->AddCurve(bhistogram); - curveWidget->AddCurve(ghistogram); - curveWidget->AddCurve(rhistogram); + + if( nbBands == 0 ) + { + itkExceptionMacro("No bands detected in asked m_ViewerModel->GetObjectList() (index "<<m_DiaporamaCurrentIndex<<")"); + } + + if( nbBands >= 1 ) + { + rhistogram->SetHistogram(m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pLayer->GetHistogramList()->GetNthElement(0)); + curveWidget->AddCurve(rhistogram); + } + + if( nbBands >= 2 ) + { + ghistogram->SetHistogram(m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pLayer->GetHistogramList()->GetNthElement(1)); + curveWidget->AddCurve(ghistogram); + } + + if( nbBands >= 3 ) + { + bhistogram->SetHistogram(m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pLayer->GetHistogramList()->GetNthElement(2)); + curveWidget->AddCurve(bhistogram); + } + curveWidget->SetXAxisLabel("Pixels"); curveWidget->SetYAxisLabel("Frequency"); - + //Get the pixelView PixelDescriptionViewType::Pointer pixelView = m_ViewerModel->GetObjectList().at(m_DiaporamaCurrentIndex).pPixelView; - + //Edit the Widget m_Widget->UnRegisterAll(); m_Widget->RegisterFullWidget(currentVisuView->GetFullWidget()); @@ -1136,9 +1144,9 @@ ViewerViewGUI m_Widget->RegisterHistogramWidget(curveWidget); m_Widget->SetLabel(this->CutFileName(m_DiaporamaCurrentIndex)); m_Widget->Refresh(); - m_Widget->Show(); - + m_Widget->Show(); } + void ViewerViewGUI ::DiaporamaNext() -- GitLab