]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Plugins/ImageWriter.cxx
...
[cpPlugins.git] / lib / cpPlugins / Plugins / ImageWriter.cxx
index 9c99f2c8490ee2c5bcedb72a80423519fc176e8c..176e9f663ee9197aaabb01bfdd5423a936f6fd3f 100644 (file)
@@ -1,26 +1,20 @@
 #include <cpPlugins/Plugins/ImageWriter.h>
 
-#undef ITK_MANUAL_INSTANTIATION
-#include <itkImage.h>
-#include <itkRGBPixel.h>
-#include <itkImageFileWriter.h>
+#include <complex>
 
-// -------------------------------------------------------------------------
-#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 <itkImage.h>
 
-// -------------------------------------------------------------------------
-#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 <itkCovariantVector.h>
+#include <itkDiffusionTensor3D.h>
+#include <itkPoint.h>
+#include <itkRGBPixel.h>
+#include <itkRGBAPixel.h>
+#include <itkSymmetricSecondRankTensor.h>
+#include <itkVector.h>
 
-// -------------------------------------------------------------------------
-#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 <itkImageFileWriter.h>
 
 // -------------------------------------------------------------------------
 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( );