]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkMPR3DViewCntrlPanel.cxx
32624a50b213a59d12842f9a9c0cfa284aa79757
[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()
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                         img->GetExtent(x0,x1,y0,y1,z0,z1);
293                         _positionX->SetRange(x0,x1);
294                         _positionY->SetRange(y0,y1);
295                         _positionZ->SetRange(z0,z1);
296
297                         _positionX->SetValue((x0+x1)/2);
298                         _positionY->SetValue((y0+y1)/2);
299                         _positionZ->SetValue((z0+z1)/2);
300
301 //EED 12April2012  This make a floting window in MacOs and Linux with for windows                       
302 //                      _positionX->Update();
303 //                      _positionY->Update();
304 //                      _positionZ->Update();
305 //                      this->Update();
306                 }//img
307                 
308         }//basedata 
309         
310 }
311
312 //-------------------------------------------------------------------
313 wxVtkMPR3DViewCntrlPanel::~wxVtkMPR3DViewCntrlPanel()
314 {
315 }
316
317 //-------------------------------------------------------------------
318 void wxVtkMPR3DViewCntrlPanel::Refresh()
319 {
320 //      wxPanel::Refresh();
321         _positionX->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX( )) );
322         _positionY->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY( )) );
323         _positionZ->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ( )) );
324 }
325
326 /*
327 //-------------------------------------------------------------------
328 int wxVtkMPR3DViewCntrlPanel::GetIdTissue()
329 {
330         int idTissue=-1;
331         if (_surfA->GetValue()==true)
332         {
333                 idTissue=0;
334         }
335         if (_surfB->GetValue()==true)
336         {
337                 idTissue=1;
338         }
339         if (_surfC->GetValue()==true)
340         {
341                 idTissue=2;
342         }
343         if (_surfD->GetValue()==true)
344         {
345                 idTissue=3;
346         }
347
348         return idTissue;
349 }
350 */
351
352 //-------------------------------------------------------------------
353 //void wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane(wxCommandEvent& event)
354 //{
355 //      printf ("EED wxVtkMPR3DViewCntrlPanel::On_BW_Color_Plane  ...... NOT Implemented\n ");
356 //}
357
358
359 //-------------------------------------------------------------------
360 void wxVtkMPR3DViewCntrlPanel::OnEditColorTable(wxCommandEvent& event)
361 {
362         
363         vtkImageData *imagedata = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
364
365         if ( imagedata->GetScalarType()!=VTK_UNSIGNED_SHORT )
366         {
367                 wxMessageDialog windowMessage1(NULL,_T("This option is just available for UNSIGNED SHORT images."), _T("Alert !"), wxOK);
368                 windowMessage1.ShowModal();
369                 return;
370         }
371         
372         vtkColorTransferFunction *ctfun                 = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetvtkColorTransferFunction(); 
373         std::vector<double> *ctfunVectorPoint   = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorPoint();
374         std::vector<double> *ctfunVectorRed             = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorRed();
375         std::vector<double> *ctfunVectorGreen   = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorGreen();
376         std::vector<double> *ctfunVectorBlue    =   this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorBlue();
377
378         //void *p=this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer(); // JPRx
379
380
381         int i=0,xi,r,g,b;
382         
383         HistogramDialog* hDlg=new HistogramDialog(NULL,_T("Color table"),imagedata,2);
384         
385                 
386         hDlg->erasePointsTransferenceFunction();                
387         int ctfSize=ctfunVectorRed->size();
388         if(ctfSize>0)
389         {
390 // MACHETE  OJO Eduardo
391                 int i=0;
392                         while(i<ctfSize)
393                         {
394                                 double gr       = (*ctfunVectorPoint)[i];
395                                 double r        = (*ctfunVectorRed)[i];
396                                 double g        = (*ctfunVectorGreen)[i];
397                                 double b        = (*ctfunVectorBlue)[i];                        
398
399                                 hDlg->addColorPoint(gr,(int)(r*255),(int)(g*255),(int)(b*255));
400
401                                 i++;
402                         }
403         }
404
405         //
406         // when the user had changed the transference Function
407         //
408         
409         //setting variables if the user wants to do refresh
410         
411         hDlg->setCTF(ctfun);
412         //hDlg->setMPR3Dview(_wxvtkmpr3Dview);
413         
414         if(hDlg->ShowModal()== wxID_OK )
415         {       
416                 
417                 // -- vtkColorTransferFunction  --
418                         ctfun->RemoveAllPoints ();
419                         //clean colors
420                         ctfunVectorPoint->clear();
421                         ctfunVectorRed->clear();
422                         ctfunVectorGreen->clear();
423                         ctfunVectorBlue->clear();
424
425                         int nCTFpoints=hDlg->getSizeBarColor();
426 // Machete .. Ojo Eduardo
427                         i=0;    
428                         while(i<nCTFpoints)
429                         {
430                                 hDlg->getDataBarColorPoint(i,xi,r,g,b);
431                                 /*
432                                 if (i==0)
433                                 {
434                                         hDlg->getDataBarColorPoint(1,xi,r,g,b);
435                                 } 
436                                 if (i==nCTFpoints)
437                                 {
438                                         hDlg->getDataBarColorPoint(i-1,xi,r,g,b);
439                                 } 
440                                 */
441                                 ctfun->AddRGBPoint(xi,r/255.0,g/255.0,b/255.0 );
442                                 ctfunVectorPoint->push_back(xi);
443                                 ctfunVectorRed->push_back(r/255.0);
444                                 ctfunVectorGreen->push_back(g/255.0);
445                                 ctfunVectorBlue->push_back(b/255.0);
446                                 i++;
447                                 
448                         }
449                         
450         }
451         
452         else
453         {
454                 
455                 if(hDlg->getRefreshed())
456                 {
457                         // -- vtkColorTransferFunction  --
458                         ctfun->RemoveAllPoints ();
459                         
460                         int i=0;
461                         int size=ctfunVectorPoint->size();
462                         
463                         for(i=0;i<size;i++)
464                         {
465                                 double grey2=(*ctfunVectorPoint)[i];
466                                 double red =(*ctfunVectorRed)[i];
467                                 double green =(*ctfunVectorGreen)[i];
468                                 double blue = (*ctfunVectorBlue)[i];
469                                 ctfun->AddRGBPoint(grey2,red,green,blue);
470                         }
471                  }      
472                  
473         }
474
475  hDlg->Destroy();
476 }
477
478
479 //-------------------------------------------------------------------
480 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneX(wxCommandEvent& event)
481 {
482         _wxvtkmpr3Dview->FreePlaneVisible( 1, event.IsChecked() );
483         _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
484 }
485
486 //-------------------------------------------------------------------
487 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneY(wxCommandEvent& event)
488 {
489         _wxvtkmpr3Dview->FreePlaneVisible(  2, event.IsChecked() );
490         _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
491 }
492
493
494 //-------------------------------------------------------------------
495 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneZ(wxCommandEvent& event)
496 {
497         _wxvtkmpr3Dview->FreePlaneVisible(  3, event.IsChecked() );
498         _wxvtkmpr3Dview->FreePlaneInteraction( _ckFreePlaneInteraction->GetValue() );
499 }
500
501
502 //-------------------------------------------------------------------
503 void wxVtkMPR3DViewCntrlPanel::OnVisibleFreePlaneInteraction(wxCommandEvent& event)
504 {
505         _wxvtkmpr3Dview->FreePlaneInteraction(  event.IsChecked() );
506 }
507
508 //-------------------------------------------------------------------
509 void wxVtkMPR3DViewCntrlPanel::OnFreePlanesOrtho(wxCommandEvent& event)
510 {
511         _wxvtkmpr3Dview->SetFreePlanesOrtho();
512 }
513
514 //-------------------------------------------------------------------
515 void wxVtkMPR3DViewCntrlPanel::OnSetStereo(wxCommandEvent& event)
516 {
517         this->_wxvtkmpr3Dview->GetWxvtk3Dbaseview()->SetStereo( _cbStereo->GetSelection()  );
518 }
519
520
521
522 //-------------------------------------------------------------------
523 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(wxCommandEvent& event)
524 {       
525         _wxvtkmpr3Dview->VisibleImageActor(0, event.IsChecked() );
526         _wxvtkmpr3Dview->Refresh();
527         
528         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
529
530         try{
531                 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
532         }catch(char* e){
533                 std::cout<<e<<std::endl;
534         }
535 }
536 //-------------------------------------------------------------------
537 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(wxCommandEvent& event)
538 {
539         _wxvtkmpr3Dview->VisibleImageActor(1, event.IsChecked() );
540         _wxvtkmpr3Dview->Refresh();
541
542         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
543         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
544
545 }
546 //-------------------------------------------------------------------
547 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(wxCommandEvent& event)
548 {
549         _wxvtkmpr3Dview->VisibleImageActor(2, event.IsChecked() );
550         _wxvtkmpr3Dview->Refresh();
551
552         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
553         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
554 }
555
556 //-------------------------------------------------------------------
557 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ(wxCommandEvent& event)
558 {
559
560         _wxvtkmpr3Dview->VisiblePointWidget(event.IsChecked());
561 }
562
563 //-------------------------------------------------------------------
564 void wxVtkMPR3DViewCntrlPanel::OnVisiblePlane(wxCommandEvent& event)
565 {
566         _wxvtkmpr3Dview->VisiblePlaneWidget(event.IsChecked());
567
568 }
569
570 //-------------------------------------------------------------------
571 void wxVtkMPR3DViewCntrlPanel::OnPositionX(wxScrollEvent& event)
572 {
573         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetX( _positionX->GetValue() );
574         _wxvtkmpr3Dview->RefreshView();
575
576         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
577         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
578 }
579 //-------------------------------------------------------------------
580 void wxVtkMPR3DViewCntrlPanel::OnPositionY(wxScrollEvent& event)
581 {
582         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetY( _positionY->GetValue() );
583         _wxvtkmpr3Dview->RefreshView();
584         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
585         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
586 }
587 //-------------------------------------------------------------------
588 void wxVtkMPR3DViewCntrlPanel::OnPositionZ(wxScrollEvent& event)
589 {
590         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetZ( _positionZ->GetValue() );
591         _wxvtkmpr3Dview->RefreshView();
592         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
593         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
594 }
595
596
597
598 //-------------------------------------------------------------------
599 bool wxVtkMPR3DViewCntrlPanel::GetVisibleX()
600 {
601         return _ckBoxX->GetValue();
602 }
603
604 //-------------------------------------------------------------------
605 bool wxVtkMPR3DViewCntrlPanel::GetVisibleY()
606 {
607         return _ckBoxY->GetValue();
608 }
609
610 //-------------------------------------------------------------------
611 bool wxVtkMPR3DViewCntrlPanel::GetVisibleZ()
612 {
613         return _ckBoxZ->GetValue();
614 }
615
616 //-------------------------------------------------------------------
617 bool wxVtkMPR3DViewCntrlPanel::GetVisibleXYZ()
618 {
619         return _ckBoxXYZ->GetValue();
620 }
621
622 //-------------------------------------------------------------------
623 ////EED 05Nov2012
624 //bool wxVtkMPR3DViewCntrlPanel::Get_BW_Color_Plane()
625 //{
626 //      return _ckBox_BW_Color_Plane;
627 //}
628
629 //-------------------------------------------------------------------
630 bool wxVtkMPR3DViewCntrlPanel::GetVisiblePlane()
631 {
632         return _ckBoxPlane->GetValue();
633 }
634
635 //-------------------------------------------------------------------
636 void wxVtkMPR3DViewCntrlPanel::SetVisibleX(bool value)
637 {
638         _ckBoxX->SetValue(value);
639         
640         _wxvtkmpr3Dview->VisibleImageActor(0, value );
641         _wxvtkmpr3Dview->Refresh();
642
643         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
644         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
645 }
646
647 //-------------------------------------------------------------------
648 void wxVtkMPR3DViewCntrlPanel::SetVisibleY(bool value)
649 {
650         _ckBoxY->SetValue(value);
651         
652         _wxvtkmpr3Dview->VisibleImageActor(1, value );
653         _wxvtkmpr3Dview->Refresh();
654
655         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
656         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
657 }
658
659 //-------------------------------------------------------------------
660 void wxVtkMPR3DViewCntrlPanel::SetVisibleZ(bool value)
661 {
662         _ckBoxZ->SetValue(value);
663
664         _wxvtkmpr3Dview->VisibleImageActor(2, value );
665         _wxvtkmpr3Dview->Refresh();
666
667         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
668         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
669 }
670
671 //-------------------------------------------------------------------
672 void wxVtkMPR3DViewCntrlPanel::SetVisibleXYZ(bool value)
673 {
674         _ckBoxXYZ->SetValue(value);
675         _wxvtkmpr3Dview->VisiblePointWidget(value);
676
677 }
678
679 //-------------------------------------------------------------------
680 void wxVtkMPR3DViewCntrlPanel::SetVisiblePlane(bool value)
681 {
682         _ckBoxPlane->SetValue(value);
683         _wxvtkmpr3Dview->VisiblePlaneWidget(value);
684 }
685
686
687 //-------------------------------------------------------------------
688 void wxVtkMPR3DViewCntrlPanel::OnOutline(wxCommandEvent& event)
689 {
690         _wxvtkmpr3Dview->showOutlineActor( _ckBoxOutline->GetValue() );
691         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->Refresh();
692
693 }
694
695 //-------------------------------------------------------------------
696 void wxVtkMPR3DViewCntrlPanel::OnBackGroundBlack(wxCommandEvent& event)
697 {
698         if (_ckBoxBackGroundBlack->GetValue()==true)
699         {
700                 _wxvtkmpr3Dview->SetBackGroundType(0);
701         } else {
702                 _wxvtkmpr3Dview->SetBackGroundType(1);
703         }
704 }
705
706 //-------------------------------------------------------------------
707 void wxVtkMPR3DViewCntrlPanel::OnInterpolate(wxCommandEvent& event)
708 {
709         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetInterpolate(  _ckBoxInterpolate->GetValue() );
710
711         _wxvtkmpr3Dview->Refresh();
712
713         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
714         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
715
716 }
717
718