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