X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=e139c994d5e86f9107963ae6acea31fcd626d564;hb=6ffc11d77924d6ab7e94db95d41105982ac73e00;hp=b6cf116e680d730dd7e35632673b64f6e1c2f1f8;hpb=94411ee4209d15d6d1cf25bb817675f76f7ea5c0;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index b6cf116..e139c99 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -1,33 +1,27 @@ #ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ +#include #include -#include +#include +#include #include -#include -#include -#include - // Some forward declarations class vtkRenderWindowInteractor; -#ifdef cpPlugins_Interface_QT4 -class QWidget; -#else -typedef char QWidget; -#endif // cpPlugins_Interface_QT4 namespace cpPlugins { namespace Interface { // Some forward declarations - class Plugins; #ifdef cpPlugins_Interface_QT4 class ParametersQtDialog; + class SimpleMPRWidget; #else typedef char ParametersQtDialog; + typedef char SimpleMPRWidget; #endif // cpPlugins_Interface_QT4 /** @@ -43,90 +37,69 @@ namespace cpPlugins typedef Parameters TParameters; typedef std::set< vtkRenderWindowInteractor* > TInteractors; - - enum DialogResult - { - DialogResult_NoModal = 0, - DialogResult_Modal, - DialogResult_Cancel - }; + typedef bool DialogResult; public: itkTypeMacro( ProcessObject, Object ); cpPlugins_Id_Macro( ProcessObject, BaseObject ); - itkBooleanMacro( Interactive ); - itkGetConstObjectMacro( Parameters, TParameters ); + itkGetObjectMacro( Parameters, TParameters ); - itkGetConstMacro( Plugins, const Plugins* ); - itkGetMacro( Plugins, Plugins* ); - itkGetConstMacro( Interactive, bool ); + itkGetMacro( ParametersDialog, ParametersQtDialog* ); + itkGetMacro( SingleInteractor, vtkRenderWindowInteractor* ); + itkGetMacro( MPRViewer, SimpleMPRWidget* ); - itkSetObjectMacro( Plugins, Plugins ); - itkSetMacro( Interactive, bool ); + itkSetObjectMacro( ParametersDialog, ParametersQtDialog ); + itkSetObjectMacro( SingleInteractor, vtkRenderWindowInteractor ); + itkSetObjectMacro( MPRViewer, SimpleMPRWidget ); public: - // To impact pipeline - virtual void Modified( ) const; + virtual void SetITK( itk::LightObject* o ); + virtual void SetVTK( vtkObjectBase* o ); - virtual void GetInputsNames( std::set< std::string >& names ) const; - virtual void GetOutputsNames( std::set< std::string >& names ) const; + // IO management + std::set< std::string > GetInputsNames( ) const; + std::set< std::string > GetOutputsNames( ) const; unsigned int GetNumberOfInputs( ) const; unsigned int GetNumberOfOutputs( ) const; - virtual bool SetOutputObjectName( - const std::string& new_object_name, - const std::string& output_name - ); - - virtual void SetInput( const std::string& id, DataObject* dobj ); - - virtual std::string Update( ); - virtual void DisconnectOutputs( ); - - virtual void AddInteractor( vtkRenderWindowInteractor* interactor ); - virtual DialogResult ExecConfigurationDialog( QWidget* parent ); - - template< class T > - inline T* GetITK( ); + OutputProcessObjectPort& GetOutput( const std::string& id ); + const OutputProcessObjectPort& GetOutput( const std::string& id ) const; template< class T > - inline const T* GetITK( ) const; - + inline T* GetInputData( const std::string& id ); template< class T > - inline T* GetVTK( ); - + inline const T* GetInputData( const std::string& id ) const; template< class T > - inline const T* GetVTK( ) const; - + inline T* GetOutputData( const std::string& id ); template< class T > - inline T* GetInput( const std::string& id ); + inline const T* GetOutputData( const std::string& id ) const; - template< class T > - inline const T* GetInput( const std::string& id ) const; + bool SetInput( + const std::string& id, const OutputProcessObjectPort& port + ); - template< class T > - inline T* GetOutput( const std::string& id ); + void DisconnectInputs( ); + void DisconnectOutputs( ); + void Disconnect( ); - template< class T > - inline const T* GetOutput( const std::string& id ) const; + // Pipeline execution + virtual itk::ModifiedTimeType GetMTime( ) const; + virtual std::string Update( ); protected: ProcessObject( ); virtual ~ProcessObject( ); - virtual void _AddInput( const std::string& name ); - + void _AddInput( const std::string& name, bool required = true ); + template< class O > + inline void _AddOutput( const std::string& name ); template< class F > inline F* _CreateITK( ); - template< class F > inline F* _CreateVTK( ); - template< class O > - inline void _MakeOutput( const std::string& id ); - virtual std::string _GenerateData( ) = 0; private: @@ -135,25 +108,18 @@ namespace cpPlugins Self& operator=( const Self& ); protected: - itk::ProcessObject::Pointer m_ITKObject; - vtkSmartPointer< vtkAlgorithm > m_VTKObject; - + typedef std::map< std::string, InputProcessObjectPort > _TInputs; + typedef std::map< std::string, OutputProcessObjectPort > _TOutputs; + _TInputs m_Inputs; + _TOutputs m_Outputs; Parameters::Pointer m_Parameters; - ParametersQtDialog* m_ParametersDialog; - TInteractors m_Interactors; - Plugins* m_Plugins; - bool m_Interactive; - - typedef std::map< std::string, DataObject::Pointer > _TDataContainer; - _TDataContainer m_Inputs; - _TDataContainer m_Outputs; - std::map< std::string, std::string > m_OutputObjectsNames; - }; - /** - * Plugin provider - */ - CPPLUGINS_PROVIDER_HEADER( ProcessObject ); + itk::ModifiedTimeType m_LastExecutionTime; + + ParametersQtDialog* m_ParametersDialog; + vtkRenderWindowInteractor* m_SingleInteractor; + SimpleMPRWidget* m_MPRViewer; + }; } // ecapseman