X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=51cf06742c0ccb72ce01c3d9d9c2cf97e4266055;hb=4f6c47b5d9994cd1bbb601bfe8bc087a0a619e72;hp=742db572c0b00b49c8ba4aae762fd3f4b7381179;hpb=2361f4f97631e09d88d8a5510a369817dcaa19db;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index 742db57..51cf067 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -1,23 +1,29 @@ #ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ -#include +#include +#include #include #include #include -#include +#ifdef cpPlugins_Interface_QT4 +class QWidget; +#else +typedef char QWidget +#endif // cpPlugins_Interface_QT4 -#define ITK_MANUAL_INSTANTIATION #include +class vtkAlgorithm; + namespace cpPlugins { namespace Interface { /** */ - class cpPlugins_EXPORT ProcessObject + class cpPlugins_Interface_EXPORT ProcessObject : public Object { public: @@ -30,6 +36,11 @@ namespace cpPlugins itkTypeMacro( ProcessObject, Object ); public: + virtual vtkAlgorithm* GetVTKAlgorithm( ) + { return( NULL ); } + virtual const vtkAlgorithm* GetVTKAlgorithm( ) const + { return( NULL ); } + virtual const Parameters& GetDefaultParameters( ) const; virtual void SetParameters( const Parameters& params ); @@ -40,23 +51,30 @@ namespace cpPlugins virtual void SetNumberOfOutputs( unsigned int n ); virtual void SetInput( unsigned int idx, DataObject* dobj ); - virtual DataObject* GetOutput( unsigned int idx ); virtual std::string Update( ); virtual void DisconnectOutputs( ); + virtual bool ExecConfigurationDialog( QWidget* parent ); + + template< class T > + inline T* GetInput( unsigned int idx ); + + template< class T > + inline const T* GetInput( unsigned int idx ) const; + + template< class T > + inline T* GetOutput( unsigned int idx ); + + template< class T > + inline const T* GetOutput( unsigned int idx ) const; + protected: ProcessObject( ); virtual ~ProcessObject( ); template< class O > - void _MakeOutput( unsigned int idx ) - { - if( idx >= this->m_Outputs.size( ) ) - return; - this->m_Outputs[ idx ] = O::New( ); - this->m_Outputs[ idx ]->SetSource( this ); - } + inline void _MakeOutput( unsigned int idx ); virtual std::string _GenerateData( ) = 0; @@ -78,562 +96,7 @@ namespace cpPlugins } // ecapseman -// ------------------------------------------------------------------------- -#define cpPlugins_Image_Demangle_Methods( c ) \ - std::string _DemangleImageDimension( itk::DataObject* o ); \ - std::string _DemangleImagePixel( unsigned int d, itk::DataObject* o ); - -// ------------------------------------------------------------------------- -#define cpPlugins_Image_Demangle_Methods_Code( c, f ) \ - std::string c::_DemangleImageDimension( itk::DataObject* o ) \ - { \ - std::string r = ""; \ - if( dynamic_cast< itk::ImageBase< 1 >* >( o ) != NULL ) \ - { \ - cpPlugins_Image_Array_Demangle( \ - itk::Vector, float, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, double, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, float, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, double, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, float, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, double, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, float, 1, 1, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, double, 1, 1, o, f, r \ - ); \ - else r = this->_DemangleImagePixel( 1, o ); \ - } \ - else if( dynamic_cast< itk::ImageBase< 2 >* >( o ) != NULL ) \ - { \ - cpPlugins_Image_Demangle( \ - itk::RGBPixel< char >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< short >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned char >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned short >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< char >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< short >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned char >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned short >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, float, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, double, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, float, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, double, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, float, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, double, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, float, 2, 2, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, double, 2, 2, o, f, r \ - ); \ - else r = this->_DemangleImagePixel( 2, o ); \ - } \ - else if( dynamic_cast< itk::ImageBase< 3 >* >( o ) != NULL ) \ - { \ - cpPlugins_Image_Demangle( \ - itk::RGBPixel< char >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< short >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned char >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned short >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< char >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< short >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned char >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned short >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, float, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, double, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, float, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, double, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, float, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, double, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, float, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, double, 3, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::DiffusionTensor3D< float >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::DiffusionTensor3D< double >, 3, o, f, r \ - ); \ - else r = this->_DemangleImagePixel( 3, o ); \ - } \ - else if( dynamic_cast< itk::ImageBase< 4 >* >( o ) != NULL ) \ - { \ - cpPlugins_Image_Demangle( \ - itk::RGBPixel< char >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< short >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned char >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBPixel< unsigned short >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< char >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< short >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned char >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::RGBAPixel< unsigned short >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, float, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Vector, double, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, float, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::Point, double, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, float, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::CovariantVector, double, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, float, 4, 4, o, f, r \ - ); \ - else cpPlugins_Image_Array_Demangle( \ - itk::SymmetricSecondRankTensor, double, 4, 4, o, f, r \ - ); \ - else r = this->_DemangleImagePixel( 4, o ); \ - } \ - else \ - r = \ - std::string( #c ) + \ - std::string( ": Image dimension not supported." ); \ - return( r ); \ - } \ - std::string c::_DemangleImagePixel( \ - unsigned int d, itk::DataObject* o \ - ) \ - { \ - std::string r = ""; \ - if( d == 1 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< float >, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< double >, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::Offset< 1 >, 1, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 2 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< float >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< double >, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::Offset< 2 >, 2, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 3 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< float >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< double >, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::Offset< 3 >, 3, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 4 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< float >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - std::complex< double >, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - itk::Offset< 4 >, 4, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else \ - r = \ - std::string( #c ) + \ - std::string( ": Image dimension not supported." ); \ - return( r ); \ - } - -// ------------------------------------------------------------------------- -#define cpPlugins_Image_Demangle_Methods_Code_Only_Scalars( c, f ) \ - std::string c::_DemangleImageDimension( itk::DataObject* o ) \ - { \ - std::string r = ""; \ - if( dynamic_cast< itk::ImageBase< 1 >* >( o ) != NULL ) \ - r = this->_DemangleImagePixel( 1, o ); \ - else if( dynamic_cast< itk::ImageBase< 2 >* >( o ) != NULL ) \ - r = this->_DemangleImagePixel( 2, o ); \ - else if( dynamic_cast< itk::ImageBase< 3 >* >( o ) != NULL ) \ - r = this->_DemangleImagePixel( 3, o ); \ - else if( dynamic_cast< itk::ImageBase< 4 >* >( o ) != NULL ) \ - r = this->_DemangleImagePixel( 4, o ); \ - else \ - r = \ - std::string( #c ) + \ - std::string( ": Image dimension not supported." ); \ - return( r ); \ - } \ - std::string c::_DemangleImagePixel( \ - unsigned int d, itk::DataObject* o \ - ) \ - { \ - std::string r = ""; \ - if( d == 1 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 1, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 1, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 2 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 2, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 2, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 3 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 3, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 3, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else if( d == 4 ) \ - { \ - cpPlugins_Image_Demangle( \ - char, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - short, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - int, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - long, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned char, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned short, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned int, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - unsigned long, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - float, 4, o, f, r \ - ); \ - else cpPlugins_Image_Demangle( \ - double, 4, o, f, r \ - ); \ - else r = std::string( #c ) + std::string( ": Image type." ); \ - } \ - else \ - r = \ - std::string( #c ) + \ - std::string( ": Image dimension not supported." ); \ - return( r ); \ - } +#include #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__