]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk3DBaseView.cxx
Bug #1373
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxVtk3DBaseView.cxx
1 #include "wxVtk3DBaseView.h"
2
3 #include "vtkInteractorStyleBaseView3D.h"
4
5 #ifdef _DEBUG
6 #define new DEBUG_NEW
7 #endif
8 wxVtk3DBaseView::wxVtk3DBaseView(wxWindow *parent)
9 :wxVtkBaseView( parent )
10 {
11         _configure      = false;
12         _aRenderer      = NULL;
13         _renWin         = NULL;
14         _aCamera        = NULL;
15 }
16 //-------------------------------------------------------------------
17 wxVtk3DBaseView::~wxVtk3DBaseView()
18 {
19
20         if (_aCamera!=NULL)     { _aCamera              -> Delete(); _aCamera=NULL;}
21         if (_aRenderer!=NULL)   { _aRenderer    -> Delete(); _aRenderer=NULL;}
22         if (_renWin!=NULL)      { 
23                 if(_renWin->GetReferenceCount()==0){
24                         _renWin         -> Delete(); _renWin=NULL;
25                 }
26         }
27 }
28 //-------------------------------------------------------------------
29 vtkCamera* wxVtk3DBaseView::GetCamera()
30 {
31         return _aCamera;
32 }
33 //-------------------------------------------------------------------
34 vtkRenderer* wxVtk3DBaseView::GetRenderer()  // virtual
35 {
36         return _aRenderer;
37 }
38 //-------------------------------------------------------------------
39 vtkRenderWindow* wxVtk3DBaseView::GetRenWin()  // virtual
40 {
41         return _renWin;
42 }
43 //-------------------------------------------------------------------
44 void wxVtk3DBaseView::Refresh()
45 {
46 //      _renWin->Render();
47         vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor();
48         vri->vtkRenderWindowInteractor::Render();
49 }
50
51
52 //-------------------------------------------------------------------
53 void wxVtk3DBaseView::SetStereo(int type)
54 {
55         //EED 02/06/2012  
56         
57         if (_renWin!=NULL)
58         {
59                 if (type==0)
60                 {
61                         _renWin->SetStereoRender(0); // OFF
62                 } else {
63                         _renWin->SetStereoRender(1); // ON
64                         _renWin->SetStereoCapableWindow(1);
65                         _renWin->SetAnaglyphColorMask(4,3);
66                         _renWin->SetAnaglyphColorSaturation(0.65);
67                 
68                         // VTK_STEREO_CRYSTAL_EYES 1
69                         // VTK_STEREO_RED_BLUE     2
70                         // VTK_STEREO_INTERLACED   3
71                         // VTK_STEREO_LEFT         4
72                         // VTK_STEREO_RIGHT        5
73                         // VTK_STEREO_DRESDEN      6
74                         // VTK_STEREO_ANAGLYPH     7
75                         // VTK_STEREO_CHECKERBOARD 8            
76                         _renWin->SetStereoType(type);      
77                 
78                 } // if type
79         } // _renWin
80 }
81
82
83 //-------------------------------------------------------------------
84 void wxVtk3DBaseView::Configure()
85 {
86         if (_configure==false)
87         {
88                 _configure=true;
89                 //wxVtkBaseView::Configure();
90                 _aRenderer      = vtkRenderer::New();
91                 _renWin         = vtkRenderWindow::New();
92                 _renWin->AddRenderer(_aRenderer);
93
94                 _aRenderer->GradientBackgroundOn();
95                 _aRenderer->SetBackground( 0.33 , 0.33 , 0.33 );
96                 _aRenderer->SetBackground2( 0.66 , 0.66 , 0.66 );
97                 
98                 SetStereo(0);
99                 
100                 GetWxVTKRenderWindowInteractor()->SetRenderWindow(_renWin);
101
102                 vtkInteractorStyleBaseView3D *interactorStyleBaseView3D = vtkInteractorStyleBaseView3D::New(); 
103
104                 SetInteractorStyleBaseView( interactorStyleBaseView3D );
105                 interactorStyleBaseView3D->SetInteractor (  GetWxVTKRenderWindowInteractor() );
106                 GetWxVTKRenderWindowInteractor()->SetInteractorStyle( interactorStyleBaseView3D );
107                 interactorStyleBaseView3D->SetwxVtkBaseView(this);      
108
109                 // It is convenient to create an initial view of the data. The
110                 // FocalPoint and Position form a vector direction. Later on
111                 // (ResetCamera() method) this vector is used to position the camera
112                 // to look at the data in this direction.
113                 _aCamera = vtkCamera::New();
114
115 //EED 17Avril2009       
116 /*
117                 _aCamera->SetViewUp (0, 0, -1);
118                 _aCamera->SetPosition (0, 1, 0);
119  */
120                 _aCamera->SetViewUp (0, 1, 0);
121                 _aCamera->SetPosition (0, 0, 1);
122                 
123                 _aCamera->SetFocalPoint (0, 0, 0);
124                 _aCamera->ComputeViewPlaneNormal();
125
126         }
127 }
128 //-------------------------------------------------------------------
129 //EED 27 sep 2006
130 void wxVtk3DBaseView::GetSpacing(double spc[3])
131 {
132         spc[0]=1;
133         spc[1]=1;
134         spc[2]=1;
135 }
136