]> Creatis software - cpPlugins.git/blob - lib/ivq/VTK/MPRViewers.cxx
...
[cpPlugins.git] / lib / ivq / VTK / MPRViewers.cxx
1 /* =======================================================================
2  * @author: Leonardo Florez-Valencia
3  * @email: florez-l@javeriana.edu.co
4  * =======================================================================
5  */
6
7 #include <ivq/VTK/MPRViewers.h>
8
9 #include <ivq/VTK/InteractorStyleImage.h>
10 #include <ivq/VTK/ImageViewer.h>
11
12 // -------------------------------------------------------------------------
13 ivq::VTK::MPRViewers::
14 Self* ivq::VTK::MPRViewers::
15 New( )
16 {
17   return( new Self( ) );
18 }
19
20 // -------------------------------------------------------------------------
21 void ivq::VTK::MPRViewers::
22 Render( )
23 {
24   for( unsigned int i = 0; i < 3; ++i )
25     if( this->Viewers[ i ].GetPointer( ) != NULL )
26       this->Viewers[ i ]->Render( );
27 }
28
29 // -------------------------------------------------------------------------
30 void ivq::VTK::MPRViewers::
31 SetInputData( vtkImageData* in )
32 {
33   bool need_to_configure = false;
34   for( unsigned int i = 0; i < 3; ++i )
35     need_to_configure |= ( this->Viewers[ i ].GetPointer( ) == NULL );
36   if( need_to_configure )
37     this->_ConfigureViews( );
38   for( unsigned int i = 0; i < 3; ++i )
39   {
40     this->Viewers[ i ]->SetInputData( in );
41     this->Viewers[ i ]->SetSliceOrientation( i );
42
43   } // rof
44   for( unsigned int i = 0; i < 3; ++i )
45     for( unsigned int j = 0; j < 3; ++j )
46       if( i != j )
47         this->Viewers[ i ]->GetInteractorStyle( )->
48           AddOtherViewer( this->Viewers[ j ] );
49 }
50
51 // -------------------------------------------------------------------------
52 vtkImageData* ivq::VTK::MPRViewers::
53 GetInput( )
54 {
55   if( this->Viewers[ 0 ].GetPointer( ) != NULL )
56     return( this->Viewers[ 0 ]->GetInput( ) );
57   else
58     return( NULL );
59 }
60
61 // -------------------------------------------------------------------------
62 void ivq::VTK::MPRViewers::
63 SetInputConnection( vtkAlgorithmOutput* input )
64 {
65   bool need_to_configure = false;
66   for( unsigned int i = 0; i < 3; ++i )
67     need_to_configure |= ( this->Viewers[ i ].GetPointer( ) == NULL );
68   if( need_to_configure )
69     this->_ConfigureViews( );
70   for( unsigned int i = 0; i < 3; ++i )
71   {
72     this->Viewers[ i ]->SetInputConnection( input );
73     this->Viewers[ i ]->SetSliceOrientation( i );
74
75   } // rof
76   for( unsigned int i = 0; i < 3; ++i )
77     for( unsigned int j = 0; j < 3; ++j )
78       if( i != j )
79         this->Viewers[ i ]->GetInteractorStyle( )->
80           AddOtherViewer( this->Viewers[ j ] );
81 }
82
83 // -------------------------------------------------------------------------
84 ivq::VTK::ImageViewer* ivq::VTK::MPRViewers::
85 GetView( int o )
86 {
87   if( o < 3 )
88     return( this->Viewers[ o ].GetPointer( ) );
89   else
90     return( NULL );
91 }
92
93 // -------------------------------------------------------------------------
94 const ivq::VTK::ImageViewer* ivq::VTK::MPRViewers::
95 GetView( int o ) const
96 {
97   if( o < 3 )
98     return( this->Viewers[ o ].GetPointer( ) );
99   else
100     return( NULL );
101 }
102
103 // -------------------------------------------------------------------------
104 void ivq::VTK::MPRViewers::
105 SetView( int o, ivq::VTK::ImageViewer* v )
106 {
107   if( o < 3 )
108     this->Viewers[ o ] = v;
109 }
110
111 // -------------------------------------------------------------------------
112 double ivq::VTK::MPRViewers::
113 GetColorWindow( )
114 {
115   if( this->Viewers[ 0 ].GetPointer( ) != NULL )
116     return( this->Viewers[ 0 ]->GetColorWindow( ) );
117   else
118     return( 0 );
119 }
120
121 // -------------------------------------------------------------------------
122 double ivq::VTK::MPRViewers::
123 GetColorLevel( )
124 {
125   if( this->Viewers[ 0 ].GetPointer( ) != NULL )
126     return( this->Viewers[ 0 ]->GetColorLevel( ) );
127   else
128     return( 0 );
129 }
130
131 // -------------------------------------------------------------------------
132 void ivq::VTK::MPRViewers::
133 SetColorWindow( double s )
134 {
135   for( unsigned int i = 0; i < 3; ++i )
136     if( this->Viewers[ i ].GetPointer( ) != NULL )
137       this->Viewers[ i ]->SetColorWindow( s );
138 }
139
140 // -------------------------------------------------------------------------
141 void ivq::VTK::MPRViewers::
142 SetColorLevel( double s )
143 {
144   for( unsigned int i = 0; i < 3; ++i )
145     if( this->Viewers[ i ].GetPointer( ) != NULL )
146       this->Viewers[ i ]->SetColorLevel( s );
147 }
148
149 // -------------------------------------------------------------------------
150 void ivq::VTK::MPRViewers::
151 ResetCameras( )
152 {
153   for( unsigned int i = 0; i < 3; ++i )
154     if( this->Viewers[ i ].GetPointer( ) != NULL )
155       this->Viewers[ i ]->ResetCamera( );
156 }
157
158 // -------------------------------------------------------------------------
159 void ivq::VTK::MPRViewers::
160 Initialize( )
161 {
162   for( unsigned int i = 0; i < 3; ++i )
163     if( this->Viewers[ i ].GetPointer( ) != NULL )
164       this->Viewers[ i ]->Initialize( );
165 }
166
167 // -------------------------------------------------------------------------
168 void ivq::VTK::MPRViewers::
169 Start( )
170 {
171   for( unsigned int i = 0; i < 3; ++i )
172     if( this->Viewers[ i ].GetPointer( ) != NULL )
173       this->Viewers[ i ]->Start( );
174 }
175
176 // -------------------------------------------------------------------------
177 ivq::VTK::MPRViewers::
178 MPRViewers( )
179   : Superclass( )
180 {
181 }
182
183 // -------------------------------------------------------------------------
184 ivq::VTK::MPRViewers::
185 ~MPRViewers( )
186 {
187 }
188
189 // -------------------------------------------------------------------------
190 void ivq::VTK::MPRViewers::
191 _ConfigureViews( )
192 {
193   for( unsigned int i = 0; i < 3; ++i )
194     this->Viewers[ i ] = vtkSmartPointer< ivq::VTK::ImageViewer >::New( );
195 }
196
197 // eof - $RCSfile$