]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkBaseView.cxx
Changing method to transform coordinates
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtkBaseView.cxx
1
2
3 //#include "vtkInteractorStyleBaseView.h"
4
5 #include "wxVtkBaseView.h"
6 #include "wxVtk2DBaseView.h"
7 #include "wxVTKRenderWindowInteractorPlus.h"
8
9
10
11 wxVtkBaseView::wxVtkBaseView()
12 {
13         _parent                         = NULL;
14         _iren                           = NULL;
15         _interactorStyle        = NULL;
16 }
17
18 //-------------------------------------------------------------------
19
20 wxVtkBaseView::wxVtkBaseView(wxWindow *parent)
21 {
22         _parent                         = parent;
23         _iren                           = (wxVTKRenderWindowInteractor*)new wxVTKRenderWindowInteractorPlus(_parent,this);
24 //      _iren->UseCaptureMouseOn();
25 //      _iren                           = new wxVTKRenderWindowInteractor(_parent,-1);
26         _interactorStyle        = NULL;
27
28
29 }
30
31 //-------------------------------------------------------------------
32 wxVtkBaseView::~wxVtkBaseView()
33 {
34         _iren -> Delete();
35         //_iren=NULL;
36 }
37 //-------------------------------------------------------------------
38 wxVTKRenderWindowInteractor* wxVtkBaseView::GetWxVTKRenderWindowInteractor() throw (char*)
39 {
40
41         if(_iren==NULL){
42                 throw "wxVtkBaseView::GetWxVTKRenderWindowInteractor() _iren wxVTKRenderWindowInteractorPlus =NULL";
43         }
44    return _iren;
45 }
46 //-------------------------------------------------------------------
47 void wxVtkBaseView::Configure()  // virtual 
48 {
49 }
50 //-------------------------------------------------------------------
51 void wxVtkBaseView::Refresh()  // virtual 
52 {
53 // EED 10 Oct 2007
54
55         #if defined(WIN32)
56                 _iren->Refresh(false);
57         #else
58         
59 //EED 01Avril2009
60 //              _iren->Render();        
61         vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor();
62         vri->vtkRenderWindowInteractor::Render();
63         
64         
65                 //_iren->Refresh();
66         #endif
67
68 }
69 //-------------------------------------------------------------------
70 void wxVtkBaseView::RefreshView()  // virtual 
71 {
72 // EED 10 Oct 2007
73
74         #if defined(WIN32)
75                 GetRenWin()->Render();
76         #else
77                 //GetRenWin()->Render();
78         #endif
79
80 }
81 //---------------------------------------------------------------------------
82 vtkRenderer* wxVtkBaseView::GetRenderer()       // virtual 
83 {
84         return NULL;
85 }
86 //---------------------------------------------------------------------------
87 vtkRenderWindow* wxVtkBaseView::GetRenWin()             // virtual
88 {
89         return _iren->GetRenderWindow();
90 }
91
92 //----------------------------------------------------------------------------
93
94 void wxVtkBaseView::TransCoordScreenToWorld(double &X, double &Y, double &Z)
95 {
96         GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z);
97         GetRenderer()->DisplayToWorld();
98         double fP[4];
99         GetRenderer()->GetWorldPoint( fP );
100         if ( fP[3] ){
101                 fP[0] /= fP[3];
102                 fP[1] /= fP[3];
103                 fP[2] /= fP[3];
104         }
105
106         X = fP[0];
107         Y = fP[1];
108         Z = fP[2];
109 }
110 //----------------------------------------------------------------------------
111                                         
112 void wxVtkBaseView::TransFromCoordScreenToWorld(double &X, double &Y, double &Z, bool keepNormalDirection, int type) //virtual //keepNormalDirection=false, type=2
113 {  
114
115         //RaC 03-2010
116         TransCoordScreenToWorld(X,Y,Z);
117
118 // EEDx5
119         //JCP 13/05/2009
120         vtkInteractorStyleBaseView* interactorstyle = (vtkInteractorStyleBaseView*)this->GetInteractorStyleBaseView();
121         wxVtk2DBaseView* baseview = (wxVtk2DBaseView*)interactorstyle->GetWxVtk2DBaseView();
122
123         double fP[3];
124         fP[0] = X;
125         fP[1] = Y;
126         fP[2] = Z;
127
128         baseview->TransformCoordinate_spacing_ViewToModel( fP[0] , fP[1] , fP[2] );
129         //JCP 13/05/2009
130
131         if (type!=0)
132         {
133                 X=fP[0];
134         }
135         if (type!=1)
136         {
137                 Y=fP[1];
138         }
139         if (type!=2)
140         {
141                 Z=fP[2];
142         } 
143 }
144
145 //---------------------------------------------------------------------------
146 /* JCP 14/05/09
147 vtkInteractorStyleBaseView*     wxVtkBaseView::GetInteractorStyleBaseView()
148 {
149         return _interactorStyle;
150 }
151 */
152 vtkInteractorStyleImage*        wxVtkBaseView::GetInteractorStyleBaseView()
153 {
154         return _interactorStyle;
155 }
156
157
158 //---------------------------------------------------------------------------
159
160 void wxVtkBaseView::SetInteractorStyleBaseView( vtkInteractorStyleImage*        interactorStyle)
161 {
162         _interactorStyle = interactorStyle;
163 }
164
165 //---------------------------------------------------------------------------
166
167 void wxVtkBaseView::GetSpacing(double spc[3])  // virtual
168 {
169         spc[0]=1;
170         spc[1]=1;
171         spc[2]=1;
172 }
173
174
175
176 //-------------------------------------------------------------------
177 //-------------------------------------------------------------------
178 //-------------------------------------------------------------------
179
180
181