]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasMultipleVolumeRendererPanel.cxx
File deleted:
[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 <OpenImage.xpm>
6 #include "Color.xpm"
7 //#include <vtkImageCast.h>
8 /**
9 **      Implementation of viewProp3D
10 **/
11
12 wxMaracasMultipleVolumeRendererPanel::wxMaracasMultipleVolumeRendererPanel(wxWindow* parent,int propid, vtkImageData* img)
13 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
14 {
15         _propid = propid;
16         
17         createControls(img);
18 }
19
20 wxMaracasMultipleVolumeRendererPanel::~wxMaracasMultipleVolumeRendererPanel(){  
21         //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
22         wxMaracasMultipleVolumeRendererView::getInstance()->deleteVolume(_propid);
23         delete mwxwidget;
24 }
25
26 void wxMaracasMultipleVolumeRendererPanel::createControls(vtkImageData* img){
27
28         wxFlexGridSizer* sizerirmprop = new wxFlexGridSizer(1,1,1);
29         
30         wxString choices[2];
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);       
36
37         sizerirmprop->Add(checkbox,wxFIXED_MINSIZE);    
38         
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);                    
42
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);   
48
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);  
56
57         this->SetSizer(sizerirmprop, true);             
58         this->SetAutoLayout( true );
59     
60
61         //_frame = new wxFrame(this, 10, _T("Configure Transfer Functions"));   
62
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);                                */
69
70         /*mwxwidget->erasePointsTransferenceFunction();
71         double range[2];
72         img->GetScalarRange(range);
73         double max = range[1];
74
75         
76         //X
77         mwxwidget->addPointToTransferenceFunction(max * 0/2,0.0);
78         mwxwidget->addPointToTransferenceFunction(max * 1/2,100.0);
79         mwxwidget->addPointToTransferenceFunction(max * 2/2,100.0);
80
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)); */
86
87         /*wxBoxSizer* boxSizer0 = new wxBoxSizer(wxHORIZONTAL);
88         boxSizer0->Add(mwxwidget, 4, wxGROW);
89
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);
97
98         wxBoxSizer* boxsizer2 = new wxBoxSizer(wxVERTICAL);
99         boxsizer2->Add(boxSizer0,1,wxEXPAND);   
100         boxsizer2->Add(boxSizer,0,wxCENTER);    
101     
102         _frame->SetAutoLayout(true);
103
104
105     _frame->SetSizer(boxsizer2);
106
107         _frame->Refresh();
108         _frame->Update();*/     
109         //mwxwidget->SetFunctions(wxMaracasMultipleVolumeRendererView::getInstance()->GetTransferFunction(getPropId()),
110         //                                              wxMaracasMultipleVolumeRendererView::getInstance()->GetColorFunction(getPropId()));
111         mwxwidget->Refresh();   
112 }
113 void wxMaracasMultipleVolumeRendererPanel::onOK(wxCommandEvent& event){
114     updateVolume();
115         //_frame->Show(false);
116 }
117 void wxMaracasMultipleVolumeRendererPanel::onCancel(wxCommandEvent& event){
118         //_frame->Show(false);
119 }
120 void wxMaracasMultipleVolumeRendererPanel::onUpdate(wxCommandEvent& event){
121         updateVolume();    
122 }
123 void wxMaracasMultipleVolumeRendererPanel::updateVolume(){
124         std::vector<double> greylevelcolors;
125         std::vector<double> red;
126         std::vector<double> green;
127         std::vector<double> blue;
128
129         std::vector<double> greylevel;
130         std::vector<double> values;
131
132     mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
133         mwxwidget->GetValuesPointsFunction(greylevel, values);
134
135
136         wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
137         wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
138
139 }
140 void wxMaracasMultipleVolumeRendererPanel::onColorChange(wxCommandEvent& event){        
141
142         //if(mwxwidget->ShowModal()==wxID_OK){
143         updateVolume();
144         //      mwxwidget->Show(false);
145         //}     
146 }
147
148 void wxMaracasMultipleVolumeRendererPanel::onViewImage(wxCommandEvent& event){  
149         
150 }
151 void wxMaracasMultipleVolumeRendererPanel::onCheckBoxChange(wxCommandEvent& event){     
152         wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());    
153 }
154
155 int wxMaracasMultipleVolumeRendererPanel::getPropId(){
156         return _propid;
157 }