#include "wxVtkMPR3DViewCntrlPanel.h" #include "HistogramDialog.h" wxVtkMPR3DViewCntrlPanel::wxVtkMPR3DViewCntrlPanel(wxWindow *parent, wxVtkMPR3DView *wxvtkmpr3Dview, bool align ) : wxPanel(parent, -1) { wxPanel *panel = this; _wxvtkmpr3Dview = wxvtkmpr3Dview; /*int maxX = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionX(); int maxY = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionY(); int maxZ = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetMaxPositionZ();*/ int maxX = 1; int maxY = 1; int maxZ = 1; //CPR: Modified 30 Nov 2009 /* wxCheckBox *ckBoxX = new wxCheckBox(panel,-1,_T("X ")); _positionX = new wxSlider(panel,-1,maxX/2,0,maxX, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS); wxCheckBox *ckBoxY = new wxCheckBox(panel,-1,_T("Y ")); _positionY = new wxSlider(panel,-1,maxY/2,0,maxY, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS); wxCheckBox *ckBoxZ = new wxCheckBox(panel,-1,_T("Z ")); _positionZ = new wxSlider(panel,-1,maxZ/2,0,maxZ, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS); wxButton *btnColorTable = new wxButton (panel, -1, _T("Edit Color Table") ); */ ckBoxX = new wxCheckBox(panel,-1,_T("X ")); _positionX = new wxSlider(panel,-1,maxX/2,0,maxX, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS); ckBoxY = new wxCheckBox(panel,-1,_T("Y ")); _positionY = new wxSlider(panel,-1,maxY/2,0,maxY, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS); ckBoxZ = new wxCheckBox(panel,-1,_T("Z ")); _positionZ = new wxSlider(panel,-1,maxZ/2,0,maxZ, wxDefaultPosition, wxSize(150,40), wxSL_HORIZONTAL | wxSL_LABELS); wxButton *btnColorTable = new wxButton (panel, -1, _T("Edit Color Table") ); _ckBoxXYZ = new wxCheckBox(panel,-1,_T("XYZ ")); _ckBoxPlane = new wxCheckBox(panel,-1,_T("Plane")); ckBoxX->SetValue(false); ckBoxY->SetValue(false); ckBoxZ->SetValue(false); _ckBoxXYZ->SetValue(false); _ckBoxPlane->SetValue(false); _positionX->SetSize(400,20); _positionY->SetSize(400,20); _positionZ->SetSize(400,20); Connect(ckBoxX->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX ); Connect(_positionX->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionX ); Connect(ckBoxY->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisY ); Connect(_positionY->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionY ); Connect(ckBoxZ->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ ); Connect(_positionZ->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnPositionZ ); Connect(btnColorTable->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnEditColorTable ); Connect(_ckBoxXYZ->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ ); Connect(_ckBoxPlane->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &wxVtkMPR3DViewCntrlPanel::OnVisiblePlane ); wxFlexGridSizer *sizer; // wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); // wxBoxSizer *sizerH4 = new wxBoxSizer(wxHORIZONTAL); //CPR: If-else statements added 30 Nov 2009 wxFlexGridSizer *sizerH4; wxFlexGridSizer *sizerH5; if(align) { sizer = new wxFlexGridSizer(2); sizerH4 = new wxFlexGridSizer(2); sizerH4->Add( _positionX ,1,wxGROW , 0 ); sizerH4->Add( ckBoxX ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED , 0 ); sizerH4->Add( _positionY ,1,wxGROW , 0 ); sizerH4->Add( ckBoxY ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED , 0 ); sizerH4->Add( _positionZ ,1,wxGROW , 0 ); sizerH4->Add( ckBoxZ ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED , 0 ); sizerH5 = new wxFlexGridSizer(1); sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0); sizerH5->Add( _ckBoxXYZ , 1, wxALL|wxEXPAND, 0); sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0); sizerH5->Add( _ckBoxPlane , 1, wxALL|wxEXPAND, 0); sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0); sizerH5->Add( btnColorTable ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED , 0 ); //sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0); } else { sizer = new wxFlexGridSizer(1); sizerH4 = new wxFlexGridSizer(10); sizerH5 = new wxFlexGridSizer(10); sizerH4->Add( _positionX ,1,wxGROW , 0 ); sizerH4->Add( ckBoxX ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED , 0 ); sizerH4->Add( _positionY ,1,wxGROW , 0 ); sizerH4->Add( ckBoxY ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED , 0 ); sizerH4->Add( _positionZ ,1,wxGROW , 0 ); sizerH4->Add( ckBoxZ ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED , 0 ); sizerH4->Add( btnColorTable ,0,wxALIGN_CENTER_VERTICAL|wxSHAPED , 0 ); sizerH5->Add( _ckBoxXYZ , 1, wxALL|wxEXPAND, 0); sizerH5->Add( _ckBoxPlane , 1, wxALL|wxEXPAND, 0); sizerH5->Add( new wxStaticText(panel, -1,_T(" ")) , 1, wxALL|wxEXPAND, 0); } //EED 28 sep 2006 // wxFlexGridSizer *sizerH6 = new wxFlexGridSizer(10); // wxFlexGridSizer *sizerH7 = new wxFlexGridSizer(10); // sizerH4->Add( ckBoxX , 1, wxALL|wxEXPAND, 0); // sizerH4->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0); // sizerH4->Add( _positionX , 1, wxALL|wxEXPAND, 0); // sizerH5->Add( ckBoxY , 1, wxALL|wxEXPAND, 0); // sizerH5->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0); // sizerH5->Add( _positionY , 1, wxALL|wxEXPAND, 0); // sizerH6->Add( ckBoxZ , 1, wxALL|wxEXPAND, 0); // sizerH6->Add( new wxStaticText(panel, -1," ") , 1, wxALL|wxEXPAND, 0); // sizerH6->Add( _positionZ , 1, wxALL|wxEXPAND, 0); // sizerH7->Add( _ckBoxXYZ , 1, wxALL|wxEXPAND, 0); // sizerH7->Add( _ckBoxPlane , 1, wxALL|wxEXPAND, 0); // sizer->Add( sizerH4 , 1, wxALL|wxEXPAND, 2); // sizer->Add( sizerH5 , 1, wxALL|wxEXPAND, 2); // sizer->Add( sizerH6 , 1, wxALL|wxEXPAND, 2); // sizer->Add( sizerH7 , 1, wxALL|wxEXPAND, 2); // sizerH5->Add( ckBoxX , 1, wxALL|wxEXPAND, 0); // sizerH5->Add( ckBoxY , 1, wxALL|wxEXPAND, 0); // sizerH5->Add( ckBoxZ , 1, wxALL|wxEXPAND, 0); sizer->Add( sizerH4 , 1, wxALL|wxGROW, 2); sizer->Add( sizerH5 , 1, wxALL|wxEXPAND, 2); panel->SetSize(400,50); panel->SetAutoLayout(true); panel->SetSizer(sizer); panel->Layout(); panel->SetEventHandler((wxEvtHandler*)this); //this->UpdateControlPanel(); } void wxVtkMPR3DViewCntrlPanel::UpdateControlPanel() { vtkMPRBaseData* basedata = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData(); if(basedata != NULL){ /*int maxX = basedata->GetMaxPositionX(); int maxY = basedata->GetMaxPositionY(); int maxZ = basedata->GetMaxPositionZ();*/ int x0,x1,y0,y1,z0,z1; basedata->GetDimensionExtention(&x0,&x1,&y0,&y1,&z0,&z1); /*int maxX = x1-x0;//basedata->GetMaxPositionX(); int maxY = y1-y0;//basedata->GetMaxPositionY(); int maxZ = z1-z0;//basedata->GetMaxPositionZ();*/ //std::cout<<"wxVtkMPR3DViewCntrlPanel::UpdateControlPanel() maxX="<erasePointsTransferenceFunction(); int ctfSize=ctfunVectorRed->size(); if(ctfSize>0) { // MACHETE OJO Eduardo int i=0; while(iaddColorPoint(gr,(int)(r*255),(int)(g*255),(int)(b*255)); i++; } } // // when the user had changed the transference Function // //setting variables if the user wants to do refresh hDlg->setCTF(ctfun); //hDlg->setMPR3Dview(_wxvtkmpr3Dview); if(hDlg->ShowModal()== wxID_OK ) { // -- vtkColorTransferFunction -- ctfun->RemoveAllPoints (); //clean colors ctfunVectorPoint->clear(); ctfunVectorRed->clear(); ctfunVectorGreen->clear(); ctfunVectorBlue->clear(); int nCTFpoints=hDlg->getSizeBarColor(); // Machete .. Ojo Eduardo i=0; while(igetDataBarColorPoint(i,xi,r,g,b); /* if (i==0) { hDlg->getDataBarColorPoint(1,xi,r,g,b); } if (i==nCTFpoints) { hDlg->getDataBarColorPoint(i-1,xi,r,g,b); } */ ctfun->AddRGBPoint(xi,r/255.0,g/255.0,b/255.0 ); ctfunVectorPoint->push_back(xi); ctfunVectorRed->push_back(r/255.0); ctfunVectorGreen->push_back(g/255.0); ctfunVectorBlue->push_back(b/255.0); i++; } } else { if(hDlg->getRefreshed()) { // -- vtkColorTransferFunction -- ctfun->RemoveAllPoints (); int i=0; int size=ctfunVectorPoint->size(); for(i=0;iAddRGBPoint(grey2,red,green,blue); } } } hDlg->Destroy(); } //------------------------------------------------------------------- void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisX(wxCommandEvent& event) { _wxvtkmpr3Dview->VisibleImageActor(0, event.IsChecked() ); _wxvtkmpr3Dview->Refresh(); wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh try{ _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); }catch(char* e){ std::cout<VisibleImageActor(1, event.IsChecked() ); _wxvtkmpr3Dview->Refresh(); wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); } //------------------------------------------------------------------- void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisZ(wxCommandEvent& event) { _wxvtkmpr3Dview->VisibleImageActor(2, event.IsChecked() ); _wxvtkmpr3Dview->Refresh(); wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); } //------------------------------------------------------------------- void wxVtkMPR3DViewCntrlPanel::OnVisibleAxisXYZ(wxCommandEvent& event) { _wxvtkmpr3Dview->VisiblePointWidget(event.IsChecked()); } //------------------------------------------------------------------- void wxVtkMPR3DViewCntrlPanel::OnVisiblePlane(wxCommandEvent& event) { _wxvtkmpr3Dview->VisiblePlaneWidget(event.IsChecked()); } //------------------------------------------------------------------- void wxVtkMPR3DViewCntrlPanel::OnPositionX(wxScrollEvent& event) { _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetX( _positionX->GetValue() ); _wxvtkmpr3Dview->RefreshView(); wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); } //------------------------------------------------------------------- void wxVtkMPR3DViewCntrlPanel::OnPositionY(wxScrollEvent& event) { _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetY( _positionY->GetValue() ); _wxvtkmpr3Dview->RefreshView(); wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); } //------------------------------------------------------------------- void wxVtkMPR3DViewCntrlPanel::OnPositionZ(wxScrollEvent& event) { _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetZ( _positionZ->GetValue() ); _wxvtkmpr3Dview->RefreshView(); wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh _wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); } //------------------------------------------------------------------- bool wxVtkMPR3DViewCntrlPanel::GetVisibleX() { return ckBoxX->GetValue(); } //------------------------------------------------------------------- bool wxVtkMPR3DViewCntrlPanel::GetVisibleY() { return ckBoxY->GetValue(); } //------------------------------------------------------------------- bool wxVtkMPR3DViewCntrlPanel::GetVisibleZ() { return ckBoxZ->GetValue(); }