]> 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 GetInputData( const std::string& name )
8 {
9   auto in = this->GetInput( name );
10   if( in != NULL )
11   {
12     auto i = in->GetITK< _TType >( );
13     auto v = in->GetVTK< _TType >( );
14     if     ( i != NULL ) return( i );
15     else if( v != NULL ) return( v );
16     else                 return( NULL );
17   }
18   else
19     return( NULL );
20 }
21
22 // -------------------------------------------------------------------------
23 template< class _TType >
24 _TType* cpPlugins::ProcessObject::
25 GetOutputData( const std::string& name )
26 {
27   auto out = this->GetOutput( name );
28   if( out != NULL )
29   {
30     auto i = out->GetITK< _TType >( );
31     auto v = out->GetVTK< _TType >( );
32     if     ( i != NULL ) return( i );
33     else if( v != NULL ) return( v );
34     else                 return( NULL );
35   }
36   else
37     return( NULL );
38 }
39
40 // -------------------------------------------------------------------------
41 template< class O >
42 void cpPlugins::ProcessObject::
43 _AddOutput( const std::string& name )
44 {
45   auto i = this->m_Outputs.find( name );
46   if( i == this->m_Outputs.end( ) )
47   {
48     typename O::Pointer o = O::New( );
49     o->SetSource( this );
50     this->m_Outputs[ name ] = o;
51     this->Modified( );
52
53   } // fi
54 }
55
56 // -------------------------------------------------------------------------
57 template< class F >
58 F* cpPlugins::ProcessObject::
59 _CreateITK( )
60 {
61   F* filter = this->GetITK< F >( );
62   if( filter == NULL )
63   {
64     typename F::Pointer filter_ptr = F::New( );
65     this->m_ITKObject = filter_ptr;
66     this->m_VTKObject = NULL;
67     filter = filter_ptr.GetPointer( );
68     this->Modified( );
69
70   } // fi
71   return( filter );
72 }
73
74 // -------------------------------------------------------------------------
75 template< class F >
76 F* cpPlugins::ProcessObject::
77 _CreateVTK( )
78 {
79   F* filter = this->GetVTK< F >( );
80   if( filter == NULL )
81   {
82     vtkSmartPointer< F > filter_ptr = vtkSmartPointer< F >::New( );
83     this->m_ITKObject = NULL;
84     this->m_VTKObject = filter_ptr;
85     filter = filter_ptr.GetPointer( );
86     this->Modified( );
87
88   } // fi
89   return( filter );
90 }
91
92 #endif // __CPPLUGINS__PROCESSOBJECT__HXX__
93
94 // eof - $RCSfile$