1 #include "wxMaracasRenderImageManagementPanel.h"
8 wxMaracasRenderImageManagementPanel::wxMaracasRenderImageManagementPanel(wxWindow* parent, wxMaracasMultipleVolumeRendererManager* _vol, wxMaracasSurfaceRenderingManager* _surface1,
9 wxMaracasSurfaceRenderingManager* _surface2, wxMaracasSurfaceRenderingManager* _surface3, int id)
10 : wxDialog(parent, -1, _T("Image Position Parameters"), wxDefaultPosition, wxDefaultSize, wxRESIZE_BORDER|wxDEFAULT_DIALOG_STYLE)
19 transformV = vtkTransform::New();
20 //vtkMatrix4x4 *_matrixV = vtkMatrix4x4::New();
21 //_matrixV->Identity();
22 //transformV->SetMatrix(_matrixV);
23 //transformV->SetInput(vol->getViewData(propID)->getProp3D()->GetUserTransform());
25 transformS1 = vtkTransform::New();
26 //vtkMatrix4x4 *_matrixS1 = vtkMatrix4x4::New();
27 //_matrixS1->Identity();
28 //transformS1->SetMatrix(_matrixS1);
29 //transformS1->SetInput(surface1->getViewData(propID)->getProp3D()->GetUserTransform());
31 transformS2 = vtkTransform::New();
32 //vtkMatrix4x4 *_matrixS2 = vtkMatrix4x4::New();
33 //_matrixS2->Identity();
34 //transformS2->SetMatrix(_matrixS2);
35 //transformS2->SetInput(surface2->getViewData(propID)->getProp3D()->GetUserTransform());
37 transformS3 = vtkTransform::New();
38 //vtkMatrix4x4 *_matrixS3 = vtkMatrix4x4::New();
39 //_matrixS3->Identity();
40 //transformS3->SetMatrix(_matrixS3);
41 //transformS3->SetInput(surface3->getViewData(propID)->getProp3D()->GetUserTransform());
49 void wxMaracasRenderImageManagementPanel::createControls()
51 wxFlexGridSizer* sizersliders = new wxFlexGridSizer(1);
53 wxStaticText* tx = new wxStaticText(this, -1, wxString(_T(" Translate X ")));
54 sliderTranslateX = new wxSlider(this, -1, 0, -200, 200, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
55 sliderTranslateX->SetLineSize(1);
56 Connect(sliderTranslateX->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Translate);
57 sizersliders->Add(tx, wxFIXED_MINSIZE);
58 sizersliders->Add(sliderTranslateX,wxSizerFlags().Expand().Center());
60 wxStaticText* ty = new wxStaticText(this, -1, wxString(_T(" Translate Y ")));
61 sliderTranslateY = new wxSlider(this, -1, 0, -200, 200, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
62 sliderTranslateY->SetLineSize(1);
63 Connect(sliderTranslateY->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Translate);
64 sizersliders->Add(ty, wxFIXED_MINSIZE);
65 sizersliders->Add(sliderTranslateY,wxSizerFlags().Expand().Center());
67 wxStaticText* tz = new wxStaticText(this, -1, wxString(_T(" Translate Z ")));
68 sliderTranslateZ = new wxSlider(this, -1, 0, -200, 200, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
69 sliderTranslateZ->SetLineSize(1);
70 Connect(sliderTranslateZ->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Translate);
71 sizersliders->Add(tz, wxFIXED_MINSIZE);
72 sizersliders->Add(sliderTranslateZ,wxSizerFlags().Expand().Center());
74 wxStaticText* rx = new wxStaticText(this, -1, wxString(_T(" Rotate X ")));
75 sliderRotateX = new wxSlider(this, -1, 0, -360, 360, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
76 sliderRotateX->SetLineSize(1);
77 Connect(sliderRotateX->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Rotate);
78 sizersliders->Add(rx, wxFIXED_MINSIZE);
79 sizersliders->Add(sliderRotateX,wxSizerFlags().Expand().Center());
81 wxStaticText* ry = new wxStaticText(this, -1, wxString(_T(" Rotate Y ")));
82 sliderRotateY = new wxSlider(this, -1, 0, -360, 360, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
83 sliderRotateY->SetLineSize(1);
84 Connect(sliderRotateY->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Rotate);
85 sizersliders->Add(ry, wxFIXED_MINSIZE);
86 sizersliders->Add(sliderRotateY,wxSizerFlags().Expand().Center());
88 wxStaticText* rz = new wxStaticText(this, -1, wxString(_T(" Rotate Z ")));
89 sliderRotateZ = new wxSlider(this, -1, 0, -360, 360, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
90 sliderRotateZ->SetLineSize(1);
91 Connect(sliderRotateZ->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Rotate);
92 sizersliders->Add(rz, wxFIXED_MINSIZE);
93 sizersliders->Add(sliderRotateZ,wxSizerFlags().Expand().Center());
95 wxStaticText* sx = new wxStaticText(this, -1, wxString(_T(" Scale X ")));
96 sliderScaleX = new wxSlider(this, -1, 0, -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
97 sliderScaleX->SetLineSize(1);
98 Connect(sliderScaleX->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Scale);
99 sizersliders->Add(sx, wxFIXED_MINSIZE);
100 sizersliders->Add(sliderScaleX,wxSizerFlags().Expand().Center());
102 wxStaticText* sy = new wxStaticText(this, -1, wxString(_T(" Scale Y ")));
103 sliderScaleY = new wxSlider(this, -1, 0, -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
104 sliderScaleY->SetLineSize(1);
105 Connect(sliderScaleY->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Scale);
106 sizersliders->Add(sy, wxFIXED_MINSIZE);
107 sizersliders->Add(sliderScaleY,wxSizerFlags().Expand().Center());
109 wxStaticText* sz = new wxStaticText(this, -1, wxString(_T(" Scale Z ")));
110 sliderScaleZ = new wxSlider(this, -1, 0, -100, 100, wxDefaultPosition, this->GetSize(), wxSL_LABELS);
111 sliderScaleZ->SetLineSize(1);
112 Connect(sliderScaleZ->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Scale);
113 sizersliders->Add(sz, wxFIXED_MINSIZE);
114 sizersliders->Add(sliderScaleZ,wxSizerFlags().Expand().Center());
116 //ATENTION!! A SUPRIMER LES LIGNES ON BAS SI ELES NE SONT PAS NECESSAIRES!!
119 //wxString choices[2];
120 //choices[0] = wxString(_T("On"));
121 //choices[1] = wxString(_T("Off"));
122 checkboxSA = new wxCheckBox(this,-1,wxString(_T("Surface Rendering A")));
123 Connect(checkboxSA->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSAChange);
124 checkboxSA->SetValue(true);
126 sizercheck->Add(checkboxSA, wxFIXED_MINSIZE);
128 //wxString choices[2];
129 //choices[0] = wxString(_T("On"));
130 //choices[1] = wxString(_T("Off"));
131 checkboxSB = new wxCheckBox(this,-1,wxString(_T("Surface Rendering B")));
132 Connect(checkboxSB->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSBChange);
133 checkboxSB->SetValue(true);
135 sizercheck->Add(checkboxSB, wxFIXED_MINSIZE);
137 //wxString choices[2];
138 //choices[0] = wxString(_T("On"));
139 //choices[1] = wxString(_T("Off"));
140 checkboxSC = new wxCheckBox(this,-1,wxString(_T("Surface Rendering C")));
141 Connect(checkboxSC->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSCChange);
142 checkboxSC->SetValue(true);
144 sizercheck->Add(checkboxSC, wxFIXED_MINSIZE);
145 sizerrenderprop->Add(sizercheck, wxFIXED_MINSIZE);*/
147 this->SetSizer(sizersliders, true);
148 this->SetAutoLayout(true);
154 wxMaracasRenderImageManagementPanel::~wxMaracasRenderImageManagementPanel()
159 ** Transforms a volume by the given value for the X axis
161 void wxMaracasRenderImageManagementPanel::Translate(wxCommandEvent& event)
163 printf("silder translateX = %d \n", sliderTranslateX->GetValue());
164 transformV->Identity();
165 transformS1->Identity();
166 transformS2->Identity();
167 transformS3->Identity();
169 transformV->Translate(sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue());
170 transformS1->Translate(sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue());
171 transformS2->Translate(sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue());
172 transformS3->Translate(sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue());
178 ** Rotates a volume by the given degree for the X axis
180 void wxMaracasRenderImageManagementPanel::Rotate(wxCommandEvent& event)
182 printf("silder rotateX = %d \n", sliderRotateX->GetValue());
184 transformV->Identity();
185 transformS1->Identity();
186 transformS2->Identity();
187 transformS3->Identity();
189 transformS1->RotateX( sliderRotateX->GetValue() );
190 transformS2->RotateX( sliderRotateX->GetValue() );
191 transformS3->RotateX( sliderRotateX->GetValue() );
193 transformV->RotateY( sliderRotateY->GetValue() );
194 transformS1->RotateY( sliderRotateY->GetValue() );
195 transformS2->RotateY( sliderRotateY->GetValue() );
196 transformS3->RotateY( sliderRotateY->GetValue() );
198 transformV->RotateZ( sliderRotateZ->GetValue() );
199 transformS1->RotateZ( sliderRotateZ->GetValue() );
200 transformS2->RotateZ( sliderRotateZ->GetValue() );
201 transformS3->RotateZ( sliderRotateZ->GetValue() );
207 ** Scales a volume by the given value for the X axis
209 void wxMaracasRenderImageManagementPanel::Scale(wxCommandEvent& event)
211 transformV->Identity();
212 transformS1->Identity();
213 transformS2->Identity();
214 transformS3->Identity();
216 transformV->Scale( sliderTranslateX->GetValue()/50, sliderTranslateY->GetValue()/50, sliderTranslateZ->GetValue()/50 );
217 transformS1->Scale( sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue() );
218 transformS2->Scale( sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue() );
219 transformS3->Scale( sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue() );
224 void wxMaracasRenderImageManagementPanel::Refresh()
227 transformV->Update();
228 transformS1->Update();
229 transformS2->Update();
230 transformS3->Update();
232 vol->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix());
233 surface1->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix());
234 surface2->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix());
235 surface3->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix());
239 std::cout << "Exception : " << str << '\n';
240 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);