2 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
4 #include "bbcreaMaracasVisuTransformWidget2.h"
5 #include "bbcreaMaracasVisuPackage.h"
6 namespace bbcreaMaracasVisu
10 // The widget created by the box
11 class TransformWidgetPanel : public wxPanel
14 TransformWidgetPanel(TransformWidget2* box, wxWindow *parent);
15 ~TransformWidgetPanel();
16 void OnSliderTrackX(wxScrollEvent& event);
17 void OnSliderTrackY(wxScrollEvent& event);
18 void OnSliderTrackZ(wxScrollEvent& event);
19 void OnSliderReleaseX(wxScrollEvent& event);
20 void OnSliderReleaseY(wxScrollEvent& event);
21 void OnSliderReleaseZ(wxScrollEvent& event);
22 void Release( wxSlider * slider );
23 void Track( wxSlider * slider ,int idVector);
26 TransformWidget2 *mBox;
27 wxSlider *mSliderRotationX;
28 wxSlider *mSliderRotationY;
29 wxSlider *mSliderRotationZ;
33 //------------------------------------------------------------------------
34 //------------------------------------------------------------------------
35 //------------------------------------------------------------------------
37 TransformWidgetPanel::TransformWidgetPanel(TransformWidget2* box, wxWindow *parent)
38 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
41 t = vtkTransform::New();
43 wxSize sizeSliderWidget(25,25);
44 mSliderRotationX = new wxSlider( this, -1, 0 , -180, 180 , wxDefaultPosition,sizeSliderWidget, wxSL_HORIZONTAL, wxDefaultValidator);
45 mSliderRotationY = new wxSlider( this, -1, 0 , -180, 180 , wxDefaultPosition,sizeSliderWidget, wxSL_HORIZONTAL, wxDefaultValidator);
46 mSliderRotationZ = new wxSlider( this, -1, 0 , -180, 180 , wxDefaultPosition,sizeSliderWidget, wxSL_HORIZONTAL, wxDefaultValidator);
47 // mSliderRotationX = new wxSlider( this, -1, 0 , -180, 180 , wxDefaultPosition,sizeSliderWidget, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
48 // mSliderRotationY = new wxSlider( this, -1, 0 , -180, 180 , wxDefaultPosition,sizeSliderWidget, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
49 // mSliderRotationZ = new wxSlider( this, -1, 0 , -180, 180 , wxDefaultPosition,sizeSliderWidget, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
51 Connect( mSliderRotationX->GetId(),wxEVT_SCROLL_THUMBRELEASE,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderReleaseX );
52 Connect( mSliderRotationX->GetId(),wxEVT_SCROLL_THUMBTRACK ,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderTrackX );
53 Connect( mSliderRotationX->GetId(),wxEVT_SCROLL_CHANGED ,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderTrackX );
54 Connect( mSliderRotationY->GetId(),wxEVT_SCROLL_THUMBRELEASE,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderReleaseY );
55 Connect( mSliderRotationY->GetId(),wxEVT_SCROLL_THUMBTRACK ,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderTrackY );
56 Connect( mSliderRotationY->GetId(),wxEVT_SCROLL_CHANGED ,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderTrackY );
57 Connect( mSliderRotationZ->GetId(),wxEVT_SCROLL_THUMBRELEASE,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderReleaseZ );
58 Connect( mSliderRotationZ->GetId(),wxEVT_SCROLL_THUMBTRACK ,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderTrackZ );
59 Connect( mSliderRotationZ->GetId(),wxEVT_SCROLL_CHANGED ,(wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &TransformWidgetPanel::OnSliderTrackZ );
60 wxBoxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
61 sizer->Add( mSliderRotationX,1 );
62 sizer->Add( mSliderRotationY,1 );
63 sizer->Add( mSliderRotationZ,1 );
67 TransformWidgetPanel::~TransformWidgetPanel()
71 void TransformWidgetPanel::Release( wxSlider * slider )
76 t->Concatenate ( tt->GetMatrix() ); t->Update();
77 tt->GetMatrix()->Identity(); tt->Update();
78 mBox->bbSetOutputOut( t );
79 mBox->bbSignalOutputModification(std::string("Out"));
82 void TransformWidgetPanel::OnSliderReleaseX(wxScrollEvent& event)
84 Release( mSliderRotationX );
87 void TransformWidgetPanel::OnSliderReleaseY(wxScrollEvent& event)
89 Release( mSliderRotationY );
92 void TransformWidgetPanel::OnSliderReleaseZ(wxScrollEvent& event)
94 Release( mSliderRotationZ );
97 void TransformWidgetPanel::Track( wxSlider *slider, int idVector)
104 vtkMatrix4x4 *tm = t->GetMatrix();
105 double tvx = tm->GetElement(0,idVector);
106 double tvy = tm->GetElement(1,idVector);
107 double tvz = tm->GetElement(2,idVector);
108 tt = vtkTransform::New();
111 double angle = slider->GetValue()/2;
112 tt->RotateWXYZ( angle , tvx,tvy,tvz); tt->Update();
113 vtkTransform *result=vtkTransform::New();
114 result->PostMultiply();
115 result->Concatenate ( t->GetMatrix() ); result->Update();
116 result->Concatenate ( tt->GetMatrix() ); result->Update();
117 mBox->bbSetOutputOut( result );
118 mBox->bbSignalOutputModification(std::string("Out"));
121 void TransformWidgetPanel::OnSliderTrackX(wxScrollEvent& event)
123 Track(mSliderRotationX ,0);
126 void TransformWidgetPanel::OnSliderTrackY(wxScrollEvent& event)
128 Track(mSliderRotationY ,1);
131 void TransformWidgetPanel::OnSliderTrackZ(wxScrollEvent& event)
133 Track(mSliderRotationZ ,2);
137 //------------------------------------------------------------------------
138 //------------------------------------------------------------------------
139 //------------------------------------------------------------------------
141 BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,TransformWidget2)
142 BBTK_BLACK_BOX_IMPLEMENTATION(TransformWidget2,bbtk::WxBlackBox);
144 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
146 void TransformWidget2::Process()
152 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
154 void TransformWidget2::CreateWidget(wxWindow* parent)
156 TransformWidgetPanel *w = new TransformWidgetPanel(this,parent);
157 bbSetOutputWidget( w );
161 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
163 void TransformWidget2::bbUserSetDefaultValues()
169 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
171 void TransformWidget2::bbUserInitializeProcessing()
176 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
178 void TransformWidget2::bbUserFinalizeProcessing()
182 }// EO namespace bbcreaMaracasVisu