]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/vtkmyPWCallback_3DPointWidget.cxx
No newline at rend of file
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / vtkmyPWCallback_3DPointWidget.cxx
1 #include "vtkmyPWCallback_3DPointWidget.h"
2 #include "vtkInteractorStyleBaseView.h"
3
4 //-------------------------------------------------------------------
5 //-------------------------------------------------------------------
6 //-------------------------------------------------------------------
7 void vtkmyPWCallback_3DPointWidget::Execute(vtkObject *caller, unsigned long, void*)
8 {
9         double n[3];
10         double p[3];
11         double delta = 0.000000001;
12
13         vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*)_wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetInteractorStyleBaseView();
14
15         if (caller==_pointWidget)
16         {
17                 _pointWidget->GetPosition(p);
18         }
19         if (caller==_planeWidget)
20         {
21                 _planeWidget->GetCenter(p);
22                 _planeWidget->GetNormal(n);
23                 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetNormal(n[0],n[1],n[2]);
24         }
25
26         double spc[3];
27         _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc);
28         p[0]=p[0]/spc[0];
29         p[1]=p[1]/spc[1];
30         p[2]=p[2]/spc[2];
31
32         // Orientation change
33         if ( (fabs(n[0]-_backNormal[0])>delta) || (fabs(n[1]-_backNormal[1])>delta) || (fabs(n[2]-_backNormal[2])>delta) )
34         {
35                 _backNormal[0] = n[0];
36                 _backNormal[1] = n[1];
37                 _backNormal[2] = n[2];
38                 isbv->SetParent_refresh_waiting();
39         }
40
41         // ----------
42
43         double tx = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX();
44         double ty = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY();
45         double tz = _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ();
46
47         // Position Change
48         if ( (fabs(tx-p[0])>delta) || (fabs(ty-p[1])>delta) || (fabs(tz-p[2])>delta) )
49         {
50                 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetX( p[0] );
51                 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetY( p[1] );
52                 _wxvtkmpr3Dview->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->SetZ( p[2] );
53                 vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*)_wxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetInteractorStyleBaseView();
54                 isbv->BlockRefresh();
55                 isbv->vtkInteractorStyleBaseView::OnLeftButtonDown();
56                 isbv->SetParent_refresh_waiting();
57                 isbv->vtkInteractorStyleBaseView::OnMouseMove();
58                 isbv->UnBlockRefresh();
59         } 
60         isbv->EvaluateToRefresh();
61 }
62 //-------------------------------------------------------------------
63 void vtkmyPWCallback_3DPointWidget::SetWxVtkMPR3DView( wxVtkMPR3DView *wxvtkmpr3Dview )
64 {
65         _wxvtkmpr3Dview=wxvtkmpr3Dview;
66 }
67 //-------------------------------------------------------------------
68 void vtkmyPWCallback_3DPointWidget::SetVtkPointWidget( vtkPointWidget *pointWidget )
69 {
70         _pointWidget=pointWidget;
71 }
72 //-------------------------------------------------------------------
73 void vtkmyPWCallback_3DPointWidget::SetVtkPlaneWidget( vtkPlaneWidget *planeWidget )
74 {
75         _planeWidget=planeWidget;
76 }
77