]> 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 GetInput( const std::string& id )
8 {
9   auto i = this->m_Inputs.find( id );
10   if( i != this->m_Inputs.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 GetInput( const std::string& id ) const
20 {
21   auto i = this->m_Inputs.find( id );
22   if( i != this->m_Inputs.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 GetOutput( const std::string& id )
32 {
33   auto i = this->m_Outputs.find( id );
34   if( i != this->m_Outputs.end( ) )
35     return( dynamic_cast< _TType* >( i->second.GetPointer( ) ) );
36   else
37     return( NULL );
38 }
39
40 // -------------------------------------------------------------------------
41 template< class _TType >
42 const _TType* cpPlugins::ProcessObject::
43 GetOutput( const std::string& id ) const
44 {
45   auto i = this->m_Outputs.find( id );
46   if( i != this->m_Outputs.end( ) )
47     return( dynamic_cast< const _TType* >( i->second.GetPointer( ) ) );
48   else
49     return( NULL );
50 }
51
52 // -------------------------------------------------------------------------
53 template< class _TType >
54 _TType* cpPlugins::ProcessObject::
55 GetInputData( const std::string& name )
56 {
57   auto in = this->GetInput( name );
58   if( in != NULL )
59   {
60     auto i = in->GetITK< _TType >( );
61     auto v = in->GetVTK< _TType >( );
62     if     ( i != NULL ) return( i );
63     else if( v != NULL ) return( v );
64     else                 return( NULL );
65   }
66   else
67     return( NULL );
68 }
69
70 // -------------------------------------------------------------------------
71 template< class _TType >
72 _TType* cpPlugins::ProcessObject::
73 GetOutputData( const std::string& name )
74 {
75   auto out = this->GetOutput( name );
76   if( out != NULL )
77   {
78     auto i = out->GetITK< _TType >( );
79     auto v = out->GetVTK< _TType >( );
80     if     ( i != NULL ) return( i );
81     else if( v != NULL ) return( v );
82     else                 return( NULL );
83   }
84   else
85     return( NULL );
86 }
87
88 // -------------------------------------------------------------------------
89 template< class _TType >
90 bool cpPlugins::ProcessObject::
91 SetInput( const std::string& id, _TType* obj )
92 {
93   auto i = this->m_Inputs.find( id );
94   if( i != this->m_Inputs.end( ) )
95   {
96     i->second = obj;
97     this->Modified( );
98     return( true );
99   }
100   else
101     return( false );
102 }
103
104 // -------------------------------------------------------------------------
105 template< class O >
106 void cpPlugins::ProcessObject::
107 _AddOutput( const std::string& name )
108 {
109   auto i = this->m_Outputs.find( name );
110   if( i == this->m_Outputs.end( ) )
111   {
112     typename O::Pointer o = O::New( );
113     o->SetSource( this );
114     this->m_Outputs[ name ] = o;
115     this->Modified( );
116
117   } // fi
118 }
119
120 // -------------------------------------------------------------------------
121 template< class F >
122 F* cpPlugins::ProcessObject::
123 _CreateITK( )
124 {
125   F* filter = this->GetITK< F >( );
126   if( filter == NULL )
127   {
128     typename F::Pointer filter_ptr = F::New( );
129     this->m_ITKObject = filter_ptr;
130     this->m_VTKObject = NULL;
131     filter = filter_ptr.GetPointer( );
132     this->Modified( );
133
134   } // fi
135   return( filter );
136 }
137
138 // -------------------------------------------------------------------------
139 template< class F >
140 F* cpPlugins::ProcessObject::
141 _CreateVTK( )
142 {
143   F* filter = this->GetVTK< F >( );
144   if( filter == NULL )
145   {
146     vtkSmartPointer< F > filter_ptr = vtkSmartPointer< F >::New( );
147     this->m_ITKObject = NULL;
148     this->m_VTKObject = filter_ptr;
149     filter = filter_ptr.GetPointer( );
150     this->Modified( );
151
152   } // fi
153   return( filter );
154 }
155
156 #endif // __CPPLUGINS__PROCESSOBJECT__HXX__
157
158 // eof - $RCSfile$