Skip to content
Snippets Groups Projects
Commit 8d5a1617 authored by Antoine Regimbeau's avatar Antoine Regimbeau
Browse files

REFAC: with utilisation of ClampImageFilter no need for macro and specialization

parent 02702e79
No related branches found
No related tags found
1 merge request!12Complex image integration
Showing
with 50 additions and 10 deletions
......@@ -176,7 +176,7 @@ private:
// template specializations of CastImage<> should be declared in header
// so that the linker knows they exist when building OTB Applications
/*
#define otbDeclareCastImageMacro(InputImageType, OutputImageType) \
template<> OTBApplicationEngine_EXPORT OutputImageType * \
InputImageParameter::CastImage<InputImageType , OutputImageType>(); \
......@@ -189,11 +189,12 @@ private:
otbDeclareCastImageMacro(InputImageType, Int32##prefix##ImageType) \
otbDeclareCastImageMacro(InputImageType, Float##prefix##ImageType) \
otbDeclareCastImageMacro(InputImageType, Double##prefix##ImageType)
*/
/*********************************************************************
********************** Image -> Image
**********************************************************************/
/*
otbGenericDeclareCastImageMacro(UInt8ImageType, )
otbGenericDeclareCastImageMacro(Int16ImageType, )
otbGenericDeclareCastImageMacro(UInt16ImageType, )
......@@ -207,10 +208,12 @@ otbDeclareCastImageMacro( ComplexDoubleImageType , ComplexFloatImageType )
otbDeclareCastImageMacro( ComplexFloatImageType , ComplexDoubleImageType )
otbDeclareCastImageMacro( ComplexFloatImageType , ComplexFloatImageType )
*/
/*********************************************************************
********************** VectorImage -> VectorImage
**********************************************************************/
/*
otbGenericDeclareCastImageMacro(UInt8VectorImageType, Vector)
otbGenericDeclareCastImageMacro(Int16VectorImageType, Vector)
otbGenericDeclareCastImageMacro(UInt16VectorImageType, Vector)
......@@ -228,10 +231,11 @@ otbDeclareCastImageMacro( ComplexFloatVectorImageType ,
ComplexDoubleVectorImageType )
otbDeclareCastImageMacro( ComplexFloatVectorImageType ,
ComplexFloatVectorImageType )
*/
/*********************************************************************
********************** Image -> VectorImage
**********************************************************************/
/*
otbGenericDeclareCastImageMacro(UInt8ImageType, Vector)
otbGenericDeclareCastImageMacro(Int16ImageType, Vector)
otbGenericDeclareCastImageMacro(UInt16ImageType, Vector)
......@@ -251,7 +255,7 @@ otbDeclareCastImageMacro( ComplexFloatImageType , ComplexFloatVectorImageType )
#undef otbDeclareCastImageMacro
#undef otbGenericDeclareCastImageMacro
*/
} // End namespace Wrapper
} // End namespace otb
......
......@@ -208,7 +208,26 @@ template <class TInputImage, class TOutputImage>
TOutputImage*
InputImageParameter::CastImage()
{
itkExceptionMacro("Cast from "<<typeid(TInputImage).name()<<" to "<<typeid(TOutputImage).name()<<" not authorized.");
if ( dynamic_cast<TOutputImage*> (m_Image.GetPointer()) )
{
return dynamic_cast<TOutputImage*> (m_Image.GetPointer());
}
else
{
TInputImage* realInputImage = dynamic_cast<TInputImage*>(m_Image.GetPointer());
typedef ClampImageFilter<TInputImage, TOutputImage> CasterType;
typename CasterType::Pointer caster = CasterType::New();
caster->SetInput(realInputImage);
caster->UpdateOutputInformation();
m_Image = caster->GetOutput();
m_Caster = caster;
return caster->GetOutput();
}
// itkExceptionMacro("Cast from "<<typeid(TInputImage).name()<<" to "<<typeid(TOutputImage).name()<<" not authorized.");
}
......
......@@ -28,8 +28,9 @@ namespace otb
{
namespace Wrapper
{
otbGetImageMacro(ComplexDoubleImage)
otbGetImageMacro(ComplexDoubleImage);
otbGetImageMacro(ComplexDoubleVectorImage)
/*
// otbGenericCastImageMacro(ComplexDoubleImage, SimpleCastImage, )
otbCastImageMacro(ComplexDoubleImageType , ComplexDoubleImageType , SimpleCastImage)
otbCastImageMacro(ComplexDoubleImageType , ComplexFloatImageType , SimpleCastImage)
......@@ -39,6 +40,6 @@ otbCastImageMacro(ComplexDoubleVectorImageType , ComplexFloatVectorImageType , S
// otbGenericCastImageMacro(ComplexDoubleImage, CastVectorImageFromImage, Vector)
otbCastImageMacro(ComplexDoubleImageType , ComplexDoubleVectorImageType , CastVectorImageFromImage)
otbCastImageMacro(ComplexDoubleImageType , ComplexFloatVectorImageType , CastVectorImageFromImage)
*/
}
}
......@@ -28,8 +28,9 @@ namespace otb
{
namespace Wrapper
{
otbGetImageMacro(ComplexFloatImage)
otbGetImageMacro(ComplexFloatImage);
otbGetImageMacro(ComplexFloatVectorImage)
/*
// otbGenericCastImageMacro(ComplexFloatImage, SimpleCastImage, )
otbCastImageMacro(ComplexFloatImageType , ComplexDoubleImageType , SimpleCastImage)
otbCastImageMacro(ComplexFloatImageType , ComplexFloatImageType , SimpleCastImage)
......@@ -39,5 +40,6 @@ otbCastImageMacro(ComplexFloatVectorImageType , ComplexFloatVectorImageType , Si
// otbGenericCastImageMacro(ComplexFloatImage, CastVectorImageFromImage, Vector)
otbCastImageMacro(ComplexFloatImageType , ComplexDoubleVectorImageType , CastVectorImageFromImage)
otbCastImageMacro(ComplexFloatImageType , ComplexFloatVectorImageType , CastVectorImageFromImage)
*/
}
}
......@@ -30,8 +30,10 @@ namespace Wrapper
{
otbGetImageMacro(DoubleImage);
otbGetImageMacro(DoubleVectorImage)
/*
otbGenericCastImageMacro(DoubleImageType, SimpleCastImage, )
otbGenericCastImageMacro(DoubleVectorImageType, SimpleCastImage, Vector)
otbGenericCastImageMacro(DoubleImageType, CastVectorImageFromImage, Vector)
*/
}
}
......@@ -30,8 +30,10 @@ namespace Wrapper
{
otbGetImageMacro(FloatImage);
otbGetImageMacro(FloatVectorImage)
/*
otbGenericCastImageMacro(FloatImageType, SimpleCastImage, )
otbGenericCastImageMacro(FloatVectorImageType, SimpleCastImage, Vector)
otbGenericCastImageMacro(FloatImageType, CastVectorImageFromImage, Vector)
*/
}
}
......@@ -30,8 +30,10 @@ namespace Wrapper
{
otbGetImageMacro(Int16Image);
otbGetImageMacro(Int16VectorImage)
/*
otbGenericCastImageMacro(Int16ImageType, SimpleCastImage, )
otbGenericCastImageMacro(Int16VectorImageType, SimpleCastImage, Vector)
otbGenericCastImageMacro(Int16ImageType, CastVectorImageFromImage, Vector)
*/
}
}
......@@ -30,8 +30,10 @@ namespace Wrapper
{
otbGetImageMacro(Int32Image);
otbGetImageMacro(Int32VectorImage)
/*
otbGenericCastImageMacro(Int32ImageType, SimpleCastImage, )
otbGenericCastImageMacro(Int32VectorImageType, SimpleCastImage, Vector)
otbGenericCastImageMacro(Int32ImageType, CastVectorImageFromImage, Vector)
*/
}
}
......@@ -28,7 +28,7 @@
return this->GetImage< image##Type > (); \
}
/*
#define otbCastImageMacro(InputImageType, OutputImageType, theMethod) \
template<> OutputImageType * \
InputImageParameter::CastImage<InputImageType , OutputImageType>() \
......@@ -44,6 +44,6 @@
otbCastImageMacro(InputImageType, Int32##prefix##ImageType, theMethod) \
otbCastImageMacro(InputImageType, Float##prefix##ImageType, theMethod) \
otbCastImageMacro(InputImageType, Double##prefix##ImageType, theMethod)
*/
#endif
......@@ -30,8 +30,10 @@ namespace Wrapper
{
otbGetImageMacro(UInt16Image);
otbGetImageMacro(UInt16VectorImage)
/*
otbGenericCastImageMacro(UInt16ImageType, SimpleCastImage, )
otbGenericCastImageMacro(UInt16VectorImageType, SimpleCastImage, Vector)
otbGenericCastImageMacro(UInt16ImageType, CastVectorImageFromImage, Vector)
*/
}
}
......@@ -30,8 +30,10 @@ namespace Wrapper
{
otbGetImageMacro(UInt32Image);
otbGetImageMacro(UInt32VectorImage)
/*
otbGenericCastImageMacro(UInt32ImageType, SimpleCastImage, )
otbGenericCastImageMacro(UInt32VectorImageType, SimpleCastImage, Vector)
otbGenericCastImageMacro(UInt32ImageType, CastVectorImageFromImage, Vector)
*/
}
}
......@@ -30,8 +30,10 @@ namespace Wrapper
{
otbGetImageMacro(UInt8Image);
otbGetImageMacro(UInt8VectorImage)
/*
otbGenericCastImageMacro(UInt8ImageType, SimpleCastImage, )
otbGenericCastImageMacro(UInt8VectorImageType, SimpleCastImage, Vector)
otbGenericCastImageMacro(UInt8ImageType, CastVectorImageFromImage, Vector)
*/
}
}
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