X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMaracasRenderImageManagementPanel.cpp;h=4473513c2d9cf7e5d29d75f4b0fc8a7ed59f5dba;hb=ab19f727dc01a9995b16b2a3c82783050728233e;hp=7ebd0c2392c0ea593107400bcc262de42b68dbc8;hpb=79df2a7fc2b468bc2e7279ac77c0148269fe6aee;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRenderImageManagementPanel.cpp b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRenderImageManagementPanel.cpp index 7ebd0c2..4473513 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRenderImageManagementPanel.cpp +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRenderImageManagementPanel.cpp @@ -1,45 +1,16 @@ #include "wxMaracasRenderImageManagementPanel.h" + #include /** ** Class constructor **/ wxMaracasRenderImageManagementPanel::wxMaracasRenderImageManagementPanel(wxWindow* parent, wxMaracasMultipleVolumeRendererManager* _vol, wxMaracasSurfaceRenderingManager* _surface1, - wxMaracasSurfaceRenderingManager* _surface2, wxMaracasSurfaceRenderingManager* _surface3, int id) -: wxDialog(parent, -1, _T("Image Position Parameters"), wxDefaultPosition, wxDefaultSize, wxRESIZE_BORDER|wxDEFAULT_DIALOG_STYLE) + wxMaracasSurfaceRenderingManager* _surface2, wxMaracasSurfaceRenderingManager* _surface3, wxString title, int id) +: wxDialog(parent, -1, title, wxDefaultPosition, wxDefaultSize, wxRESIZE_BORDER|wxDEFAULT_DIALOG_STYLE) { - vol = _vol; - surface1 = _surface1; - surface2 = _surface2; - surface3 = _surface3; - - propID = id; - - transformV = vtkTransform::New(); - //vtkMatrix4x4 *_matrixV = vtkMatrix4x4::New(); - //_matrixV->Identity(); - //transformV->SetMatrix(_matrixV); - //transformV->SetInput(vol->getViewData(propID)->getProp3D()->GetUserTransform()); - - transformS1 = vtkTransform::New(); - //vtkMatrix4x4 *_matrixS1 = vtkMatrix4x4::New(); - //_matrixS1->Identity(); - //transformS1->SetMatrix(_matrixS1); - //transformS1->SetInput(surface1->getViewData(propID)->getProp3D()->GetUserTransform()); - - transformS2 = vtkTransform::New(); - //vtkMatrix4x4 *_matrixS2 = vtkMatrix4x4::New(); - //_matrixS2->Identity(); - //transformS2->SetMatrix(_matrixS2); - //transformS2->SetInput(surface2->getViewData(propID)->getProp3D()->GetUserTransform()); - - transformS3 = vtkTransform::New(); - //vtkMatrix4x4 *_matrixS3 = vtkMatrix4x4::New(); - //_matrixS3->Identity(); - //transformS3->SetMatrix(_matrixS3); - //transformS3->SetInput(surface3->getViewData(propID)->getProp3D()->GetUserTransform()); - + wxtrasform = new wxMaracasRenderImageTransformation(_vol, _surface1, _surface2, _surface3, id); createControls(); } @@ -53,63 +24,63 @@ void wxMaracasRenderImageManagementPanel::createControls() wxStaticText* tx = new wxStaticText(this, -1, wxString(_T(" Translate X "))); sliderTranslateX = new wxSlider(this, -1, 0, -200, 200, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); sliderTranslateX->SetLineSize(1); - Connect(sliderTranslateX->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Translate); + Connect(sliderTranslateX->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(tx, wxFIXED_MINSIZE); - sizersliders->Add(sliderTranslateX,wxSizerFlags().Expand().Center()); + sizersliders->Add(sliderTranslateX, 1, wxALL|wxEXPAND, 2); wxStaticText* ty = new wxStaticText(this, -1, wxString(_T(" Translate Y "))); sliderTranslateY = new wxSlider(this, -1, 0, -200, 200, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); sliderTranslateY->SetLineSize(1); - Connect(sliderTranslateY->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Translate); + Connect(sliderTranslateY->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(ty, wxFIXED_MINSIZE); - sizersliders->Add(sliderTranslateY,wxSizerFlags().Expand().Center()); + sizersliders->Add(sliderTranslateY, 1, wxALL|wxEXPAND, 2); wxStaticText* tz = new wxStaticText(this, -1, wxString(_T(" Translate Z "))); sliderTranslateZ = new wxSlider(this, -1, 0, -200, 200, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); sliderTranslateZ->SetLineSize(1); - Connect(sliderTranslateZ->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Translate); + Connect(sliderTranslateZ->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(tz, wxFIXED_MINSIZE); sizersliders->Add(sliderTranslateZ,wxSizerFlags().Expand().Center()); wxStaticText* rx = new wxStaticText(this, -1, wxString(_T(" Rotate X "))); sliderRotateX = new wxSlider(this, -1, 0, -360, 360, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); sliderRotateX->SetLineSize(1); - Connect(sliderRotateX->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Rotate); + Connect(sliderRotateX->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(rx, wxFIXED_MINSIZE); sizersliders->Add(sliderRotateX,wxSizerFlags().Expand().Center()); wxStaticText* ry = new wxStaticText(this, -1, wxString(_T(" Rotate Y "))); sliderRotateY = new wxSlider(this, -1, 0, -360, 360, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); sliderRotateY->SetLineSize(1); - Connect(sliderRotateY->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Rotate); + Connect(sliderRotateY->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(ry, wxFIXED_MINSIZE); sizersliders->Add(sliderRotateY,wxSizerFlags().Expand().Center()); wxStaticText* rz = new wxStaticText(this, -1, wxString(_T(" Rotate Z "))); sliderRotateZ = new wxSlider(this, -1, 0, -360, 360, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); sliderRotateZ->SetLineSize(1); - Connect(sliderRotateZ->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Rotate); + Connect(sliderRotateZ->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(rz, wxFIXED_MINSIZE); sizersliders->Add(sliderRotateZ,wxSizerFlags().Expand().Center()); wxStaticText* sx = new wxStaticText(this, -1, wxString(_T(" Scale X "))); - sliderScaleX = new wxSlider(this, -1, 0, -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); + sliderScaleX = new wxSlider(this, -1, 100, 1, 200, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); sliderScaleX->SetLineSize(1); - Connect(sliderScaleX->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Scale); + Connect(sliderScaleX->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(sx, wxFIXED_MINSIZE); sizersliders->Add(sliderScaleX,wxSizerFlags().Expand().Center()); wxStaticText* sy = new wxStaticText(this, -1, wxString(_T(" Scale Y "))); - sliderScaleY = new wxSlider(this, -1, 0, -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); + sliderScaleY = new wxSlider(this, -1, 100, 1, 200, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); sliderScaleY->SetLineSize(1); - Connect(sliderScaleY->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Scale); + Connect(sliderScaleY->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(sy, wxFIXED_MINSIZE); sizersliders->Add(sliderScaleY,wxSizerFlags().Expand().Center()); wxStaticText* sz = new wxStaticText(this, -1, wxString(_T(" Scale Z "))); - sliderScaleZ = new wxSlider(this, -1, 0, -100, 100, wxDefaultPosition, this->GetSize(), wxSL_LABELS); + sliderScaleZ = new wxSlider(this, -1, 100, 1, 200, wxDefaultPosition, this->GetSize(), wxSL_LABELS); sliderScaleZ->SetLineSize(1); - Connect(sliderScaleZ->GetId(), wxEVT_SCROLL_THUMBTRACK, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Scale); + Connect(sliderScaleZ->GetId(), wxEVT_COMMAND_SLIDER_UPDATED, (wxObjectEventFunction)&wxMaracasRenderImageManagementPanel::Transform); sizersliders->Add(sz, wxFIXED_MINSIZE); sizersliders->Add(sliderScaleZ,wxSizerFlags().Expand().Center()); @@ -158,84 +129,17 @@ wxMaracasRenderImageManagementPanel::~wxMaracasRenderImageManagementPanel() /** ** Transforms a volume by the given value for the X axis **/ -void wxMaracasRenderImageManagementPanel::Translate(wxCommandEvent& event) -{ - printf("silder translateX = %d \n", sliderTranslateX->GetValue()); - transformV->Identity(); - transformS1->Identity(); - transformS2->Identity(); - transformS3->Identity(); - - transformV->Translate(sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue()); - transformS1->Translate(sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue()); - transformS2->Translate(sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue()); - transformS3->Translate(sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue()); - - Refresh(); -} - -/** -** Rotates a volume by the given degree for the X axis -**/ -void wxMaracasRenderImageManagementPanel::Rotate(wxCommandEvent& event) -{ - printf("silder rotateX = %d \n", sliderRotateX->GetValue()); - - transformV->Identity(); - transformS1->Identity(); - transformS2->Identity(); - transformS3->Identity(); - - transformS1->RotateX( sliderRotateX->GetValue() ); - transformS2->RotateX( sliderRotateX->GetValue() ); - transformS3->RotateX( sliderRotateX->GetValue() ); - - transformV->RotateY( sliderRotateY->GetValue() ); - transformS1->RotateY( sliderRotateY->GetValue() ); - transformS2->RotateY( sliderRotateY->GetValue() ); - transformS3->RotateY( sliderRotateY->GetValue() ); - - transformV->RotateZ( sliderRotateZ->GetValue() ); - transformS1->RotateZ( sliderRotateZ->GetValue() ); - transformS2->RotateZ( sliderRotateZ->GetValue() ); - transformS3->RotateZ( sliderRotateZ->GetValue() ); - - Refresh(); -} - -/** -** Scales a volume by the given value for the X axis -**/ -void wxMaracasRenderImageManagementPanel::Scale(wxCommandEvent& event) -{ - transformV->Identity(); - transformS1->Identity(); - transformS2->Identity(); - transformS3->Identity(); - - transformV->Scale( sliderTranslateX->GetValue()/50, sliderTranslateY->GetValue()/50, sliderTranslateZ->GetValue()/50 ); - transformS1->Scale( sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue() ); - transformS2->Scale( sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue() ); - transformS3->Scale( sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue() ); - - Refresh(); -} - -void wxMaracasRenderImageManagementPanel::Refresh() +void wxMaracasRenderImageManagementPanel::Transform(wxCommandEvent& event) { + //printf("wxMaracasRenderImageManagementPanel::Translate translateX = %d \n", sliderTranslateX->GetValue()); + //printf("wxMaracasRenderImageManagementPanel::Translate translatey = %d \n", sliderTranslateY->GetValue()); + //printf("wxMaracasRenderImageManagementPanel::Translate translatez = %d \n", sliderTranslateZ->GetValue()); try{ - transformV->Update(); - transformS1->Update(); - transformS2->Update(); - transformS3->Update(); - - vol->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix()); - surface1->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix()); - surface2->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix()); - surface3->getViewData(propID)->getProp3D()->SetUserMatrix(transformV->GetMatrix()); + wxtrasform->Translate( sliderTranslateX->GetValue(), sliderTranslateY->GetValue(), sliderTranslateZ->GetValue(), + sliderRotateX->GetValue(), sliderRotateY->GetValue(), sliderRotateZ->GetValue(), + sliderScaleX->GetValue(), sliderScaleY->GetValue(), sliderScaleZ->GetValue() ); } - catch(char* str) - { + catch(char* str){ std::cout << "Exception : " << str << '\n'; wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR); diag->ShowModal();