1 #include "wxMaracasMultipleVolumeRendererPanel.h"
3 #include <wx/colordlg.h>
4 #include "wxMaracasMultipleVolumeRendererView.h"
7 ** Implementation of viewProp3D
10 wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img)
11 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
18 wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){
19 //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
20 wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid);
23 void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){
25 wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(1,1,1);
28 choices[0] = wxString(_T("On"));
29 choices[1] = wxString(_T("Off"));
30 checkbox = new wxCheckBox(this,-1,wxString(_T("Show Actor")));
31 Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange);
32 checkbox->SetValue(true);
34 sizerirmprop->Add(checkbox,wxFIXED_MINSIZE);
36 //this->addControl(checkbox);
38 wxBitmap bitmap(Color_xpm);
39 _colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30));
40 Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange);
41 sizerirmprop->Add(_colorchoose,wxFIXED_MINSIZE);
44 this->SetSizer(sizerirmprop, true);
45 this->SetAutoLayout( true );
49 _frame = new wxFrame(this, 10, _T("Configure Transfer Functions"));
51 wxButton* button1 = new wxButton(_frame,20,_T("OK"));
52 Connect(button1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onOK);
53 wxButton* button2 = new wxButton(_frame,30,_T("Cancel") );
54 Connect(button2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCancel);
55 wxButton* button3 = new wxButton(_frame,40,_T("Update"));
56 Connect(button3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onUpdate);
59 mwxwidget = new HistogramWidget(_frame, -1);
61 mwxwidget->initializeHistogram(img);
64 wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL);
65 boxSizer0->Add(mwxwidget, 4, wxGROW);
67 wxBoxSizer* boxSizer = new wxBoxSizer(wxHORIZONTAL);
68 boxSizer->AddSpacer(40);
69 boxSizer->Add(button1, wxCENTER);
70 boxSizer->AddSpacer(40);
71 boxSizer->Add(button2, wxCENTER);
72 boxSizer->AddSpacer(40);
73 boxSizer->Add(button3, wxCENTER);
75 wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL);
76 boxsizer2->Add(boxSizer0,1,wxEXPAND);
77 boxsizer2->Add(boxSizer,0,wxCENTER);
79 _frame->SetAutoLayout(true);
82 _frame->SetSizer(boxsizer2);
88 void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){
92 void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){
95 void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){
98 void wxMaracasMultipleVolumeRendererPanel::updateVolume(){
99 std::vector<double> greylevelcolors;
100 std::vector<double> red;
101 std::vector<double> green;
102 std::vector<double> blue;
104 std::vector<double> greylevel;
105 std::vector<double> values;
107 mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
108 mwxwidget->GetValuesPointsFunction(greylevel, values);
111 wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
112 wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
115 void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){
118 void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){
119 wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
122 int wxMaracasMultipleVolumeRendererPanel::getPropId(){