1 /*# ---------------------------------------------------------------------
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 # This software is governed by the CeCILL-B license under French law and
10 # abiding by the rules of distribution of free software. You can use,
11 # modify and/ or redistribute the software under the terms of the CeCILL-B
12 # license as circulated by CEA, CNRS and INRIA at the following URL
13 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 # or in the file LICENSE.txt.
16 # As a counterpart to the access to the source code and rights to copy,
17 # modify and redistribute granted by the license, users are provided only
18 # with a limited warranty and the software's author, the holder of the
19 # economic rights, and the successive licensors have only limited
22 # The fact that you are presently reading this means that you have had
23 # knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
26 #include "wxVtkMPR3DViewCntrlPanel.h"
28 #include "HistogramDialog.h"
29 #include <wx/combobox.h>
31 wxVtkMPR3DViewCntrlPanel::wxVtkMPR3DViewCntrlPanel(wxWindow *parent, wxVtkMPR3DView *wxvtkmpr3Dview, bool align )
34 wxPanel *panel = this;
35 _wxvtkmpr3Dview = wxvtkmpr3Dview;
37 /*int maxX = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionX();
38 int maxY = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionY();
39 int maxZ = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionZ();*/
45 //CPR: Modified 30 Nov 2009
47 wxCheckBox *ckBoxX = new wxCheckBox(panel,-1,_T("X "));
48 _positionX = new wxSlider(panel,-1,maxX/2,0,maxX, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
49 wxCheckBox *ckBoxY = new wxCheckBox(panel,-1,_T("Y "));
50 _positionY = new wxSlider(panel,-1,maxY/2,0,maxY, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
51 wxCheckBox *ckBoxZ = new wxCheckBox(panel,-1,_T("Z "));
52 _positionZ = new wxSlider(panel,-1,maxZ/2,0,maxZ, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
53 wxButton *btnColorTable = new wxButton (panel, -1, _T("Edit Color Table") );
56 _ckBoxX = new wxCheckBox(panel,-1,_T("X "));
57 _positionX = new wxSlider(panel,-1,0,0,1, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
58 _ckBoxY = new wxCheckBox(panel,-1,_T("Y "));
59 _positionY = new wxSlider(panel,-1,0,0,1, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
60 _ckBoxZ = new wxCheckBox(panel,-1,_T("Z "));
61 _positionZ = new wxSlider(panel,-1,0,0,1, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
63 _ckBoxXYZ = new wxCheckBox(panel,-1,_T("3D Axis "));
64 _ckBoxFixAxis2D = new wxCheckBox(panel,-1,_T("2D Fix Axis"));
65 _opacityAxis = new wxSlider(panel,-1,99,0,100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_LABELS);
67 _ckBoxPlane = new wxCheckBox(panel,-1,_T("Plane"));
68 ////EED 05Nov2012 _ckBox_BW_Color_Plane = new wxCheckBox(panel,-1,_T("GL/Color"));
69 wxButton *btnColorTable = new wxButton (panel, -1, _T("Color table") );
70 wxButton *btnFreePlanesOrtho= new wxButton (panel, -1, _T("Orthogonal planes GL") );
72 _ckFreePlaneX= new wxCheckBox(panel,-1,_T("X "));
73 _ckFreePlaneY= new wxCheckBox(panel,-1,_T("Y "));
74 _ckFreePlaneZ= new wxCheckBox(panel,-1,_T("Z "));
75 _ckFreePlaneInteraction= new wxCheckBox(panel,-1,_T("Interaction planes GL"));
77 //EED: If-else statements added 30 Nov 2009
78 _ckFreePlaneX->SetValue(false);
79 _ckFreePlaneY->SetValue(false);
80 _ckFreePlaneZ->SetValue(false);
81 _ckFreePlaneInteraction->SetValue(true);
83 _ckBoxX->SetValue(false);
84 _ckBoxY->SetValue(false);
85 _ckBoxZ->SetValue(false);
86 _ckBoxXYZ->SetValue(false);
87 ////EED 05Nov2012 _ckBox_BW_Color_Plane->SetValue(true);
88 _ckBoxPlane->SetValue(false);
89 _ckBoxInterpolate= new wxCheckBox(panel,-1,_T("Interpolate"));
90 _ckBoxInterpolate->SetValue(true);
93 _ckBoxOutlineBox = new wxCheckBox(panel,-1,_T("Outline Box"));
94 _ckBoxOutlineBox->SetValue(false);
95 _ckBoxOutlinePlane = new wxCheckBox(panel,-1,_T("Outline Plane"));
96 _ckBoxOutlinePlane->SetValue(true);
100 // _ckBoxBackGroundBlack= new wxCheckBox(panel,-1,_T("Background Black"));;
101 // _ckBoxBackGroundBlack->SetValue(false);
103 // _ckBoxBackGroundBlack= new wxCheckBox(panel,-1,_T("Background Black"));;
104 // _ckBoxBackGroundBlack->SetValue(false);
106 wxPanel *panelH7 = new wxPanel(panel);
108 _rdBackGroundGradient = new wxRadioButton( panelH7, -1, _T("Background Gradient"),wxDefaultPosition, wxDefaultSize, wxRB_GROUP);
109 _rdBackGroundBlack = new wxRadioButton( panelH7, -1, _T("Background Black"),wxDefaultPosition, wxDefaultSize, 0);
110 _rdBackGroundWhite = new wxRadioButton( panelH7, -1, _T("Background White"),wxDefaultPosition, wxDefaultSize, 0);
112 _rdBackGroundGradient->SetValue(false);
113 _rdBackGroundBlack->SetValue(false);
114 _rdBackGroundWhite->SetValue(false);
116 _positionX->SetSize(400,20);
117 _positionY->SetSize(400,20);
118 _positionZ->SetSize(400,20);
121 _cbStereo = new wxComboBox(panel, -1, _T(""), wxDefaultPosition, wxDefaultSize, 0, NULL,wxCB_READONLY );
122 _cbStereo->Append(_T(" * NO STEREO"));
123 _cbStereo->Append(_T(" STEREO CRYSTAL EYES"));
124 _cbStereo->Append(_T(" STEREO RED BLUE"));
125 _cbStereo->Append(_T(" STEREO INTERLACED"));
126 _cbStereo->Append(_T(" STEREO LEFT"));
127 _cbStereo->Append(_T(" STEREO RIGHT"));
128 _cbStereo->Append(_T(" STEREO DRESDEN"));
129 _cbStereo->Append(_T(" * STEREO ANAGLYPH"));
130 _cbStereo->Append(_T(" STEREO CHECKERBOARD"));
131 _cbStereo->Append(_T(" * STEREO SPLITVIEWPORT_HORIZONTAL"));
132 _cbStereo->Append(_T(" STEREO FAKE"));
133 _cbStereo->Append(_T(" STEREO EMULATE"));
134 _cbStereo->Select(0);
136 Connect(_ckBoxX->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX );
137 Connect(_positionX->GetId() , wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionX );
138 Connect(_ckBoxY->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY );
139 Connect(_positionY->GetId() , wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionY );
140 Connect(_ckBoxZ->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ );
141 Connect(_positionZ->GetId() , wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionZ );
143 Connect(btnColorTable->GetId() , wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnEditColorTable );
144 Connect(_ckBoxXYZ->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ );
145 Connect(_ckBoxPlane->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisiblePlane );
146 Connect(_ckFreePlaneX->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX);
147 Connect(_ckFreePlaneY->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY);
148 Connect(_ckFreePlaneZ->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ);
149 Connect(btnFreePlanesOrtho->GetId() , wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnFreePlanesOrtho );
150 Connect(_ckFreePlaneInteraction->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction );
151 Connect(_cbStereo->GetId() , wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnSetStereo );
152 Connect(_ckBoxOutlineBox->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnOutlineBox );
153 Connect(_ckBoxOutlinePlane->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnOutlinePlane );
156 // Connect(_ckBoxBackGroundBlack->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack );
157 Connect(_rdBackGroundGradient->GetId() , wxEVT_COMMAND_RADIOBUTTON_SELECTED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack );
158 Connect(_rdBackGroundBlack->GetId() , wxEVT_COMMAND_RADIOBUTTON_SELECTED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack );
159 Connect(_rdBackGroundWhite->GetId() , wxEVT_COMMAND_RADIOBUTTON_SELECTED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack );
162 Connect(_ckBoxInterpolate->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnInterpolate );
163 Connect(_ckBoxFixAxis2D->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnFixAxis2D );
164 Connect(_opacityAxis->GetId() , wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnOpacityAxis );
166 wxFlexGridSizer *sizer;
168 // wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
169 // wxBoxSizer *sizerH4 = new wxBoxSizer(wxHORIZONTAL);
171 //CPR: If-else statements added 30 Nov 2009
172 wxFlexGridSizer *sizerV1;
173 wxFlexGridSizer *sizerH4;
174 wxFlexGridSizer *sizerH4a;
175 wxFlexGridSizer *sizerH5;
176 wxFlexGridSizer *sizerH6;
177 wxFlexGridSizer *sizerH7;
181 sizer = new wxFlexGridSizer(4);
182 sizerH4 = new wxFlexGridSizer(3);
184 sizerH4a = new wxFlexGridSizer(3);
186 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
187 sizerH4->Add( new wxStaticText(panel, -1,_T("GL")) ,1, wxALL|wxEXPAND , 0);
188 sizerH4->Add( new wxStaticText(panel, -1,_T("Color ")),1, wxALL|wxEXPAND , 0);
189 sizerH4->Add( _positionX ,1, wxGROW , 0);
190 sizerH4->Add( _ckFreePlaneX ,1, wxALL|wxEXPAND , 0);
191 sizerH4->Add( _ckBoxX ,0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
192 sizerH4->Add( _positionY ,1, wxGROW , 0);
193 sizerH4->Add( _ckFreePlaneY ,1, wxALL|wxEXPAND , 0);
194 sizerH4->Add( _ckBoxY ,0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
195 sizerH4->Add( _positionZ ,1, wxGROW , 0);
196 sizerH4->Add( _ckFreePlaneZ ,1, wxALL|wxEXPAND , 0);
197 sizerH4->Add( _ckBoxZ ,0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
200 sizerH4->Add( _ckBoxInterpolate ,1, wxALL|wxEXPAND , 0);
201 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
202 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
203 // sizerH4->Add( _ckBoxXYZ ,1, wxALL|wxEXPAND , 0);
204 // sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
205 // sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
207 // sizerH4a->Add( new wxStaticText(panel, -1,_T("Axis 2D:")),1, wxALL|wxEXPAND , 0);
208 sizerH4a->Add( _ckBoxXYZ ,1, wxALL|wxEXPAND , 0);
209 sizerH4a->Add( _ckBoxFixAxis2D ,1, wxALL|wxEXPAND , 0);
210 sizerH4a->Add( _opacityAxis ,1, wxALL|wxEXPAND , 0);
212 sizerH4->Add( sizerH4a ,1, wxALL|wxEXPAND , 0);
213 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
214 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
218 sizerH5 = new wxFlexGridSizer(1);
219 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
220 sizerH5->Add( _ckBoxPlane , 1, wxALL|wxEXPAND , 0);
221 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
222 ////EED 05Nov2012 sizerH5->Add( _ckBox_BW_Color_Plane , 1, wxALL|wxEXPAND , 0);
223 sizerH5->Add( _ckFreePlaneInteraction , 1, wxALL|wxEXPAND , 0);
224 sizerH5->Add( btnFreePlanesOrtho , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
225 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
226 sizerH5->Add( btnColorTable , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
227 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
228 sizerH5->Add( _cbStereo , 1, wxALL|wxEXPAND , 0);
230 sizerH6 = new wxFlexGridSizer(1);
231 sizerH6->Add( _ckBoxOutlineBox , 1, wxALL|wxEXPAND , 0);
232 sizerH6->Add( _ckBoxOutlinePlane , 1, wxALL|wxEXPAND , 0);
236 sizerH7 = new wxFlexGridSizer(1);
237 panelH7->SetSizer(sizerH7);
238 sizerH7->Add( _rdBackGroundGradient , 1, wxALL|wxEXPAND , 0);
239 sizerH7->Add( _rdBackGroundBlack , 1, wxALL|wxEXPAND , 0);
240 sizerH7->Add( _rdBackGroundWhite , 1, wxALL|wxEXPAND , 0);
243 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
244 sizerH6->Add( panelH7 , 1, wxALL|wxEXPAND , 0);
246 sizer->Add( sizerH4, 1, wxALL|wxGROW, 2);
247 sizer->Add( sizerH5, 1, wxALL|wxEXPAND,2);
248 sizer->Add( sizerH6, 1, wxALL|wxEXPAND,2);
251 sizer = new wxFlexGridSizer(1);
253 sizerH4 = new wxFlexGridSizer(10);
254 sizerH5 = new wxFlexGridSizer(10);
255 sizerH6 = new wxFlexGridSizer(10);
257 sizerH4->Add( _positionX , 1, wxGROW , 0 );
258 sizerH4->Add( _ckBoxX , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
259 sizerH4->Add( _positionY , 1, wxGROW , 0 );
260 sizerH4->Add( _ckBoxY , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
261 sizerH4->Add( _positionZ , 1, wxGROW , 0 );
262 sizerH4->Add( _ckBoxZ , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
263 sizerH4->Add( btnColorTable , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
265 sizerH5->Add( _ckBoxXYZ , 1, wxALL|wxEXPAND, 0);
266 sizerH5->Add( _ckBoxPlane , 1, wxALL|wxEXPAND, 0);
267 ////EED 05Nov2012 sizerH5->Add( _ckBox_BW_Color_Plane , 1, wxALL|wxEXPAND, 0);
268 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
270 sizerH6 = new wxFlexGridSizer(10);
271 sizerH6->Add( _ckFreePlaneX , 1, wxALL|wxEXPAND, 0);
272 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
273 sizerH6->Add( _ckFreePlaneY , 1, wxALL|wxEXPAND, 0);
274 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
275 sizerH6->Add( _ckFreePlaneZ , 1, wxALL|wxEXPAND, 0);
276 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
277 sizerH6->Add( _ckFreePlaneInteraction , 1, wxALL|wxEXPAND, 0);
278 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
279 sizerH6->Add( btnFreePlanesOrtho , 0 , wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
280 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
281 sizerH6->Add( _cbStereo, 1, wxALL|wxEXPAND, 0);
283 sizer->Add( sizerH4, 1, wxALL|wxGROW, 2);
284 sizer->Add( sizerH5, 1, wxALL|wxEXPAND,2);
285 sizer->Add( sizerH6, 1, wxALL|wxEXPAND,2);
292 // wxFlexGridSizer *sizerH6 = new wxFlexGridSizer(10);
293 // wxFlexGridSizer *sizerH7 = new wxFlexGridSizer(10);
295 // sizerH4->Add( ckBoxX , 1, wxALL|wxEXPAND, 0);
296 // sizerH4->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0);
297 // sizerH4->Add( _positionX , 1, wxALL|wxEXPAND, 0);
299 // sizerH5->Add( ckBoxY , 1, wxALL|wxEXPAND, 0);
300 // sizerH5->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0);
301 // sizerH5->Add( _positionY , 1, wxALL|wxEXPAND, 0);
303 // sizerH6->Add( ckBoxZ , 1, wxALL|wxEXPAND, 0);
304 // sizerH6->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0);
305 // sizerH6->Add( _positionZ , 1, wxALL|wxEXPAND, 0);
307 // sizerH7->Add( _ckBoxXYZ , 1, wxALL|wxEXPAND, 0);
308 // sizerH7->Add( _ckBoxPlane , 1, wxALL|wxEXPAND, 0);
310 // sizer->Add( sizerH4 , 1, wxALL|wxEXPAND, 2);
311 // sizer->Add( sizerH5 , 1, wxALL|wxEXPAND, 2);
312 // sizer->Add( sizerH6 , 1, wxALL|wxEXPAND, 2);
313 // sizer->Add( sizerH7 , 1, wxALL|wxEXPAND, 2);
316 // sizerH5->Add( ckBoxX , 1, wxALL|wxEXPAND, 0);
317 // sizerH5->Add( ckBoxY , 1, wxALL|wxEXPAND, 0);
318 // sizerH5->Add( ckBoxZ , 1, wxALL|wxEXPAND, 0);
321 panelH7->SetAutoLayout(true);
325 panel->ClearBackground();
326 // panel->SetSize(400,50);
327 sizer->FitInside(panel);
328 panel->SetAutoLayout(true);
329 panel->SetSizer(sizer);
332 panel->SetEventHandler((wxEvtHandler*)this);
334 //this->UpdateControlPanel();
338 //-------------------------------------------------------------------
339 void wxVtkMPR3DViewCntrlPanel::UpdateControlPanel(bool firsttime)
341 vtkMPRBaseData* basedata = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData();
342 if(basedata != NULL){
344 vtkImageData* img = basedata->GetImageData();
345 int x0,x1,y0,y1,z0,z1;
349 img->GetExtent(x0,x1,y0,y1,z0,z1);
350 _positionX->SetRange(x0,x1);
351 _positionY->SetRange(y0,y1);
352 _positionZ->SetRange(z0,z1);
356 _positionX->SetValue((x0+x1)/2);
357 _positionY->SetValue((y0+y1)/2);
358 _positionZ->SetValue((z0+z1)/2);
361 //EED 12April2012 This make a floting window in MacOs and Linux with for windows
362 // _positionX->Update();
363 // _positionY->Update();
364 // _positionZ->Update();
372 //-------------------------------------------------------------------
373 wxVtkMPR3DViewCntrlPanel::~wxVtkMPR3DViewCntrlPanel()
377 //-------------------------------------------------------------------
378 void wxVtkMPR3DViewCntrlPanel::Refresh()
380 // wxPanel::Refresh();
381 _positionX->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX( )) );
382 _positionY->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY( )) );
383 _positionZ->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ( )) );
387 //-------------------------------------------------------------------
388 int wxVtkMPR3DViewCntrlPanel::GetIdTissue()
391 if (_surfA->GetValue()==true)
395 if (_surfB->GetValue()==true)
399 if (_surfC->GetValue()==true)
403 if (_surfD->GetValue()==true)
412 //-------------------------------------------------------------------
413 //void wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane(wxCommandEvent& event)
415 // printf ("EED wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane ...... NOT Implemented\n ");
419 //-------------------------------------------------------------------
420 void wxVtkMPR3DViewCntrlPanel::OnEditColorTable(wxCommandEvent& event)
423 vtkImageData *imagedata = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
425 if ( imagedata->GetScalarType()!=VTK_UNSIGNED_SHORT )
427 wxMessageDialog windowMessage1(NULL,_T("This option is just available for UNSIGNED SHORT images."), _T("Alert !"), wxOK);
428 windowMessage1.ShowModal();
432 vtkColorTransferFunction *ctfun = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetvtkColorTransferFunction();
433 std::vector<double> *ctfunVectorPoint = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorPoint();
434 std::vector<double> *ctfunVectorRed = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorRed();
435 std::vector<double> *ctfunVectorGreen = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorGreen();
436 std::vector<double> *ctfunVectorBlue = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorBlue();
438 //void *p=this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer(); // JPRx
443 HistogramDialog* hDlg=new HistogramDialog(NULL,_T("Color table"),imagedata,2);
446 hDlg->erasePointsTransferenceFunction();
447 int ctfSize=ctfunVectorRed->size();
450 // MACHETE OJO Eduardo
454 double gr = (*ctfunVectorPoint)[i];
455 double r = (*ctfunVectorRed)[i];
456 double g = (*ctfunVectorGreen)[i];
457 double b = (*ctfunVectorBlue)[i];
459 hDlg->addColorPoint(gr,(int)(r*255),(int)(g*255),(int)(b*255));
466 // when the user had changed the transference Function
469 //setting variables if the user wants to do refresh
472 //hDlg->setMPR3Dview(_wxvtkmpr3Dview);
474 if(hDlg->ShowModal()== wxID_OK )
477 // -- vtkColorTransferFunction --
478 ctfun->RemoveAllPoints ();
480 ctfunVectorPoint->clear();
481 ctfunVectorRed->clear();
482 ctfunVectorGreen->clear();
483 ctfunVectorBlue->clear();
485 int nCTFpoints=hDlg->getSizeBarColor();
486 // Machete .. Ojo Eduardo
490 hDlg->getDataBarColorPoint(i,xi,r,g,b);
494 hDlg->getDataBarColorPoint(1,xi,r,g,b);
498 hDlg->getDataBarColorPoint(i-1,xi,r,g,b);
501 ctfun->AddRGBPoint(xi,r/255.0,g/255.0,b/255.0 );
502 ctfunVectorPoint->push_back(xi);
503 ctfunVectorRed->push_back(r/255.0);
504 ctfunVectorGreen->push_back(g/255.0);
505 ctfunVectorBlue->push_back(b/255.0);
515 if(hDlg->getRefreshed())
517 // -- vtkColorTransferFunction --
518 ctfun->RemoveAllPoints ();
521 int size=ctfunVectorPoint->size();
525 double grey2=(*ctfunVectorPoint)[i];
526 double red =(*ctfunVectorRed)[i];
527 double green =(*ctfunVectorGreen)[i];
528 double blue = (*ctfunVectorBlue)[i];
529 ctfun->AddRGBPoint(grey2,red,green,blue);
539 //-------------------------------------------------------------------
540 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX(wxCommandEvent& event)
542 _wxvtkmpr3Dview->FreePlaneVisible( 1, event.IsChecked() );
543 _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
546 //-------------------------------------------------------------------
547 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY(wxCommandEvent& event)
549 _wxvtkmpr3Dview->FreePlaneVisible( 2, event.IsChecked() );
550 _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
554 //-------------------------------------------------------------------
555 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ(wxCommandEvent& event)
557 _wxvtkmpr3Dview->FreePlaneVisible( 3, event.IsChecked() );
558 _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
562 //-------------------------------------------------------------------
563 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction(wxCommandEvent& event)
565 _wxvtkmpr3Dview->FreePlaneInteraction( event.IsChecked() );
568 //-------------------------------------------------------------------
569 void wxVtkMPR3DViewCntrlPanel::OnFreePlanesOrtho(wxCommandEvent& event)
571 _wxvtkmpr3Dview->SetFreePlanesOrtho();
574 //-------------------------------------------------------------------
575 void wxVtkMPR3DViewCntrlPanel::OnSetStereo(wxCommandEvent& event)
577 this->_wxvtkmpr3Dview->GetWxvtk3Dbaseview()->SetStereo( _cbStereo->GetSelection() );
582 //-------------------------------------------------------------------
583 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(wxCommandEvent& event)
585 _wxvtkmpr3Dview->VisibleImageActor(0, event.IsChecked() );
586 _wxvtkmpr3Dview->Refresh();
588 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
591 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
592 #if wxMAJOR_VERSION <= 2
593 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
595 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
598 std::cout<<e<<std::endl;
601 //-------------------------------------------------------------------
602 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(wxCommandEvent& event)
604 _wxvtkmpr3Dview->VisibleImageActor(1, event.IsChecked() );
605 _wxvtkmpr3Dview->Refresh();
607 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
608 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
609 #if wxMAJOR_VERSION <= 2
610 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
612 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
615 //-------------------------------------------------------------------
616 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(wxCommandEvent& event)
618 _wxvtkmpr3Dview->VisibleImageActor(2, event.IsChecked() );
619 _wxvtkmpr3Dview->Refresh();
620 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
621 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
622 #if wxMAJOR_VERSION <= 2
623 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
625 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
629 //-------------------------------------------------------------------
630 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ(wxCommandEvent& event)
633 _wxvtkmpr3Dview->VisiblePointWidget(event.IsChecked());
636 //-------------------------------------------------------------------
637 void wxVtkMPR3DViewCntrlPanel::OnVisiblePlane(wxCommandEvent& event)
639 _wxvtkmpr3Dview->VisiblePlaneWidget(event.IsChecked());
642 //-------------------------------------------------------------------
643 void wxVtkMPR3DViewCntrlPanel::OnPositionX(wxScrollEvent& event)
645 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetX( _positionX->GetValue() );
646 _wxvtkmpr3Dview->RefreshView();
648 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
649 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
650 #if wxMAJOR_VERSION <= 2
651 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
653 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
656 //-------------------------------------------------------------------
657 void wxVtkMPR3DViewCntrlPanel::OnPositionY(wxScrollEvent& event)
659 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetY( _positionY->GetValue() );
660 _wxvtkmpr3Dview->RefreshView();
661 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
662 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
663 #if wxMAJOR_VERSION <= 2
664 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
666 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
669 //-------------------------------------------------------------------
670 void wxVtkMPR3DViewCntrlPanel::OnPositionZ(wxScrollEvent& event)
672 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetZ( _positionZ->GetValue() );
673 _wxvtkmpr3Dview->RefreshView();
674 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
675 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
676 #if wxMAJOR_VERSION <= 2
677 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
679 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
685 //-------------------------------------------------------------------
686 bool wxVtkMPR3DViewCntrlPanel::GetVisibleX()
688 return _ckBoxX->GetValue();
691 //-------------------------------------------------------------------
692 bool wxVtkMPR3DViewCntrlPanel::GetVisibleY()
694 return _ckBoxY->GetValue();
697 //-------------------------------------------------------------------
698 bool wxVtkMPR3DViewCntrlPanel::GetVisibleZ()
700 return _ckBoxZ->GetValue();
703 //-------------------------------------------------------------------
704 bool wxVtkMPR3DViewCntrlPanel::GetVisibleXYZ()
706 return _ckBoxXYZ->GetValue();
709 //-------------------------------------------------------------------
711 //bool wxVtkMPR3DViewCntrlPanel::Get_BW_Color_Plane()
713 // return _ckBox_BW_Color_Plane;
716 //-------------------------------------------------------------------
717 bool wxVtkMPR3DViewCntrlPanel::GetVisiblePlane()
719 return _ckBoxPlane->GetValue();
722 //-------------------------------------------------------------------
723 void wxVtkMPR3DViewCntrlPanel::SetVisibleX(bool value)
725 _ckBoxX->SetValue(value);
727 _wxvtkmpr3Dview->VisibleImageActor(0, value );
728 _wxvtkmpr3Dview->Refresh();
730 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
731 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
732 #if wxMAJOR_VERSION <= 2
733 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
735 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
739 //-------------------------------------------------------------------
740 void wxVtkMPR3DViewCntrlPanel::SetVisibleY(bool value)
742 _ckBoxY->SetValue(value);
744 _wxvtkmpr3Dview->VisibleImageActor(1, value );
745 _wxvtkmpr3Dview->Refresh();
747 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
748 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
749 #if wxMAJOR_VERSION <= 2
750 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
752 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
756 //-------------------------------------------------------------------
757 void wxVtkMPR3DViewCntrlPanel::SetVisibleZ(bool value)
759 _ckBoxZ->SetValue(value);
761 _wxvtkmpr3Dview->VisibleImageActor(2, value );
762 _wxvtkmpr3Dview->Refresh();
764 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
765 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
766 #if wxMAJOR_VERSION <= 2
767 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
769 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
773 //-------------------------------------------------------------------
774 void wxVtkMPR3DViewCntrlPanel::SetVisibleXYZ(bool value)
776 _ckBoxXYZ->SetValue(value);
777 _wxvtkmpr3Dview->VisiblePointWidget(value);
781 //-------------------------------------------------------------------
782 void wxVtkMPR3DViewCntrlPanel::SetVisiblePlane(bool value)
784 _ckBoxPlane->SetValue(value);
785 _wxvtkmpr3Dview->VisiblePlaneWidget(value);
789 //-------------------------------------------------------------------
790 void wxVtkMPR3DViewCntrlPanel::OnOutlineBox(wxCommandEvent& event)
792 _wxvtkmpr3Dview->showOutlineBoxActor( _ckBoxOutlineBox->GetValue() );
793 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->Refresh();
796 //-------------------------------------------------------------------
797 void wxVtkMPR3DViewCntrlPanel::OnOutlinePlane(wxCommandEvent& event)
799 _wxvtkmpr3Dview->showOutlinePlaneActor( _ckBoxOutlinePlane->GetValue() );
800 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->Refresh();
803 //-------------------------------------------------------------------
804 void wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack(wxCommandEvent& event)
807 // if (_ckBoxBackGroundBlack->GetValue()==true)
809 // _wxvtkmpr3Dview->SetBackGroundType(0);
811 // _wxvtkmpr3Dview->SetBackGroundType(1);
814 if (_rdBackGroundGradient->GetValue()==true) {
815 _wxvtkmpr3Dview->SetBackGroundType(0);
816 } else if (_rdBackGroundBlack->GetValue()==true) {
817 _wxvtkmpr3Dview->SetBackGroundType(1);
818 } else if (_rdBackGroundWhite->GetValue()==true) {
819 _wxvtkmpr3Dview->SetBackGroundType(2);
824 //-------------------------------------------------------------------
825 void wxVtkMPR3DViewCntrlPanel::OnInterpolate(wxCommandEvent& event)
827 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetInterpolate( _ckBoxInterpolate->GetValue() );
828 _wxvtkmpr3Dview->Refresh();
829 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
830 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
831 #if wxMAJOR_VERSION <= 2
832 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
834 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
838 //-------------------------------------------------------------------
839 void wxVtkMPR3DViewCntrlPanel::OnFixAxis2D(wxCommandEvent& event)
841 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetFixAxis2D( _ckBoxFixAxis2D->GetValue() );
842 _wxvtkmpr3Dview->Refresh();
843 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
844 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
845 #if wxMAJOR_VERSION <= 2
846 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
848 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
852 //-------------------------------------------------------------------
853 void wxVtkMPR3DViewCntrlPanel::OnOpacityAxis(wxCommandEvent& event)
855 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetOpacityAxis( _opacityAxis->GetValue()/100.0 );
856 _wxvtkmpr3Dview->Refresh();
857 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
858 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
859 #if wxMAJOR_VERSION <= 2
860 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
862 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);