]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracas_N_ViewersWidget.cxx
1 /*=========================================================================
2
3   Program:   wxMaracas
4   Module:    $RCSfile: wxMaracas_N_ViewersWidget.cxx,v $
5   Language:  C++
6   Date:      $Date: 2008/12/03 11:42:54 $
7   Version:   $Revision: 1.2 $
8
9   Copyright: (c) 2002, 2003
10   License:
11   
12      This software is distributed WITHOUT ANY WARRANTY; without even 
13      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14      PURPOSE.  See the above copyright notice for more information.
15
16 =========================================================================*/
17
18 //------------------------------------------------------------------------------------------------------------
19 // Definition includes
20 //------------------------------------------------------------------------------------------------------------
21 #include "wxMaracas_N_ViewersWidget.h"
22
23 //------------------------------------------------------------------------------------------------------------
24 // Other includes
25 //------------------------------------------------------------------------------------------------------------
26
27
28         //------------------------------------------------------------------------------------------------------------
29         // Constructors & Destructors
30         //------------------------------------------------------------------------------------------------------------
31
32
33         BEGIN_EVENT_TABLE( wxMaracas_N_ViewersWidget, wxPanel )
34                 EVT_MENU( 12121, wxMaracas_N_ViewersWidget::OnRefreshView )
35                 EVT_MENU( 12122, wxMaracas_N_ViewersWidget::OnDClickLeft  )
36         END_EVENT_TABLE( );
37
38         
39         //------------------------------------------------------------------------------------------------------------
40         // Constructors & Destructors
41         //------------------------------------------------------------------------------------------------------------
42
43
44
45         wxMaracas_N_ViewersWidget::wxMaracas_N_ViewersWidget(wxWindow *parent, vtkImageData* imagedata, std::vector<int> *nTypeView)
46                 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
47         {
48                 wxPanel                         *panel          = this;
49                 wxWindow                                *wxwindow       = NULL;
50                                                                 wxwindow1       = NULL;
51                                                                 wxwindow2       = NULL;
52                                                                 wxwindow3       = NULL;
53                                                                 wxwindow4       = NULL;
54
55                 if (nTypeView->size()==1)
56                 {
57                 wxwindow1 = new wxMaracas_ViewerWidget(panel, imagedata, (*nTypeView)[0]);
58                 wxwindow1->ConfigureVTK();
59                 wxwindow = wxwindow1;
60                 }
61
62
63                 if (nTypeView->size()==2)
64                 {
65                         wxSplitterWindow        *spliter        = new wxSplitterWindow( panel , -1);
66                         wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0]);
67                         wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1]);
68                         wxwindow1->ConfigureVTK();
69                         wxwindow2->ConfigureVTK();
70                         spliter -> SplitVertically( wxwindow1 , wxwindow2  );
71                         wxwindow = spliter;
72                 }
73
74
75                 if (nTypeView->size()==3)
76                 {
77                         wxSplitterWindow        *spliter        = new wxSplitterWindow( panel , -1);
78                         wxSplitterWindow        *spliterA       = new wxSplitterWindow( spliter , -1);
79                         wxwindow1 = new wxMaracas_ViewerWidget(spliter , imagedata, (*nTypeView)[0]);
80                         wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]);
81                         wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2]);
82                         wxwindow1->ConfigureVTK();
83                         wxwindow2->ConfigureVTK();
84                         wxwindow3->ConfigureVTK();
85                         spliter -> SplitVertically( wxwindow1 , spliterA   );
86                         spliterA-> SplitHorizontally( wxwindow2 , wxwindow3  );
87                         wxwindow = spliter;
88                 }
89
90                 if (nTypeView->size()>=4)
91                 {
92                         wxSplitterWindow        *spliter        = new wxSplitterWindow( panel , -1);
93                         wxSplitterWindow        *spliterA       = new wxSplitterWindow( spliter , -1);
94                         wxSplitterWindow        *spliterB       = new wxSplitterWindow( spliter , -1);
95                         wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0]);
96                         wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]);
97                         wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2]);
98                         wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3]);
99                         wxwindow1->ConfigureVTK();
100                         wxwindow2->ConfigureVTK();
101                         wxwindow3->ConfigureVTK();
102                         wxwindow4->ConfigureVTK();
103                         spliter -> SplitVertically( spliterA , spliterB   );
104                         spliterA-> SplitHorizontally( wxwindow1 , wxwindow2  );
105                         spliterB-> SplitHorizontally( wxwindow3 , wxwindow4  );
106                         wxwindow = spliter;
107                 }
108
109
110         wxBoxSizer *sizer       = new wxBoxSizer(wxVERTICAL);
111         sizer->Add( wxwindow , 1, wxEXPAND, 0);
112         panel->SetSizer(sizer);
113         panel->SetAutoLayout(true);
114         panel->Layout();
115         }
116         //-------------------------------------------------------------------------
117           
118         wxMaracas_N_ViewersWidget::~wxMaracas_N_ViewersWidget()
119         {
120         }
121         //------------------------------------------------------------------------------------------------------------
122         // Methods
123         //------------------------------------------------------------------------------------------------------------
124
125
126         //-------------------------------------------------------------------------
127
128         void wxMaracas_N_ViewersWidget::Update()
129         {
130                 //wxvtkrenderwindowinteractor->Render();
131         //    wxvtkrenderwindowinteractor->Refresh();
132         //    Refresh();
133         }
134
135         //-------------------------------------------------------------------------
136
137         void wxMaracas_N_ViewersWidget::OnRefreshView(wxCommandEvent & event) 
138         {
139                 RefreshView();
140         }
141         //----------------------------------------------------------------------------
142         void wxMaracas_N_ViewersWidget::OnDClickLeft(wxCommandEvent & event) 
143         {
144                 RefreshView();
145         }
146
147                 //-------------------------------------------------------------------------
148
149         vtkRenderer *wxMaracas_N_ViewersWidget::GetRenderer()
150         {
151                 return NULL; //renderer;
152         }
153
154         void wxMaracas_N_ViewersWidget::RefreshView()
155         {
156                 if (wxwindow1!=NULL) {wxwindow1->RefreshView(); }
157                 if (wxwindow2!=NULL) {wxwindow2->RefreshView(); }
158                 if (wxwindow3!=NULL) {wxwindow3->RefreshView(); }
159                 if (wxwindow4!=NULL) {wxwindow4->RefreshView(); }
160         }
161
162         //-------------------------------------------------------------------------
163         wxMaracas_ViewerWidget *wxMaracas_N_ViewersWidget::GetWindow(int iWin)  
164         {
165                 wxMaracas_ViewerWidget *tmpWin=NULL;
166                 if  (iWin==1)
167                 {
168                         tmpWin=wxwindow1;
169                 }
170                 if  (iWin==2)
171                 {
172                         tmpWin=wxwindow2;
173                 }
174                 if  (iWin==3)
175                 {
176                         tmpWin=wxwindow3;
177                 }
178                 if  (iWin==4)
179                 {
180                         tmpWin=wxwindow4;
181                 }
182                 return tmpWin;
183         }
184
185         //-------------------------------------------------------------------------
186         wxVtkBaseView *wxMaracas_N_ViewersWidget::GetwxVtkBaseView(int iWin)
187         { 
188                 wxVtkBaseView *wxvtkbaseview=NULL;
189                 wxMaracas_ViewerWidget *tmpWin=GetWindow(iWin);
190                 if (tmpWin!=NULL){  wxvtkbaseview = tmpWin->GetwxVtkBaseView();  }
191                 return wxvtkbaseview;
192         }
193    
194         //-------------------------------------------------------------------------
195  void wxMaracas_N_ViewersWidget::Refresh(bool eraseBackground, const wxRect* rect )
196  {
197          wxPanel::Refresh(false);
198  }
199
200
201  void wxMaracas_N_ViewersWidget::SetImage( vtkImageData *image  )
202  {
203          if (wxwindow1!=NULL) { 
204                  
205                 wxwindow1->SetImage(image); 
206         }
207          if (wxwindow2!=NULL) { wxwindow2->SetImage(image); } 
208          if (wxwindow3!=NULL) { wxwindow3->SetImage(image); }
209          if (wxwindow4!=NULL) { wxwindow4->SetImage(image); }
210
211
212  }
213
214
215 double wxMaracas_N_ViewersWidget :: GetX()
216 {
217         return wxwindow1->GetX();
218 }
219
220 double wxMaracas_N_ViewersWidget :: GetY()
221 {
222         return wxwindow1->GetY();
223 }
224
225
226 double wxMaracas_N_ViewersWidget :: GetZ()
227 {
228         return wxwindow1->GetZ();
229 }
230
231
232 /*
233 double wxMaracas_N_ViewersWidget :: GetZ(int iWin)
234         {
235                 double answerVal = 0.0;
236                 if  (iWin==1)
237                 {
238                         answerVal = wxwindow1->GetZ();
239                 }
240                 if  (iWin==2)
241                 {
242                         answerVal = wxwindow2->GetZ();
243                 }
244                 if  (iWin==3)
245                 {
246                         answerVal = wxwindow3->GetZ();
247                 }
248                 if  (iWin==4)
249                 {
250                         answerVal = wxwindow4->GetZ();
251                 }
252                 return answerVal;
253         }
254 */