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