1 #include "wxMaracasMultipleVolumeRendererPanel.h"
3 #include <wx/colordlg.h>
4 #include "wxMaracasMultipleVolumeRendererView.h"
5 #include "wxMaracasRendererView.h"
6 #include <OpenImage.xpm>
9 //#include <vtkImageCast.h>
11 ** Implementation of viewProp3D
17 wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img, bool _isComplexBox)
18 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
21 isComplexBox = _isComplexBox;
29 wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){
32 //((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->deleteVolume(_propid);
34 //wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid);
39 ** Sets panel elements
41 void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){
43 wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(3);
47 //wxString choices[2];
48 //choices[0] = wxString(_T("On"));
49 //choices[1] = wxString(_T("Off"));
50 wxStaticText* label = new wxStaticText(this, -1, wxString(_T("")));
51 wxStaticText* label2 = new wxStaticText(this, -1, wxString(_T("")));
52 checkbox = new wxCheckBox(this,-1,wxString(_T("Show Actor")));
53 Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange);
54 checkbox->SetValue(true);
56 sizerirmprop->Add(checkbox,wxFIXED_MINSIZE);
57 sizerirmprop->Add(label,wxFIXED_MINSIZE);
58 sizerirmprop->Add(label2,wxFIXED_MINSIZE);
60 //wxBitmap bitmap(Color_xpm);
61 //_colorchoose = new wxBitmapButton(this, -1, bitmap,wxDefaultPosition,wxSize(30,30));
62 //Connect(_colorchoose->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange);
64 mwxwidget = new HistogramDialogComboBox(this);
65 mwxwidget->setImageData(img);
66 //mwxwidget->PushEventHandler(this);
67 Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange);
68 sizerirmprop->Add(mwxwidget,wxFIXED_MINSIZE);
70 wxBitmap bitmap0(Add_xpm);
71 _viewimage = new wxBitmapButton(this, -1, bitmap0, wxDefaultPosition, wxSize(30,30));
72 Connect(_viewimage->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onViewImage);
73 sizerirmprop->Add(_viewimage,wxFIXED_MINSIZE);
75 wxBitmap bitmap1(OpenImage_xpm);
76 wxBitmapButton* _openParameters = new wxBitmapButton(this, -1, bitmap1, wxDefaultPosition, wxSize(30,30));
77 Connect(_openParameters->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onOpenParameters);
78 sizerirmprop->Add(_openParameters,wxFIXED_MINSIZE);
79 //std::string iconsdir = wxMaracasMultipleVolumeRendererView::getInstance()->getPath();
80 //iconsdir+="/data/Icons/Add.xmp";
81 //wxBitmap* bitmap = new wxBitmap(wxString(iconsdir.c_str(),wxConvUTF8), wxBITMAP_TYPE_XPM);
83 this->SetSizer(sizerirmprop, true);
84 this->SetAutoLayout( true );
86 //_frame = new wxFrame(this, 10, _T("Configure Transfer Functions"));
88 /*wxButton* button1 = new wxButton(_frame,20,_T("OK"));
89 Connect(button1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onOK);
90 wxButton* button2 = new wxButton(_frame,30,_T("Cancel") );
91 Connect(button2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCancel);
92 wxButton* button3 = new wxButton(_frame,40,_T("Update"));
93 Connect(button3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onUpdate); */
95 /*mwxwidget->erasePointsTransferenceFunction();
97 img->GetScalarRange(range);
98 double max = range[1];
102 mwxwidget->addPointToTransferenceFunction(max * 0/2,0.0);
103 mwxwidget->addPointToTransferenceFunction(max * 1/2,100.0);
104 mwxwidget->addPointToTransferenceFunction(max * 2/2,100.0);
106 mwxwidget->addColorPoint(max*0/4,(int)(0.0*255),(int)(0.0*255),(int)(0.0*255));
107 mwxwidget->addColorPoint(max*1/4,(int)(1.0*255),(int)(0.0*255),(int)(0.0*255));
108 mwxwidget->addColorPoint(max*2/4,(int)(0.0*255),(int)(0.0*255),(int)(1.0*255));
109 mwxwidget->addColorPoint(max*3/4,(int)(0.0*255),(int)(1.0*255),(int)(0.0*255));
110 mwxwidget->addColorPoint(max*4/4,(int)(0.0*255),(int)(0.0*255),(int)(0.2*255)); */
112 /*wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL);
113 boxSizer0->Add(mwxwidget, 4, wxGROW);
115 wxBoxSizer* boxSizer = new wxBoxSizer(wxHORIZONTAL);
116 boxSizer->AddSpacer(40);
117 boxSizer->Add(button1, wxCENTER);
118 boxSizer->AddSpacer(40);
119 boxSizer->Add(button2, wxCENTER);
120 boxSizer->AddSpacer(40);
121 boxSizer->Add(button3, wxCENTER);
123 wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL);
124 boxsizer2->Add(boxSizer0,1,wxEXPAND);
125 boxsizer2->Add(boxSizer,0,wxCENTER);
127 _frame->SetAutoLayout(true);
130 _frame->SetSizer(boxsizer2);
134 //mwxwidget->SetFunctions(wxMaracasMultipleVolumeRendererView::getInstance()->GetTransferFunction(getPropId()),
135 // wxMaracasMultipleVolumeRendererView::getInstance()->GetColorFunction(getPropId()));
136 mwxwidget->Refresh();
142 void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){
144 //_frame->Show(false);
150 void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){
151 //_frame->Show(false);
157 void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){
164 void wxMaracasMultipleVolumeRendererPanel::updateVolume(){
165 std::vector<double> greylevelcolors;
166 std::vector<double> red;
167 std::vector<double> green;
168 std::vector<double> blue;
170 std::vector<double> greylevel;
171 std::vector<double> values;
173 mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
174 mwxwidget->GetValuesPointsFunction(greylevel, values);
176 if(this->isComplexBox)
178 ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->SetValuesColorPointsFunction(this->_propid,greylevelcolors, red, green, blue);
179 ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->SetValuesPointsFunction(this->_propid, greylevel, values);
183 wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
184 wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
189 ** Updates the volume visualization
191 void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){
193 //if(mwxwidget->ShowModal()==wxID_OK){
195 // mwxwidget->Show(false);
202 void wxMaracasMultipleVolumeRendererPanel::onViewImage(wxCommandEvent& event){
209 void wxMaracasMultipleVolumeRendererPanel::onOpenParameters(wxCommandEvent& event){
210 dialog = new wxMaracasRenderImageManagementPanel(this);
211 dialog->SetSize(400,580);
218 void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){
219 if(this->isComplexBox)
220 ((wxMaracasRenderTabbedPanel*)(wxMaracasRendererView::getInstance())->getTabbedPanel())->addRemoveActorV(this->getPropId(), checkbox->GetValue());
222 wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());
228 int wxMaracasMultipleVolumeRendererPanel::getPropId(){
233 ** Carolina Perez: Recently added method
235 HistogramDialogComboBox* wxMaracasMultipleVolumeRendererPanel::getMwxwidget()