1 #include "wxMaracasMultipleVolumeRendererPanel.h"
3 #include <wx/colordlg.h>
4 #include "wxMaracasMultipleVolumeRendererView.h"
5 #include <OpenImage.xpm>
7 //#include <vtkImageCast.h>
9 ** Implementation of viewProp3D
12 wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img)
13 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
20 wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){
21 //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
22 wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid);
26 void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){
28 wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(1,1,1);
31 choices[0] = wxString(_T("On"));
32 choices[1] = wxString(_T("Off"));
33 checkbox = new wxCheckBox(this,-1,wxString(_T("Show Actor")));
34 Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange);
35 checkbox->SetValue(true);
37 sizerirmprop->Add(checkbox,wxFIXED_MINSIZE);
39 //wxBitmap bitmap(Color_xpm);
40 //_colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30));
41 //Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange);
43 mwxwidget = new HistogramDialogComboBox(this);
44 mwxwidget->setImageData(img);
45 //mwxwidget->PushEventHandler(this);
46 Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange);
47 sizerirmprop->Add(mwxwidget,wxFIXED_MINSIZE);
49 //std::string iconsdir = wxMaracasMultipleVolumeRendererView::getInstance()->getPath();
50 //iconsdir+="/data/Icons/Add.xmp";
51 //wxBitmap* bitmap = new wxBitmap(wxString(iconsdir.c_str(),wxConvUTF8), wxBITMAP_TYPE_XPM);
52 wxBitmap bitmap(OpenImage_xpm);
53 _viewimage = new wxBitmapButton(this, -1, bitmap, wxDefaultPosition, wxSize(30,30));
54 Connect(_viewimage->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onViewImage);
55 sizerirmprop->Add(_viewimage,wxFIXED_MINSIZE);
57 this->SetSizer(sizerirmprop, true);
58 this->SetAutoLayout( true );
61 //_frame = new wxFrame(this, 10, _T("Configure Transfer Functions"));
63 /*wxButton* button1 = new wxButton(_frame,20,_T("OK"));
64 Connect(button1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onOK);
65 wxButton* button2 = new wxButton(_frame,30,_T("Cancel") );
66 Connect(button2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCancel);
67 wxButton* button3 = new wxButton(_frame,40,_T("Update"));
68 Connect(button3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onUpdate); */
70 /*mwxwidget->erasePointsTransferenceFunction();
72 img->GetScalarRange(range);
73 double max = range[1];
77 mwxwidget->addPointToTransferenceFunction(max * 0/2,0.0);
78 mwxwidget->addPointToTransferenceFunction(max * 1/2,100.0);
79 mwxwidget->addPointToTransferenceFunction(max * 2/2,100.0);
81 mwxwidget->addColorPoint(max*0/4,(int)(0.0*255),(int)(0.0*255),(int)(0.0*255));
82 mwxwidget->addColorPoint(max*1/4,(int)(1.0*255),(int)(0.0*255),(int)(0.0*255));
83 mwxwidget->addColorPoint(max*2/4,(int)(0.0*255),(int)(0.0*255),(int)(1.0*255));
84 mwxwidget->addColorPoint(max*3/4,(int)(0.0*255),(int)(1.0*255),(int)(0.0*255));
85 mwxwidget->addColorPoint(max*4/4,(int)(0.0*255),(int)(0.0*255),(int)(0.2*255)); */
87 /*wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL);
88 boxSizer0->Add(mwxwidget, 4, wxGROW);
90 wxBoxSizer* boxSizer = new wxBoxSizer(wxHORIZONTAL);
91 boxSizer->AddSpacer(40);
92 boxSizer->Add(button1, wxCENTER);
93 boxSizer->AddSpacer(40);
94 boxSizer->Add(button2, wxCENTER);
95 boxSizer->AddSpacer(40);
96 boxSizer->Add(button3, wxCENTER);
98 wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL);
99 boxsizer2->Add(boxSizer0,1,wxEXPAND);
100 boxsizer2->Add(boxSizer,0,wxCENTER);
102 _frame->SetAutoLayout(true);
105 _frame->SetSizer(boxsizer2);
109 //mwxwidget->SetFunctions(wxMaracasMultipleVolumeRendererView::getInstance()->GetTransferFunction(getPropId()),
110 // wxMaracasMultipleVolumeRendererView::getInstance()->GetColorFunction(getPropId()));
111 mwxwidget->Refresh();
113 void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){
115 //_frame->Show(false);
117 void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){
118 //_frame->Show(false);
120 void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){
123 void wxMaracasMultipleVolumeRendererPanel::updateVolume(){
124 std::vector<double> greylevelcolors;
125 std::vector<double> red;
126 std::vector<double> green;
127 std::vector<double> blue;
129 std::vector<double> greylevel;
130 std::vector<double> values;
132 mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
133 mwxwidget->GetValuesPointsFunction(greylevel, values);
136 wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
137 wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
140 void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){
142 //if(mwxwidget->ShowModal()==wxID_OK){
144 // mwxwidget->Show(false);
148 void wxMaracasMultipleVolumeRendererPanel::onViewImage(wxCommandEvent& event){
151 void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){
152 wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
155 int wxMaracasMultipleVolumeRendererPanel::getPropId(){