]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtk3DBaseView.cxx
v1.0.3 Feature: 1397
[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         printf("EED wxVtk3DBaseView::SetStereo  start\n");
57
58         if (_renWin!=NULL)
59         {
60                 printf("EED wxVtk3DBaseView::SetStereo  2\n");
61                 if (type==0)
62                 {
63                         _renWin->SetStereoRender(0); // OFF
64                 } else {
65                         _renWin->SetStereoRender(1); // ON
66                         _renWin->SetStereoCapableWindow(1);
67                         _renWin->SetAnaglyphColorMask(4,3);
68                         _renWin->SetAnaglyphColorSaturation(0.65);
69                 
70                         // VTK_STEREO_CRYSTAL_EYES 1
71                         // VTK_STEREO_RED_BLUE     2
72                         // VTK_STEREO_INTERLACED   3
73                         // VTK_STEREO_LEFT         4
74                         // VTK_STEREO_RIGHT        5
75                         // VTK_STEREO_DRESDEN      6
76                         // VTK_STEREO_ANAGLYPH     7
77                         // VTK_STEREO_CHECKERBOARD 8            
78                         _renWin->SetStereoType(type);      
79                 
80                 } // if type
81         } // _renWin
82         printf("EED wxVtk3DBaseView::SetStereo  end\n");
83
84 }
85
86
87 //-------------------------------------------------------------------
88 void wxVtk3DBaseView::Configure()
89 {
90         printf("EED wxVtk3DBaseView::Configure A\n");
91         if (_configure==false)
92         {
93         printf("EED wxVtk3DBaseView::Configure B\n");
94                 _configure=true;
95                 //wxVtkBaseView::Configure();
96                 _aRenderer      = vtkRenderer::New();
97                 _renWin         = vtkRenderWindow::New();
98                 _renWin->AddRenderer(_aRenderer);
99
100                 _aRenderer->GradientBackgroundOn();
101                 _aRenderer->SetBackground( 0.33 , 0.33 , 0.33 );
102                 _aRenderer->SetBackground2( 0.66 , 0.66 , 0.66 );
103                 
104                 SetStereo(0);
105                 
106                 GetWxVTKRenderWindowInteractor()->SetRenderWindow(_renWin);
107
108                 vtkInteractorStyleBaseView3D *interactorStyleBaseView3D = vtkInteractorStyleBaseView3D::New(); 
109
110                 SetInteractorStyleBaseView( interactorStyleBaseView3D );
111                 interactorStyleBaseView3D->SetInteractor (  GetWxVTKRenderWindowInteractor() );
112                 GetWxVTKRenderWindowInteractor()->SetInteractorStyle( interactorStyleBaseView3D );
113                 interactorStyleBaseView3D->SetwxVtkBaseView(this);      
114
115                 // It is convenient to create an initial view of the data. The
116                 // FocalPoint and Position form a vector direction. Later on
117                 // (ResetCamera() method) this vector is used to position the camera
118                 // to look at the data in this direction.
119                 _aCamera = vtkCamera::New();
120
121 //EED 17Avril2009       
122 /*
123                 _aCamera->SetViewUp (0, 0, -1);
124                 _aCamera->SetPosition (0, 1, 0);
125  */
126                 _aCamera->SetViewUp (0, 1, 0);
127                 _aCamera->SetPosition (0, 0, 1);
128                 
129                 _aCamera->SetFocalPoint (0, 0, 0);
130                 _aCamera->ComputeViewPlaneNormal();
131
132         }
133 }
134 //-------------------------------------------------------------------
135 //EED 27 sep 2006
136 void wxVtk3DBaseView::GetSpacing(double spc[3])
137 {
138         spc[0]=1;
139         spc[1]=1;
140         spc[2]=1;
141 }
142