]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.cxx
Some bugs
[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 ResetCamera( const int& id )
112 {
113   if( id < 4 )
114     if( this->m_Windows[ id ] != NULL )
115       this->m_Renderers[ id ]->ResetCamera( );
116 }
117
118 // -------------------------------------------------------------------------
119 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
120 ResetCameras( )
121 {
122   for( int i = 0; i < 4; ++i )
123     if( this->m_Windows[ i ] != NULL )
124       this->m_Renderers[ i ]->ResetCamera( );
125 }
126
127 // -------------------------------------------------------------------------
128 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
129 Render( const int& id )
130 {
131   if( id < 4 )
132     if( this->m_Windows[ id ] != NULL )
133       this->m_Windows[ id ]->Render( );
134 }
135
136 // -------------------------------------------------------------------------
137 void cpPlugins::Extensions::Visualization::MPRWithDifferentWindows::
138 RenderAll( )
139 {
140   for( int i = 0; i < 4; ++i )
141     if( this->m_Windows[ i ] != NULL )
142       this->m_Windows[ i ]->Render( );
143 }
144
145 // eof - $RCSfile$