diff --git a/Code/Visu/otbFullResolutionImageWidget.txx b/Code/Visu/otbFullResolutionImageWidget.txx index c03caf641dceb8327c98f185a029cbbd475a430d..02c439df0ec53597661a787c72aa57db5f953b90 100644 --- a/Code/Visu/otbFullResolutionImageWidget.txx +++ b/Code/Visu/otbFullResolutionImageWidget.txx @@ -79,7 +79,7 @@ FullResolutionImageWidget<TPixel> ::resize(int x, int y, int w, int h) { //otbMsgDebugMacro(<<"resize: "<<x<<" "<<y<<" "<<w<<" "<<h); - IndexType index; + // IndexType index; SizeType size; size[0]=w; size[1]=h; @@ -88,11 +88,12 @@ FullResolutionImageWidget<TPixel> region.SetIndex(m_UpperRightCorner); region.Crop(this->GetInput()->GetLargestPossibleRegion()); this->SetViewedRegion(region); + this->redraw(); this->Fl_Gl_Window::resize(region.GetIndex()[0], region.GetIndex()[1], region.GetSize()[0], region.GetSize()[1]); - this->redraw(); + } /** * Test if the buffer has to be updated. diff --git a/Code/Visu/otbImageWidgetBase.txx b/Code/Visu/otbImageWidgetBase.txx index a85376a17dcfa44927560110136c3a2a4c6583ec..a098ff03a1e1b5723b7600ef6ece275798478178 100644 --- a/Code/Visu/otbImageWidgetBase.txx +++ b/Code/Visu/otbImageWidgetBase.txx @@ -250,6 +250,7 @@ ImageWidgetBase<TPixel> else { //otbMsgDebugMacro(<<"Show"); + m_Image->SetRequestedRegion(m_BufferedRegion); m_Image->Update(); this->show(); this->redraw(); @@ -267,11 +268,15 @@ ImageWidgetBase<TPixel> if(this->UpdateOpenGlBufferedRegionRequested()) { UpdateOpenGlBufferedRegion(); + m_Image->SetRequestedRegion(m_BufferedRegion); + m_Image->Update(); RebuildOpenGlBuffer(); } if(m_ImageOverlayVisible && this->UpdateOpenGlImageOverlayBufferedRegionRequested()) { UpdateOpenGlImageOverlayBufferedRegion(); + m_ImageOverlay->SetRequestedRegion(m_BufferedRegion); + m_ImageOverlay->Update(); RebuildOpenGlImageOverlayBuffer(); } @@ -355,18 +360,18 @@ ImageWidgetBase<TPixel> unsigned int index = 0; for(it.GoToBegin();!it.IsAtEnd();++it) { - m_OpenGlBuffer[index] = it.Get()[m_RedChannelIndex]; + m_OpenGlBuffer[index] = static_cast<unsigned int>(it.Get()[m_RedChannelIndex]); if(m_ViewModelIsRGB) { - m_OpenGlBuffer[index+1] = it.Get()[m_GreenChannelIndex]; - m_OpenGlBuffer[index+2] = it.Get()[m_BlueChannelIndex]; + m_OpenGlBuffer[index+1] = static_cast<unsigned int>(it.Get()[m_GreenChannelIndex]); + m_OpenGlBuffer[index+2] = static_cast<unsigned int>(it.Get()[m_BlueChannelIndex]); m_OpenGlBuffer[index+3] = 256; index+=4; } else { - m_OpenGlBuffer[index+1] = it.Get()[m_RedChannelIndex]; - m_OpenGlBuffer[index+2] = it.Get()[m_RedChannelIndex]; + m_OpenGlBuffer[index+1] = static_cast<unsigned int>(it.Get()[m_RedChannelIndex]); + m_OpenGlBuffer[index+2] = static_cast<unsigned int>(it.Get()[m_RedChannelIndex]); m_OpenGlBuffer[index+3] = 256; index+=4; } @@ -408,9 +413,9 @@ ImageWidgetBase<TPixel> } else { - m_OpenGlImageOverlayBuffer[index] = it.Get()[0]; - m_OpenGlImageOverlayBuffer[index+1] = it.Get()[1]; - m_OpenGlImageOverlayBuffer[index+2] = it.Get()[2]; + m_OpenGlImageOverlayBuffer[index] = static_cast<unsigned int>(it.Get()[0]); + m_OpenGlImageOverlayBuffer[index+1] = static_cast<unsigned int>( it.Get()[1]); + m_OpenGlImageOverlayBuffer[index+2] = static_cast<unsigned int>(it.Get()[2]); m_OpenGlImageOverlayBuffer[index+3] = m_ImageOverlayOpacity; } index+=4; @@ -420,10 +425,10 @@ ImageWidgetBase<TPixel> { for(it.GoToBegin();!it.IsAtEnd();++it) { - m_OpenGlImageOverlayBuffer[index] = it.Get()[0]; - m_OpenGlImageOverlayBuffer[index+1] = it.Get()[1]; - m_OpenGlImageOverlayBuffer[index+2] = it.Get()[2]; - m_OpenGlImageOverlayBuffer[index+3] = m_ImageOverlayOpacity; + m_OpenGlImageOverlayBuffer[index] = static_cast<unsigned int>(it.Get()[0]); + m_OpenGlImageOverlayBuffer[index+1] =static_cast<unsigned int>(it.Get()[1]); + m_OpenGlImageOverlayBuffer[index+2] =static_cast<unsigned int>(it.Get()[2]); + m_OpenGlImageOverlayBuffer[index+3] =m_ImageOverlayOpacity; index+=4; } } diff --git a/Code/Visu/otbZoomableImageWidget.txx b/Code/Visu/otbZoomableImageWidget.txx index ebe26440bbdb3bdbde888d62b132ccb5507fe863..01bc0a178d9b3cba668a85ab1b6c639f15aa33e6 100644 --- a/Code/Visu/otbZoomableImageWidget.txx +++ b/Code/Visu/otbZoomableImageWidget.txx @@ -68,7 +68,7 @@ ZoomableImageWidget<TPixel> { this->GetInputOverlay()->Update(); } - this->Label(l); + this->label(l); this->resize(x, y, w, h); } } @@ -106,10 +106,11 @@ ZoomableImageWidget<TPixel> IndexType bufferedULCorner = buffered.GetIndex(); IndexType viewedRDCorner = viewed.GetIndex()+viewed.GetSize(); IndexType bufferedRDCorner = buffered.GetIndex()+buffered.GetSize(); - return ( viewedULCorner[0]<bufferedULCorner[0] - ||viewedULCorner[1]<bufferedULCorner[1] - ||viewedRDCorner[0]>bufferedRDCorner[0] - ||viewedRDCorner[1]>bufferedRDCorner[1]); + // return ( viewedULCorner[0]<bufferedULCorner[0] +// ||viewedULCorner[1]<bufferedULCorner[1] +// ||viewedRDCorner[0]>bufferedRDCorner[0] +// ||viewedRDCorner[1]>bufferedRDCorner[1]); + return true; } /** @@ -126,10 +127,11 @@ ZoomableImageWidget<TPixel> IndexType bufferedULCorner = buffered.GetIndex(); IndexType viewedRDCorner = viewed.GetIndex()+viewed.GetSize(); IndexType bufferedRDCorner = buffered.GetIndex()+buffered.GetSize(); - return ( viewedULCorner[0]<bufferedULCorner[0] - ||viewedULCorner[1]<bufferedULCorner[1] - ||viewedRDCorner[0]>bufferedRDCorner[0] - ||viewedRDCorner[1]>bufferedRDCorner[1]); + // return ( viewedULCorner[0]<bufferedULCorner[0] +// ||viewedULCorner[1]<bufferedULCorner[1] +// ||viewedRDCorner[0]>bufferedRDCorner[0] +// ||viewedRDCorner[1]>bufferedRDCorner[1]); + return true; } /** * Update OpenGlBuffer. @@ -171,8 +173,8 @@ ZoomableImageWidget<TPixel> SizeType newSize; RegionType newRegion; - newSize[0] = static_cast<unsigned int>((double)this->w()/zoomFactor)+1; - newSize[1] = static_cast<unsigned int>((double)this->h()/zoomFactor)+1; + newSize[0] = static_cast<unsigned int>((double)this->w()/zoomFactor); + newSize[1] = static_cast<unsigned int>((double)this->h()/zoomFactor); otbMsgDebugMacro(<<"SetZoomFactor: newSize ->"<<newSize); otbMsgDebugMacro(<<"SetZoomFactor: newIndex ->"<<newIndex); newRegion.SetIndex(m_ZoomUpperLeftCorner); @@ -189,14 +191,13 @@ void ZoomableImageWidget<TPixel> ::SetZoomUpperLeftCorner(IndexType index) { - IndexType newIndex; SizeType size; RegionType newRegion; size = this->GetViewedRegion().GetSize(); otbMsgDebugMacro(<<"SetZoomCenter: Size ->"<<size); - otbMsgDebugMacro(<<"SetZoomCenter: newIndex ->"<<newIndex); + otbMsgDebugMacro(<<"SetZoomCenter: newIndex ->"<<index); newRegion.SetIndex(index); newRegion.SetSize(size); this->SetViewedRegion(newRegion); diff --git a/Testing/Code/Visu/CMakeLists.txt b/Testing/Code/Visu/CMakeLists.txt index cb90cf11904d3c9832ea04fbf1e3f8209f6d7341..5522651447b4ffd3d5e9cd412c4765bd368cd8c8 100755 --- a/Testing/Code/Visu/CMakeLists.txt +++ b/Testing/Code/Visu/CMakeLists.txt @@ -32,10 +32,57 @@ ADD_TEST(viTvImageViewerNB ${CXX_TEST_PATH}/otbImageViewer ${INPUTDATA}/cthead1.png 0 ) +# ------- otb::ImageWidgetBase ----------------------------------- + +ADD_TEST(viTuImageWidgetBaseNew ${VISU_TESTS} + otbImageWidgetBaseNew + ) + +# ------- otb::FixedSizeFullImageWidget ----------------------------------- + +ADD_TEST(viTuFixedSizeFullImageWidgetNew ${VISU_TESTS} + otbFixedSizeFullImageWidgetNew + ) + +ADD_TEST(viTvFixedSizFullImageWidget ${VISU_TESTS} + otbFixedSizeFullImageWidget + ${INPUTDATA}/poupees.png + ) + +# ------- otb::FullResolutionImageWidget ----------------------------------- + +ADD_TEST(viTuFullResolutionImageWidgetNew ${VISU_TESTS} + otbFullResolutionImageWidgetNew + ) + +ADD_TEST(viTvFullResolutionImageWidget ${VISU_TESTS} + otbFullResolutionImageWidget + ${INPUTDATA}/poupees.png + ) + +# ------- otb::ZoomableImageWidget ----------------------------------- + +ADD_TEST(viTuZoomableImageWidgetNew ${VISU_TESTS} + otbZoomableImageWidgetNew + ) + +ADD_TEST(viTvZoomableImageWidget ${VISU_TESTS} + otbZoomableImageWidget + ${INPUTDATA}/poupees.png + ) + + # ------- Fichiers sources CXX ----------------------------------- SET(BasicVisu_SRCS otbImageView.cxx otbImageViewerNew.cxx +otbImageWidgetBaseNew.cxx +otbFixedSizeFullImageWidgetNew.cxx +otbFixedSizeFullImageWidget.cxx +otbFullResolutionImageWidgetNew.cxx +otbFullResolutionImageWidget.cxx +otbZoomableImageWidgetNew.cxx +otbZoomableImageWidget.cxx ) diff --git a/Testing/Code/Visu/otbFixedSizeFullImageWidget.cxx b/Testing/Code/Visu/otbFixedSizeFullImageWidget.cxx new file mode 100644 index 0000000000000000000000000000000000000000..736286ecf9831130464ac5c3eeeeacb428c1786e --- /dev/null +++ b/Testing/Code/Visu/otbFixedSizeFullImageWidget.cxx @@ -0,0 +1,94 @@ +/*========================================================================= + +Program: ORFEO Toolbox +Language: C++ +Date: $Date$ +Version: $Revision$ + + +Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. +See OTBCopyright.txt for details. + + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "otbFixedSizeFullImageWidget.h" +#include "otbImageFileReader.h" +#include <FL/Fl.H> + + +int otbFixedSizeFullImageWidget( int argc, char * argv[] ) +{ + try + { + char * filename = argv[1]; + typedef float PixelType; + typedef otb::FixedSizeFullImageWidget<PixelType> WidgetType; + typedef WidgetType::ImageType ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + + ReaderType::Pointer reader = ReaderType::New(); + ImageType::SizeType size; + ImageType::IndexType index; + ImageType::RegionType region; + + index[0]=0; + index[1]=0; + size[0]=1; + size[1]=1; + reader->SetFileName(filename); + reader->Update(); + + Fl_Window window(size[0],size[1]); + + WidgetType::Pointer widget = WidgetType::New(); + window.resizable(widget.GetPointer()); + widget->SetInput(reader->GetOutput()); + if(reader->GetOutput()->GetNumberOfComponentsPerPixel()>=3) + widget->SetViewModelToRGB(); + else + widget->SetViewModelToGrayscale(); + widget->Init(0,0,size[0],size[1],"Test Full Image Widget"); + widget->redraw(); + window.end(); + window.show(); + window.show(); + widget->Show(); + widget->redraw(); + Fl::check(); + + for(int i = 0;i<=400;i+=40) + { + Fl::check(); + window.resize(0,0,i,i); + Fl::wait(0.2); + Fl::check(); + } + + for(int i = 400;i>=0;i-=40) + { + Fl::check(); + window.resize(0,0,i,i); + Fl::wait(0.2); + Fl::check(); + } + } + + catch( itk::ExceptionObject & err ) + { + std::cout << "Exception itk::ExceptionObject levee !" << std::endl; + std::cout << err << std::endl; + return EXIT_FAILURE; + } + catch( ... ) + { + std::cout << "Exception levee inconnue !" << std::endl; + return EXIT_FAILURE; + } + + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Visu/otbFixedSizeFullImageWidgetNew.cxx b/Testing/Code/Visu/otbFixedSizeFullImageWidgetNew.cxx new file mode 100644 index 0000000000000000000000000000000000000000..332cd279657986189cbb3c4f23b16785ec8e3b11 --- /dev/null +++ b/Testing/Code/Visu/otbFixedSizeFullImageWidgetNew.cxx @@ -0,0 +1,44 @@ +/*========================================================================= + +Program: ORFEO Toolbox +Language: C++ +Date: $Date$ +Version: $Revision$ + + +Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. +See OTBCopyright.txt for details. + + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "otbFixedSizeFullImageWidget.h" + +int otbFixedSizeFullImageWidgetNew( int argc, char * argv[] ) +{ + try + { + typedef float PixelType; + typedef otb::FixedSizeFullImageWidget<PixelType> WidgetType; + + WidgetType::Pointer widget = WidgetType::New(); + } + + catch( itk::ExceptionObject & err ) + { + std::cout << "Exception itk::ExceptionObject levee !" << std::endl; + std::cout << err << std::endl; + return EXIT_FAILURE; + } + catch( ... ) + { + std::cout << "Exception levee inconnue !" << std::endl; + return EXIT_FAILURE; + } + + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Visu/otbFullResolutionImageWidget.cxx b/Testing/Code/Visu/otbFullResolutionImageWidget.cxx new file mode 100644 index 0000000000000000000000000000000000000000..f60b88da1040199ac29b6dab67aa2893c20a6137 --- /dev/null +++ b/Testing/Code/Visu/otbFullResolutionImageWidget.cxx @@ -0,0 +1,97 @@ +/*========================================================================= + +Program: ORFEO Toolbox +Language: C++ +Date: $Date$ +Version: $Revision$ + + +Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. +See OTBCopyright.txt for details. + + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "otbFullResolutionImageWidget.h" +#include "otbImageFileReader.h" +#include <FL/Fl.H> + + +int otbFullResolutionImageWidget( int argc, char * argv[] ) +{ + try + { + char * filename = argv[1]; + typedef float PixelType; + typedef otb::FullResolutionImageWidget<PixelType> WidgetType; + typedef WidgetType::ImageType ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + + ReaderType::Pointer reader = ReaderType::New(); + ImageType::SizeType size; + ImageType::IndexType index; + ImageType::RegionType region; + + index[0]=0; + index[1]=0; + size[0]=1; + size[1]=1; + reader->SetFileName(filename); + reader->Update(); + + Fl_Window window(size[0],size[1]); + + WidgetType::Pointer widget = WidgetType::New(); + window.resizable(widget.GetPointer()); + widget->SetInput(reader->GetOutput()); + if(reader->GetOutput()->GetNumberOfComponentsPerPixel()>=3) + widget->SetViewModelToRGB(); + else + widget->SetViewModelToGrayscale(); + widget->SetUpperRightCorner(index); + widget->Init(0,0,size[0],size[1],"Test Full Resolution Widget"); + widget->redraw(); + window.end(); + window.show(); + window.show(); + widget->Show(); + widget->redraw(); + Fl::check(); + + int StepX =(reader->GetOutput()->GetLargestPossibleRegion().GetSize()[0]-size[0])/100; + int StepY =(reader->GetOutput()->GetLargestPossibleRegion().GetSize()[1]-size[1])/100; + for(int i = 0;i<=100;i+=5) + { + Fl::check(); + window.resize(0,0,size[0]+i*StepX,size[1]+i*StepY); + Fl::wait(0.2); + Fl::check(); + } + + for(int i = 100;i>=0;i-=5) + { + Fl::check(); + window.resize(0,0,size[0]+i*StepX,size[1]+i*StepY); + Fl::wait(0.2); + Fl::check(); + } + } + + catch( itk::ExceptionObject & err ) + { + std::cout << "Exception itk::ExceptionObject levee !" << std::endl; + std::cout << err << std::endl; + return EXIT_FAILURE; + } + catch( ... ) + { + std::cout << "Exception levee inconnue !" << std::endl; + return EXIT_FAILURE; + } + + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Visu/otbFullResolutionImageWidgetNew.cxx b/Testing/Code/Visu/otbFullResolutionImageWidgetNew.cxx new file mode 100644 index 0000000000000000000000000000000000000000..0dd20fe47f08c2b2871bf098a998c48c5f872d93 --- /dev/null +++ b/Testing/Code/Visu/otbFullResolutionImageWidgetNew.cxx @@ -0,0 +1,44 @@ +/*========================================================================= + +Program: ORFEO Toolbox +Language: C++ +Date: $Date$ +Version: $Revision$ + + +Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. +See OTBCopyright.txt for details. + + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "otbFullResolutionImageWidget.h" + +int otbFullResolutionImageWidgetNew( int argc, char * argv[] ) +{ + try + { + typedef float PixelType; + typedef otb::FullResolutionImageWidget<PixelType> WidgetType; + + WidgetType::Pointer widget = WidgetType::New(); + } + + catch( itk::ExceptionObject & err ) + { + std::cout << "Exception itk::ExceptionObject levee !" << std::endl; + std::cout << err << std::endl; + return EXIT_FAILURE; + } + catch( ... ) + { + std::cout << "Exception levee inconnue !" << std::endl; + return EXIT_FAILURE; + } + + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Visu/otbImageWidgetBaseNew.cxx b/Testing/Code/Visu/otbImageWidgetBaseNew.cxx new file mode 100644 index 0000000000000000000000000000000000000000..2f7e49f3c572abc07a168f5fe788d7dd8d828810 --- /dev/null +++ b/Testing/Code/Visu/otbImageWidgetBaseNew.cxx @@ -0,0 +1,44 @@ +/*========================================================================= + +Program: ORFEO Toolbox +Language: C++ +Date: $Date$ +Version: $Revision$ + + +Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. +See OTBCopyright.txt for details. + + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "otbImageWidgetBase.h" + +int otbImageWidgetBaseNew( int argc, char * argv[] ) +{ + try + { + typedef float PixelType; + typedef otb::ImageWidgetBase<PixelType> WidgetType; + + WidgetType::Pointer widget = WidgetType::New(); + } + + catch( itk::ExceptionObject & err ) + { + std::cout << "Exception itk::ExceptionObject levee !" << std::endl; + std::cout << err << std::endl; + return EXIT_FAILURE; + } + catch( ... ) + { + std::cout << "Exception levee inconnue !" << std::endl; + return EXIT_FAILURE; + } + + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Visu/otbVisuTests.cxx b/Testing/Code/Visu/otbVisuTests.cxx index bfeb73f33b5e7e9a6aa917993dab4bfd0efcc156..ac61c2d41534e6a4e28023a6af96da3ea28d28a7 100755 --- a/Testing/Code/Visu/otbVisuTests.cxx +++ b/Testing/Code/Visu/otbVisuTests.cxx @@ -28,4 +28,11 @@ void RegisterTests() { REGISTER_TEST(otbImageView); REGISTER_TEST(otbImageViewerNew); +REGISTER_TEST(otbImageWidgetBaseNew); +REGISTER_TEST(otbFixedSizeFullImageWidgetNew); +REGISTER_TEST(otbFixedSizeFullImageWidget); +REGISTER_TEST(otbFullResolutionImageWidgetNew); +REGISTER_TEST(otbFullResolutionImageWidget); +REGISTER_TEST(otbZoomableImageWidgetNew); +REGISTER_TEST(otbZoomableImageWidget); } diff --git a/Testing/Code/Visu/otbZoomableImageWidget.cxx b/Testing/Code/Visu/otbZoomableImageWidget.cxx new file mode 100644 index 0000000000000000000000000000000000000000..1a7bbdfdaaca0794c15e0e9d4a9b3d55536b6963 --- /dev/null +++ b/Testing/Code/Visu/otbZoomableImageWidget.cxx @@ -0,0 +1,99 @@ +/*========================================================================= + +Program: ORFEO Toolbox +Language: C++ +Date: $Date$ +Version: $Revision$ + + +Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. +See OTBCopyright.txt for details. + + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "otbZoomableImageWidget.h" +#include "otbImageFileReader.h" +#include <FL/Fl.H> + + +int otbZoomableImageWidget( int argc, char * argv[] ) +{ + try + { + char * filename = argv[1]; + typedef float PixelType; + typedef otb::ZoomableImageWidget<PixelType> WidgetType; + typedef WidgetType::ImageType ImageType; + typedef otb::ImageFileReader<ImageType> ReaderType; + + ReaderType::Pointer reader = ReaderType::New(); + ImageType::SizeType size; + ImageType::IndexType index; + ImageType::RegionType region; + reader->SetFileName(filename); + reader->Update(); + size=reader->GetOutput()->GetLargestPossibleRegion().GetSize(); + + Fl_Window window(size[0],size[1]); + + WidgetType::Pointer widget = WidgetType::New(); + window.resizable(widget.GetPointer()); + widget->SetInput(reader->GetOutput()); + if(reader->GetOutput()->GetNumberOfComponentsPerPixel()>=3) + widget->SetViewModelToRGB(); + else + widget->SetViewModelToGrayscale(); + widget->Init(0,0,size[0],size[1],"Test Full Image Widget"); + widget->redraw(); + window.end(); + window.show(); + window.show(); + widget->Show(); + widget->redraw(); + Fl::check(); + + for(double zoom = 1.0;zoom<10.;zoom++) + { + Fl::check(); + + index[0]=size[0]/2-static_cast<int>(static_cast<double>(size[0]/2)/zoom+0.5); + index[1]=size[1]/2-static_cast<int>(static_cast<double>(size[1]/2)/zoom+0.5); + widget->SetZoomUpperLeftCorner(index); + widget->SetZoomFactor(zoom); + widget->redraw(); + Fl::wait(0.2); + Fl::check(); + } + + for(double zoom=10.;zoom>=1.;zoom--) + { + Fl::check(); + index[0]=size[0]/2-static_cast<int>(static_cast<double>(size[0])/(2*zoom)+0.5); + index[1]=size[1]/2-static_cast<int>(static_cast<double>(size[1])/(2*zoom)+0.5); + widget->SetZoomUpperLeftCorner(index); + widget->SetZoomFactor(zoom); + widget->redraw(); + Fl::wait(0.2); + Fl::check(); + } + } + + catch( itk::ExceptionObject & err ) + { + std::cout << "Exception itk::ExceptionObject levee !" << std::endl; + std::cout << err << std::endl; + return EXIT_FAILURE; + } + catch( ... ) + { + std::cout << "Exception levee inconnue !" << std::endl; + return EXIT_FAILURE; + } + + + return EXIT_SUCCESS; +} diff --git a/Testing/Code/Visu/otbZoomableImageWidgetNew.cxx b/Testing/Code/Visu/otbZoomableImageWidgetNew.cxx new file mode 100644 index 0000000000000000000000000000000000000000..6079599187d81da43ac1b5722698998aea6d488d --- /dev/null +++ b/Testing/Code/Visu/otbZoomableImageWidgetNew.cxx @@ -0,0 +1,44 @@ +/*========================================================================= + +Program: ORFEO Toolbox +Language: C++ +Date: $Date$ +Version: $Revision$ + + +Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. +See OTBCopyright.txt for details. + + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "otbZoomableImageWidget.h" + +int otbZoomableImageWidgetNew( int argc, char * argv[] ) +{ + try + { + typedef float PixelType; + typedef otb::ZoomableImageWidget<PixelType> WidgetType; + + WidgetType::Pointer widget = WidgetType::New(); + } + + catch( itk::ExceptionObject & err ) + { + std::cout << "Exception itk::ExceptionObject levee !" << std::endl; + std::cout << err << std::endl; + return EXIT_FAILURE; + } + catch( ... ) + { + std::cout << "Exception levee inconnue !" << std::endl; + return EXIT_FAILURE; + } + + + return EXIT_SUCCESS; +}