X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FBaseProcessObjects.h;h=a120b8446398233ca6a964161fb9ce0c2cc7b79d;hb=de874ea850042e77a99a456188f423c8df2e374f;hp=687a00fa6a80a399209699390277c09315a0b404;hpb=7c7bc497af96e7b5845be9a2fc277036ec752be9;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/BaseProcessObjects.h b/lib/cpPlugins/Interface/BaseProcessObjects.h index 687a00f..a120b84 100644 --- a/lib/cpPlugins/Interface/BaseProcessObjects.h +++ b/lib/cpPlugins/Interface/BaseProcessObjects.h @@ -5,49 +5,230 @@ #include // ------------------------------------------------------------------------- -#define cpPlugins_Interface_Define_ProcessObject( O, S ) \ - class cpPlugins_Interface_EXPORT O \ - : public S \ - { \ - public: \ - typedef O Self; \ - typedef S Superclass; \ - typedef itk::SmartPointer< Self > Pointer; \ - typedef itk::SmartPointer< const Self > ConstPointer; \ - public: \ - itkTypeMacro( O, S ); \ - protected: \ - O( ); \ - virtual ~O( ); \ - private: \ - O( const Self& ); \ - Self& operator=( const Self& ); \ +#define cpPlugins_Define_ProcessObject( O, S ) \ + class cpPlugins_Interface_EXPORT O \ + : public S \ + { \ + public: \ + typedef O Self; \ + typedef S Superclass; \ + typedef itk::SmartPointer< Self > Pointer; \ + typedef itk::SmartPointer< const Self > ConstPointer; \ + public: \ + itkTypeMacro( O, S ); \ + cpPlugins_Id_Macro( cpPlugins::Interface::O, ProcessObject ); \ + protected: \ + O( ); \ + virtual ~O( ); \ + private: \ + O( const Self& ); \ + Self& operator=( const Self& ); \ } // ------------------------------------------------------------------------- -#define cpPlugins_Interface_Code_ProcessObject( O ) \ - cpPlugins::Interface::O::O( ) : Superclass( ) \ - { \ - this->m_ClassName = "cpPlugins::Interface::#O"; \ - this->m_ClassCategory = "#O"; \ - } \ +#define cpPlugins_Code_ProcessObject( O ) \ + cpPlugins::Interface::O::O( ) : Superclass( ) { } \ cpPlugins::Interface::O::~O( ) { } +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Demangle( T, D, I, O, R, F ) \ + if( ( O = I->GetITK< itk::Image< T, D > >( ) ) != NULL ) \ + R = this->F< itk::Image< T, D > >( O ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayImage_Demangle( A, T, DI, DA, I, O, R, F ) \ + if( ( O = I->GetITK< itk::Image< A< T, DA >, DI > >( ) ) != NULL ) \ + R = this->F< itk::Image< A< T, DA >, DI > >( O ) + +// ------------------------------------------------------------------------- +#define cpPlugins_VectorImage_Demangle( T, D, I, O, R, F ) \ + if( ( O = I->GetITK< itk::VectorImage< T, D > >( ) ) != NULL ) \ + R = this->F< itk::VectorImage< T, D > >( O ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayVectorImage_Demangle( A, T, DI, DA, I, O, R, F ) \ + if( ( O = I->GetITK< itk::VectorImage< A< T, DA >, DI > >( ) ) != NULL ) \ + r = this->F< itk::VectorImage< A< T, DA >, DI > >( O ) + +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Demangle_AllScalarTypes( D, I, O, R, F ) \ + cpPlugins_Image_Demangle( char, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( short, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( int, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( long, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( unsigned char, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( unsigned short, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( unsigned int, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( unsigned long, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( float, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( double, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Demangle_AllComplexTypes( D, I, O, R, F ) \ + cpPlugins_Image_Demangle( std::complex< float >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( std::complex< double >, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Demangle_AllRGBTypes( D, I, O, R, F ) \ + cpPlugins_Image_Demangle( itk::RGBPixel< char >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< short >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< int >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< long >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned char >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned short >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned int >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< unsigned long >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< float >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBPixel< double >, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Demangle_AllRGBATypes( D, I, O, R, F ) \ + cpPlugins_Image_Demangle( itk::RGBAPixel< char >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< short >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< int >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< long >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned char >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned short >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned int >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< unsigned long >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< float >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::RGBAPixel< double >, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ) \ + cpPlugins_Image_Demangle( itk::DiffusionTensor3D< float >, D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::DiffusionTensor3D< double >, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayImage_Demangle_AllVectorTypes( DI, DA, I, O, R, F ) \ + cpPlugins_ArrayImage_Demangle( itk::Vector, float, DI, DA, I, O, R, F ); \ + else cpPlugins_ArrayImage_Demangle( itk::Vector, double, DI, DA, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayImage_Demangle_AllCovariantVectorTypes( DI, DA, I, O, R, F ) \ + cpPlugins_ArrayImage_Demangle( itk::CovariantVector, float, DI, DA, I, O, R, F ); \ + else cpPlugins_ArrayImage_Demangle( itk::CovariantVector, double, DI, DA, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayImage_Demangle_AllPointTypes( DI, DA, I, O, R, F ) \ + cpPlugins_ArrayImage_Demangle( itk::Point, float, DI, DA, I, O, R, F ); \ + else cpPlugins_ArrayImage_Demangle( itk::Point, double, DI, DA, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayImage_Demangle_AllSymmetricSecondRankTensorTypes( DI, DA, I, O, R, F ) \ + cpPlugins_ArrayImage_Demangle( itk::SymmetricSecondRankTensor, float, DI, DA, I, O, R, F ); \ + else cpPlugins_ArrayImage_Demangle( itk::SymmetricSecondRankTensor, double, DI, DA, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_Image_Demangle_AllTypes( D, I, O, R, F ) \ + cpPlugins_Image_Demangle_AllScalarTypes( D, I, O, R, F ); \ + else cpPlugins_Image_Demangle_AllComplexTypes( D, I, O, R, F ); \ + else cpPlugins_Image_Demangle_AllRGBTypes( D, I, O, R, F ); \ + else cpPlugins_Image_Demangle_AllRGBATypes( D, I, O, R, F ); \ + else cpPlugins_Image_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ); \ + else cpPlugins_Image_Demangle( itk::Offset< D >, D, I, O, R, F ); \ + else cpPlugins_ArrayImage_Demangle_AllVectorTypes( D, D, I, O, R, F ); \ + else cpPlugins_ArrayImage_Demangle_AllCovariantVectorTypes( D, D, I, O, R, F ); \ + else cpPlugins_ArrayImage_Demangle_AllPointTypes( D, D, I, O, R, F ); \ + else cpPlugins_ArrayImage_Demangle_AllSymmetricSecondRankTensorTypes( D, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_VectorImage_Demangle_AllScalarTypes( D, I, O, R, F ) \ + cpPlugins_VectorImage_Demangle( char, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( short, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( int, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( long, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( unsigned char, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( unsigned short, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( unsigned int, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( unsigned long, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( float, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( double, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_VectorImage_Demangle_AllComplexTypes( D, I, O, R, F ) \ + cpPlugins_VectorImage_Demangle( std::complex< float >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( std::complex< double >, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_VectorImage_Demangle_AllRGBTypes( D, I, O, R, F ) \ + cpPlugins_VectorImage_Demangle( itk::RGBPixel< char >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< short >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< int >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< long >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned char >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned short >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned int >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< unsigned long >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< float >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBPixel< double >, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_VectorImage_Demangle_AllRGBATypes( D, I, O, R, F ) \ + cpPlugins_VectorImage_Demangle( itk::RGBAPixel< char >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< short >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< int >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< long >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned char >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned short >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned int >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< unsigned long >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< float >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::RGBAPixel< double >, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_VectorImage_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ) \ + cpPlugins_VectorImage_Demangle( itk::DiffusionTensor3D< float >, D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::DiffusionTensor3D< double >, D, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayVectorImage_Demangle_AllVectorTypes( DI, DA, I, O, R, F ) \ + cpPlugins_ArrayVectorImage_Demangle( itk::Vector, float, DI, DA, I, O, R, F ); \ + else cpPlugins_ArrayVectorImage_Demangle( itk::Vector, double, DI, DA, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayVectorImage_Demangle_AllCovariantVectorTypes( DI, DA, I, O, R, F ) \ + cpPlugins_ArrayVectorImage_Demangle( itk::CovariantVector, float, DI, DA, I, O, R, F ); \ + else cpPlugins_ArrayVectorImage_Demangle( itk::CovariantVector, double, DI, DA, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayVectorImage_Demangle_AllPointTypes( DI, DA, I, O, R, F ) \ + cpPlugins_ArrayVectorImage_Demangle( itk::Point, float, DI, DA, I, O, R, F ); \ + else cpPlugins_ArrayVectorImage_Demangle( itk::Point, double, DI, DA, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_ArrayVectorImage_Demangle_AllSymmetricSecondRankTensorTypes( DI, DA, I, O, R, F ) \ + cpPlugins_ArrayVectorImage_Demangle( itk::SymmetricSecondRankTensor, float, DI, DA, I, O, R, F ); \ + else cpPlugins_ArrayVectorImage_Demangle( itk::SymmetricSecondRankTensor, double, DI, DA, I, O, R, F ) + +// ------------------------------------------------------------------------- +#define cpPlugins_VectorImage_Demangle_AllTypes( D, I, O, R, F ) \ + cpPlugins_VectorImage_Demangle_AllScalarTypes( D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle_AllComplexTypes( D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle_AllRGBTypes( D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle_AllRGBATypes( D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle_AllDiffusionTensor3DTypes( D, I, O, R, F ); \ + else cpPlugins_VectorImage_Demangle( itk::Offset< D >, D, I, O, R, F ); \ + else cpPlugins_ArrayVectorImage_Demangle_AllVectorTypes( D, D, I, O, R, F ); \ + else cpPlugins_ArrayVectorImage_Demangle_AllCovariantVectorTypes( D, D, I, O, R, F ); \ + else cpPlugins_ArrayVectorImage_Demangle_AllPointTypes( D, D, I, O, R, F ); \ + else cpPlugins_ArrayVectorImage_Demangle_AllSymmetricSecondRankTensorTypes( D, D, I, O, R, F ) + namespace cpPlugins { namespace Interface { - cpPlugins_Interface_Define_ProcessObject( SourceObject, ProcessObject ); - cpPlugins_Interface_Define_ProcessObject( SinkObject, ProcessObject ); - cpPlugins_Interface_Define_ProcessObject( FilterObject, ProcessObject ); - cpPlugins_Interface_Define_ProcessObject( ImageSource, SourceObject ); - cpPlugins_Interface_Define_ProcessObject( MeshSource, SourceObject ); - cpPlugins_Interface_Define_ProcessObject( ImageSink, SinkObject ); - cpPlugins_Interface_Define_ProcessObject( MeshSink, SinkObject ); - cpPlugins_Interface_Define_ProcessObject( ImageToImageFitler, FilterObject ); - cpPlugins_Interface_Define_ProcessObject( ImageToMeshFitler, FilterObject ); - cpPlugins_Interface_Define_ProcessObject( MeshToImageFitler, FilterObject ); - cpPlugins_Interface_Define_ProcessObject( MeshToMeshFitler, FilterObject ); + cpPlugins_Define_ProcessObject( SourceObject, ProcessObject ); + cpPlugins_Define_ProcessObject( SinkObject, ProcessObject ); + cpPlugins_Define_ProcessObject( FilterObject, ProcessObject ); + cpPlugins_Define_ProcessObject( ImageSource, SourceObject ); + cpPlugins_Define_ProcessObject( MeshSource, SourceObject ); + cpPlugins_Define_ProcessObject( ImageSink, SinkObject ); + cpPlugins_Define_ProcessObject( MeshSink, SinkObject ); + cpPlugins_Define_ProcessObject( ImageToImageFilter, FilterObject ); + cpPlugins_Define_ProcessObject( ImageToMeshFilter, FilterObject ); + cpPlugins_Define_ProcessObject( MeshToImageFilter, FilterObject ); + cpPlugins_Define_ProcessObject( MeshToMeshFilter, FilterObject ); } // ecapseman