]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/Visualization/MPR3DActors.cxx
Cast image filter added. ROI filter modified.
[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   unsigned int res = 0;
106   for( int i = 0; i < 3; ++i )
107   {
108     res = this->m_Slices[ i ]->AddLUTImage( image );
109     this->AddItem( this->m_Slices[ i ]->GetLUTImageActor( ) );
110
111   } // rof
112   return( res );
113 }
114
115 // -------------------------------------------------------------------------
116 void cpExtensions::Visualization::MPR3DActors::
117 SetSliceNumber( int o, int s )
118 {
119   this->m_Slices[ o % 3 ]->SetSliceNumber( s );
120 }
121
122 // -------------------------------------------------------------------------
123 vtkActor* cpExtensions::Visualization::MPR3DActors::
124 AddMesh( vtkPolyData* mesh )
125 {
126   TMeshActor actor;
127   actor.SetMesh( mesh );
128   this->m_Meshes[ mesh ] = actor;
129   this->AddItem( actor.GetActor( ) );
130   return( actor.GetActor( ) );
131 }
132
133 // -------------------------------------------------------------------------
134 void cpExtensions::Visualization::MPR3DActors::
135 SetScalarRange( double r[ 2 ] )
136 {
137   this->m_Slices[ 0 ]->GetWindowLevelImageActor( )->SetRange( r );
138   this->m_Slices[ 1 ]->GetWindowLevelImageActor( )->SetRange( r );
139   this->m_Slices[ 2 ]->GetWindowLevelImageActor( )->SetRange( r );
140 }
141
142 // -------------------------------------------------------------------------
143 void cpExtensions::Visualization::MPR3DActors::
144 SetWindowLevel( double wl[ 2 ] )
145 {
146   this->m_Slices[ 0 ]->GetWindowLevelImageActor( )->SetWindowLevel( wl );
147   this->m_Slices[ 1 ]->GetWindowLevelImageActor( )->SetWindowLevel( wl );
148   this->m_Slices[ 2 ]->GetWindowLevelImageActor( )->SetWindowLevel( wl );
149 }
150
151 // -------------------------------------------------------------------------
152 void cpExtensions::Visualization::MPR3DActors::
153 SetImageOpacity( double o )
154 {
155   this->m_Slices[ 0 ]->GetWindowLevelImageActor( )->
156     GetProperty( )->SetOpacity( o );
157   this->m_Slices[ 1 ]->GetWindowLevelImageActor( )->
158     GetProperty( )->SetOpacity( o );
159   this->m_Slices[ 2 ]->GetWindowLevelImageActor( )->
160     GetProperty( )->SetOpacity( o );
161 }
162
163 // -------------------------------------------------------------------------
164 void cpExtensions::Visualization::MPR3DActors::
165 SetImageInterpolation( unsigned char i )
166 {
167   // TODO
168 }
169
170 // -------------------------------------------------------------------------
171 cpExtensions::Visualization::MPR3DActors::
172 MPR3DActors( )
173   : Superclass( )
174 {
175   this->m_Slices[ 0 ] = vtkSmartPointer< ImageSliceActors >::New( );
176   this->m_Slices[ 1 ] = vtkSmartPointer< ImageSliceActors >::New( );
177   this->m_Slices[ 2 ] = vtkSmartPointer< ImageSliceActors >::New( );
178 }
179
180 // -------------------------------------------------------------------------
181 cpExtensions::Visualization::MPR3DActors::
182 ~MPR3DActors( )
183 {
184 }
185
186 // eof - $RCSfile$