#include "wxMaracasMultipleVolumeRendererPanel.h" #include #include "wxMaracasMultipleVolumeRendererView.h" #include "Color.xpm" /** ** Implementation of viewProp3D **/ wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize) { _propid = propid; createControls(img); } wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){ //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false); wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid); } void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){ wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(1,1,1); wxString choices[2]; choices[0] = wxString(_T("On")); choices[1] = wxString(_T("Off")); checkbox = new wxCheckBox(this,-1,wxString(_T("Show Actor"))); Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange); checkbox->SetValue(true); sizerirmprop->Add(checkbox,wxFIXED_MINSIZE); //this->addControl(checkbox); wxBitmap bitmap(Color_xpm); _colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30)); Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange); sizerirmprop->Add(_colorchoose,wxFIXED_MINSIZE); this->SetSizer(sizerirmprop, true); this->SetAutoLayout( true ); _frame = new wxFrame(this, 10, _T("Configure Transfer Functions")); wxButton* button1 = new wxButton(_frame,20,_T("OK")); Connect(button1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onOK); wxButton* button2 = new wxButton(_frame,30,_T("Cancel") ); Connect(button2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCancel); wxButton* button3 = new wxButton(_frame,40,_T("Update")); Connect(button3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onUpdate); mwxwidget = new HistogramWidget(_frame, -1); mwxwidget->initializeHistogram(img); mwxwidget->Refresh(); wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL); boxSizer0->Add(mwxwidget, 4, wxGROW); wxBoxSizer* boxSizer = new wxBoxSizer(wxHORIZONTAL); boxSizer->AddSpacer(40); boxSizer->Add(button1, wxCENTER); boxSizer->AddSpacer(40); boxSizer->Add(button2, wxCENTER); boxSizer->AddSpacer(40); boxSizer->Add(button3, wxCENTER); wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL); boxsizer2->Add(boxSizer0,1,wxEXPAND); boxsizer2->Add(boxSizer,0,wxCENTER); _frame->SetAutoLayout(true); _frame->SetSizer(boxsizer2); _frame->Refresh(); _frame->Update(); } void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){ updateVolume(); _frame->Show(false); } void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){ _frame->Show(false); } void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){ updateVolume(); } void wxMaracasMultipleVolumeRendererPanel::updateVolume(){ std::vector greylevelcolors; std::vector red; std::vector green; std::vector blue; std::vector greylevel; std::vector values; mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue); mwxwidget->GetValuesPointsFunction(greylevel, values); wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue); wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values); } void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){ _frame->Show(true); } void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){ wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue()); } int wxMaracasMultipleVolumeRendererPanel::getPropId(){ return _propid; }