1 /*=========================================================================
4 Module: $RCSfile: wxMaracas_N_ViewersWidget.cxx,v $
6 Date: $Date: 2009/04/01 16:16:59 $
7 Version: $Revision: 1.5 $
9 Copyright: (c) 2002, 2003
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.
16 =========================================================================*/
18 //------------------------------------------------------------------------------------------------------------
19 // Definition includes
20 //------------------------------------------------------------------------------------------------------------
21 #include "wxMaracas_N_ViewersWidget.h"
23 //------------------------------------------------------------------------------------------------------------
25 //------------------------------------------------------------------------------------------------------------
28 //------------------------------------------------------------------------------------------------------------
29 // Constructors & Destructors
30 //------------------------------------------------------------------------------------------------------------
33 BEGIN_EVENT_TABLE( wxMaracas_N_ViewersWidget, wxPanel )
34 EVT_MENU( 12121, wxMaracas_N_ViewersWidget::OnRefreshView )
35 EVT_MENU( 12122, wxMaracas_N_ViewersWidget::OnDClickLeft )
39 //------------------------------------------------------------------------------------------------------------
40 // Constructors & Destructors
41 //------------------------------------------------------------------------------------------------------------
45 wxMaracas_N_ViewersWidget::wxMaracas_N_ViewersWidget(wxWindow *parent, vtkImageData* imagedata, std::vector<int> *nTypeView)
46 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
52 currentwxwindow = NULL;
54 wxSizer *sizer = new wxBoxSizer(wxVERTICAL);
55 this->SetSizer(sizer);
56 this->SetAutoLayout(true);
59 if(imagedata!=NULL && nTypeView!=NULL ){
60 this->SetType(nTypeView);
61 this->UpdateLayout(imagedata);
66 //-------------------------------------------------------------------------
68 wxMaracas_N_ViewersWidget::~wxMaracas_N_ViewersWidget()
72 //------------------------------------------------------------------------------------------------------------
74 //------------------------------------------------------------------------------------------------------------
77 //-------------------------------------------------------------------------
79 void wxMaracas_N_ViewersWidget::Update()
81 //wxvtkrenderwindowinteractor->Render();
82 // wxvtkrenderwindowinteractor->Refresh();
86 //-------------------------------------------------------------------------
88 void wxMaracas_N_ViewersWidget::OnRefreshView(wxCommandEvent & event)
92 //----------------------------------------------------------------------------
93 void wxMaracas_N_ViewersWidget::OnDClickLeft(wxCommandEvent & event)
98 //-------------------------------------------------------------------------
100 vtkRenderer *wxMaracas_N_ViewersWidget::GetRenderer()
102 return NULL; //renderer;
105 void wxMaracas_N_ViewersWidget::RefreshView()
107 if (wxwindow1!=NULL) {wxwindow1->RefreshView(); }
108 if (wxwindow2!=NULL) {wxwindow2->RefreshView(); }
109 if (wxwindow3!=NULL) {wxwindow3->RefreshView(); }
110 if (wxwindow4!=NULL) {wxwindow4->RefreshView(); }
113 //-------------------------------------------------------------------------
114 wxMaracas_ViewerWidget *wxMaracas_N_ViewersWidget::GetWindow(int iWin)
116 wxMaracas_ViewerWidget *tmpWin=NULL;
136 //-------------------------------------------------------------------------
137 wxVtkBaseView *wxMaracas_N_ViewersWidget::GetwxVtkBaseView(int iWin)
139 wxVtkBaseView *wxvtkbaseview=NULL;
140 wxMaracas_ViewerWidget *tmpWin=GetWindow(iWin);
141 if (tmpWin!=NULL){ wxvtkbaseview = tmpWin->GetwxVtkBaseView(); }
142 return wxvtkbaseview;
145 //-------------------------------------------------------------------------
146 void wxMaracas_N_ViewersWidget::Refresh(bool eraseBackground, const wxRect* rect )
148 wxPanel::Refresh(false);
151 void wxMaracas_N_ViewersWidget::UpdateLayout(vtkImageData* imagedata){
153 wxWindow *wxwindow = NULL;
154 wxSizer *sizer = this->GetSizer();
156 if(currentwxwindow!=NULL){
157 currentwxwindow->Show(false);
158 //sizer->Remove(currentwxwindow);
159 //delete currentwxwindow;
162 //std::cout<<"size "<<nTypeView->size()<<std::endl;
163 if (nTypeView->size()==1)
166 std::cout<<"type "<<(*nTypeView)[0]<<std::endl;
167 wxwindow1 = new wxMaracas_ViewerWidget(this, imagedata, (*nTypeView)[0]);
168 wxwindow1->ConfigureVTK();
169 wxwindow = wxwindow1;
170 }else if (nTypeView->size()==2) {
173 wxSplitterWindow *spliter = new wxSplitterWindow( this , -1);
174 wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0]);
175 wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1]);
176 wxwindow1->ConfigureVTK();
177 wxwindow2->ConfigureVTK();
178 spliter -> SplitVertically( wxwindow1 , wxwindow2 );
180 }else if (nTypeView->size()==3)
182 wxSplitterWindow *spliter = new wxSplitterWindow( this , -1);
183 wxSplitterWindow *spliterA = new wxSplitterWindow( spliter , -1);
184 wxwindow1 = new wxMaracas_ViewerWidget(spliter , imagedata, (*nTypeView)[0]);
185 wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]);
186 wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2]);
187 wxwindow1->ConfigureVTK();
188 wxwindow2->ConfigureVTK();
189 wxwindow3->ConfigureVTK();
190 spliter -> SplitVertically( wxwindow1 , spliterA );
191 spliterA-> SplitHorizontally( wxwindow2 , wxwindow3 );
193 }else if (nTypeView->size()>=4){
194 wxSplitterWindow *spliter = new wxSplitterWindow( this , -1);
195 wxSplitterWindow *spliterA = new wxSplitterWindow( spliter , -1);
196 wxSplitterWindow *spliterB = new wxSplitterWindow( spliter , -1);
197 wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0]);
198 wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]);
199 wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2]);
200 wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3]);
201 wxwindow1->ConfigureVTK();
202 wxwindow2->ConfigureVTK();
203 wxwindow3->ConfigureVTK();
204 wxwindow4->ConfigureVTK();
205 spliter -> SplitVertically( spliterA , spliterB );
206 spliterA-> SplitHorizontally( wxwindow1 , wxwindow2 );
207 spliterB-> SplitHorizontally( wxwindow3 , wxwindow4 );
211 //panel->SetDimension()
212 sizer->Add( wxwindow , 1, wxEXPAND);
214 currentwxwindow = wxwindow;
215 currentwxwindow->Show(true);
221 void wxMaracas_N_ViewersWidget::SetType(std::vector<int>* type){
224 void wxMaracas_N_ViewersWidget::SetImage( vtkImageData *image )
226 if (wxwindow1!=NULL) {
228 wxwindow1->SetImage(image);
230 if (wxwindow2!=NULL) { wxwindow2->SetImage(image); }
231 if (wxwindow3!=NULL) { wxwindow3->SetImage(image); }
232 if (wxwindow4!=NULL) { wxwindow4->SetImage(image); }
238 double wxMaracas_N_ViewersWidget :: GetX()
240 return wxwindow1->GetX();
243 double wxMaracas_N_ViewersWidget :: GetY()
245 return wxwindow1->GetY();
249 double wxMaracas_N_ViewersWidget :: GetZ()
251 return wxwindow1->GetZ();
256 double wxMaracas_N_ViewersWidget :: GetZ(int iWin)
258 double answerVal = 0.0;
261 answerVal = wxwindow1->GetZ();
265 answerVal = wxwindow2->GetZ();
269 answerVal = wxwindow3->GetZ();
273 answerVal = wxwindow4->GetZ();