1 /*=========================================================================
4 Module: $RCSfile: wxMaracas_N_ViewersWidget.cxx,v $
6 Date: $Date: 2008/10/31 16:32:42 $
7 Version: $Revision: 1.1 $
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)
48 wxPanel *panel = this;
49 wxWindow *wxwindow = NULL;
55 if (nTypeView->size()==1)
57 wxwindow1 = new wxMaracas_ViewerWidget(panel, imagedata, (*nTypeView)[0]);
58 wxwindow1->ConfigureVTK();
63 if (nTypeView->size()==2)
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 );
75 if (nTypeView->size()==3)
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 );
90 if (nTypeView->size()>=4)
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 );
110 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
111 sizer->Add( wxwindow , 1, wxEXPAND, 0);
112 panel->SetSizer(sizer);
113 panel->SetAutoLayout(true);
116 //-------------------------------------------------------------------------
118 wxMaracas_N_ViewersWidget::~wxMaracas_N_ViewersWidget()
121 //------------------------------------------------------------------------------------------------------------
123 //------------------------------------------------------------------------------------------------------------
126 //-------------------------------------------------------------------------
128 void wxMaracas_N_ViewersWidget::Update()
130 //wxvtkrenderwindowinteractor->Render();
131 // wxvtkrenderwindowinteractor->Refresh();
135 //-------------------------------------------------------------------------
137 void wxMaracas_N_ViewersWidget::OnRefreshView(wxCommandEvent & event)
141 //----------------------------------------------------------------------------
142 void wxMaracas_N_ViewersWidget::OnDClickLeft(wxCommandEvent & event)
147 //-------------------------------------------------------------------------
149 vtkRenderer *wxMaracas_N_ViewersWidget::GetRenderer()
151 return NULL; //renderer;
154 void wxMaracas_N_ViewersWidget::RefreshView()
156 if (wxwindow1!=NULL) {wxwindow1->RefreshView(); }
157 if (wxwindow2!=NULL) {wxwindow2->RefreshView(); }
158 if (wxwindow3!=NULL) {wxwindow3->RefreshView(); }
159 if (wxwindow4!=NULL) {wxwindow4->RefreshView(); }
162 //-------------------------------------------------------------------------
163 wxMaracas_ViewerWidget *wxMaracas_N_ViewersWidget::GetWindow(int iWin)
165 wxMaracas_ViewerWidget *tmpWin=NULL;
185 //-------------------------------------------------------------------------
186 wxVtkBaseView *wxMaracas_N_ViewersWidget::GetwxVtkBaseView(int iWin)
188 wxVtkBaseView *wxvtkbaseview=NULL;
189 wxMaracas_ViewerWidget *tmpWin=GetWindow(iWin);
190 if (tmpWin!=NULL){ wxvtkbaseview = tmpWin->GetwxVtkBaseView(); }
191 return wxvtkbaseview;
194 //-------------------------------------------------------------------------
195 void wxMaracas_N_ViewersWidget::Refresh(bool eraseBackground, const wxRect* rect )
197 wxPanel::Refresh(false);
201 void wxMaracas_N_ViewersWidget::SetImage( vtkImageData *image )
203 if (wxwindow1!=NULL) { wxwindow1->SetImage(image); }
204 if (wxwindow2!=NULL) { wxwindow2->SetImage(image); }
205 if (wxwindow3!=NULL) { wxwindow3->SetImage(image); }
206 if (wxwindow4!=NULL) { wxwindow4->SetImage(image); }
210 double wxMaracas_N_ViewersWidget :: GetX()
212 return wxwindow1->GetX();
215 double wxMaracas_N_ViewersWidget :: GetY()
217 return wxwindow1->GetY();
221 double wxMaracas_N_ViewersWidget :: GetZ()
223 return wxwindow1->GetZ();
228 double wxMaracas_N_ViewersWidget :: GetZ(int iWin)
230 double answerVal = 0.0;
233 answerVal = wxwindow1->GetZ();
237 answerVal = wxwindow2->GetZ();
241 answerVal = wxwindow3->GetZ();
245 answerVal = wxwindow4->GetZ();