X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=9548d48167c19fda02e1fdb2fa897c0afdb6c348;hb=2eaf38cfdcbd2cfb0cc323dad6ded6bbeb436edf;hp=7cf63765c206464b05c7c12e37cc202ba751ff77;hpb=9015cf98c60cf4ab304a639990004ee783a8bec0;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index 7cf6376..9548d48 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -2,13 +2,25 @@ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #include + +#include + +#include #include #include #include -#define ITK_MANUAL_INSTANTIATION +#ifdef cpPlugins_Interface_QT4 +class QWidget; +#else +typedef char QWidget +#endif // cpPlugins_Interface_QT4 + #include +#include +#include + namespace cpPlugins { namespace Interface @@ -24,42 +36,69 @@ namespace cpPlugins typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; + typedef Parameters TParameters; + public: itkTypeMacro( ProcessObject, Object ); + cpPlugins_Id_Macro( + cpPlugins::Interface::ProcessObject, "BaseObject" + ); public: - virtual const Parameters& GetDefaultParameters( ) const; - virtual void SetParameters( const Parameters& params ); + // To impact pipeline + virtual void Modified( ) const; + + virtual TParameters* GetParameters( ); + virtual const TParameters* GetParameters( ) const; virtual unsigned int GetNumberOfInputs( ) const; virtual unsigned int GetNumberOfOutputs( ) const; - virtual void SetNumberOfInputs( unsigned int n ); - virtual void SetNumberOfOutputs( unsigned int n ); - - virtual void SetInput( unsigned int idx, DataObject* dobj ); - virtual DataObject* GetOutput( unsigned int idx ); + virtual void SetInput( const std::string& id, DataObject* dobj ); virtual std::string Update( ); virtual void DisconnectOutputs( ); + virtual bool ExecConfigurationDialog( QWidget* parent ); + + template< class T > + inline T* GetITK( ); + + template< class T > + inline const T* GetITK( ) const; + + template< class T > + inline T* GetVTK( ); + + template< class T > + inline const T* GetVTK( ) const; + + template< class T > + inline T* GetInput( const std::string& id ); + + template< class T > + inline const T* GetInput( const std::string& id ) const; + + template< class T > + inline T* GetOutput( const std::string& id ); + + template< class T > + inline const T* GetOutput( const std::string& id ) const; + protected: ProcessObject( ); virtual ~ProcessObject( ); - /* TODO - virtual itk::DataObject* _GetInput( unsigned int idx ); - virtual void _SetOutput( unsigned int idx, itk::DataObject* dobj ); - */ + virtual void _AddInput( const std::string& name ); + + template< class F > + inline F* _CreateITK( ); + + template< class F > + inline F* _CreateVTK( ); 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( const std::string& id ); virtual std::string _GenerateData( ) = 0; @@ -69,18 +108,22 @@ namespace cpPlugins Self& operator=( const Self& ); protected: - itk::ProcessObject::Pointer m_RealProcessObject; - Parameters m_DefaultParameters; - Parameters m_Parameters; + itk::ProcessObject::Pointer m_ITKObject; + vtkSmartPointer< vtkAlgorithm > m_VTKObject; - std::vector< DataObject::Pointer > m_Inputs; - std::vector< DataObject::Pointer > m_Outputs; + Parameters::Pointer m_Parameters; + + typedef std::map< std::string, DataObject::Pointer > _TDataContainer; + _TDataContainer m_Inputs; + _TDataContainer m_Outputs; }; } // ecapseman } // ecapseman +#include + #endif // __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ // eof - $RCSfile$