00001 00002 00003 //#include "vtkInteractorStyleBaseView.h" 00004 00005 #include "wxVtkBaseView.h" 00006 #include "wxVtk2DBaseView.h" 00007 #include "wxVTKRenderWindowInteractorPlus.h" 00008 00009 00010 00011 wxVtkBaseView::wxVtkBaseView() 00012 { 00013 _parent = NULL; 00014 _iren = NULL; 00015 _interactorStyle = NULL; 00016 } 00017 00018 //------------------------------------------------------------------- 00019 00020 wxVtkBaseView::wxVtkBaseView(wxWindow *parent) 00021 { 00022 _parent = parent; 00023 _iren = (wxVTKRenderWindowInteractor*)new wxVTKRenderWindowInteractorPlus(_parent,this); 00024 // _iren->UseCaptureMouseOn(); 00025 // _iren = new wxVTKRenderWindowInteractor(_parent,-1); 00026 _interactorStyle = NULL; 00027 00028 00029 } 00030 00031 //------------------------------------------------------------------- 00032 wxVtkBaseView::~wxVtkBaseView() 00033 { 00034 _iren -> Delete(); 00035 //_iren=NULL; 00036 } 00037 //------------------------------------------------------------------- 00038 wxVTKRenderWindowInteractor* wxVtkBaseView::GetWxVTKRenderWindowInteractor() throw (char*) 00039 { 00040 00041 if(_iren==NULL){ 00042 throw "wxVtkBaseView::GetWxVTKRenderWindowInteractor() _iren wxVTKRenderWindowInteractorPlus =NULL"; 00043 } 00044 return _iren; 00045 } 00046 //------------------------------------------------------------------- 00047 void wxVtkBaseView::Configure() // virtual 00048 { 00049 } 00050 //------------------------------------------------------------------- 00051 void wxVtkBaseView::Refresh() // virtual 00052 { 00053 // EED 10 Oct 2007 00054 00055 #if defined(WIN32) 00056 _iren->Refresh(false); 00057 #else 00058 00059 //EED 01Avril2009 00060 // _iren->Render(); 00061 vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor(); 00062 vri->vtkRenderWindowInteractor::Render(); 00063 00064 00065 //_iren->Refresh(); 00066 #endif 00067 00068 } 00069 //------------------------------------------------------------------- 00070 void wxVtkBaseView::RefreshView() // virtual 00071 { 00072 // EED 10 Oct 2007 00073 00074 #if defined(WIN32) 00075 GetRenWin()->Render(); 00076 #else 00077 //GetRenWin()->Render(); 00078 #endif 00079 00080 } 00081 //--------------------------------------------------------------------------- 00082 vtkRenderer* wxVtkBaseView::GetRenderer() // virtual 00083 { 00084 return NULL; 00085 } 00086 //--------------------------------------------------------------------------- 00087 vtkRenderWindow* wxVtkBaseView::GetRenWin() // virtual 00088 { 00089 return _iren->GetRenderWindow(); 00090 } 00091 00092 //---------------------------------------------------------------------------- 00093 00094 void wxVtkBaseView::TransFromCoordScreenToWorld(double &X, double &Y, double &Z, bool keepNormalDirection, int type) //virtual //keepNormalDirection=false, type=2 00095 { 00096 GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z); 00097 GetRenderer()->DisplayToWorld(); 00098 double fP[4]; 00099 GetRenderer()->GetWorldPoint( fP ); 00100 if ( fP[3] ){ 00101 fP[0] /= fP[3]; 00102 fP[1] /= fP[3]; 00103 fP[2] /= fP[3]; 00104 } 00105 00106 // EEDx5 00107 //JCP 13/05/2009 00108 vtkInteractorStyleBaseView* interactorstyle = (vtkInteractorStyleBaseView*)this->GetInteractorStyleBaseView(); 00109 wxVtk2DBaseView* baseview = (wxVtk2DBaseView*)interactorstyle->GetWxVtk2DBaseView(); 00110 baseview->TransformCoordinate_spacing_ViewToModel( fP[0] , fP[1] , fP[2] ); 00111 //JCP 13/05/2009 00112 00113 if (type!=0) 00114 { 00115 X=fP[0]; 00116 } 00117 if (type!=1) 00118 { 00119 Y=fP[1]; 00120 } 00121 if (type!=2) 00122 { 00123 Z=fP[2]; 00124 } 00125 } 00126 00127 //--------------------------------------------------------------------------- 00128 /* JCP 14/05/09 00129 vtkInteractorStyleBaseView* wxVtkBaseView::GetInteractorStyleBaseView() 00130 { 00131 return _interactorStyle; 00132 } 00133 */ 00134 vtkInteractorStyleImage* wxVtkBaseView::GetInteractorStyleBaseView() 00135 { 00136 return _interactorStyle; 00137 } 00138 00139 00140 //--------------------------------------------------------------------------- 00141 00142 void wxVtkBaseView::SetInteractorStyleBaseView( vtkInteractorStyleImage* interactorStyle) 00143 { 00144 _interactorStyle = interactorStyle; 00145 } 00146 00147 //--------------------------------------------------------------------------- 00148 00149 void wxVtkBaseView::GetSpacing(double spc[3]) // virtual 00150 { 00151 spc[0]=1; 00152 spc[1]=1; 00153 spc[2]=1; 00154 } 00155 00156 00157 00158 //------------------------------------------------------------------- 00159 //------------------------------------------------------------------- 00160 //------------------------------------------------------------------- 00161 00162 00163