]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/ProcessObject.hxx
...
[cpPlugins.git] / lib / cpPlugins / ProcessObject.hxx
1 #ifndef __CPPLUGINS__PROCESSOBJECT__HXX__
2 #define __CPPLUGINS__PROCESSOBJECT__HXX__
3
4 // -------------------------------------------------------------------------
5 template< class _TType >
6 _TType* cpPlugins::ProcessObject::
7 GetOutput( const std::string& id )
8 {
9   auto i = this->m_Outputs.find( id );
10   if( i != this->m_Outputs.end( ) )
11     return( dynamic_cast< _TType* >( i->second.GetPointer( ) ) );
12   else
13     return( NULL );
14 }
15
16 // -------------------------------------------------------------------------
17 template< class _TType >
18 const _TType* cpPlugins::ProcessObject::
19 GetOutput( const std::string& id ) const
20 {
21   auto i = this->m_Outputs.find( id );
22   if( i != this->m_Outputs.end( ) )
23     return( dynamic_cast< const _TType* >( i->second.GetPointer( ) ) );
24   else
25     return( NULL );
26 }
27
28 // -------------------------------------------------------------------------
29 template< class _TType >
30 _TType* cpPlugins::ProcessObject::
31 GetInputData( const std::string& name )
32 {
33   auto in = this->GetInput( name );
34   if( in != NULL )
35   {
36     auto i = in->GetITK< _TType >( );
37     auto v = in->GetVTK< _TType >( );
38     if     ( i != NULL ) return( i );
39     else if( v != NULL ) return( v );
40     else                 return( NULL );
41   }
42   else
43     return( NULL );
44 }
45
46 // -------------------------------------------------------------------------
47 template< class _TType >
48 _TType* cpPlugins::ProcessObject::
49 GetOutputData( const std::string& name )
50 {
51   auto out = this->GetOutput( name );
52   if( out != NULL )
53   {
54     auto i = out->GetITK< _TType >( );
55     auto v = out->GetVTK< _TType >( );
56     if     ( i != NULL ) return( i );
57     else if( v != NULL ) return( v );
58     else                 return( NULL );
59   }
60   else
61     return( NULL );
62 }
63
64 // -------------------------------------------------------------------------
65 template< class O >
66 void cpPlugins::ProcessObject::
67 _AddOutput( const std::string& name )
68 {
69   auto i = this->m_Outputs.find( name );
70   if( i == this->m_Outputs.end( ) )
71   {
72     typename O::Pointer o = O::New( );
73     o->SetSource( this );
74     this->m_Outputs[ name ] = o;
75     this->Modified( );
76
77   } // fi
78 }
79
80 // -------------------------------------------------------------------------
81 template< class F >
82 F* cpPlugins::ProcessObject::
83 _CreateITK( )
84 {
85   F* filter = this->GetITK< F >( );
86   if( filter == NULL )
87   {
88     typename F::Pointer filter_ptr = F::New( );
89     this->m_ITKObject = filter_ptr;
90     this->m_VTKObject = NULL;
91     filter = filter_ptr.GetPointer( );
92     this->Modified( );
93
94   } // fi
95   return( filter );
96 }
97
98 // -------------------------------------------------------------------------
99 template< class F >
100 F* cpPlugins::ProcessObject::
101 _CreateVTK( )
102 {
103   F* filter = this->GetVTK< F >( );
104   if( filter == NULL )
105   {
106     vtkSmartPointer< F > filter_ptr = vtkSmartPointer< F >::New( );
107     this->m_ITKObject = NULL;
108     this->m_VTKObject = filter_ptr;
109     filter = filter_ptr.GetPointer( );
110     this->Modified( );
111
112   } // fi
113   return( filter );
114 }
115
116 #endif // __CPPLUGINS__PROCESSOBJECT__HXX__
117
118 // eof - $RCSfile$