diff --git a/Code/ApplicationEngine/otbWrapperInputImageParameter.cxx b/Code/ApplicationEngine/otbWrapperInputImageParameter.cxx index 05bc2010932c94921b8ec3d4584b72f443c2f2bd..c88d0443061ce7748bfba09ce05685c018cf36db 100644 --- a/Code/ApplicationEngine/otbWrapperInputImageParameter.cxx +++ b/Code/ApplicationEngine/otbWrapperInputImageParameter.cxx @@ -111,148 +111,6 @@ otbGetImageMacro(UInt8RGBImage); otbGetImageMacro(UInt8RGBAImage); -template <class TOutputImage> -TOutputImage * -InputImageParameter::GetImage() -{ - otbMsgDevMacro(<< "GetImage()"); - - // Used m_PreviousFileName because if not, when the user call twice GetImage, - // it without changing the filename, it returns 2 different - // image pointers - // Only one image type can be used - - // 2 cases : the user set a filename vs. the user set an image - if (m_UseFilename) - { - if( m_PreviousFileName!=m_FileName && !m_FileName.empty() ) - { - //////////////////////// Filename case: - // A new valid filename has been given : a reader is created - m_PreviousFileName = m_FileName; - typedef otb::ImageFileReader<TOutputImage> ReaderType; - typename ReaderType::Pointer reader = ReaderType::New(); - reader->SetFileName(m_FileName); - - try - { - reader->UpdateOutputInformation(); - } - catch (itk::ExceptionObject &) - { - this->ClearValue(); - } - - m_Image = reader->GetOutput(); - m_Reader = reader; - - // Pay attention, don't return m_Image because it is a ImageBase... - return reader->GetOutput(); - } - else - { - // In this case, the reader and the image should already be there - if (m_Image.IsNull()) - { - itkExceptionMacro("No input image or filename detected..."); - } - else - { - // Check if the image type asked here is the same as the one used for the reader - if (dynamic_cast<TOutputImage*> (m_Image.GetPointer())) - { - return dynamic_cast<TOutputImage*> (m_Image.GetPointer()); - } - else - { - itkExceptionMacro("Cannot ask a different image type"); - } - } - } - } - else - { - //////////////////////// Image case: - if (m_Image.IsNull()) - { - itkExceptionMacro("No input image or filename detected..."); - } - else - { - if (dynamic_cast<UInt8ImageType*> (m_Image.GetPointer())) - { - return CastImage<UInt8ImageType, TOutputImage> (); - } - else if (dynamic_cast<Int16ImageType*> (m_Image.GetPointer())) - { - return CastImage<Int16ImageType, TOutputImage> (); - } - else if (dynamic_cast<UInt16ImageType*> (m_Image.GetPointer())) - { - return CastImage<UInt16ImageType, TOutputImage> (); - } - else if (dynamic_cast<Int32ImageType*> (m_Image.GetPointer())) - { - return CastImage<Int32ImageType, TOutputImage> (); - } - else if (dynamic_cast<UInt32ImageType*> (m_Image.GetPointer())) - { - return CastImage<UInt32ImageType, TOutputImage> (); - } - else if (dynamic_cast<FloatImageType*> (m_Image.GetPointer())) - { - return CastImage<FloatImageType, TOutputImage> (); - } - else if (dynamic_cast<DoubleImageType*> (m_Image.GetPointer())) - { - return CastImage<DoubleImageType, TOutputImage> (); - } - else if (dynamic_cast<UInt8VectorImageType*> (m_Image.GetPointer())) - { - return CastImage<UInt8VectorImageType, TOutputImage> (); - } - else if (dynamic_cast<Int16VectorImageType*> (m_Image.GetPointer())) - { - return CastImage<Int16VectorImageType, TOutputImage> (); - } - else if (dynamic_cast<UInt16VectorImageType*> (m_Image.GetPointer())) - { - return CastImage<UInt16VectorImageType, TOutputImage> (); - } - else if (dynamic_cast<Int32VectorImageType*> (m_Image.GetPointer())) - { - return CastImage<Int32VectorImageType, TOutputImage> (); - } - else if (dynamic_cast<UInt32VectorImageType*> (m_Image.GetPointer())) - { - return CastImage<UInt32VectorImageType, TOutputImage> (); - } - else if (dynamic_cast<FloatVectorImageType*> (m_Image.GetPointer())) - { - return CastImage<FloatVectorImageType, TOutputImage> (); - } - else if (dynamic_cast<DoubleVectorImageType*> (m_Image.GetPointer())) - { - return CastImage<DoubleVectorImageType, TOutputImage> (); - } - else if (dynamic_cast<UInt8RGBAImageType*> (m_Image.GetPointer())) - { - return CastImage<UInt8RGBAImageType, TOutputImage> (); - } - else if (dynamic_cast<UInt8RGBImageType*> (m_Image.GetPointer())) - { - return CastImage<UInt8RGBImageType, TOutputImage> (); - } - else - { - itkExceptionMacro("Unknown image type"); - } - } - } - -} - - template <class TInputImage, class TOutputImage> TOutputImage* InputImageParameter::SimpleCastImage() diff --git a/Code/ApplicationEngine/otbWrapperInputImageParameter.h b/Code/ApplicationEngine/otbWrapperInputImageParameter.h index fe912b70044f61c323a01daa8dbb74f713e1f41a..23fd78068ca44c9047d3bb04669b349027f8988d 100644 --- a/Code/ApplicationEngine/otbWrapperInputImageParameter.h +++ b/Code/ApplicationEngine/otbWrapperInputImageParameter.h @@ -78,7 +78,143 @@ public: /** Get the input image as templated image type. */ template <class TImageType> - TImageType* GetImage(); + TImageType* GetImage() + { + otbMsgDevMacro(<< "GetImage()"); + + // Used m_PreviousFileName because if not, when the user call twice GetImage, + // it without changing the filename, it returns 2 different + // image pointers + // Only one image type can be used + + // 2 cases : the user set a filename vs. the user set an image + if (m_UseFilename) + { + if( m_PreviousFileName!=m_FileName && !m_FileName.empty() ) + { + //////////////////////// Filename case: + // A new valid filename has been given : a reader is created + m_PreviousFileName = m_FileName; + typedef otb::ImageFileReader<TImageType> ReaderType; + typename ReaderType::Pointer reader = ReaderType::New(); + reader->SetFileName(m_FileName); + + try + { + reader->UpdateOutputInformation(); + } + catch (itk::ExceptionObject &) + { + this->ClearValue(); + } + + m_Image = reader->GetOutput(); + m_Reader = reader; + + // Pay attention, don't return m_Image because it is a ImageBase... + return reader->GetOutput(); + } + else + { + // In this case, the reader and the image should already be there + if (m_Image.IsNull()) + { + itkExceptionMacro("No input image or filename detected..."); + } + else + { + // Check if the image type asked here is the same as the one used for the reader + if (dynamic_cast<TImageType*> (m_Image.GetPointer())) + { + return dynamic_cast<TImageType*> (m_Image.GetPointer()); + } + else + { + itkExceptionMacro("Cannot ask a different image type"); + } + } + } + } + else + { + //////////////////////// Image case: + if (m_Image.IsNull()) + { + itkExceptionMacro("No input image or filename detected..."); + } + else + { + if (dynamic_cast<UInt8ImageType*> (m_Image.GetPointer())) + { + return CastImage<UInt8ImageType, TImageType> (); + } + else if (dynamic_cast<Int16ImageType*> (m_Image.GetPointer())) + { + return CastImage<Int16ImageType, TImageType> (); + } + else if (dynamic_cast<UInt16ImageType*> (m_Image.GetPointer())) + { + return CastImage<UInt16ImageType, TImageType> (); + } + else if (dynamic_cast<Int32ImageType*> (m_Image.GetPointer())) + { + return CastImage<Int32ImageType, TImageType> (); + } + else if (dynamic_cast<UInt32ImageType*> (m_Image.GetPointer())) + { + return CastImage<UInt32ImageType, TImageType> (); + } + else if (dynamic_cast<FloatImageType*> (m_Image.GetPointer())) + { + return CastImage<FloatImageType, TImageType> (); + } + else if (dynamic_cast<DoubleImageType*> (m_Image.GetPointer())) + { + return CastImage<DoubleImageType, TImageType> (); + } + else if (dynamic_cast<UInt8VectorImageType*> (m_Image.GetPointer())) + { + return CastImage<UInt8VectorImageType, TImageType> (); + } + else if (dynamic_cast<Int16VectorImageType*> (m_Image.GetPointer())) + { + return CastImage<Int16VectorImageType, TImageType> (); + } + else if (dynamic_cast<UInt16VectorImageType*> (m_Image.GetPointer())) + { + return CastImage<UInt16VectorImageType, TImageType> (); + } + else if (dynamic_cast<Int32VectorImageType*> (m_Image.GetPointer())) + { + return CastImage<Int32VectorImageType, TImageType> (); + } + else if (dynamic_cast<UInt32VectorImageType*> (m_Image.GetPointer())) + { + return CastImage<UInt32VectorImageType, TImageType> (); + } + else if (dynamic_cast<FloatVectorImageType*> (m_Image.GetPointer())) + { + return CastImage<FloatVectorImageType, TImageType> (); + } + else if (dynamic_cast<DoubleVectorImageType*> (m_Image.GetPointer())) + { + return CastImage<DoubleVectorImageType, TImageType> (); + } + else if (dynamic_cast<UInt8RGBAImageType*> (m_Image.GetPointer())) + { + return CastImage<UInt8RGBAImageType, TImageType> (); + } + else if (dynamic_cast<UInt8RGBImageType*> (m_Image.GetPointer())) + { + return CastImage<UInt8RGBImageType, TImageType> (); + } + else + { + itkExceptionMacro("Unknown image type"); + } + } + } + } /** Set a FloatVectorImageType image.*/