]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DViewCntrlPanel.cxx
a2039f6d9545815ec671d8493454498b8d5e7606
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkMPR3DViewCntrlPanel.cxx
1 /*# ---------------------------------------------------------------------
2 #
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
4 #                        pour la Sant�)
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
8 #
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.
15 #
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
20 #  liability.
21 #
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 # ------------------------------------------------------------------------ */
25
26 #include "wxVtkMPR3DViewCntrlPanel.h"
27
28 #include "HistogramDialog.h"
29 #include <wx/combobox.h>
30
31 wxVtkMPR3DViewCntrlPanel::wxVtkMPR3DViewCntrlPanel(wxWindow *parent, wxVtkMPR3DView *wxvtkmpr3Dview, bool align )
32 : wxPanel(parent, -1)
33 {
34         wxPanel *panel  = this;
35         _wxvtkmpr3Dview = wxvtkmpr3Dview;
36
37         /*int maxX = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionX();
38         int maxY = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionY();
39         int maxZ = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionZ();*/
40
41         //int maxX = 1;
42         //int maxY = 1;
43         //int maxZ = 1;
44
45         //CPR: Modified 30 Nov 2009
46         /*
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") );
54         */
55
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);
62
63         _ckBoxXYZ                                       = new wxCheckBox(panel,-1,_T("XYZ axis   "));
64         _ckBoxPlane                                     = new wxCheckBox(panel,-1,_T("Plane"));
65 ////EED 05Nov2012       _ckBox_BW_Color_Plane           = new wxCheckBox(panel,-1,_T("GL/Color"));
66         wxButton *btnColorTable         = new wxButton (panel, -1, _T("Color table") );
67         wxButton *btnFreePlanesOrtho= new wxButton (panel, -1, _T("Orthogonal planes GL") );
68
69         _ckFreePlaneX= new wxCheckBox(panel,-1,_T("X "));
70         _ckFreePlaneY= new wxCheckBox(panel,-1,_T("Y "));
71         _ckFreePlaneZ= new wxCheckBox(panel,-1,_T("Z "));
72         _ckFreePlaneInteraction= new wxCheckBox(panel,-1,_T("Interaction planes GL"));
73         
74         //EED: If-else statements added 30 Nov 2009
75         _ckFreePlaneX->SetValue(false);
76         _ckFreePlaneY->SetValue(false);
77         _ckFreePlaneZ->SetValue(false);
78         _ckFreePlaneInteraction->SetValue(true);
79         
80         _ckBoxX->SetValue(false);
81         _ckBoxY->SetValue(false);
82         _ckBoxZ->SetValue(false);
83         _ckBoxXYZ->SetValue(false);
84 ////EED 05Nov2012       _ckBox_BW_Color_Plane->SetValue(true);
85         _ckBoxPlane->SetValue(false);
86         _ckBoxOutline= new wxCheckBox(panel,-1,_T("Outline"));
87         _ckBoxOutline->SetValue(true);
88         _ckBoxInterpolate= new wxCheckBox(panel,-1,_T("Interpolate"));
89         _ckBoxInterpolate->SetValue(true);
90
91
92         _ckBoxBackGroundBlack= new wxCheckBox(panel,-1,_T("Background Black"));;
93         _ckBoxBackGroundBlack->SetValue(false);
94
95         _positionX->SetSize(400,20);
96         _positionY->SetSize(400,20);
97         _positionZ->SetSize(400,20);
98
99         // Stereo
100         _cbStereo = new wxComboBox(panel, -1, _T(""), wxDefaultPosition, wxDefaultSize, 0, NULL,wxCB_READONLY );        
101         _cbStereo->Append(_T(" * NO STEREO"));
102         _cbStereo->Append(_T("   STEREO CRYSTAL EYES"));
103         _cbStereo->Append(_T("   STEREO RED BLUE"));
104         _cbStereo->Append(_T("   STEREO INTERLACED"));
105         _cbStereo->Append(_T("   STEREO LEFT"));
106         _cbStereo->Append(_T("   STEREO RIGHT"));
107         _cbStereo->Append(_T("   STEREO DRESDEN"));
108         _cbStereo->Append(_T(" * STEREO ANAGLYPH"));
109         _cbStereo->Append(_T("   STEREO CHECKERBOARD"));
110         _cbStereo->Select(0);
111         
112         
113         
114         
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                                        );
121         
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 ////EED 05Nov2012       Connect(_ckBox_BW_Color_Plane->GetId()  , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane  );
126         
127         Connect(_ckFreePlaneX->GetId()          , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX                        );
128         Connect(_ckFreePlaneY->GetId()          , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY                        );
129         Connect(_ckFreePlaneZ->GetId()          , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ                        );
130         Connect(btnFreePlanesOrtho->GetId()             , wxEVT_COMMAND_BUTTON_CLICKED,   (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnFreePlanesOrtho                          );
131         Connect(_ckFreePlaneInteraction->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction      );
132         Connect(_cbStereo->GetId()                              , wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnSetStereo                                       );
133         Connect(_ckBoxOutline->GetId()                  , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnOutline                                          );
134         Connect(_ckBoxBackGroundBlack->GetId()  , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack                          );
135         Connect(_ckBoxInterpolate->GetId()              , wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnInterpolate                                      );
136         
137         
138         wxFlexGridSizer *sizer;
139         
140         //      wxBoxSizer *sizer        = new wxBoxSizer(wxVERTICAL);
141         //      wxBoxSizer *sizerH4 = new wxBoxSizer(wxHORIZONTAL);
142         
143         //CPR: If-else statements added 30 Nov 2009
144         wxFlexGridSizer *sizerH4;
145         wxFlexGridSizer *sizerH5;
146         wxFlexGridSizer *sizerH6;
147
148         if(align)
149         {
150                 sizer   = new wxFlexGridSizer(4);
151                 sizerH4 = new wxFlexGridSizer(3);
152                 
153                 sizerH4->Add( new wxStaticText(panel, -1,_T(" "))       , 1, wxALL|wxEXPAND, 0);
154                 sizerH4->Add( new wxStaticText(panel, -1,_T("GL"))      , 1, wxALL|wxEXPAND, 0);
155                 sizerH4->Add( new wxStaticText(panel, -1,_T("Color   "))        , 1, wxALL|wxEXPAND, 0);
156                 
157                 sizerH4->Add( _positionX ,1,wxGROW                          , 0 );
158                 sizerH4->Add( _ckFreePlaneX,            1, wxALL|wxEXPAND, 0);
159                 sizerH4->Add( _ckBoxX     ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
160                 
161                 sizerH4->Add( _positionY ,1,wxGROW, 0 );
162                 sizerH4->Add( _ckFreePlaneY,            1, wxALL|wxEXPAND, 0);
163                 sizerH4->Add( _ckBoxY     ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
164                 
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 );
168
169 //EED 2016/02/19                
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                 
174                 
175                 
176                 
177                 sizerH5 = new wxFlexGridSizer(1);
178                 sizerH5->Add( new wxStaticText(panel, -1,_T("      "))  , 1, wxALL|wxEXPAND, 0);
179                 sizerH5->Add( _ckBoxXYZ                                 , 1, wxALL|wxEXPAND, 0);
180                 sizerH5->Add( _ckBoxPlane                               , 1, wxALL|wxEXPAND, 0);                
181                 sizerH5->Add( new wxStaticText(panel, -1,_T("      "))  , 1, wxALL|wxEXPAND, 0);
182 ////EED 05Nov2012               sizerH5->Add( _ckBox_BW_Color_Plane                                     , 1, wxALL|wxEXPAND, 0);
183                 sizerH5->Add( _ckFreePlaneInteraction , 1, wxALL|wxEXPAND, 0);
184                 sizerH5->Add( btnFreePlanesOrtho       , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
185                 sizerH5->Add( new wxStaticText(panel, -1,_T(" "))       , 1, wxALL|wxEXPAND, 0);
186                 sizerH5->Add( btnColorTable                         , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
187                 sizerH5->Add( new wxStaticText(panel, -1,_T(" "))       , 1, wxALL|wxEXPAND, 0);
188                 sizerH5->Add( _cbStereo, 1, wxALL|wxEXPAND, 0);
189                 
190                 sizerH6 = new wxFlexGridSizer(1);
191                 sizerH6->Add( _ckBoxOutline                                     , 1, wxALL|wxEXPAND, 0);
192                 sizerH6->Add( _ckBoxBackGroundBlack                     , 1, wxALL|wxEXPAND, 0);
193
194
195                 sizer->Add( sizerH4,  1, wxALL|wxGROW,  2);
196                 sizer->Add( sizerH5,  1, wxALL|wxEXPAND,2);
197                 sizer->Add( sizerH6,  1, wxALL|wxEXPAND,2);
198                 
199                 
200         }       else    {
201                 sizer    = new wxFlexGridSizer(1);
202
203                 sizerH4 = new wxFlexGridSizer(10);
204                 sizerH5 = new wxFlexGridSizer(10);
205                 sizerH6 = new wxFlexGridSizer(10);
206
207                 sizerH4->Add( _positionX        , 1, wxGROW                          , 0 );
208                 sizerH4->Add( _ckBoxX           , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
209                 sizerH4->Add( _positionY        , 1, wxGROW                          , 0 );
210                 sizerH4->Add( _ckBoxY           , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
211                 sizerH4->Add( _positionZ        , 1, wxGROW                          , 0 );
212                 sizerH4->Add( _ckBoxZ           , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
213                 sizerH4->Add( btnColorTable     , 0, wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
214
215                 sizerH5->Add( _ckBoxXYZ                                                                 , 1, wxALL|wxEXPAND, 0);
216                 sizerH5->Add( _ckBoxPlane                                                               , 1, wxALL|wxEXPAND, 0);
217 ////EED 05Nov2012               sizerH5->Add( _ckBox_BW_Color_Plane                                             , 1, wxALL|wxEXPAND, 0);
218                 sizerH5->Add( new wxStaticText(panel, -1,_T("      "))  , 1, wxALL|wxEXPAND, 0);
219
220                 sizerH6 = new wxFlexGridSizer(10);
221                 sizerH6->Add( _ckFreePlaneX                            , 1, wxALL|wxEXPAND, 0);
222                 sizerH6->Add( new wxStaticText(panel, -1,_T(" "))      , 1, wxALL|wxEXPAND, 0);
223                 sizerH6->Add( _ckFreePlaneY                            , 1, wxALL|wxEXPAND, 0);
224                 sizerH6->Add( new wxStaticText(panel, -1,_T(" "))      , 1, wxALL|wxEXPAND, 0);
225                 sizerH6->Add( _ckFreePlaneZ                            , 1, wxALL|wxEXPAND, 0);
226                 sizerH6->Add( new wxStaticText(panel, -1,_T("  "))     , 1, wxALL|wxEXPAND, 0);
227                 sizerH6->Add( _ckFreePlaneInteraction                  , 1, wxALL|wxEXPAND, 0);
228                 sizerH6->Add( new wxStaticText(panel, -1,_T(" "))       , 1, wxALL|wxEXPAND, 0);
229                 sizerH6->Add( btnFreePlanesOrtho        , 0     , wxALIGN_CENTER_VERTICAL|wxSHAPED, 0 );
230                 sizerH6->Add( new wxStaticText(panel, -1,_T(" "))       , 1, wxALL|wxEXPAND, 0);
231                 sizerH6->Add( _cbStereo, 1, wxALL|wxEXPAND, 0);
232                 
233                 sizer->Add( sizerH4,  1, wxALL|wxGROW,  2);
234                 sizer->Add( sizerH5,  1, wxALL|wxEXPAND,2);
235                 sizer->Add( sizerH6,  1, wxALL|wxEXPAND,2);
236         }
237
238         
239
240         
241         //EED 28 sep 2006
242         //      wxFlexGridSizer *sizerH6 = new wxFlexGridSizer(10);
243         //      wxFlexGridSizer *sizerH7 = new wxFlexGridSizer(10);
244
245         //      sizerH4->Add( ckBoxX            , 1, wxALL|wxEXPAND, 0);
246         //      sizerH4->Add( new wxStaticText(panel, -1,"  ")                  , 1, wxALL|wxEXPAND, 0);
247         //      sizerH4->Add( _positionX        , 1, wxALL|wxEXPAND, 0);
248
249         //      sizerH5->Add( ckBoxY            , 1, wxALL|wxEXPAND, 0);
250         //      sizerH5->Add( new wxStaticText(panel, -1,"  ")                  , 1, wxALL|wxEXPAND, 0);
251         //      sizerH5->Add( _positionY        , 1, wxALL|wxEXPAND, 0);
252
253         //      sizerH6->Add( ckBoxZ            , 1, wxALL|wxEXPAND, 0);
254         //      sizerH6->Add( new wxStaticText(panel, -1,"  ")                  , 1, wxALL|wxEXPAND, 0);
255         //      sizerH6->Add( _positionZ        , 1, wxALL|wxEXPAND, 0);
256
257         //      sizerH7->Add( _ckBoxXYZ         , 1, wxALL|wxEXPAND, 0);
258         //      sizerH7->Add( _ckBoxPlane       , 1, wxALL|wxEXPAND, 0);
259
260         //      sizer->Add( sizerH4                     , 1, wxALL|wxEXPAND, 2);
261         //      sizer->Add( sizerH5                     , 1, wxALL|wxEXPAND, 2);
262         //      sizer->Add( sizerH6                     , 1, wxALL|wxEXPAND, 2);
263         //      sizer->Add( sizerH7                     , 1, wxALL|wxEXPAND, 2);
264
265                 
266         //      sizerH5->Add( ckBoxX                            ,  1, wxALL|wxEXPAND, 0);
267         //      sizerH5->Add( ckBoxY                            ,  1, wxALL|wxEXPAND, 0);
268         //      sizerH5->Add( ckBoxZ                            ,  1, wxALL|wxEXPAND, 0);
269
270
271         panel->SetSize(400,50);
272         panel->SetAutoLayout(true);
273         panel->SetSizer(sizer);
274         panel->Layout();
275
276         panel->SetEventHandler((wxEvtHandler*)this);
277         
278         //this->UpdateControlPanel();
279                 
280 }
281
282 //-------------------------------------------------------------------
283 void wxVtkMPR3DViewCntrlPanel::UpdateControlPanel(bool firsttime)
284 {
285         vtkMPRBaseData* basedata = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData();
286         if(basedata != NULL){
287
288                 vtkImageData* img = basedata->GetImageData();
289                 int x0,x1,y0,y1,z0,z1;
290
291                 if(img)
292                 {
293                         img->GetExtent(x0,x1,y0,y1,z0,z1);
294                         _positionX->SetRange(x0,x1);
295                         _positionY->SetRange(y0,y1);
296                         _positionZ->SetRange(z0,z1);
297
298                         if (firsttime==true)
299                         {
300                                 _positionX->SetValue((x0+x1)/2);
301                                 _positionY->SetValue((y0+y1)/2);
302                                 _positionZ->SetValue((z0+z1)/2);
303                         } // if firsttime
304
305 //EED 12April2012  This make a floting window in MacOs and Linux with for windows                       
306 //                      _positionX->Update();
307 //                      _positionY->Update();
308 //                      _positionZ->Update();
309 //                      this->Update();
310                 }//img
311                 
312         }//basedata 
313         
314 }
315
316 //-------------------------------------------------------------------
317 wxVtkMPR3DViewCntrlPanel::~wxVtkMPR3DViewCntrlPanel()
318 {
319 }
320
321 //-------------------------------------------------------------------
322 void wxVtkMPR3DViewCntrlPanel::Refresh()
323 {
324 //      wxPanel::Refresh();
325         _positionX->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX( )) );
326         _positionY->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY( )) );
327         _positionZ->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ( )) );
328 }
329
330 /*
331 //-------------------------------------------------------------------
332 int wxVtkMPR3DViewCntrlPanel::GetIdTissue()
333 {
334         int idTissue=-1;
335         if (_surfA->GetValue()==true)
336         {
337                 idTissue=0;
338         }
339         if (_surfB->GetValue()==true)
340         {
341                 idTissue=1;
342         }
343         if (_surfC->GetValue()==true)
344         {
345                 idTissue=2;
346         }
347         if (_surfD->GetValue()==true)
348         {
349                 idTissue=3;
350         }
351
352         return idTissue;
353 }
354 */
355
356 //-------------------------------------------------------------------
357 //void wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane(wxCommandEvent& event)
358 //{
359 //      printf ("EED wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane  ...... NOT Implemented\n ");
360 //}
361
362
363 //-------------------------------------------------------------------
364 void wxVtkMPR3DViewCntrlPanel::OnEditColorTable(wxCommandEvent& event)
365 {
366         
367         vtkImageData *imagedata = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
368
369         if ( imagedata->GetScalarType()!=VTK_UNSIGNED_SHORT )
370         {
371                 wxMessageDialog windowMessage1(NULL,_T("This option is just available for UNSIGNED SHORT images."), _T("Alert !"), wxOK);
372                 windowMessage1.ShowModal();
373                 return;
374         }
375         
376         vtkColorTransferFunction *ctfun                 = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetvtkColorTransferFunction(); 
377         std::vector<double> *ctfunVectorPoint   = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorPoint();
378         std::vector<double> *ctfunVectorRed             = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorRed();
379         std::vector<double> *ctfunVectorGreen   = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorGreen();
380         std::vector<double> *ctfunVectorBlue    =   this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorBlue();
381
382         //void *p=this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer(); // JPRx
383
384
385         int i=0,xi,r,g,b;
386         
387         HistogramDialog* hDlg=new HistogramDialog(NULL,_T("Color table"),imagedata,2);
388         
389                 
390         hDlg->erasePointsTransferenceFunction();                
391         int ctfSize=ctfunVectorRed->size();
392         if(ctfSize>0)
393         {
394 // MACHETE  OJO Eduardo
395                 int i=0;
396                         while(i<ctfSize)
397                         {
398                                 double gr       = (*ctfunVectorPoint)[i];
399                                 double r        = (*ctfunVectorRed)[i];
400                                 double g        = (*ctfunVectorGreen)[i];
401                                 double b        = (*ctfunVectorBlue)[i];                        
402
403                                 hDlg->addColorPoint(gr,(int)(r*255),(int)(g*255),(int)(b*255));
404
405                                 i++;
406                         }
407         }
408
409         //
410         // when the user had changed the transference Function
411         //
412         
413         //setting variables if the user wants to do refresh
414         
415         hDlg->setCTF(ctfun);
416         //hDlg->setMPR3Dview(_wxvtkmpr3Dview);
417         
418         if(hDlg->ShowModal()== wxID_OK )
419         {       
420                 
421                 // -- vtkColorTransferFunction  --
422                         ctfun->RemoveAllPoints ();
423                         //clean colors
424                         ctfunVectorPoint->clear();
425                         ctfunVectorRed->clear();
426                         ctfunVectorGreen->clear();
427                         ctfunVectorBlue->clear();
428
429                         int nCTFpoints=hDlg->getSizeBarColor();
430 // Machete .. Ojo Eduardo
431                         i=0;    
432                         while(i<nCTFpoints)
433                         {
434                                 hDlg->getDataBarColorPoint(i,xi,r,g,b);
435                                 /*
436                                 if (i==0)
437                                 {
438                                         hDlg->getDataBarColorPoint(1,xi,r,g,b);
439                                 } 
440                                 if (i==nCTFpoints)
441                                 {
442                                         hDlg->getDataBarColorPoint(i-1,xi,r,g,b);
443                                 } 
444                                 */
445                                 ctfun->AddRGBPoint(xi,r/255.0,g/255.0,b/255.0 );
446                                 ctfunVectorPoint->push_back(xi);
447                                 ctfunVectorRed->push_back(r/255.0);
448                                 ctfunVectorGreen->push_back(g/255.0);
449                                 ctfunVectorBlue->push_back(b/255.0);
450                                 i++;
451                                 
452                         }
453                         
454         }
455         
456         else
457         {
458                 
459                 if(hDlg->getRefreshed())
460                 {
461                         // -- vtkColorTransferFunction  --
462                         ctfun->RemoveAllPoints ();
463                         
464                         int i=0;
465                         int size=ctfunVectorPoint->size();
466                         
467                         for(i=0;i<size;i++)
468                         {
469                                 double grey2=(*ctfunVectorPoint)[i];
470                                 double red =(*ctfunVectorRed)[i];
471                                 double green =(*ctfunVectorGreen)[i];
472                                 double blue = (*ctfunVectorBlue)[i];
473                                 ctfun->AddRGBPoint(grey2,red,green,blue);
474                         }
475                  }      
476                  
477         }
478
479  hDlg->Destroy();
480 }
481
482
483 //-------------------------------------------------------------------
484 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX(wxCommandEvent& event)
485 {
486         _wxvtkmpr3Dview->FreePlaneVisible( 1, event.IsChecked() );
487         _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
488 }
489
490 //-------------------------------------------------------------------
491 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY(wxCommandEvent& event)
492 {
493         _wxvtkmpr3Dview->FreePlaneVisible(  2, event.IsChecked() );
494         _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
495 }
496
497
498 //-------------------------------------------------------------------
499 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ(wxCommandEvent& event)
500 {
501         _wxvtkmpr3Dview->FreePlaneVisible(  3, event.IsChecked() );
502         _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
503 }
504
505
506 //-------------------------------------------------------------------
507 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction(wxCommandEvent& event)
508 {
509         _wxvtkmpr3Dview->FreePlaneInteraction(  event.IsChecked() );
510 }
511
512 //-------------------------------------------------------------------
513 void wxVtkMPR3DViewCntrlPanel::OnFreePlanesOrtho(wxCommandEvent& event)
514 {
515         _wxvtkmpr3Dview->SetFreePlanesOrtho();
516 }
517
518 //-------------------------------------------------------------------
519 void wxVtkMPR3DViewCntrlPanel::OnSetStereo(wxCommandEvent& event)
520 {
521         this->_wxvtkmpr3Dview->GetWxvtk3Dbaseview()->SetStereo( _cbStereo->GetSelection()  );
522 }
523
524
525
526 //-------------------------------------------------------------------
527 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(wxCommandEvent& event)
528 {       
529         _wxvtkmpr3Dview->VisibleImageActor(0, event.IsChecked() );
530         _wxvtkmpr3Dview->Refresh();
531         
532         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
533
534         try{
535 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
536 #if wxMAJOR_VERSION <= 2
537                 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
538 #else
539                 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
540 #endif
541         }catch(char* e){
542                 std::cout<<e<<std::endl;
543         }
544 }
545 //-------------------------------------------------------------------
546 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(wxCommandEvent& event)
547 {
548         _wxvtkmpr3Dview->VisibleImageActor(1, event.IsChecked() );
549         _wxvtkmpr3Dview->Refresh();
550
551         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
552 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
553 #if wxMAJOR_VERSION <= 2
554         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
555 #else
556         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
557 #endif
558 }
559 //-------------------------------------------------------------------
560 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(wxCommandEvent& event)
561 {
562         _wxvtkmpr3Dview->VisibleImageActor(2, event.IsChecked() );
563         _wxvtkmpr3Dview->Refresh();
564         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
565 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
566 #if wxMAJOR_VERSION <= 2
567         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
568 #else
569         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
570 #endif
571 }
572
573 //-------------------------------------------------------------------
574 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ(wxCommandEvent& event)
575 {
576
577         _wxvtkmpr3Dview->VisiblePointWidget(event.IsChecked());
578 }
579
580 //-------------------------------------------------------------------
581 void wxVtkMPR3DViewCntrlPanel::OnVisiblePlane(wxCommandEvent& event)
582 {
583         _wxvtkmpr3Dview->VisiblePlaneWidget(event.IsChecked());
584 }
585
586 //-------------------------------------------------------------------
587 void wxVtkMPR3DViewCntrlPanel::OnPositionX(wxScrollEvent& event)
588 {
589         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetX( _positionX->GetValue() );
590         _wxvtkmpr3Dview->RefreshView();
591
592         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
593 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
594 #if wxMAJOR_VERSION <= 2
595         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
596 #else
597         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
598 #endif
599 }
600 //-------------------------------------------------------------------
601 void wxVtkMPR3DViewCntrlPanel::OnPositionY(wxScrollEvent& event)
602 {
603         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetY( _positionY->GetValue() );
604         _wxvtkmpr3Dview->RefreshView();
605         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
606 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
607 #if wxMAJOR_VERSION <= 2
608         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
609 #else
610         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
611 #endif
612 }
613 //-------------------------------------------------------------------
614 void wxVtkMPR3DViewCntrlPanel::OnPositionZ(wxScrollEvent& event)
615 {
616         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetZ( _positionZ->GetValue() );
617         _wxvtkmpr3Dview->RefreshView();
618         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
619 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
620 #if wxMAJOR_VERSION <= 2
621         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
622 #else
623         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
624 #endif
625 }
626
627
628
629 //-------------------------------------------------------------------
630 bool wxVtkMPR3DViewCntrlPanel::GetVisibleX()
631 {
632         return _ckBoxX->GetValue();
633 }
634
635 //-------------------------------------------------------------------
636 bool wxVtkMPR3DViewCntrlPanel::GetVisibleY()
637 {
638         return _ckBoxY->GetValue();
639 }
640
641 //-------------------------------------------------------------------
642 bool wxVtkMPR3DViewCntrlPanel::GetVisibleZ()
643 {
644         return _ckBoxZ->GetValue();
645 }
646
647 //-------------------------------------------------------------------
648 bool wxVtkMPR3DViewCntrlPanel::GetVisibleXYZ()
649 {
650         return _ckBoxXYZ->GetValue();
651 }
652
653 //-------------------------------------------------------------------
654 ////EED 05Nov2012
655 //bool wxVtkMPR3DViewCntrlPanel::Get_BW_Color_Plane()
656 //{
657 //      return _ckBox_BW_Color_Plane;
658 //}
659
660 //-------------------------------------------------------------------
661 bool wxVtkMPR3DViewCntrlPanel::GetVisiblePlane()
662 {
663         return _ckBoxPlane->GetValue();
664 }
665
666 //-------------------------------------------------------------------
667 void wxVtkMPR3DViewCntrlPanel::SetVisibleX(bool value)
668 {
669         _ckBoxX->SetValue(value);
670         
671         _wxvtkmpr3Dview->VisibleImageActor(0, value );
672         _wxvtkmpr3Dview->Refresh();
673
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);
678 #else
679         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
680 #endif
681 }
682
683 //-------------------------------------------------------------------
684 void wxVtkMPR3DViewCntrlPanel::SetVisibleY(bool value)
685 {
686         _ckBoxY->SetValue(value);
687         
688         _wxvtkmpr3Dview->VisibleImageActor(1, value );
689         _wxvtkmpr3Dview->Refresh();
690
691         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
692 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
693 #if wxMAJOR_VERSION <= 2
694         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
695 #else
696         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
697 #endif
698 }
699
700 //-------------------------------------------------------------------
701 void wxVtkMPR3DViewCntrlPanel::SetVisibleZ(bool value)
702 {
703         _ckBoxZ->SetValue(value);
704
705         _wxvtkmpr3Dview->VisibleImageActor(2, value );
706         _wxvtkmpr3Dview->Refresh();
707
708         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
709 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
710 #if wxMAJOR_VERSION <= 2
711         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
712 #else
713         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
714 #endif
715 }
716
717 //-------------------------------------------------------------------
718 void wxVtkMPR3DViewCntrlPanel::SetVisibleXYZ(bool value)
719 {
720         _ckBoxXYZ->SetValue(value);
721         _wxvtkmpr3Dview->VisiblePointWidget(value);
722
723 }
724
725 //-------------------------------------------------------------------
726 void wxVtkMPR3DViewCntrlPanel::SetVisiblePlane(bool value)
727 {
728         _ckBoxPlane->SetValue(value);
729         _wxvtkmpr3Dview->VisiblePlaneWidget(value);
730 }
731
732
733 //-------------------------------------------------------------------
734 void wxVtkMPR3DViewCntrlPanel::OnOutline(wxCommandEvent& event)
735 {
736         _wxvtkmpr3Dview->showOutlineActor( _ckBoxOutline->GetValue() );
737         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->Refresh();
738
739 }
740
741 //-------------------------------------------------------------------
742 void wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack(wxCommandEvent& event)
743 {
744         if (_ckBoxBackGroundBlack->GetValue()==true)
745         {
746                 _wxvtkmpr3Dview->SetBackGroundType(0);
747         } else {
748                 _wxvtkmpr3Dview->SetBackGroundType(1);
749         }
750 }
751
752 //-------------------------------------------------------------------
753 void wxVtkMPR3DViewCntrlPanel::OnInterpolate(wxCommandEvent& event)
754 {
755         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetInterpolate(  _ckBoxInterpolate->GetValue() );
756
757         _wxvtkmpr3Dview->Refresh();
758
759         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
760 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
761 #if wxMAJOR_VERSION <= 2
762         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
763 #else
764         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
765 #endif
766
767
768 }
769
770