Skip to content
Snippets Groups Projects
Commit b64ce051 authored by Julien Michel's avatar Julien Michel
Browse files

Nouveaux tests pour nouvelle visu.

parent a4d10783
No related branches found
No related tags found
No related merge requests found
Showing with 554 additions and 27 deletions
......@@ -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.
......
......@@ -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;
}
}
......
......@@ -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);
......
......@@ -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
)
......
/*=========================================================================
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;
}
/*=========================================================================
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;
}
/*=========================================================================
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;
}
/*=========================================================================
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;
}
/*=========================================================================
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;
}
......@@ -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);
}
/*=========================================================================
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;
}
/*=========================================================================
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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment