]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.cxx
MPR updated
[cpPlugins.git] / lib / cpPlugins / Extensions / Visualization / MPRWithDifferentWindows.cxx
1 #include <cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.h>
2
3 // -------------------------------------------------------------------------
4 cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
5 MPRWithDifferentWindows(
6   vtkRenderWindow* xWin,
7   vtkRenderWindow* yWin,
8   vtkRenderWindow* zWin,
9   vtkRenderWindow* auxWin
10   )
11 {
12   this->m_Windows[ 0 ] = xWin;
13   this->m_Windows[ 1 ] = yWin;
14   this->m_Windows[ 2 ] = zWin;
15   this->m_Windows[ 3 ] = auxWin;
16
17   // Prepare actors
18   this->m_MPRActors = vtkSmartPointer< TMPRActors >::New( );
19
20   // Prepare renderers
21   for( int i = 0; i < 4; ++i )
22   {
23     if( this->m_Windows[ i ] == NULL )
24       continue;
25
26     // Renderers
27     this->m_Renderers[ i ] = vtkSmartPointer< vtkRenderer >::New( );
28     this->m_Renderers[ i ]->SetBackground( 0.1, 0.3, 0.8 );
29     this->m_Windows[ i ]->AddRenderer( this->m_Renderers[ i ] );
30
31     // Image styles (just for 2D windows)
32     if( i < 3 )
33     {
34       this->m_Styles[ i ] = vtkSmartPointer< TStyle >::New( );
35       this->m_Styles[ i ]->Configure(
36         this->m_MPRActors->GetSliceActors( i ), this->m_MPRActors
37         );
38
39       this->m_Styles[ i ]->
40         SetInteractor( this->m_Windows[ i ]->GetInteractor( ), i );
41       this->m_Styles[ i ]->SetModeToNavigation( );
42
43     } // fi
44
45   } // rof
46   if( this->m_Windows[ 3 ] != NULL )
47     this->m_Renderers[ 3 ]->SetBackground( 0.2, 0.2, 0.2 );
48
49   for( int i = 0; i < 3; ++i )
50   {
51     for( int j = 0; j < 3; ++j )
52     {
53       if(
54         this->m_Windows[ i ] != NULL &&
55         this->m_Windows[ j ] != NULL &&
56         i != j
57         )
58         this->m_Styles[ i ]->
59           AssociateInteractor( this->m_Windows[ j ]->GetInteractor( ) );
60
61     } // rof
62     if( this->m_Windows[ 3 ] != NULL )
63       this->m_Styles[ i ]->
64         AssociateInteractor( this->m_Windows[ 3 ]->GetInteractor( ) );
65
66   } // rof
67 }
68
69 // -------------------------------------------------------------------------
70 cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
71 ~MPRWithDifferentWindows( )
72 {
73 }
74
75 // -------------------------------------------------------------------------
76 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
77 SetImage( vtkImageData* image )
78 {
79   this->m_MPRActors->SetInputData( image );
80   this->m_MPRActors->PushDataInto(
81     this->m_Renderers[ 0 ],
82     this->m_Renderers[ 1 ],
83     this->m_Renderers[ 2 ],
84     this->m_Renderers[ 3 ]
85     );
86
87   // First rendering
88   this->ResetCameras( );
89   this->RenderAll( );
90 }
91
92 // -------------------------------------------------------------------------
93 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
94 SetSegmentation( vtkImageData* image )
95 {
96   this->m_MPRActors->SetSegmentationData( image );
97   this->m_MPRActors->PushDataInto(
98     this->m_Renderers[ 0 ],
99     this->m_Renderers[ 1 ],
100     this->m_Renderers[ 2 ],
101     this->m_Renderers[ 3 ]
102     );
103
104   this->Render( 0 );
105   this->Render( 1 );
106   this->Render( 2 );
107 }
108
109 // -------------------------------------------------------------------------
110 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
111 SetModeToNavigation( )
112 {
113   for( unsigned int i = 0; i < 3; ++i )
114   {
115     if( this->m_Styles[ i ].GetPointer( ) != NULL )
116       this->m_Styles[ i ]->SetModeToNavigation( );
117     
118   } // rof
119 }
120
121 // -------------------------------------------------------------------------
122 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
123 SetModeToDeformation( )
124 {
125   for( unsigned int i = 0; i < 3; ++i )
126   {
127     if( this->m_Styles[ i ].GetPointer( ) != NULL )
128       this->m_Styles[ i ]->SetModeToDeformation( );
129     
130   } // rof
131 }
132
133 // -------------------------------------------------------------------------
134 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
135 ResetCamera( const int& id )
136 {
137   if( id < 4 )
138     if( this->m_Windows[ id ] != NULL )
139       this->m_Renderers[ id ]->ResetCamera( );
140 }
141
142 // -------------------------------------------------------------------------
143 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
144 ResetCameras( )
145 {
146   for( int i = 0; i < 4; ++i )
147     if( this->m_Windows[ i ] != NULL )
148       this->m_Renderers[ i ]->ResetCamera( );
149 }
150
151 // -------------------------------------------------------------------------
152 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
153 Render( const int& id )
154 {
155   if( id < 4 )
156     if( this->m_Windows[ id ] != NULL )
157       this->m_Windows[ id ]->Render( );
158 }
159
160 // -------------------------------------------------------------------------
161 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
162 RenderAll( )
163 {
164   for( int i = 0; i < 4; ++i )
165     if( this->m_Windows[ i ] != NULL )
166       this->m_Windows[ i ]->Render( );
167 }
168
169 // eof - $RCSfile$