X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FImageWriter.cxx;h=176e9f663ee9197aaabb01bfdd5423a936f6fd3f;hb=7c7bc497af96e7b5845be9a2fc277036ec752be9;hp=9c99f2c8490ee2c5bcedb72a80423519fc176e8c;hpb=9015cf98c60cf4ab304a639990004ee783a8bec0;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/ImageWriter.cxx b/lib/cpPlugins/Plugins/ImageWriter.cxx index 9c99f2c..176e9f6 100644 --- a/lib/cpPlugins/Plugins/ImageWriter.cxx +++ b/lib/cpPlugins/Plugins/ImageWriter.cxx @@ -1,26 +1,20 @@ #include -#undef ITK_MANUAL_INSTANTIATION -#include -#include -#include +#include -// ------------------------------------------------------------------------- -#define cpPlugins_ImageWriter_Dimension( r, d, i, f ) \ - if( dynamic_cast< itk::ImageBase< d >* >( i ) != NULL ) \ - r = this->f< d >( i ) +#define ITK_MANUAL_INSTANTIATION +#include -// ------------------------------------------------------------------------- -#define cpPlugins_ImageWriter_Pixel( r, p, d, i, f ) \ - if( dynamic_cast< itk::Image< p, d >* >( i ) != NULL ) \ - r = this->f< p, d >( i ) +#include +#include +#include +#include +#include +#include +#include -// ------------------------------------------------------------------------- -#define cpPlugins_ImageWriter_RGB( r, p, d, i, f ) \ - if( \ - dynamic_cast< itk::Image< itk::RGBPixel< p >, d >* >( i ) != NULL \ - ) \ - r = this->f< itk::RGBPixel< p >, d >( i ) +#undef ITK_MANUAL_INSTANTIATION +#include // ------------------------------------------------------------------------- cpPlugins::Plugins::ImageWriter:: @@ -47,50 +41,24 @@ std::string cpPlugins::Plugins::ImageWriter:: _GenerateData( ) { itk::DataObject* i = this->m_Inputs[ 0 ]->GetITKDataObject( ); - - std::string r = "ImageWriter: Image dimension not supported."; - cpPlugins_ImageWriter_Dimension ( r, 1, i, _GD0 ); - else cpPlugins_ImageWriter_Dimension( r, 2, i, _GD0 ); - else cpPlugins_ImageWriter_Dimension( r, 3, i, _GD0 ); - return( r ); + return( this->_DemangleImageDimension( i ) ); } // ------------------------------------------------------------------------- -template< unsigned int D > -std::string cpPlugins::Plugins::ImageWriter:: -_GD0( itk::DataObject* i ) +namespace cpPlugins { - std::string r = "ImageWriter: Image pixel type not supported"; - cpPlugins_ImageWriter_Pixel ( r, char , D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, short , D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, int , D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, long , D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, unsigned char , D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, unsigned short, D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, unsigned int , D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, unsigned long , D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, float , D, i, _GD1 ); - else cpPlugins_ImageWriter_Pixel( r, double , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, char , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, short , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, int , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, long , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, unsigned char , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, unsigned short, D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, unsigned int , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, unsigned long , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, float , D, i, _GD1 ); - else cpPlugins_ImageWriter_RGB ( r, double , D, i, _GD1 ); - return( r ); + namespace Plugins + { + cpPlugins_Image_Demangle_Methods_Code( ImageWriter, _RealGD ); + } } // ------------------------------------------------------------------------- -template< class P, unsigned int D > +template< class I > std::string cpPlugins::Plugins::ImageWriter:: -_GD1( itk::DataObject* i ) +_RealGD( itk::DataObject* image ) { - typedef itk::Image< P, D > _I; - typedef itk::ImageFileWriter< _I > _W; + typedef itk::ImageFileWriter< I > _W; // Get filename using namespace cpPlugins::Interface; @@ -105,7 +73,7 @@ _GD1( itk::DataObject* i ) } // fi writer->SetFileName( fname ); - writer->SetInput( dynamic_cast< _I* >( i ) ); + writer->SetInput( dynamic_cast< I* >( image ) ); try { writer->Update( );