From 7d37fcbbad9345665920690093567436bf158917 Mon Sep 17 00:00:00 2001 From: Julien Michel <julien.michel@c-s.fr> Date: Wed, 24 Sep 2008 16:09:58 +0000 Subject: [PATCH] ENH: Corrected some conveniences. --- Code/Visu/otbImageAlternateViewer.h | 15 ++++++- Code/Visu/otbImageAlternateViewer.txx | 59 ++++++++++++++++++++------- 2 files changed, 57 insertions(+), 17 deletions(-) diff --git a/Code/Visu/otbImageAlternateViewer.h b/Code/Visu/otbImageAlternateViewer.h index ce81d74209..22f927d2ca 100644 --- a/Code/Visu/otbImageAlternateViewer.h +++ b/Code/Visu/otbImageAlternateViewer.h @@ -111,7 +111,7 @@ class ITK_EXPORT ImageAlternateViewer itkSetMacro(OpenGlIsotropicZoom,double); itkGetMacro(OpenGlIsotropicZoom,double); - itkSetMacro(ViewedRegionCenter,IndexType); + void SetViewedRegionCenter(const IndexType & index); itkGetMacro(ViewedRegionCenter,IndexType); itkSetObjectMacro(Image,ImageType); @@ -133,6 +133,16 @@ class ITK_EXPORT ImageAlternateViewer */ void SetViewModelToGrayscale(void); + /** + * Set insight view model to RGB + */ + void SetInsightViewModelToRGB(void); + + /** + * Set insight view model to grayscale + */ + void SetInsightViewModelToGrayscale(void); + /** Normalization function */ unsigned char Normalize(PixelType value, unsigned int channelIndex); @@ -173,7 +183,7 @@ protected: RegionType GetAdditionalBufferRegion(unsigned int i); - unsigned char * CreateAdditionalBuffer(RegionType region,ImagePointerType image); + unsigned char * CreateAdditionalBuffer(RegionType region,ImagePointerType image,bool rgb); virtual void MergeBuffersAndFreeMemory(std::vector<unsigned char *> bufferList, std::vector<RegionType> bufferRegionList); @@ -202,6 +212,7 @@ private: double m_OpenGlIsotropicZoom; /** Flag for RGB/ GRAYSCALE view mode */ bool m_ViewModelIsRGB; + bool m_InsightViewModelIsRGB; /** Red channel index */ unsigned int m_RedChannelIndex; /** Green channel index */ diff --git a/Code/Visu/otbImageAlternateViewer.txx b/Code/Visu/otbImageAlternateViewer.txx index f1a9251e9e..4a3e672e6e 100644 --- a/Code/Visu/otbImageAlternateViewer.txx +++ b/Code/Visu/otbImageAlternateViewer.txx @@ -39,6 +39,7 @@ namespace otb m_OpenGlIsotropicZoom = 1.0; m_OpenGlBuffer = NULL; m_ViewModelIsRGB=true; + m_InsightViewModelIsRGB =true; m_RedChannelIndex = 0; m_GreenChannelIndex = 1; m_BlueChannelIndex = 2; @@ -86,6 +87,16 @@ namespace otb delete [] m_OpenGlBuffer; } } + + template <class TPixel> + void + ImageAlternateViewer<TPixel> + ::SetViewedRegionCenter(const IndexType & index) + { + m_OldViewedRegionCenter = m_ViewedRegionCenter; + m_ViewedRegionCenter = index; + } + /** * Reset the viewer */ @@ -136,10 +147,6 @@ namespace otb m_Image->UpdateOutputInformation(); m_DecompositionFilter->SetInput(m_Image); - m_ViewedRegionCenter[0]=m_Image->GetLargestPossibleRegion().GetIndex()[0] - +m_Image->GetLargestPossibleRegion().GetSize()[0]/2; - m_ViewedRegionCenter[1]=m_Image->GetLargestPossibleRegion().GetIndex()[1] - +m_Image->GetLargestPossibleRegion().GetSize()[1]/2; m_OldViewedRegionCenter = m_ViewedRegionCenter; typename ImageListType::Pointer bandList = m_DecompositionFilter->GetOutput() ; @@ -220,6 +227,28 @@ namespace otb { m_ViewModelIsRGB=false; } + + /** + * Set view mode to RGB. + */ + template <class TPixel> + void + ImageAlternateViewer<TPixel> + ::SetInsightViewModelToRGB(void) + { + m_InsightViewModelIsRGB=true; + } + /** + * Set view mode to Grayscale. + */ + template <class TPixel> + void + ImageAlternateViewer<TPixel> + ::SetInsightViewModelToGrayscale(void) + { + m_InsightViewModelIsRGB=false; + } + /** * Show The widget. */ @@ -278,7 +307,7 @@ namespace otb { RegionType additionalBufferRegion = GetAdditionalBufferRegion(i); //std::cout<<"Additional region required: "<<additionalBufferRegion<<std::endl; - unsigned char * additionalBuffer = CreateAdditionalBuffer(additionalBufferRegion,m_Image); + unsigned char * additionalBuffer = CreateAdditionalBuffer(additionalBufferRegion,m_Image,m_ViewModelIsRGB); this->Draw(additionalBuffer,additionalBufferRegion); bufferList.push_back(additionalBuffer); bufferRegionList.push_back(additionalBufferRegion); @@ -288,7 +317,7 @@ namespace otb } if(m_SubWindowMode) { - unsigned char * subWindowBuffer = CreateAdditionalBuffer(m_SubWindowRegion,m_SecondImage); + unsigned char * subWindowBuffer = CreateAdditionalBuffer(m_SubWindowRegion,m_SecondImage,m_InsightViewModelIsRGB); this->Draw(subWindowBuffer,m_SubWindowRegion); delete [] subWindowBuffer; } @@ -351,7 +380,7 @@ namespace otb focusOffset[0]=static_cast<long>(static_cast<double>(m_ViewedRegionCenter[0]-m_OldViewedRegionCenter[0])/m_SpacingZoomFactor); focusOffset[1]=static_cast<long>(static_cast<double>(m_ViewedRegionCenter[1]-m_OldViewedRegionCenter[1])/m_SpacingZoomFactor); - //std::cout<<"Focus offset: "<<focusOffset<<std::endl; + //std::cout<<"Focus offset: "<<focusOffset<<std::endl; IndexType newBufferedRegionIndex; @@ -372,7 +401,7 @@ namespace otb newBufferedRegionIndex[1]-=focusOffset[1]; //std::cout<<"NewBufferedRegionIndex: "<<newBufferedRegionIndex<<std::endl; m_BufferedRegion.SetIndex(newBufferedRegionIndex); - // m_OldViewedRegionCenter = m_ViewedRegionCenter; + //m_OldViewedRegionCenter = m_ViewedRegionCenter; //std::cout<<"New buffered region: "<<m_BufferedRegion<<std::endl; @@ -381,8 +410,8 @@ namespace otb //std::cout<<"Center index: "<<m_ViewedRegionCenter<<std::endl; //std::cout<<"Center: "<<center<<std::endl; - if(m_SpacingZoomFactor != m_OldSpacingZoomFactor) - { + if(m_SpacingZoomFactor != m_OldSpacingZoomFactor) + { m_BufferedRegion.Crop(m_DisplayExtent); //std::cout<<"New buffered region2 "<<m_BufferedRegion<<std::endl; @@ -545,12 +574,12 @@ namespace otb m_OpenGlBuffer = newBuffer; m_OldSpacingZoomFactor = m_SpacingZoomFactor; + } //std::cout<<"Optimisation called "<<optiCount<<" times over "<<m_BufferedRegion.GetNumberOfPixels()<<std::endl; - } //std::cout<<"BufferedRegion: "<<m_BufferedRegion<<std::endl; //std::cout<<"OldBufferedRegion: "<<m_OldBufferedRegion<<std::endl; - } +} template <class TPixel> typename ImageAlternateViewer<TPixel> @@ -701,7 +730,7 @@ namespace otb template <class TPixel> unsigned char * ImageAlternateViewer<TPixel> - ::CreateAdditionalBuffer(RegionType region,ImagePointerType image) + ::CreateAdditionalBuffer(RegionType region,ImagePointerType image, bool rgb) { itk::TimeProbe total,filter,interpolation; total.Start(); @@ -778,7 +807,7 @@ namespace otb bandList->UpdateOutputInformation(); bandList->GetNthElement(m_RedChannelIndex)->SetRequestedRegion(m_RequestedRegion); - if(m_ViewModelIsRGB) + if(rgb) { bandList->GetNthElement(m_GreenChannelIndex)->SetRequestedRegion(m_RequestedRegion); bandList->GetNthElement(m_BlueChannelIndex)->SetRequestedRegion(m_RequestedRegion); @@ -807,7 +836,7 @@ namespace otb interpolatedValue = 0; } result[index] = Normalize(interpolatedValue,m_RedChannelIndex); - if(m_ViewModelIsRGB) + if(rgb) { m_ZoomInInterpolator->SetInputImage(bandList->GetNthElement(m_GreenChannelIndex)); if( m_ZoomInInterpolator->IsInsideBuffer(interpolatedPos)) -- GitLab