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