]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRenderTabbedPanel.cpp
457a2abb59060160e61282d0c5a8a745108bd583
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasRenderTabbedPanel.cpp
1 #include "wxMaracasRenderTabbedPanel.h"
2
3 #include <wx/colordlg.h>
4 #include <OpenImage.xpm>
5 #include "Color.xpm"
6
7
8 /**
9 **      
10 **/
11 wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent, wxMaracasMultipleVolumeRendererManager* _volmanager, wxMaracasSurfaceRenderingManager* _surrendmanager1, wxMaracasSurfaceRenderingManager* _surrendmanager2, 
12                                                                           wxMaracasSurfaceRenderingManager* _surrendmanager3, wxString filename, wxString dataname)
13 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
14 {
15         //_propid = propid;
16         volmanager = _volmanager;
17         surrendmanager1 = _surrendmanager1;
18         surrendmanager2 = _surrendmanager2;
19         surrendmanager3 = _surrendmanager3;
20
21         createControls(filename, dataname);
22 }
23
24 /**
25 **
26 **/
27 void wxMaracasRenderTabbedPanel::createControls(wxString filename, wxString dataname)
28 {
29         //wxPanel* up = new wxPanel(this, wxID_ANY);
30         wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,3,1);
31         
32         wxString choices[2];
33         choices[0] = wxString(_T("On"));
34         choices[1] = wxString(_T("Off"));
35         checkboxVol = new  wxCheckBox(this,-1,wxString(_T("Volume Rendering")));
36         Connect(checkboxVol->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxVChange);   
37         checkboxVol->SetValue(true);    
38
39         sizerrenderprop->Add(checkboxVol, wxFIXED_MINSIZE);
40
41         //wxString choices[2];
42         //choices[0] = wxString(_T("On"));
43         //choices[1] = wxString(_T("Off"));
44         checkboxSA = new  wxCheckBox(this,-1,wxString(_T("Surface Rendering A")));
45         Connect(checkboxSA->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSAChange);   
46         checkboxSA->SetValue(true);     
47
48         sizerrenderprop->Add(checkboxSA, wxFIXED_MINSIZE);
49
50         //wxString choices[2];
51         //choices[0] = wxString(_T("On"));
52         //choices[1] = wxString(_T("Off"));
53         checkboxSB = new  wxCheckBox(this,-1,wxString(_T("Surface Rendering B")));
54         Connect(checkboxSB->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSBChange);   
55         checkboxSB->SetValue(true);     
56
57         sizerrenderprop->Add(checkboxSB, wxFIXED_MINSIZE);
58
59         //wxString choices[2];
60         //choices[0] = wxString(_T("On"));
61         //choices[1] = wxString(_T("Off"));
62         checkboxSC = new  wxCheckBox(this,-1,wxString(_T("Surface Rendering C")));
63         Connect(checkboxSC->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSCChange);   
64         checkboxSC->SetValue(true);     
65
66         sizerrenderprop->Add(checkboxSC, wxFIXED_MINSIZE);
67
68         //up->SetSizer(sizerup, true);          
69         //up->SetAutoLayout( true );
70
71         wxtabs = new wxNotebook(this, -1);
72
73         std::string s = std::string(filename.mb_str());
74         vtkImageData* img1 = volmanager->getImageData(s);
75         vtkImageData* img2 = surrendmanager1->getImageData(s);
76         vtkImageData* img3 = surrendmanager2->getImageData(s);
77         vtkImageData* img4 = surrendmanager3->getImageData(s);
78         if(img1!=NULL)
79         {
80                 s = std::string(dataname.mb_str());
81                 wxMaracasMultipleVolumeRendererPanel* controlpan1 = addVolume(img1, s);
82                 wxMaracasSurfaceRenderingPanel* controlpan2 = addSurface1(img2, s);
83                 wxMaracasSurfaceRenderingPanel* controlpan3 = addSurface2(img3, s);
84                 wxMaracasSurfaceRenderingPanel* controlpan4 = addSurface3(img4, s);
85         
86                 wxtabs->AddPage(controlpan1, _T("Volume Rendering"), true);
87                 wxtabs->AddPage(controlpan2, _T("Surf Rend A"));
88                 wxtabs->AddPage(controlpan3, _T("Surf Rend B"));
89                 wxtabs->AddPage(controlpan4, _T("Surf Rend C"));
90         
91                 wxtabs->Refresh();
92         }
93
94         //wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,1,5);
95         //sizerrenderprop->Add(up, wxFIXED_MINSIZE);
96         sizerrenderprop->Add(wxtabs, wxFIXED_MINSIZE);
97
98         this->SetSizer(sizerrenderprop, true);          
99         this->SetAutoLayout( true );
100
101 }
102
103 wxMaracasRenderTabbedPanel::~wxMaracasRenderTabbedPanel()
104 {       
105         //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false);
106         //wxMaracasRenderTabbedPanel::getInstance()->deleteVolume(_propid);
107         delete wxtabs;
108         //delete surview1;
109         //delete surview2;
110         //delete surview3;
111 }
112
113 /*
114 *
115 */
116 wxMaracasMultipleVolumeRendererPanel* wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname)
117 {
118
119         try
120         {
121                 int id = volmanager->addVolume(img, dataname);
122                 if(id!=-1)
123                 {
124                         wxMaracasMultipleVolumeRendererPanel* controlpan = new wxMaracasMultipleVolumeRendererPanel(wxtabs, id,img);
125                         //controlpan->updateVolume();
126
127                         return controlpan;
128                 }
129         }
130         catch(char* str)
131         {
132                 std::cout << "Exception : " << str << '\n';
133                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
134                 diag->ShowModal();
135         }
136 }
137
138 wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname)
139 {
140         try
141         {
142                 int id = surrendmanager1->addPropMHD(img, dataname);
143                 
144                 if(id!=-1)
145                 {
146                         wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
147                         //int maxiso = surrendmanager1->getMaxIsoValue(id);
148                         //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
149                         
150                         return controlpan;
151                 }
152         }
153         catch(char* str)
154         {
155                 std::cout << "Exception : " << str << '\n';
156                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
157                 diag->ShowModal();
158         }
159 }
160
161 wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname)
162 {
163         try
164         {
165                 int id = surrendmanager2->addPropMHD(img, dataname);
166                 if(id!=-1)
167                 {
168                         wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
169                         //int maxiso = surrendmanager2->getMaxIsoValue(id);
170                         //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
171
172                         return controlpan;
173                 }
174         }
175         catch(char* str)
176         {
177                 std::cout << "Exception : " << str << '\n';
178                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
179                 diag->ShowModal();
180         }
181 }
182
183 wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname)
184 {
185         try
186         {
187                 int id = surrendmanager3->addPropMHD(img, dataname);
188                 if(id!=-1)
189                 {
190                         wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id);
191                         //int maxiso = surrendmanager3->getMaxIsoValue(id);
192                         //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso);
193                         
194                         return controlpan;
195                 }
196         }
197         catch(char* str)
198         {
199                 std::cout << "Exception : " << str << '\n';
200                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
201                 diag->ShowModal();
202         }
203 }
204
205 void wxMaracasRenderTabbedPanel::onOK(wxCommandEvent& event)
206 {
207     updateVolume();
208         //_frame->Show(false);
209 }
210
211 void wxMaracasRenderTabbedPanel::onCancel(wxCommandEvent& event)
212 {
213         //_frame->Show(false);
214 }
215
216 void wxMaracasRenderTabbedPanel::onUpdate(wxCommandEvent& event)
217 {
218         updateVolume();    
219 }
220
221 void wxMaracasRenderTabbedPanel::updateVolume()
222 {
223         //std::vector<double> greylevelcolors;
224         //std::vector<double> red;
225         //std::vector<double> green;
226         //std::vector<double> blue;
227
228         //std::vector<double> greylevel;
229         //std::vector<double> values;
230
231     //mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
232         //mwxwidget->GetValuesPointsFunction(greylevel, values);
233
234
235         //wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
236         //wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
237
238 }
239
240 void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event)
241 {       
242
243         //if(mwxwidget->ShowModal()==wxID_OK){
244         //updateVolume();
245         //      mwxwidget->Show(false);
246         //}     
247 }
248
249 /**
250 ** 
251 **/
252 void wxMaracasRenderTabbedPanel::onViewImage(wxCommandEvent& event){
253         
254 }
255
256 /**
257 **
258 **/
259 void wxMaracasRenderTabbedPanel::onCheckBoxVChange(wxCommandEvent& event)
260 {
261         //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());  
262 }
263
264 /**
265 **
266 **/
267 void wxMaracasRenderTabbedPanel::onCheckBoxSAChange(wxCommandEvent& event)
268 {       
269         //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());  
270 }
271
272 /**
273 **
274 **/
275 void wxMaracasRenderTabbedPanel::onCheckBoxSBChange(wxCommandEvent& event)
276 {       
277         //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());  
278 }
279
280 /**
281 **
282 **/
283 void wxMaracasRenderTabbedPanel::onCheckBoxSCChange(wxCommandEvent& event)
284 {       
285         //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue());  
286 }
287
288 /**
289 **
290 **/
291 int wxMaracasRenderTabbedPanel::getPropId(){
292         return _propid;
293 }
294