#include "wxMaracasRenderImageManagementPanel.h"
+
#include <vtkVolume.h>
/**
** 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();
}
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());
/**
** 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();