]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx
*** empty log message ***
[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 /**
7 **      Implementation of viewProp3D
8 **/
9
10 wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img)
11 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
12 {
13         _propid = propid;
14         
15         createControls(img);
16 }
17
18 wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){  
19         //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
20         wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid);
21 }
22
23 void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){
24
25         wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(1,1,1);
26         
27         wxString choices[2];
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);       
33
34         sizerirmprop->Add(checkbox,wxFIXED_MINSIZE);
35
36         //this->addControl(checkbox);   
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         sizerirmprop->Add(_colorchoose,wxFIXED_MINSIZE);        
42
43         
44         this->SetSizer(sizerirmprop, true);             
45         this->SetAutoLayout( true );
46
47     
48
49         _frame = new wxFrame(this, 10, _T("Configure Transfer Functions"));     
50
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);                                
57
58
59         mwxwidget = new HistogramWidget(_frame, -1);
60
61         mwxwidget->initializeHistogram(img);
62         mwxwidget->Refresh();
63
64         wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL);
65         boxSizer0->Add(mwxwidget, 4, wxGROW);
66
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);
74
75         wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL);
76         boxsizer2->Add(boxSizer0,1,wxEXPAND);   
77         boxsizer2->Add(boxSizer,0,wxCENTER);    
78     
79         _frame->SetAutoLayout(true);
80
81
82     _frame->SetSizer(boxsizer2);
83
84         _frame->Refresh();
85         _frame->Update();
86         
87 }
88 void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){
89     updateVolume();
90         _frame->Show(false);
91 }
92 void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){
93         _frame->Show(false);
94 }
95 void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){
96         updateVolume();    
97 }
98 void wxMaracasMultipleVolumeRendererPanel::updateVolume(){
99         std::vector<double> greylevelcolors;
100         std::vector<double> red;
101         std::vector<double> green;
102         std::vector<double> blue;
103
104         std::vector<double> greylevel;
105         std::vector<double> values;
106
107     mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
108         mwxwidget->GetValuesPointsFunction(greylevel, values);
109
110
111         wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
112         wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
113
114 }
115 void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){
116     _frame->Show(true);    
117 }
118 void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){     
119         wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());    
120 }
121
122 int wxMaracasMultipleVolumeRendererPanel::getPropId(){
123         return _propid;
124 }