]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/Visualization/MPR3DActors.cxx
Some minor visualization bugs.
[cpPlugins.git] / lib / cpExtensions / Visualization / MPR3DActors.cxx
1 #include <cpExtensions/Visualization/MPR3DActors.h>
2 #include <cpExtensions/Visualization/ImageSliceActors.h>
3 #include <cpExtensions/Visualization/LUTImageActor.h>
4 #include <cpExtensions/Visualization/WindowLevelImageActor.h>
5 #include <vtkActor.h>
6 #include <vtkImageProperty.h>
7 #include <vtkPolyData.h>
8
9 // -------------------------------------------------------------------------
10 cpExtensions::Visualization::MPR3DActors::
11 Self* cpExtensions::Visualization::MPR3DActors::
12 New( )
13 {
14   return( new Self( ) );
15 }
16
17 // -------------------------------------------------------------------------
18 vtkImageData* cpExtensions::Visualization::MPR3DActors::
19 GetImage( )
20 {
21   return( this->m_Slices[ 0 ]->GetImage( ) );
22 }
23
24 // -------------------------------------------------------------------------
25 const vtkImageData* cpExtensions::Visualization::MPR3DActors::
26 GetImage( ) const
27 {
28   return( this->m_Slices[ 0 ]->GetImage( ) );
29 }
30
31 // -------------------------------------------------------------------------
32 cpExtensions::Visualization::
33 WindowLevelImageActor* cpExtensions::Visualization::MPR3DActors::
34 GetWindowLevelImageActor( int o )
35 {
36   return( this->m_Slices[ o % 3 ]->GetWindowLevelImageActor( ) );
37 }
38
39 // -------------------------------------------------------------------------
40 const cpExtensions::Visualization::
41 WindowLevelImageActor* cpExtensions::Visualization::MPR3DActors::
42 GetWindowLevelImageActor( int o ) const
43 {
44   return( this->m_Slices[ o % 3 ]->GetWindowLevelImageActor( ) );
45 }
46
47 // -------------------------------------------------------------------------
48 cpExtensions::Visualization::
49 LUTImageActor* cpExtensions::Visualization::MPR3DActors::
50 GetLUTImageActor( int o )
51 {
52   return( this->m_Slices[ o % 3 ]->GetLUTImageActor( ) );
53 }
54
55 // -------------------------------------------------------------------------
56 const cpExtensions::Visualization::
57 LUTImageActor* cpExtensions::Visualization::MPR3DActors::
58 GetLUTImageActor( int o ) const
59 {
60   return( this->m_Slices[ o % 3 ]->GetLUTImageActor( ) );
61 }
62
63 // -------------------------------------------------------------------------
64 cpExtensions::Visualization::
65 ImageOutlineActor* cpExtensions::Visualization::MPR3DActors::
66 GetImageOutlineActor( int o )
67 {
68   return( this->m_Slices[ o % 3 ]->GetImageOutlineActor( ) );
69 }
70
71 // -------------------------------------------------------------------------
72 const cpExtensions::Visualization::
73 ImageOutlineActor* cpExtensions::Visualization::MPR3DActors::
74 GetImageOutlineActor( int o ) const
75 {
76   return( this->m_Slices[ o % 3 ]->GetImageOutlineActor( ) );
77 }
78
79 // -------------------------------------------------------------------------
80 int cpExtensions::Visualization::MPR3DActors::
81 GetSliceNumber( int o ) const
82 {
83   return( this->m_Slices[ o % 3 ]->GetSliceNumber( ) );
84 }
85
86 // -------------------------------------------------------------------------
87 void cpExtensions::Visualization::MPR3DActors::
88 SetImage( vtkImageData* image )
89 {
90   this->RemoveAllItems( );
91   for( int i = 0; i < 3; ++i )
92   {
93     this->m_Slices[ i ]->SetImage( image, i );
94     this->m_Slices[ i ]->InitTraversal( );
95     while( vtkProp* p = this->m_Slices[ i ]->GetNextProp( ) )
96       this->AddItem( p );
97     
98   } // rof
99 }
100
101 // -------------------------------------------------------------------------
102 unsigned int cpExtensions::Visualization::MPR3DActors::
103 AddLUTImage( vtkImageData* image )
104 {
105   for( int i = 0; i < 3; ++i )
106   {
107     this->m_Slices[ i ]->AddLUTImage( image );
108     this->AddItem( this->m_Slices[ i ]->GetLUTImageActor( ) );
109
110   } // rof
111 }
112
113 // -------------------------------------------------------------------------
114 void cpExtensions::Visualization::MPR3DActors::
115 SetSliceNumber( int o, int s )
116 {
117   this->m_Slices[ o % 3 ]->SetSliceNumber( s );
118 }
119
120 // -------------------------------------------------------------------------
121 vtkActor* cpExtensions::Visualization::MPR3DActors::
122 AddMesh( vtkPolyData* mesh )
123 {
124   TMeshActor actor;
125   actor.SetMesh( mesh );
126   this->m_Meshes[ mesh ] = actor;
127   this->AddItem( actor.GetActor( ) );
128   return( actor.GetActor( ) );
129 }
130
131 // -------------------------------------------------------------------------
132 void cpExtensions::Visualization::MPR3DActors::
133 SetScalarRange( double r[ 2 ] )
134 {
135   this->m_Slices[ 0 ]->
136     GetWindowLevelImageActor( )->ConfigureWindowLevel( r[ 0 ], r[ 1 ] );
137   this->m_Slices[ 1 ]->
138     GetWindowLevelImageActor( )->ConfigureWindowLevel( r[ 0 ], r[ 1 ] );
139   this->m_Slices[ 2 ]->
140     GetWindowLevelImageActor( )->ConfigureWindowLevel( r[ 0 ], r[ 1 ] );
141 }
142
143 // -------------------------------------------------------------------------
144 void cpExtensions::Visualization::MPR3DActors::
145 SetWindowLevel( double wl[ 2 ] )
146 {
147   this->m_Slices[ 0 ]->
148     GetWindowLevelImageActor( )->SetWindowLevel( wl[ 0 ], wl[ 1 ] );
149   this->m_Slices[ 1 ]->
150     GetWindowLevelImageActor( )->SetWindowLevel( wl[ 0 ], wl[ 1 ] );
151   this->m_Slices[ 2 ]->
152     GetWindowLevelImageActor( )->SetWindowLevel( wl[ 0 ], wl[ 1 ] );
153 }
154
155 // -------------------------------------------------------------------------
156 void cpExtensions::Visualization::MPR3DActors::
157 SetImageOpacity( double o )
158 {
159   this->m_Slices[ 0 ]->GetWindowLevelImageActor( )->
160     GetProperty( )->SetOpacity( o );
161   this->m_Slices[ 1 ]->GetWindowLevelImageActor( )->
162     GetProperty( )->SetOpacity( o );
163   this->m_Slices[ 2 ]->GetWindowLevelImageActor( )->
164     GetProperty( )->SetOpacity( o );
165 }
166
167 // -------------------------------------------------------------------------
168 void cpExtensions::Visualization::MPR3DActors::
169 SetImageInterpolation( unsigned char i )
170 {
171   // TODO
172 }
173
174 // -------------------------------------------------------------------------
175 cpExtensions::Visualization::MPR3DActors::
176 MPR3DActors( )
177   : Superclass( )
178 {
179   this->m_Slices[ 0 ] = vtkSmartPointer< ImageSliceActors >::New( );
180   this->m_Slices[ 1 ] = vtkSmartPointer< ImageSliceActors >::New( );
181   this->m_Slices[ 2 ] = vtkSmartPointer< ImageSliceActors >::New( );
182 }
183
184 // -------------------------------------------------------------------------
185 cpExtensions::Visualization::MPR3DActors::
186 ~MPR3DActors( )
187 {
188 }
189
190 // eof - $RCSfile$