]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Image.hxx
...
[cpPlugins.git] / lib / cpPlugins / Image.hxx
index 4a02cf93f050e715c05162bee192656df6898eee..d0f3de410fcf83c04a5db04172730b7b9530bb1a 100644 (file)
@@ -104,63 +104,91 @@ _ITK_2_VTK_2( itk::LightObject* o )
  * Demangle macros
  * =========================================================================
  */
-#define cpPlugin_Image_Demangle_Dim( FUNC, INPUT, D )   \
-  this->FUNC( INPUT->GetITK< itk::ImageBase< D > >( ) )
-
-#define cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, PIXEL, D )      \
-  this->FUNC( dynamic_cast< itk::Image< PIXEL, D >* >( INPUT ) )
-
-#define cpPlugin_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, PIXEL, D ) \
-  this->FUNC( dynamic_cast< itk::Image< VECTOR< PIXEL, D >, D >* >( INPUT ) )
-
-#define cpPlugin_Image_Demangle_Pixel_AllInts( r, FUNC, INPUT, D )   \
-  r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, char, D );        \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, short, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, int, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, long, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned char, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned short, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned int, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned long, D )
-
-#define cpPlugin_Image_Demangle_Pixel_AllScalars( r, FUNC, INPUT, D )   \
-  r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, char, D );        \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, short, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, int, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, long, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, float, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, double, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned char, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned short, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned int, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, unsigned long, D )
-
-#define cpPlugin_Image_Demangle_Pixel_AllColor( r, FUNC, INPUT, D )     \
-  r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< char >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< short >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< int >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< long >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< float >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< double >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned char >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned short >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned int >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned long >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< char >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< short >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< int >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< long >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< float >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< double >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned char >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned short >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned int >, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned long >, D )
-
-#define cpPlugin_Image_Demangle_VectorPixel_AllFloats( r, FUNC, INPUT, VECTOR, D ) \
-  r = cpPlugin_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, float, D ); \
-  if( r != "" ) r = cpPlugin_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, double, D )
-
+#define cpPlugins_Image_Demangle_Dim( F, I, D )                 \
+  if( dynamic_cast< itk::ImageBase< D >* >( I ) != NULL )       \
+    this->F( dynamic_cast< itk::ImageBase< D >* >( I ) )
+
+#define cpPlugins_Image_Demangle_Pixel_Dim( F, I, P, D )                \
+  if( dynamic_cast< itk::Image< P, D >* >( I ) != NULL )                \
+    this->F( dynamic_cast< itk::Image< P, D >* >( I ) )
+
+#define cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, P, D )        \
+  if( dynamic_cast< itk::Image< itk::C##Pixel< P >, D >* >( I ) != NULL ) \
+    this->F( dynamic_cast< itk::Image< itk::C##Pixel< P >, D >* >( I ) )
+
+#define cpPlugins_Image_Demangle_VectorPixel_Dim( F, I, V, P, D )       \
+  if( dynamic_cast< itk::Image< V< P, D >, D >* >( I ) != NULL )        \
+    this->F( dynamic_cast< itk::Image< V< P, D >, D >* >( I ) )
+
+#define cpPlugins_Image_Demangle_Pixel_AllInts( F, I, D )               \
+  cpPlugins_Image_Demangle_Pixel_Dim     ( F, I, char, D );             \
+  else cpPlugins_Image_Demangle_Pixel_Dim( F, I, short, D );            \
+  else cpPlugins_Image_Demangle_Pixel_Dim( F, I, int, D );              \
+  else cpPlugins_Image_Demangle_Pixel_Dim( F, I, long, D )
+
+#define cpPlugins_Image_Demangle_Pixel_AllUInts( F, I, D )              \
+  cpPlugins_Image_Demangle_Pixel_Dim     ( F, I, unsigned char, D );    \
+  else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned short, D );   \
+  else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned int, D );     \
+  else cpPlugins_Image_Demangle_Pixel_Dim( F, I, unsigned long, D )
+
+#define cpPlugins_Image_Demangle_Pixel_AllFloats( F, I, D )             \
+  cpPlugins_Image_Demangle_Pixel_Dim     ( F, I, float, D );            \
+  else cpPlugins_Image_Demangle_Pixel_Dim( F, I, double, D )
+
+#define cpPlugins_Image_Demangle_Pixel_AllScalars( F, I, D )  \
+  cpPlugins_Image_Demangle_Pixel_AllInts      ( F, I, D );    \
+  else cpPlugins_Image_Demangle_Pixel_AllUInts( F, I, D );    \
+  else cpPlugins_Image_Demangle_Pixel_AllInts ( F, I, D )
+
+#define cpPlugins_Image_Demangle_ColorPixel_AllInts( F, I, C, D )       \
+  cpPlugins_Image_Demangle_ColorPixel_Dim     ( F, I, C, char, D );     \
+  else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, short, D );    \
+  else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, int, D );      \
+  else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, long, D )
+
+#define cpPlugins_Image_Demangle_ColorPixel_AllUInts( F, I, C, D )      \
+  cpPlugins_Image_Demangle_ColorPixel_Dim     ( F, I, C, unsigned char, D ); \
+  else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned short, D ); \
+  else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned int, D ); \
+  else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, unsigned long, D )
+
+#define cpPlugins_Image_Demangle_ColorPixel_AllFloats( F, I, C, D )     \
+  cpPlugins_Image_Demangle_ColorPixel_Dim     ( F, I, C, float, D );       \
+  else cpPlugins_Image_Demangle_ColorPixel_Dim( F, I, C, double, D )
+
+#define cpPlugins_Image_Demangle_ColorPixel_AllScalars( F, I, C, D )    \
+  cpPlugins_Image_Demangle_ColorPixel_AllInts      ( F, I, C, D );      \
+  else cpPlugins_Image_Demangle_ColorPixel_AllUInts( F, I, C, D );      \
+  else cpPlugins_Image_Demangle_ColorPixel_AllInts ( F, I, C, D )
+
+/* TODO
+   #define cpPlugins_Image_Demangle_Pixel_AllColor( r, FUNC, INPUT, D ) \
+   r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< char >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< short >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< int >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< long >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< float >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< double >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned char >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned short >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned int >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBPixel< unsigned long >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< char >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< short >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< int >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< long >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< float >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< double >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned char >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned short >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned int >, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_Pixel_Dim( FUNC, INPUT, itk::RGBAPixel< unsigned long >, D )
+   
+   #define cpPlugins_Image_Demangle_VectorPixel_AllFloats( r, FUNC, INPUT, VECTOR, D ) \
+   r = cpPlugins_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, float, D ); \
+   if( r != "" ) r = cpPlugins_Image_Demangle_VectorPixel_Dim( FUNC, INPUT, VECTOR, double, D )
+*/
 #endif // __CPPLUGINS__IMAGE__HXX__
 
 // eof - $RCSfile$