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, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS);
49 wxCheckBox *ckBoxY = new wxCheckBox(panel,-1,_T("Y "));
50 _positionY = new wxSlider(panel,-1,maxY/2,0,maxY, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS);
51 wxCheckBox *ckBoxZ = new wxCheckBox(panel,-1,_T("Z "));
52 _positionZ = new wxSlider(panel,-1,maxZ/2,0,maxZ, wxDefaultPosition, wxSize(150,40), 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, wxSize(300,40), wxSL_HORIZONTAL | wxSL_LABELS);
58 _ckBoxY = new wxCheckBox(panel,-1,_T("Y "));
59 _positionY = new wxSlider(panel,-1,0,0,1, wxDefaultPosition, wxSize(300,40), wxSL_HORIZONTAL | wxSL_LABELS);
60 _ckBoxZ = new wxCheckBox(panel,-1,_T("Z "));
61 _positionZ = new wxSlider(panel,-1,0,0,1, wxDefaultPosition, wxSize(300,40), 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,50,0,100, wxDefaultPosition, wxSize(100,40), 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 _ckBoxOutline= new wxCheckBox(panel,-1,_T("Outline"));
90 _ckBoxOutline->SetValue(true);
91 _ckBoxInterpolate= new wxCheckBox(panel,-1,_T("Interpolate"));
92 _ckBoxInterpolate->SetValue(true);
95 _ckBoxBackGroundBlack= new wxCheckBox(panel,-1,_T("Background Black"));;
96 _ckBoxBackGroundBlack->SetValue(false);
98 _positionX->SetSize(400,20);
99 _positionY->SetSize(400,20);
100 _positionZ->SetSize(400,20);
103 _cbStereo = new wxComboBox(panel, -1, _T(""), wxDefaultPosition, wxDefaultSize, 0, NULL,wxCB_READONLY );
104 _cbStereo->Append(_T(" * NO STEREO"));
105 _cbStereo->Append(_T(" STEREO CRYSTAL EYES"));
106 _cbStereo->Append(_T(" STEREO RED BLUE"));
107 _cbStereo->Append(_T(" STEREO INTERLACED"));
108 _cbStereo->Append(_T(" STEREO LEFT"));
109 _cbStereo->Append(_T(" STEREO RIGHT"));
110 _cbStereo->Append(_T(" STEREO DRESDEN"));
111 _cbStereo->Append(_T(" * STEREO ANAGLYPH"));
112 _cbStereo->Append(_T(" STEREO CHECKERBOARD"));
113 _cbStereo->Select(0);
115 Connect(_ckBoxX->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX );
116 Connect(_positionX->GetId() , wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionX );
117 Connect(_ckBoxY->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY );
118 Connect(_positionY->GetId() , wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionY );
119 Connect(_ckBoxZ->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ );
120 Connect(_positionZ->GetId() , wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionZ );
122 Connect(btnColorTable->GetId() , wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnEditColorTable );
123 Connect(_ckBoxXYZ->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ );
124 Connect(_ckBoxPlane->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisiblePlane );
125 Connect(_ckFreePlaneX->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX);
126 Connect(_ckFreePlaneY->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY);
127 Connect(_ckFreePlaneZ->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ);
128 Connect(btnFreePlanesOrtho->GetId() , wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnFreePlanesOrtho );
129 Connect(_ckFreePlaneInteraction->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction );
130 Connect(_cbStereo->GetId() , wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnSetStereo );
131 Connect(_ckBoxOutline->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnOutline );
132 Connect(_ckBoxBackGroundBlack->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack );
133 Connect(_ckBoxInterpolate->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnInterpolate );
134 Connect(_ckBoxFixAxis2D->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnFixAxis2D );
135 Connect(_opacityAxis->GetId() , wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnOpacityAxis );
137 wxFlexGridSizer *sizer;
139 // wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
140 // wxBoxSizer *sizerH4 = new wxBoxSizer(wxHORIZONTAL);
142 //CPR: If-else statements added 30 Nov 2009
143 wxFlexGridSizer *sizerV1;
144 wxFlexGridSizer *sizerH4;
145 wxFlexGridSizer *sizerH4a;
146 wxFlexGridSizer *sizerH5;
147 wxFlexGridSizer *sizerH6;
151 sizer = new wxFlexGridSizer(4);
152 sizerH4 = new wxFlexGridSizer(3);
154 sizerH4a = new wxFlexGridSizer(3);
156 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
157 sizerH4->Add( new wxStaticText(panel, -1,_T("GL")) ,1, wxALL|wxEXPAND , 0);
158 sizerH4->Add( new wxStaticText(panel, -1,_T("Color ")),1, wxALL|wxEXPAND , 0);
159 sizerH4->Add( _positionX ,1, wxGROW , 0);
160 sizerH4->Add( _ckFreePlaneX ,1, wxALL|wxEXPAND , 0);
161 sizerH4->Add( _ckBoxX ,0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
162 sizerH4->Add( _positionY ,1, wxGROW , 0);
163 sizerH4->Add( _ckFreePlaneY ,1, wxALL|wxEXPAND , 0);
164 sizerH4->Add( _ckBoxY ,0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
165 sizerH4->Add( _positionZ ,1, wxGROW , 0);
166 sizerH4->Add( _ckFreePlaneZ ,1, wxALL|wxEXPAND , 0);
167 sizerH4->Add( _ckBoxZ ,0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
170 sizerH4->Add( _ckBoxInterpolate ,1, wxALL|wxEXPAND , 0);
171 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
172 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
173 // sizerH4->Add( _ckBoxXYZ ,1, wxALL|wxEXPAND , 0);
174 // sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
175 // sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
177 // sizerH4a->Add( new wxStaticText(panel, -1,_T("Axis 2D:")),1, wxALL|wxEXPAND , 0);
178 sizerH4a->Add( _ckBoxXYZ ,1, wxALL|wxEXPAND , 0);
179 sizerH4a->Add( _ckBoxFixAxis2D ,1, wxALL|wxEXPAND , 0);
180 sizerH4a->Add( _opacityAxis ,1, wxALL|wxEXPAND , 0);
182 sizerH4->Add( sizerH4a ,1, wxALL|wxEXPAND , 0);
183 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
184 sizerH4->Add( new wxStaticText(panel, -1,_T(" ")) ,1, wxALL|wxEXPAND , 0);
188 sizerH5 = new wxFlexGridSizer(1);
189 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
190 sizerH5->Add( _ckBoxPlane , 1, wxALL|wxEXPAND , 0);
191 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
192 ////EED 05Nov2012 sizerH5->Add( _ckBox_BW_Color_Plane , 1, wxALL|wxEXPAND , 0);
193 sizerH5->Add( _ckFreePlaneInteraction , 1, wxALL|wxEXPAND , 0);
194 sizerH5->Add( btnFreePlanesOrtho , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
195 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
196 sizerH5->Add( btnColorTable , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED , 0);
197 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND , 0);
198 sizerH5->Add( _cbStereo , 1, wxALL|wxEXPAND , 0);
200 sizerH6 = new wxFlexGridSizer(1);
201 sizerH6->Add( _ckBoxOutline , 1, wxALL|wxEXPAND , 0);
202 sizerH6->Add( _ckBoxBackGroundBlack , 1, wxALL|wxEXPAND , 0);
204 sizer->Add( sizerH4, 1, wxALL|wxGROW, 2);
205 sizer->Add( sizerH5, 1, wxALL|wxEXPAND,2);
206 sizer->Add( sizerH6, 1, wxALL|wxEXPAND,2);
209 sizer = new wxFlexGridSizer(1);
211 sizerH4 = new wxFlexGridSizer(10);
212 sizerH5 = new wxFlexGridSizer(10);
213 sizerH6 = new wxFlexGridSizer(10);
215 sizerH4->Add( _positionX , 1, wxGROW , 0 );
216 sizerH4->Add( _ckBoxX , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
217 sizerH4->Add( _positionY , 1, wxGROW , 0 );
218 sizerH4->Add( _ckBoxY , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
219 sizerH4->Add( _positionZ , 1, wxGROW , 0 );
220 sizerH4->Add( _ckBoxZ , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
221 sizerH4->Add( btnColorTable , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
223 sizerH5->Add( _ckBoxXYZ , 1, wxALL|wxEXPAND, 0);
224 sizerH5->Add( _ckBoxPlane , 1, wxALL|wxEXPAND, 0);
225 ////EED 05Nov2012 sizerH5->Add( _ckBox_BW_Color_Plane , 1, wxALL|wxEXPAND, 0);
226 sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
228 sizerH6 = new wxFlexGridSizer(10);
229 sizerH6->Add( _ckFreePlaneX , 1, wxALL|wxEXPAND, 0);
230 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
231 sizerH6->Add( _ckFreePlaneY , 1, wxALL|wxEXPAND, 0);
232 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
233 sizerH6->Add( _ckFreePlaneZ , 1, wxALL|wxEXPAND, 0);
234 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
235 sizerH6->Add( _ckFreePlaneInteraction , 1, wxALL|wxEXPAND, 0);
236 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
237 sizerH6->Add( btnFreePlanesOrtho , 0 , wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
238 sizerH6->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0);
239 sizerH6->Add( _cbStereo, 1, wxALL|wxEXPAND, 0);
241 sizer->Add( sizerH4, 1, wxALL|wxGROW, 2);
242 sizer->Add( sizerH5, 1, wxALL|wxEXPAND,2);
243 sizer->Add( sizerH6, 1, wxALL|wxEXPAND,2);
250 // wxFlexGridSizer *sizerH6 = new wxFlexGridSizer(10);
251 // wxFlexGridSizer *sizerH7 = new wxFlexGridSizer(10);
253 // sizerH4->Add( ckBoxX , 1, wxALL|wxEXPAND, 0);
254 // sizerH4->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0);
255 // sizerH4->Add( _positionX , 1, wxALL|wxEXPAND, 0);
257 // sizerH5->Add( ckBoxY , 1, wxALL|wxEXPAND, 0);
258 // sizerH5->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0);
259 // sizerH5->Add( _positionY , 1, wxALL|wxEXPAND, 0);
261 // sizerH6->Add( ckBoxZ , 1, wxALL|wxEXPAND, 0);
262 // sizerH6->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0);
263 // sizerH6->Add( _positionZ , 1, wxALL|wxEXPAND, 0);
265 // sizerH7->Add( _ckBoxXYZ , 1, wxALL|wxEXPAND, 0);
266 // sizerH7->Add( _ckBoxPlane , 1, wxALL|wxEXPAND, 0);
268 // sizer->Add( sizerH4 , 1, wxALL|wxEXPAND, 2);
269 // sizer->Add( sizerH5 , 1, wxALL|wxEXPAND, 2);
270 // sizer->Add( sizerH6 , 1, wxALL|wxEXPAND, 2);
271 // sizer->Add( sizerH7 , 1, wxALL|wxEXPAND, 2);
274 // sizerH5->Add( ckBoxX , 1, wxALL|wxEXPAND, 0);
275 // sizerH5->Add( ckBoxY , 1, wxALL|wxEXPAND, 0);
276 // sizerH5->Add( ckBoxZ , 1, wxALL|wxEXPAND, 0);
279 panel->ClearBackground();
280 // panel->SetSize(400,50);
281 sizer->FitInside(panel);
282 panel->SetAutoLayout(true);
283 panel->SetSizer(sizer);
286 panel->SetEventHandler((wxEvtHandler*)this);
288 //this->UpdateControlPanel();
292 //-------------------------------------------------------------------
293 void wxVtkMPR3DViewCntrlPanel::UpdateControlPanel(bool firsttime)
295 vtkMPRBaseData* basedata = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData();
296 if(basedata != NULL){
298 vtkImageData* img = basedata->GetImageData();
299 int x0,x1,y0,y1,z0,z1;
303 img->GetExtent(x0,x1,y0,y1,z0,z1);
304 _positionX->SetRange(x0,x1);
305 _positionY->SetRange(y0,y1);
306 _positionZ->SetRange(z0,z1);
310 _positionX->SetValue((x0+x1)/2);
311 _positionY->SetValue((y0+y1)/2);
312 _positionZ->SetValue((z0+z1)/2);
315 //EED 12April2012 This make a floting window in MacOs and Linux with for windows
316 // _positionX->Update();
317 // _positionY->Update();
318 // _positionZ->Update();
326 //-------------------------------------------------------------------
327 wxVtkMPR3DViewCntrlPanel::~wxVtkMPR3DViewCntrlPanel()
331 //-------------------------------------------------------------------
332 void wxVtkMPR3DViewCntrlPanel::Refresh()
334 // wxPanel::Refresh();
335 _positionX->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX( )) );
336 _positionY->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY( )) );
337 _positionZ->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ( )) );
341 //-------------------------------------------------------------------
342 int wxVtkMPR3DViewCntrlPanel::GetIdTissue()
345 if (_surfA->GetValue()==true)
349 if (_surfB->GetValue()==true)
353 if (_surfC->GetValue()==true)
357 if (_surfD->GetValue()==true)
366 //-------------------------------------------------------------------
367 //void wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane(wxCommandEvent& event)
369 // printf ("EED wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane ...... NOT Implemented\n ");
373 //-------------------------------------------------------------------
374 void wxVtkMPR3DViewCntrlPanel::OnEditColorTable(wxCommandEvent& event)
377 vtkImageData *imagedata = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
379 if ( imagedata->GetScalarType()!=VTK_UNSIGNED_SHORT )
381 wxMessageDialog windowMessage1(NULL,_T("This option is just available for UNSIGNED SHORT images."), _T("Alert !"), wxOK);
382 windowMessage1.ShowModal();
386 vtkColorTransferFunction *ctfun = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetvtkColorTransferFunction();
387 std::vector<double> *ctfunVectorPoint = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorPoint();
388 std::vector<double> *ctfunVectorRed = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorRed();
389 std::vector<double> *ctfunVectorGreen = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorGreen();
390 std::vector<double> *ctfunVectorBlue = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorBlue();
392 //void *p=this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer(); // JPRx
397 HistogramDialog* hDlg=new HistogramDialog(NULL,_T("Color table"),imagedata,2);
400 hDlg->erasePointsTransferenceFunction();
401 int ctfSize=ctfunVectorRed->size();
404 // MACHETE OJO Eduardo
408 double gr = (*ctfunVectorPoint)[i];
409 double r = (*ctfunVectorRed)[i];
410 double g = (*ctfunVectorGreen)[i];
411 double b = (*ctfunVectorBlue)[i];
413 hDlg->addColorPoint(gr,(int)(r*255),(int)(g*255),(int)(b*255));
420 // when the user had changed the transference Function
423 //setting variables if the user wants to do refresh
426 //hDlg->setMPR3Dview(_wxvtkmpr3Dview);
428 if(hDlg->ShowModal()== wxID_OK )
431 // -- vtkColorTransferFunction --
432 ctfun->RemoveAllPoints ();
434 ctfunVectorPoint->clear();
435 ctfunVectorRed->clear();
436 ctfunVectorGreen->clear();
437 ctfunVectorBlue->clear();
439 int nCTFpoints=hDlg->getSizeBarColor();
440 // Machete .. Ojo Eduardo
444 hDlg->getDataBarColorPoint(i,xi,r,g,b);
448 hDlg->getDataBarColorPoint(1,xi,r,g,b);
452 hDlg->getDataBarColorPoint(i-1,xi,r,g,b);
455 ctfun->AddRGBPoint(xi,r/255.0,g/255.0,b/255.0 );
456 ctfunVectorPoint->push_back(xi);
457 ctfunVectorRed->push_back(r/255.0);
458 ctfunVectorGreen->push_back(g/255.0);
459 ctfunVectorBlue->push_back(b/255.0);
469 if(hDlg->getRefreshed())
471 // -- vtkColorTransferFunction --
472 ctfun->RemoveAllPoints ();
475 int size=ctfunVectorPoint->size();
479 double grey2=(*ctfunVectorPoint)[i];
480 double red =(*ctfunVectorRed)[i];
481 double green =(*ctfunVectorGreen)[i];
482 double blue = (*ctfunVectorBlue)[i];
483 ctfun->AddRGBPoint(grey2,red,green,blue);
493 //-------------------------------------------------------------------
494 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX(wxCommandEvent& event)
496 _wxvtkmpr3Dview->FreePlaneVisible( 1, event.IsChecked() );
497 _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
500 //-------------------------------------------------------------------
501 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY(wxCommandEvent& event)
503 _wxvtkmpr3Dview->FreePlaneVisible( 2, event.IsChecked() );
504 _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
508 //-------------------------------------------------------------------
509 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ(wxCommandEvent& event)
511 _wxvtkmpr3Dview->FreePlaneVisible( 3, event.IsChecked() );
512 _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
516 //-------------------------------------------------------------------
517 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction(wxCommandEvent& event)
519 _wxvtkmpr3Dview->FreePlaneInteraction( event.IsChecked() );
522 //-------------------------------------------------------------------
523 void wxVtkMPR3DViewCntrlPanel::OnFreePlanesOrtho(wxCommandEvent& event)
525 _wxvtkmpr3Dview->SetFreePlanesOrtho();
528 //-------------------------------------------------------------------
529 void wxVtkMPR3DViewCntrlPanel::OnSetStereo(wxCommandEvent& event)
531 this->_wxvtkmpr3Dview->GetWxvtk3Dbaseview()->SetStereo( _cbStereo->GetSelection() );
536 //-------------------------------------------------------------------
537 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(wxCommandEvent& event)
539 _wxvtkmpr3Dview->VisibleImageActor(0, event.IsChecked() );
540 _wxvtkmpr3Dview->Refresh();
542 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
545 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
546 #if wxMAJOR_VERSION <= 2
547 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
549 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
552 std::cout<<e<<std::endl;
555 //-------------------------------------------------------------------
556 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(wxCommandEvent& event)
558 _wxvtkmpr3Dview->VisibleImageActor(1, event.IsChecked() );
559 _wxvtkmpr3Dview->Refresh();
561 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
562 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
563 #if wxMAJOR_VERSION <= 2
564 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
566 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
569 //-------------------------------------------------------------------
570 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(wxCommandEvent& event)
572 _wxvtkmpr3Dview->VisibleImageActor(2, event.IsChecked() );
573 _wxvtkmpr3Dview->Refresh();
574 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
575 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
576 #if wxMAJOR_VERSION <= 2
577 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
579 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
583 //-------------------------------------------------------------------
584 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ(wxCommandEvent& event)
587 _wxvtkmpr3Dview->VisiblePointWidget(event.IsChecked());
590 //-------------------------------------------------------------------
591 void wxVtkMPR3DViewCntrlPanel::OnVisiblePlane(wxCommandEvent& event)
593 _wxvtkmpr3Dview->VisiblePlaneWidget(event.IsChecked());
596 //-------------------------------------------------------------------
597 void wxVtkMPR3DViewCntrlPanel::OnPositionX(wxScrollEvent& event)
599 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetX( _positionX->GetValue() );
600 _wxvtkmpr3Dview->RefreshView();
602 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
603 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
604 #if wxMAJOR_VERSION <= 2
605 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
607 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
610 //-------------------------------------------------------------------
611 void wxVtkMPR3DViewCntrlPanel::OnPositionY(wxScrollEvent& event)
613 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetY( _positionY->GetValue() );
614 _wxvtkmpr3Dview->RefreshView();
615 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
616 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
617 #if wxMAJOR_VERSION <= 2
618 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
620 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
623 //-------------------------------------------------------------------
624 void wxVtkMPR3DViewCntrlPanel::OnPositionZ(wxScrollEvent& event)
626 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetZ( _positionZ->GetValue() );
627 _wxvtkmpr3Dview->RefreshView();
628 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
629 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
630 #if wxMAJOR_VERSION <= 2
631 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
633 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
639 //-------------------------------------------------------------------
640 bool wxVtkMPR3DViewCntrlPanel::GetVisibleX()
642 return _ckBoxX->GetValue();
645 //-------------------------------------------------------------------
646 bool wxVtkMPR3DViewCntrlPanel::GetVisibleY()
648 return _ckBoxY->GetValue();
651 //-------------------------------------------------------------------
652 bool wxVtkMPR3DViewCntrlPanel::GetVisibleZ()
654 return _ckBoxZ->GetValue();
657 //-------------------------------------------------------------------
658 bool wxVtkMPR3DViewCntrlPanel::GetVisibleXYZ()
660 return _ckBoxXYZ->GetValue();
663 //-------------------------------------------------------------------
665 //bool wxVtkMPR3DViewCntrlPanel::Get_BW_Color_Plane()
667 // return _ckBox_BW_Color_Plane;
670 //-------------------------------------------------------------------
671 bool wxVtkMPR3DViewCntrlPanel::GetVisiblePlane()
673 return _ckBoxPlane->GetValue();
676 //-------------------------------------------------------------------
677 void wxVtkMPR3DViewCntrlPanel::SetVisibleX(bool value)
679 _ckBoxX->SetValue(value);
681 _wxvtkmpr3Dview->VisibleImageActor(0, value );
682 _wxvtkmpr3Dview->Refresh();
684 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
685 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
686 #if wxMAJOR_VERSION <= 2
687 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
689 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
693 //-------------------------------------------------------------------
694 void wxVtkMPR3DViewCntrlPanel::SetVisibleY(bool value)
696 _ckBoxY->SetValue(value);
698 _wxvtkmpr3Dview->VisibleImageActor(1, value );
699 _wxvtkmpr3Dview->Refresh();
701 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
702 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
703 #if wxMAJOR_VERSION <= 2
704 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
706 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
710 //-------------------------------------------------------------------
711 void wxVtkMPR3DViewCntrlPanel::SetVisibleZ(bool value)
713 _ckBoxZ->SetValue(value);
715 _wxvtkmpr3Dview->VisibleImageActor(2, value );
716 _wxvtkmpr3Dview->Refresh();
718 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
719 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
720 #if wxMAJOR_VERSION <= 2
721 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
723 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
727 //-------------------------------------------------------------------
728 void wxVtkMPR3DViewCntrlPanel::SetVisibleXYZ(bool value)
730 _ckBoxXYZ->SetValue(value);
731 _wxvtkmpr3Dview->VisiblePointWidget(value);
735 //-------------------------------------------------------------------
736 void wxVtkMPR3DViewCntrlPanel::SetVisiblePlane(bool value)
738 _ckBoxPlane->SetValue(value);
739 _wxvtkmpr3Dview->VisiblePlaneWidget(value);
743 //-------------------------------------------------------------------
744 void wxVtkMPR3DViewCntrlPanel::OnOutline(wxCommandEvent& event)
746 _wxvtkmpr3Dview->showOutlineActor( _ckBoxOutline->GetValue() );
747 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->Refresh();
751 //-------------------------------------------------------------------
752 void wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack(wxCommandEvent& event)
754 if (_ckBoxBackGroundBlack->GetValue()==true)
756 _wxvtkmpr3Dview->SetBackGroundType(0);
758 _wxvtkmpr3Dview->SetBackGroundType(1);
762 //-------------------------------------------------------------------
763 void wxVtkMPR3DViewCntrlPanel::OnInterpolate(wxCommandEvent& event)
765 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetInterpolate( _ckBoxInterpolate->GetValue() );
766 _wxvtkmpr3Dview->Refresh();
767 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
768 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
771 //-------------------------------------------------------------------
772 void wxVtkMPR3DViewCntrlPanel::OnFixAxis2D(wxCommandEvent& event)
774 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetFixAxis2D( _ckBoxFixAxis2D->GetValue() );
775 _wxvtkmpr3Dview->Refresh();
776 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
777 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
778 #if wxMAJOR_VERSION <= 2
779 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
781 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
785 //-------------------------------------------------------------------
786 void wxVtkMPR3DViewCntrlPanel::OnOpacityAxis(wxCommandEvent& event)
788 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetOpacityAxis( _opacityAxis->GetValue()/100.0 );
789 _wxvtkmpr3Dview->Refresh();
790 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
791 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);