wxVtkMPR3DViewCntrlPanel.cxx

Go to the documentation of this file.
00001 #include "wxVtkMPR3DViewCntrlPanel.h"
00002 
00003 #include "HistogramDialog.h"
00004 
00005 wxVtkMPR3DViewCntrlPanel::wxVtkMPR3DViewCntrlPanel(wxWindow *parent, wxVtkMPR3DView *wxvtkmpr3Dview )
00006 : wxPanel(parent, -1)
00007 {
00008 
00009         wxPanel *panel  = this;
00010         _wxvtkmpr3Dview = wxvtkmpr3Dview;
00011 
00012         /*int maxX = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionX();
00013         int maxY = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionY();
00014         int maxZ = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionZ();*/
00015 
00016         int maxX = 1;
00017         int maxY = 1;
00018         int maxZ = 1;
00019 
00020         wxCheckBox              *ckBoxX                 = new wxCheckBox(panel,-1,_T("X           "));
00021                                         _positionX              = new wxSlider(panel,-1,maxX/2,0,maxX, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS);
00022         wxCheckBox              *ckBoxY                 = new wxCheckBox(panel,-1,_T("Y           "));
00023                                         _positionY              = new wxSlider(panel,-1,maxY/2,0,maxY, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS);
00024         wxCheckBox              *ckBoxZ                 = new wxCheckBox(panel,-1,_T("Z           "));
00025                                         _positionZ              = new wxSlider(panel,-1,maxZ/2,0,maxZ, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS);
00026         wxButton                *btnColorTable  = new wxButton (panel, -1, _T("Edit Color Table") );
00027 
00028         _ckBoxXYZ                       = new wxCheckBox(panel,-1,_T("XYZ                  "));
00029         _ckBoxPlane                     = new wxCheckBox(panel,-1,_T("Plane"));
00030 
00031         ckBoxX->SetValue(false);
00032         ckBoxY->SetValue(false);
00033         ckBoxZ->SetValue(false);
00034         _ckBoxXYZ->SetValue(false);
00035         _ckBoxPlane->SetValue(false);
00036 
00037         _positionX->SetSize(400,20);
00038         _positionY->SetSize(400,20);
00039         _positionZ->SetSize(400,20);
00040 
00041         Connect(ckBoxX->GetId()                 , wxEVT_COMMAND_CHECKBOX_CLICKED          , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX   );
00042         Connect(_positionX->GetId()             , wxEVT_COMMAND_SLIDER_UPDATED            , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionX              );
00043         Connect(ckBoxY->GetId()                 , wxEVT_COMMAND_CHECKBOX_CLICKED          , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY   );
00044         Connect(_positionY->GetId()             , wxEVT_COMMAND_SLIDER_UPDATED            , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionY              );
00045         Connect(ckBoxZ->GetId()                 , wxEVT_COMMAND_CHECKBOX_CLICKED          , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ   );
00046         Connect(_positionZ->GetId()             , wxEVT_COMMAND_SLIDER_UPDATED            , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionZ              );
00047         Connect(btnColorTable->GetId()  , wxEVT_COMMAND_BUTTON_CLICKED            , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnEditColorTable );
00048 
00049         Connect(_ckBoxXYZ->GetId()  , wxEVT_COMMAND_CHECKBOX_CLICKED      , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ );
00050         Connect(_ckBoxPlane->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED      , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisiblePlane   );
00051 
00052 
00053         wxFlexGridSizer *sizer   = new wxFlexGridSizer(1);
00054 //      wxBoxSizer *sizer        = new wxBoxSizer(wxVERTICAL);
00055 
00056 //      wxBoxSizer *sizerH4 = new wxBoxSizer(wxHORIZONTAL);
00057         wxFlexGridSizer *sizerH4 = new wxFlexGridSizer(10);
00058         wxFlexGridSizer *sizerH5 = new wxFlexGridSizer(10);
00059 
00060 
00061 
00062 //EED 28 sep 2006
00063 //      wxFlexGridSizer *sizerH6 = new wxFlexGridSizer(10);
00064 //      wxFlexGridSizer *sizerH7 = new wxFlexGridSizer(10);
00065 
00066 //      sizerH4->Add( ckBoxX            , 1, wxALL|wxEXPAND, 0);
00067 //      sizerH4->Add( new wxStaticText(panel, -1,"  ")                  , 1, wxALL|wxEXPAND, 0);
00068 //      sizerH4->Add( _positionX        , 1, wxALL|wxEXPAND, 0);
00069 
00070 //      sizerH5->Add( ckBoxY            , 1, wxALL|wxEXPAND, 0);
00071 //      sizerH5->Add( new wxStaticText(panel, -1,"  ")                  , 1, wxALL|wxEXPAND, 0);
00072 //      sizerH5->Add( _positionY        , 1, wxALL|wxEXPAND, 0);
00073 
00074 //      sizerH6->Add( ckBoxZ            , 1, wxALL|wxEXPAND, 0);
00075 //      sizerH6->Add( new wxStaticText(panel, -1,"  ")                  , 1, wxALL|wxEXPAND, 0);
00076 //      sizerH6->Add( _positionZ        , 1, wxALL|wxEXPAND, 0);
00077 
00078 //      sizerH7->Add( _ckBoxXYZ         , 1, wxALL|wxEXPAND, 0);
00079 //      sizerH7->Add( _ckBoxPlane       , 1, wxALL|wxEXPAND, 0);
00080 
00081 //      sizer->Add( sizerH4                     , 1, wxALL|wxEXPAND, 2);
00082 //      sizer->Add( sizerH5                     , 1, wxALL|wxEXPAND, 2);
00083 //      sizer->Add( sizerH6                     , 1, wxALL|wxEXPAND, 2);
00084 //      sizer->Add( sizerH7                     , 1, wxALL|wxEXPAND, 2);
00085 
00086         sizerH4->Add( _positionX                                                                ,1,wxGROW                                       , 0 );
00087         sizerH4->Add( ckBoxX                                                                    ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED     , 0 );
00088         sizerH4->Add( _positionY                                                                ,1,wxGROW                                       , 0 );
00089         sizerH4->Add( ckBoxY                                                                    ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED     , 0 );
00090         sizerH4->Add( _positionZ                                                                ,1,wxGROW                                       , 0 );
00091         sizerH4->Add( ckBoxZ                                                                    ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED     , 0 );
00092         sizerH4->Add( btnColorTable                                                             ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED     , 0 );
00093 
00094         sizerH5->Add( _ckBoxXYZ                         ,  1, wxALL|wxEXPAND, 0);
00095         sizerH5->Add( _ckBoxPlane                       ,  1, wxALL|wxEXPAND, 0);
00096         sizerH5->Add( new wxStaticText(panel, -1,_T("      "))                  , 1, wxALL|wxEXPAND, 0);
00097 //      sizerH5->Add( ckBoxX                            ,  1, wxALL|wxEXPAND, 0);
00098 //      sizerH5->Add( ckBoxY                            ,  1, wxALL|wxEXPAND, 0);
00099 //      sizerH5->Add( ckBoxZ                            ,  1, wxALL|wxEXPAND, 0);
00100 
00101         sizer->Add( sizerH4                                     ,  1, wxALL|wxGROW, 2);
00102         sizer->Add( sizerH5                                     ,  1, wxALL|wxEXPAND, 2);
00103 
00104 
00105         panel->SetSize(400,50);
00106         panel->SetAutoLayout(true);
00107         panel->SetSizer(sizer);
00108         panel->Layout();
00109 
00110         panel->SetEventHandler((wxEvtHandler*)this);
00111 
00112         //this->UpdateControlPanel();
00113 
00114 }
00115 void wxVtkMPR3DViewCntrlPanel::UpdateControlPanel()
00116 {
00117 
00118         vtkMPRBaseData* basedata = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData();
00119         if(basedata != NULL){
00120 
00121                 /*int maxX = basedata->GetMaxPositionX();
00122                 int maxY = basedata->GetMaxPositionY();
00123                 int maxZ = basedata->GetMaxPositionZ();*/
00124                 int x0,x1,y0,y1,z0,z1;
00125 
00126                 basedata->GetDimensionExtention(&x0,&x1,&y0,&y1,&z0,&z1);
00127                 /*int maxX = x1-x0;//basedata->GetMaxPositionX();
00128                 int maxY = y1-y0;//basedata->GetMaxPositionY();
00129                 int maxZ = z1-z0;//basedata->GetMaxPositionZ();*/
00130 
00131                 
00132 
00133                 //std::cout<<"wxVtkMPR3DViewCntrlPanel::UpdateControlPanel() maxX="<<maxX<<" maxY="<<maxY<<" maxZ="<<maxZ<<std::endl;
00134                 /*_positionX->SetRange(0,maxX);
00135                 _positionY->SetRange(0,maxY);
00136                 _positionZ->SetRange(0,maxZ);*/
00137                 _positionX->SetRange(x0,x1);
00138                 _positionY->SetRange(y0,y1);
00139                 _positionZ->SetRange(z0,z1);
00140 
00141                 _positionX->SetValue((x0+x1)/2);
00142                 _positionY->SetValue((y0+y1)/2);
00143                 _positionZ->SetValue((z0+z1)/2);
00144 
00145                 _positionX->Update();
00146                 _positionY->Update();
00147                 _positionZ->Update();
00148                 this->Update();
00149         }
00150         
00151 }
00152 //-------------------------------------------------------------------
00153 wxVtkMPR3DViewCntrlPanel::~wxVtkMPR3DViewCntrlPanel()
00154 {
00155 }
00156 //-------------------------------------------------------------------
00157 void wxVtkMPR3DViewCntrlPanel::Refresh()
00158 {
00159 //      wxPanel::Refresh();
00160         _positionX->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX( )) );
00161         _positionY->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY( )) );
00162         _positionZ->SetValue( (int)(_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ( )) );
00163 }
00164 /*
00165 //-------------------------------------------------------------------
00166 int wxVtkMPR3DViewCntrlPanel::GetIdTissue()
00167 {
00168         int idTissue=-1;
00169         if (_surfA->GetValue()==true)
00170         {
00171                 idTissue=0;
00172         }
00173         if (_surfB->GetValue()==true)
00174         {
00175                 idTissue=1;
00176         }
00177         if (_surfC->GetValue()==true)
00178         {
00179                 idTissue=2;
00180         }
00181         if (_surfD->GetValue()==true)
00182         {
00183                 idTissue=3;
00184         }
00185 
00186         return idTissue;
00187 }
00188 */
00189 
00190 //-------------------------------------------------------------------
00191 void wxVtkMPR3DViewCntrlPanel::OnEditColorTable(wxCommandEvent& event)
00192 {
00193 
00194         vtkColorTransferFunction *ctfun                 = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetvtkColorTransferFunction(); 
00195         std::vector<double> *ctfunVectorPoint   = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorPoint();
00196         std::vector<double> *ctfunVectorRed             = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorRed();
00197         std::vector<double> *ctfunVectorGreen   = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorGreen();
00198         std::vector<double> *ctfunVectorBlue    =   this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetctFunVectorBlue();
00199 
00200         //void *p=this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer(); // JPRx
00201 
00202 
00203         int i=0,xi,r,g,b;
00204         
00205         vtkImageData *imagedata = this->_wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00206 
00207         HistogramDialog* hDlg=new HistogramDialog(NULL,_T("Color table"),imagedata,2);
00208         
00209                 
00210         hDlg->erasePointsTransferenceFunction();        
00211         int ctfSize=ctfunVectorRed->size();
00212         if(ctfSize>0)
00213         {
00214 // MACHETE  OJO Eduardo
00215                 int i=0;
00216                         while(i<ctfSize)
00217                         {
00218                                 double gr       = (*ctfunVectorPoint)[i];
00219                                 double r        = (*ctfunVectorRed)[i];
00220                                 double g        = (*ctfunVectorGreen)[i];
00221                                 double b        = (*ctfunVectorBlue)[i];
00222                         
00223 hDlg->addColorPoint(gr,(int)(r*255),(int)(g*255),(int)(b*255));
00224                                 i++;
00225                         }
00226         }
00227 
00228         //
00229         // when the user had changed the transference Function
00230         //
00231         
00232         //setting variables if the user wants to do refresh
00233         
00234         hDlg->setCTF(ctfun);
00235         hDlg->setMPR3Dview(_wxvtkmpr3Dview);
00236         
00237         if(hDlg->ShowModal()== wxID_OK )
00238         {       
00239                 
00240                 // -- vtkColorTransferFunction  --
00241                         ctfun->RemoveAllPoints ();
00242                         //clean colors
00243                         ctfunVectorPoint->clear();
00244                         ctfunVectorRed->clear();
00245                         ctfunVectorGreen->clear();
00246                         ctfunVectorBlue->clear();
00247 
00248                         int nCTFpoints=hDlg->getSizeBarColor();
00249 // Machete .. Ojo Eduardo
00250                         i=0;    
00251                         while(i<nCTFpoints)
00252                         {
00253                                 hDlg->getDataBarColorPoint(i,xi,r,g,b);
00254                                 /*
00255                                 if (i==0)
00256                                 {
00257                                         hDlg->getDataBarColorPoint(1,xi,r,g,b);
00258                                 } 
00259                                 if (i==nCTFpoints)
00260                                 {
00261                                         hDlg->getDataBarColorPoint(i-1,xi,r,g,b);
00262                                 } 
00263                                 */
00264                                 ctfun->AddRGBPoint(xi,r/255.0,g/255.0,b/255.0 );
00265                                 ctfunVectorPoint->push_back(xi);
00266                                 ctfunVectorRed->push_back(r/255.0);
00267                                 ctfunVectorGreen->push_back(g/255.0);
00268                                 ctfunVectorBlue->push_back(b/255.0);
00269                                 i++;
00270                                 
00271                         }
00272                         
00273         }
00274         
00275         else
00276         {
00277                 
00278                 if(hDlg->getRefreshed())
00279                 {
00280                         // -- vtkColorTransferFunction  --
00281                         ctfun->RemoveAllPoints ();
00282                         
00283                         int i=0;
00284                         int size=ctfunVectorPoint->size();
00285                         
00286                         for(i=0;i<size;i++)
00287                         {
00288                                 double grey2=(*ctfunVectorPoint)[i];
00289                                 double red =(*ctfunVectorRed)[i];
00290                                 double green =(*ctfunVectorGreen)[i];
00291                                 double blue = (*ctfunVectorBlue)[i];
00292                                 ctfun->AddRGBPoint(grey2,red,green,blue);
00293                         }
00294                  }      
00295                  
00296         }
00297 
00298  hDlg->Destroy();
00299 }
00300 
00301 
00302 //-------------------------------------------------------------------
00303 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(wxCommandEvent& event)
00304 {
00305         _wxvtkmpr3Dview->VisibleImageActor(0, event.IsChecked() );
00306         _wxvtkmpr3Dview->Refresh();
00307 
00308         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
00309 
00310         try{
00311                 _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
00312         }catch(char* e){
00313                 std::cout<<e<<std::endl;
00314         }
00315 
00316 }
00317 //-------------------------------------------------------------------
00318 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY(wxCommandEvent& event)
00319 {
00320         _wxvtkmpr3Dview->VisibleImageActor(1, event.IsChecked() );
00321         _wxvtkmpr3Dview->Refresh();
00322 
00323         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
00324         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
00325 
00326 }
00327 //-------------------------------------------------------------------
00328 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(wxCommandEvent& event)
00329 {
00330         _wxvtkmpr3Dview->VisibleImageActor(2, event.IsChecked() );
00331         _wxvtkmpr3Dview->Refresh();
00332 
00333         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
00334         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
00335 }
00336 
00337 //-------------------------------------------------------------------
00338 void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ(wxCommandEvent& event)
00339 {
00340         _wxvtkmpr3Dview->VisiblePointWidget(event.IsChecked());
00341 }
00342 
00343 //-------------------------------------------------------------------
00344 void wxVtkMPR3DViewCntrlPanel::OnVisiblePlane(wxCommandEvent& event)
00345 {
00346         _wxvtkmpr3Dview->VisiblePlaneWidget(event.IsChecked());
00347 }
00348 
00349 
00350 //-------------------------------------------------------------------
00351 void wxVtkMPR3DViewCntrlPanel::OnPositionX(wxScrollEvent& event)
00352 {
00353         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetX( _positionX->GetValue() );
00354         _wxvtkmpr3Dview->RefreshView();
00355         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
00356         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
00357 }
00358 //-------------------------------------------------------------------
00359 void wxVtkMPR3DViewCntrlPanel::OnPositionY(wxScrollEvent& event)
00360 {
00361         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetY( _positionY->GetValue() );
00362         _wxvtkmpr3Dview->RefreshView();
00363         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
00364         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
00365 }
00366 //-------------------------------------------------------------------
00367 void wxVtkMPR3DViewCntrlPanel::OnPositionZ(wxScrollEvent& event)
00368 {
00369         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetZ( _positionZ->GetValue() );
00370         _wxvtkmpr3Dview->RefreshView();
00371         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
00372         _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
00373 }

Generated on Wed Jul 29 16:35:31 2009 for creaMaracasVisu_lib by  doxygen 1.5.3