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