]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx
de919ee40e6742181ca7281caf722a56dc7ff41d
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasMultipleVolumeRendererPanel.cxx
1 #include "wxMaracasMultipleVolumeRendererPanel.h"
2
3 #include <wx/colordlg.h>
4 #include "wxMaracasMultipleVolumeRendererView.h"
5 #include "Color.xpm"
6 //#include <vtkImageCast.h>
7 /**
8 **      Implementation of viewProp3D
9 **/
10
11 wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img)
12 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
13 {
14         _propid = propid;
15         
16         createControls(img);
17 }
18
19 wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){  
20         //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
21         wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid);
22         delete mwxwidget;
23 }
24
25 void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){
26
27         wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(1,1,1);
28         
29         wxString choices[2];
30         choices[0] = wxString(_T("On"));
31         choices[1] = wxString(_T("Off"));
32         checkbox = new  wxCheckBox(this,-1,wxString(_T("Show Actor")));
33         Connect(checkbox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange);     
34         checkbox->SetValue(true);       
35
36         sizerirmprop->Add(checkbox,wxFIXED_MINSIZE);    
37         
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
42         mwxwidget = new HistogramDialogComboBox(this);
43         mwxwidget->setImageData(img);
44     //mwxwidget->PushEventHandler(this);
45         Connect(mwxwidget->GetId(), wxEVT_COMMAND_COMBOBOX_SELECTED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onColorChange);
46         sizerirmprop->Add(mwxwidget,wxFIXED_MINSIZE);   
47
48         
49         this->SetSizer(sizerirmprop, true);             
50         this->SetAutoLayout( true );
51
52     
53
54         //_frame = new wxFrame(this, 10, _T("Configure Transfer Functions"));   
55
56         /*wxButton* button1 = new wxButton(_frame,20,_T("OK"));
57         Connect(button1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onOK);                            
58         wxButton* button2 = new wxButton(_frame,30,_T("Cancel") );
59         Connect(button2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onCancel);                                
60         wxButton* button3 = new wxButton(_frame,40,_T("Update"));
61         Connect(button3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasMultipleVolumeRendererPanel::onUpdate);                                */
62
63
64         
65
66         /*mwxwidget->erasePointsTransferenceFunction();
67         double range[2];
68         img->GetScalarRange(range);
69         double max = range[1];
70
71         
72         //X
73         mwxwidget->addPointToTransferenceFunction(max * 0/2,0.0);
74         mwxwidget->addPointToTransferenceFunction(max * 1/2,100.0);
75         mwxwidget->addPointToTransferenceFunction(max * 2/2,100.0);
76
77         mwxwidget->addColorPoint(max*0/4,(int)(0.0*255),(int)(0.0*255),(int)(0.0*255));
78         mwxwidget->addColorPoint(max*1/4,(int)(1.0*255),(int)(0.0*255),(int)(0.0*255));
79         mwxwidget->addColorPoint(max*2/4,(int)(0.0*255),(int)(0.0*255),(int)(1.0*255));
80         mwxwidget->addColorPoint(max*3/4,(int)(0.0*255),(int)(1.0*255),(int)(0.0*255));
81         mwxwidget->addColorPoint(max*4/4,(int)(0.0*255),(int)(0.0*255),(int)(0.2*255)); */
82
83         /*wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL);
84         boxSizer0->Add(mwxwidget, 4, wxGROW);
85
86         wxBoxSizer* boxSizer = new wxBoxSizer(wxHORIZONTAL);
87         boxSizer->AddSpacer(40);
88         boxSizer->Add(button1, wxCENTER);
89         boxSizer->AddSpacer(40);
90         boxSizer->Add(button2, wxCENTER);
91         boxSizer->AddSpacer(40);
92         boxSizer->Add(button3, wxCENTER);
93
94         wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL);
95         boxsizer2->Add(boxSizer0,1,wxEXPAND);   
96         boxsizer2->Add(boxSizer,0,wxCENTER);    
97     
98         _frame->SetAutoLayout(true);
99
100
101     _frame->SetSizer(boxsizer2);
102
103         _frame->Refresh();
104         _frame->Update();*/     
105         //mwxwidget->SetFunctions(wxMaracasMultipleVolumeRendererView::getInstance()->GetTransferFunction(getPropId()),
106         //                                              wxMaracasMultipleVolumeRendererView::getInstance()->GetColorFunction(getPropId()));
107         mwxwidget->Refresh();   
108 }
109 void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){
110     updateVolume();
111         //_frame->Show(false);
112 }
113 void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){
114         //_frame->Show(false);
115 }
116 void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){
117         updateVolume();    
118 }
119 void wxMaracasMultipleVolumeRendererPanel::updateVolume(){
120         std::vector<double> greylevelcolors;
121         std::vector<double> red;
122         std::vector<double> green;
123         std::vector<double> blue;
124
125         std::vector<double> greylevel;
126         std::vector<double> values;
127
128     mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
129         mwxwidget->GetValuesPointsFunction(greylevel, values);
130
131
132         wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
133         wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
134
135 }
136 void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){        
137
138         //if(mwxwidget->ShowModal()==wxID_OK){
139         updateVolume();
140         //      mwxwidget->Show(false);
141         //}     
142 }
143 void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){     
144         wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());    
145 }
146
147 int wxMaracasMultipleVolumeRendererPanel::getPropId(){
148         return _propid;
149 }