#include #include #include #include #include #include #include #include #include #include #include #include #include "wxVtkBaseView.h" vtkStandardNewMacro(vtkInteractorStyleBaseView); vtkStandardNewMacro(vtkInteractorStyleBaseView2D); vtkStandardNewMacro(vtkInteractorStyleBaseView3D); //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- vtkImageViewer2_XYZ::vtkImageViewer2_XYZ() { _vtkimageviewer2= vtkImageViewer2::New(); } //------------------------------------------------------------------- vtkImageViewer2_XYZ::~vtkImageViewer2_XYZ() { _vtkimageviewer2->Delete(); } //------------------------------------------------------------------- void vtkImageViewer2_XYZ::SetExtentDimension(int x1,int x2, int y1,int y2, int z1,int z2) { _x1=x1; _x2=x2; _y1=y1; _y2=y2; _z1=z1; _z2=z2; } //------------------------------------------------------------------- void vtkImageViewer2_XYZ::SetXSlice(int slice) { vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); imageActor->SetDisplayExtent(slice, slice, _y1, _y2, _z1, _z2 ); } //------------------------------------------------------------------- void vtkImageViewer2_XYZ::SetYSlice(int slice) { vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); imageActor->SetDisplayExtent(_x1, _x2, slice, slice, _z1, _z2 ); } //------------------------------------------------------------------- void vtkImageViewer2_XYZ::SetZSlice(int slice) { #if (VTK_MAJOR_VERSION >= 5) // _vtkimageviewer2->SetSlice( slice ); vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); imageActor->SetDisplayExtent(_x1, _x2, _y1, _y2, slice, slice ); #else _vtkimageviewer2->SetZSlice( slice ); #endif } //------------------------------------------------------------------- int vtkImageViewer2_XYZ::GetXSlice() { vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); return imageActor->GetDisplayExtent()[0]; } //------------------------------------------------------------------- int vtkImageViewer2_XYZ::GetYSlice() { vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); return imageActor->GetDisplayExtent()[2]; } //------------------------------------------------------------------- int vtkImageViewer2_XYZ::GetZSlice() { int result; #if (VTK_MAJOR_VERSION >= 5) result= _vtkimageviewer2->GetSlice( ); #else result= _vtkimageviewer2->GetZSlice( ); #endif return result; } //------------------------------------------------------------------- vtkImageViewer2 *vtkImageViewer2_XYZ::GetVtkImageViewer2() { return _vtkimageviewer2; } //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- BEGIN_EVENT_TABLE( wxVTKRenderWindowInteractorPlus, wxVTKRenderWindowInteractor ) EVT_LEFT_DCLICK( wxVTKRenderWindowInteractorPlus::OnLeftDClick ) EVT_RIGHT_DCLICK( wxVTKRenderWindowInteractorPlus::OnRightDClick ) EVT_MIDDLE_DCLICK( wxVTKRenderWindowInteractorPlus::OnMiddleDClick ) EVT_MOUSEWHEEL( wxVTKRenderWindowInteractorPlus::OnMouseWheel ) END_EVENT_TABLE( ); //------------------------------------------------------------------- wxVTKRenderWindowInteractorPlus::wxVTKRenderWindowInteractorPlus() : wxVTKRenderWindowInteractor() { } //------------------------------------------------------------------- wxVTKRenderWindowInteractorPlus::wxVTKRenderWindowInteractorPlus(wxWindow *parent, wxVtkBaseView *wxvtkbaseview) : wxVTKRenderWindowInteractor(parent, -1) { _wxvtkbaseview = wxvtkbaseview; } //------------------------------------------------------------------- wxVTKRenderWindowInteractorPlus::~wxVTKRenderWindowInteractorPlus() { } //--------------------------------------------------------------------------- wxVTKRenderWindowInteractorPlus * wxVTKRenderWindowInteractorPlus::New() { // we don't make use of the objectfactory, because we're not registered return new wxVTKRenderWindowInteractorPlus; } //------------------------------------------------------------------- void wxVTKRenderWindowInteractorPlus::OnLeftDClick( wxMouseEvent& event ) { _wxvtkbaseview->GetInteractorStyleBaseView()->OnLeftDClick(); } //------------------------------------------------------------------- void wxVTKRenderWindowInteractorPlus::OnRightDClick( wxMouseEvent& event ) { _wxvtkbaseview->GetInteractorStyleBaseView()->OnRightDClick(); } //------------------------------------------------------------------- void wxVTKRenderWindowInteractorPlus::OnMiddleDClick( wxMouseEvent& event ) { _wxvtkbaseview->GetInteractorStyleBaseView()->OnMiddleDClick(); } //------------------------------------------------------------------- void wxVTKRenderWindowInteractorPlus::OnMouseWheel( wxMouseEvent& event ) { _wxvtkbaseview->GetInteractorStyleBaseView()->OnMouseWheel(); } //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- wxVtkBaseView::wxVtkBaseView() { _parent = NULL; _iren = NULL; _interactorStyle = NULL; } //------------------------------------------------------------------- wxVtkBaseView::wxVtkBaseView(wxWindow *parent) { _parent = parent; _iren = new wxVTKRenderWindowInteractorPlus(_parent,this); // _iren->UseCaptureMouseOn(); // _iren = new wxVTKRenderWindowInteractor(_parent,-1); _interactorStyle = NULL; } //------------------------------------------------------------------- wxVtkBaseView::~wxVtkBaseView() { // _iren -> Delete(); } //------------------------------------------------------------------- wxVTKRenderWindowInteractor* wxVtkBaseView::GetWxVTKRenderWindowInteractor() { return _iren; } //------------------------------------------------------------------- void wxVtkBaseView::Configure() // virtual { } //------------------------------------------------------------------- void wxVtkBaseView::Refresh() // virtual { // EED 10 Oct 2007 #if defined(WIN32) _iren->Refresh(false); #else //EED 01Avril2009 // _iren->Render(); vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor(); vri->vtkRenderWindowInteractor::Render(); //_iren->Refresh(); #endif } //------------------------------------------------------------------- void wxVtkBaseView::RefreshView() // virtual { // EED 10 Oct 2007 #if defined(WIN32) GetRenWin()->Render(); #else //GetRenWin()->Render(); #endif } //--------------------------------------------------------------------------- vtkRenderer* wxVtkBaseView::GetRenderer() // virtual { return NULL; } //--------------------------------------------------------------------------- vtkRenderWindow* wxVtkBaseView::GetRenWin() // virtual { return _iren->GetRenderWindow(); } //---------------------------------------------------------------------------- void wxVtkBaseView::TransfromeCoordScreenToWorld(double &X, double &Y, double &Z, int type) // virtual { GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z); GetRenderer()->DisplayToWorld(); double fP[4]; GetRenderer()->GetWorldPoint( fP ); if ( fP[3] ){ fP[0] /= fP[3]; fP[1] /= fP[3]; fP[2] /= fP[3]; } // EEDx5 this->GetInteractorStyleBaseView()->GetWxVtk2DBaseView()->TransformCoordinate_spacing_ViewToModel( fP[0] , fP[1] , fP[2] ); if (type!=0) { X=fP[0]; } if (type!=1) { Y=fP[1]; } if (type!=2) { Z=fP[2]; } } //--------------------------------------------------------------------------- vtkInteractorStyleBaseView* wxVtkBaseView::GetInteractorStyleBaseView() { return _interactorStyle; } //--------------------------------------------------------------------------- void wxVtkBaseView::SetInteractorStyleBaseView( vtkInteractorStyleBaseView* interactorStyle) { _interactorStyle = interactorStyle; } //--------------------------------------------------------------------------- void wxVtkBaseView::GetSpacing(double spc[3]) // virtual { spc[0]=1; spc[1]=1; spc[2]=1; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- InteractorStyleMaracas::InteractorStyleMaracas() { _active = true; _vtkInteractorStyleBaseView = NULL; } //--------------------------------------------------------------------------- InteractorStyleMaracas::~InteractorStyleMaracas() { } // ---------------------------------------------------------------------------- InteractorStyleMaracas * InteractorStyleMaracas :: Clone() // virtual { InteractorStyleMaracas * clone = new InteractorStyleMaracas(); CopyAttributesTo(clone); return clone; } // --------------------------------------------------------------------------- void InteractorStyleMaracas::CopyAttributesTo( InteractorStyleMaracas * cloneObject) { // Fathers object //::CopyAttributesTo(cloneObject); cloneObject->SetActive( this->GetActive() ); } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnChar() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnMouseMove() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnLeftButtonDown() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnLeftButtonUp() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnLeftDClick() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnMiddleButtonDown() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnMiddleButtonUp() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnMiddleDClick() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnRightButtonDown() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnRightButtonUp() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnRightDClick() { return true; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::OnMouseWheel() { return true; } //--------------------------------------------------------------------------- void InteractorStyleMaracas::SetVtkInteractorStyleBaseView(vtkInteractorStyleBaseView* vtkInteractorStyleBaseView) { _vtkInteractorStyleBaseView = vtkInteractorStyleBaseView; } //--------------------------------------------------------------------------- void InteractorStyleMaracas::RemoveVtkInteractorStyleBaseView() { _vtkInteractorStyleBaseView = NULL; } //--------------------------------------------------------------------------- void InteractorStyleMaracas::SetActive(bool active) { _active = active; } //--------------------------------------------------------------------------- bool InteractorStyleMaracas::GetActive() { return _active; } //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- manualInteractorWindowLevel::manualInteractorWindowLevel() { _stateWindowLevel = false; _backPx = 0; _backPy = 0; _backWindow = -1; _backLevel = -1; } //------------------------------------------------------------------- manualInteractorWindowLevel::~manualInteractorWindowLevel() { } //------------------------------------------------------------------- bool manualInteractorWindowLevel::OnMouseMove() // virtual { if (_stateWindowLevel==true) { int tmpPx,tmpPy; wxVTKRenderWindowInteractor *wxVTKiren; wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor(); wxVTKiren->GetEventPosition( tmpPx , tmpPy ); int colorWin=_backWindow - 2*( _backPx - tmpPx ); int colorLev=_backLevel + 2*( _backPy - tmpPy ); if (colorWin<0) { colorWin=0; } if (colorWin>100000) { colorWin=100000; } if (colorLev<0) { colorLev=0; } if (colorLev>100000) { colorLev=100000; } vtkImageViewer2 *vtkimageviewer2; vtkimageviewer2=_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2(); vtkimageviewer2->SetColorWindow(colorWin); vtkimageviewer2->SetColorLevel(colorLev); // vtkimageviewer2->Render(); } return true; } //------------------------------------------------------------------- bool manualInteractorWindowLevel::OnMiddleButtonDown() // virtual { if ((_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) && (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ){ _stateWindowLevel = true; wxVTKRenderWindowInteractor *wxVTKiren; wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor(); wxVTKiren->GetEventPosition( _backPx , _backPy ); _backWindow = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow()); _backLevel = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel()); } return true; } //------------------------------------------------------------------- bool manualInteractorWindowLevel::OnMiddleButtonUp() // virtual { if (_stateWindowLevel==true) { _stateWindowLevel=false; } return true; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- vtkInteractorScrollZ::vtkInteractorScrollZ() { _stateFordware=false; } //--------------------------------------------------------------------------- vtkInteractorScrollZ::~vtkInteractorScrollZ() { } //--------------------------------------------------------------------------- bool vtkInteractorScrollZ::OnRightButtonDown() { vtkRenderWindowInteractor *interactor = _vtkInteractorStyleBaseView->GetInteractor(); if ((interactor->GetControlKey()==0) && (interactor->GetShiftKey()==0) ){ _stateFordware = true; _fordwareX = interactor->GetEventPosition()[0]; _fordwareY = interactor->GetEventPosition()[1]; _sliceZ = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetActualSlice(); } return true; } //--------------------------------------------------------------------------- bool vtkInteractorScrollZ::OnRightButtonUp() { _stateFordware=false; return true; } //--------------------------------------------------------------------------- bool vtkInteractorScrollZ::OnMouseMove () { if (_stateFordware==true){ //int fx = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[0]; // JPRx int fy = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[1]; int delta = (_fordwareY - fy)/3; _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->SetActualSlice( _sliceZ + delta); this->_vtkInteractorStyleBaseView->SetParent_refresh_waiting(); // wxCommandEvent newevent(wxEVT_COMMAND_MENU_SELECTED,12121); // _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent); //_wxvtk2Dbaseview->Refresh(); } return true; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- vtkInteractorStyleBaseView::vtkInteractorStyleBaseView() { _refresh_waiting = false; _parent_refresh_waiting = false; _blockRefresh = false; } //--------------------------------------------------------------------------- vtkInteractorStyleBaseView::~vtkInteractorStyleBaseView() { } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnMouseMove() // virtual { CallLstInteractorStyleMaracas(3); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnLeftButtonDown() // virtual { CallLstInteractorStyleMaracas(4); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnLeftButtonUp() // virtual { CallLstInteractorStyleMaracas(5); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnLeftDClick() // virtual { CallLstInteractorStyleMaracas( 11 ); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnMiddleButtonDown() // virtual { CallLstInteractorStyleMaracas(6); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnMiddleButtonUp() // virtual { CallLstInteractorStyleMaracas(7); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnMiddleDClick() // virtual { CallLstInteractorStyleMaracas( 13 ); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnRightButtonDown() // virtual { CallLstInteractorStyleMaracas(1); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnRightButtonUp() // virtual { CallLstInteractorStyleMaracas(2); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnRightDClick() // virtual { CallLstInteractorStyleMaracas( 12 ); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnMouseWheel() // virtual { CallLstInteractorStyleMaracas( 14 ); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::AddInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas) { interactorStyleMaracas->SetVtkInteractorStyleBaseView(this); _lstInteractorStyleMaracas.push_back(interactorStyleMaracas); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::RemoveInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas) { interactorStyleMaracas->RemoveVtkInteractorStyleBaseView(); int i, size = _lstInteractorStyleMaracas.size(); std::vector< InteractorStyleMaracas* >::iterator iter = _lstInteractorStyleMaracas.begin(); bool removed = false; for (i=0; !removed && iSetVtkInteractorStyleBaseView(this); _lstInteractorStyleMaracas.insert(_lstInteractorStyleMaracas.begin()+pos,interactorStyleMaracas); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas(int type) { InteractorStyleMaracas *intStyMar; int i,size=_lstInteractorStyleMaracas.size(); //EED Borrame //FILE *ff = fopen("c:/temp/wxVtkBaseView_SceneManagerStadistics.txt","a+"); //fprintf(ff,"EED vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas \n" ); //for (i=0;iGetActive()==true){ if (type ==1) { // OnRightButtonDown if (intStyMar->OnRightButtonDown()==false) { i=size; } } if (type ==2) { // OnRightButtonUp if (intStyMar->OnRightButtonUp()==false) { i=size; } } if (type==3) { // OnMouseMouve if (intStyMar->OnMouseMove()==false) { i=size; } } if (type==4) { // OnLeftButtonDown if (intStyMar->OnLeftButtonDown()==false) { i=size; } } if (type==5) { // OnLeftButtonUp if (intStyMar->OnLeftButtonUp()==false) { i=size; } } if (type==6) { // OnMiddleButtonDown if (intStyMar->OnMiddleButtonDown()==false) { i=size; } } if (type==7) { // OnMiddleButtonUp if (intStyMar->OnMiddleButtonUp()==false) { i=size; } } if (type==10) { // OnMiddleButtonUp if (intStyMar->OnChar()==false) { i=size; } } if (type==11) { // OnLeftDClick if (intStyMar->OnLeftDClick()==false) { i=size; } } if (type==12) { // OnRightDClick if (intStyMar->OnRightDClick()==false) { i=size; } } if (type==13) { // OnMiddleDClick if (intStyMar-> OnMiddleDClick()==false) { i=size; } } if (type==14) { // OnMouseWheel if (intStyMar->OnMouseWheel()==false) { i=size; } } } // if active } // for EvaluateToRefresh(); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::OnChar() // virtual { // char a=GetInteractor()->GetKeyCode(); CallLstInteractorStyleMaracas(10); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::TransformCoordinate(double &X, double &Y, double &Z) { vtkImageViewer2 *imageViewer = GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2(); imageViewer->GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z); imageViewer->GetRenderer()->DisplayToWorld(); double fP[4]; imageViewer->GetRenderer()->GetWorldPoint( fP ); if ( fP[3] ){ fP[0] /= fP[3]; fP[1] /= fP[3]; fP[2] /= fP[3]; } // EEDx5 GetWxVtk2DBaseView()->TransformCoordinate_spacing_ViewToModel(fP[0],fP[1],fP[2]); X=fP[0]; Y=fP[1]; Z=fP[2]; } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::SetwxVtkBaseView(wxVtkBaseView *wxvtkbaseview) { _wxvtkbaseview = wxvtkbaseview; } //--------------------------------------------------------------------------- wxVtk2DBaseView* vtkInteractorStyleBaseView::GetWxVtk2DBaseView() { return (wxVtk2DBaseView*)_wxvtkbaseview; } //--------------------------------------------------------------------------- wxVtk3DBaseView* vtkInteractorStyleBaseView::GetWxVtk3DBaseView() { return (wxVtk3DBaseView*)_wxvtkbaseview; } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::SetActiveAllInteractors(bool ok) { InteractorStyleMaracas *intStyMar; int i,size=_lstInteractorStyleMaracas.size(); for (i=0;iSetActive(ok); } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::SetRefresh_waiting() { _refresh_waiting=true; } //--------------------------------------------------------------------------- bool vtkInteractorStyleBaseView::GetRefresh_waiting() { return _refresh_waiting; } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::SetParent_refresh_waiting() { _parent_refresh_waiting=true; } //--------------------------------------------------------------------------- bool vtkInteractorStyleBaseView::GetParent_refresh_waiting() { return _parent_refresh_waiting; } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::EvaluateToRefresh() { if ( _blockRefresh==false ) { if ( (_refresh_waiting==true) && (_parent_refresh_waiting==false)) { _refresh_waiting = false; this->_wxvtkbaseview->Refresh(); } if (_parent_refresh_waiting==true) { _parent_refresh_waiting = false; wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh this->_wxvtkbaseview->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); } } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::BlockRefresh() { _blockRefresh=true; } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView::UnBlockRefresh() { _blockRefresh=false; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- vtkInteractorStyleBaseView2D::vtkInteractorStyleBaseView2D() { _manualinteractorwindowlevel= new manualInteractorWindowLevel(); AddInteractorStyleMaracas( _manualinteractorwindowlevel ); _vtkInteractorScrollZ = new vtkInteractorScrollZ(); AddInteractorStyleMaracas(_vtkInteractorScrollZ); } //--------------------------------------------------------------------------- vtkInteractorStyleBaseView2D::~vtkInteractorStyleBaseView2D() { } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView2D::OnRightButtonDown() // virtual { vtkInteractorStyleBaseView::OnRightButtonDown(); if ((GetInteractor()->GetControlKey()==1) && (GetInteractor()->GetShiftKey()==0) ){ this->vtkInteractorStyleImage::OnRightButtonDown(); } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView2D::OnRightButtonUp() // virtual { vtkInteractorStyleBaseView::OnRightButtonUp(); this->vtkInteractorStyleImage::OnRightButtonUp(); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView2D::OnMouseMove () // virtual { vtkInteractorStyleBaseView::OnMouseMove(); this->vtkInteractorStyleImage::OnMouseMove(); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView2D::OnLeftButtonDown() // virtual { vtkInteractorStyleBaseView::OnLeftButtonDown(); if ((GetInteractor()->GetControlKey()==0) && (GetInteractor()->GetShiftKey()==1) ) { this->vtkInteractorStyleImage::OnLeftButtonDown(); } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView2D::OnLeftButtonUp () // virtual { vtkInteractorStyleBaseView::OnLeftButtonUp(); this->vtkInteractorStyleImage::OnLeftButtonUp(); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView2D::OnMiddleButtonDown () // virtual { vtkInteractorStyleBaseView::OnMiddleButtonDown(); if ((GetInteractor()->GetControlKey()==1) || (GetInteractor()->GetShiftKey()==1) ) { this->vtkInteractorStyleImage::OnLeftButtonDown(); } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView2D::OnMiddleButtonUp () // virtual { vtkInteractorStyleBaseView::OnMiddleButtonUp(); if ((GetInteractor()->GetControlKey()==1) || (GetInteractor()->GetShiftKey()==1) ) { this->vtkInteractorStyleImage::OnLeftButtonUp(); } } //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- //--------------------------------------------------------------------------- vtkInteractorStyleBaseView3D::vtkInteractorStyleBaseView3D(){ } //--------------------------------------------------------------------------- vtkInteractorStyleBaseView3D::~vtkInteractorStyleBaseView3D(){ } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView3D::OnRightButtonDown () { vtkInteractorStyleBaseView::OnRightButtonDown(); /* if (GetInteractor()->GetControlKey()==1 ){ this->vtkInteractorStyleTrackballCamera::OnRightButtonDown(); } */ this->FindPokedRenderer(this->Interactor->GetEventPosition()[0], this->Interactor->GetEventPosition()[1]); if (this->CurrentRenderer == NULL) { return; } if (this->Interactor->GetControlKey()) { this->StartDolly(); } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView3D::OnRightButtonUp () { vtkInteractorStyleBaseView::OnRightButtonUp(); /* if (GetInteractor()->GetControlKey()==1 ){ this->vtkInteractorStyleTrackballCamera::OnRightButtonUp(); } */ switch (this->State) { case VTKIS_DOLLY: this->EndDolly(); break; } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView3D::OnMouseMove () { vtkInteractorStyleBaseView::OnMouseMove(); // this->vtkInteractorStyleTrackballCamera::OnMouseMove(); // int x = this->Interactor->GetEventPosition()[0]; // JPRx // int y = this->Interactor->GetEventPosition()[1]; // JPRx // vtkRenderWindowInteractor *rwi = this->Interactor; // int lx = rwi->GetLastEventPosition()[0]; // JPRx // int ly = rwi->GetLastEventPosition()[1]; // JPRx // int dx = rwi->GetEventPosition()[0] ; // JPRx // int dy = rwi->GetEventPosition()[1] ; // JPRx switch (this->State) { case VTKIS_ROTATE: // this->FindPokedRenderer(x, y); this->Rotate(); // this->InvokeEvent(vtkCommand::InteractionEvent, NULL); break; case VTKIS_PAN: // this->FindPokedRenderer(x, y); this->Pan(); // this->InvokeEvent(vtkCommand::InteractionEvent, NULL); break; case VTKIS_DOLLY: // this->FindPokedRenderer(x, y); this->Dolly(); // this->InvokeEvent(vtkCommand::InteractionEvent, NULL); break; case VTKIS_SPIN: // this->FindPokedRenderer(x, y); this->Spin(); // this->InvokeEvent(vtkCommand::InteractionEvent, NULL); break; } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView3D::OnLeftButtonDown () { vtkInteractorStyleBaseView::OnLeftButtonDown(); /* if (GetInteractor()->GetControlKey()==1 ){ this->vtkInteractorStyleTrackballCamera::OnMiddleButtonDown(); } else { this->vtkInteractorStyleTrackballCamera::OnLeftButtonDown(); } */ this->FindPokedRenderer(this->Interactor->GetEventPosition()[0], this->Interactor->GetEventPosition()[1]); if (this->CurrentRenderer == NULL) { return; } if (this->Interactor->GetControlKey()) { this->StartPan(); } else { this->StartRotate(); } /* if (this->Interactor->GetShiftKey()) { if (this->Interactor->GetControlKey()) { this->StartDolly(); } else { this->StartPan(); } } else { if (this->Interactor->GetControlKey()) { this->StartSpin(); } else { this->StartRotate(); } } */ } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView3D::OnLeftButtonUp () { vtkInteractorStyleBaseView::OnLeftButtonUp(); /* if (GetInteractor()->GetControlKey()==1 ){ this->vtkInteractorStyleTrackballCamera::OnMiddleButtonUp(); } else { this->vtkInteractorStyleTrackballCamera::OnLeftButtonUp(); } */ switch (this->State) { case VTKIS_PAN: this->EndPan(); break; case VTKIS_ROTATE: this->EndRotate(); break; } } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView3D::OnMiddleButtonDown () { vtkInteractorStyleBaseView::OnMiddleButtonDown(); // this->vtkInteractorStyleTrackballCamera::OnMiddleButtonDown(); } //--------------------------------------------------------------------------- void vtkInteractorStyleBaseView3D::OnMiddleButtonUp () { vtkInteractorStyleBaseView::OnMiddleButtonUp(); // this->vtkInteractorStyleTrackballCamera::OnMiddleButtonUp(); } //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- vtkInfoTextImage::vtkInfoTextImage() { _vtkText_WindowLevel = NULL; _vtkText_ColorLevel = NULL; _vtkText_position = NULL; _vtkText_pixelIntensity = NULL; _marimagedata = NULL; } //------------------------------------------------------------------- vtkInfoTextImage::~vtkInfoTextImage() { } //------------------------------------------------------------------- void vtkInfoTextImage::Configure() { _vtkText_WindowLevel = Create_Text_Label( 10 , 55 ); _vtkText_ColorLevel = Create_Text_Label( 10 , 40 ); _vtkText_position = Create_Text_Label( 10 , 25 ); _vtkText_pixelIntensity = Create_Text_Label( 10 , 10 ); } //------------------------------------------------------------------- void vtkInfoTextImage::SetMarImageData(marImageData *marimagedata) { _marimagedata=marimagedata; } //------------------------------------------------------------------- void vtkInfoTextImage::SetWxVtk2DBaseView(wxVtk2DBaseView *wxvtk2Dbaseview) { _wxvtk2Dbaseview=wxvtk2Dbaseview; } //------------------------------------------------------------------- vtkTextActor *vtkInfoTextImage::Create_Text_Label(int px, int py ) { // Text Window Level vtkTextActor *textActor = vtkTextActor::New(); textActor->SetDisplayPosition(px, py); textActor->SetInput("0"); // Set coordinates to match the old vtkScaledTextActor default value textActor->GetPosition2Coordinate()->SetCoordinateSystemToNormalizedViewport(); textActor->GetPosition2Coordinate()->SetValue( 0.2 , 0.2 ); vtkTextProperty *tprop = textActor->GetTextProperty(); tprop->SetFontSize(14); tprop->SetFontFamilyToArial(); tprop->SetColor(1, 1, 0); _wxvtk2Dbaseview->GetRenderer()->AddActor2D(textActor); return textActor; } //------------------------------------------------------------------- void vtkInfoTextImage::PutWindowLevel() { int value = (int)( _wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->GetWindow() ); char zTzxt[20]; char resultText[50]; strcpy(resultText,"w:"); //ltoa ( (long)value , zTzxt , 10 ); sprintf(zTzxt,"%d",value); strcat(resultText,zTzxt); _vtkText_WindowLevel -> SetInput(resultText); } //------------------------------------------------------------------- void vtkInfoTextImage::PutColorLevel() { int value = (int)(_wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->GetLevel()); char zTzxt[20]; char resultText[50]; strcpy(resultText,"c:"); // itoa (value,zTzxt,10); sprintf(zTzxt,"%d",value); strcat(resultText,zTzxt); _vtkText_ColorLevel -> SetInput(resultText); } //------------------------------------------------------------------- void vtkInfoTextImage::PutPosition(int xx,int yy, int zz) { //EEDx7 // double spa[3]; // _imagedata->GetSpacing(spa); // xx=xx*(1/spa[0]); // yy=yy*(1/spa[1]); char zTzxt[50]; char resultText[50]; strcpy(resultText,"p: "); // itoa ((int)xx,zTzxt,10); sprintf(zTzxt,"%d",xx); strcat(resultText,zTzxt); strcat(resultText," , "); // itoa ((int)yy,zTzxt,10); sprintf(zTzxt,"%d",yy); strcat(resultText,zTzxt); strcat(resultText," , "); // itoa ((int)zz,zTzxt,10); sprintf(zTzxt,"%d",zz); strcat(resultText,zTzxt); int nX = _marimagedata->GetXOriginal(xx); int nY = _marimagedata->GetYOriginal(yy); int nZ = _marimagedata->GetZOriginal(zz); strcat(resultText," ("); // ltoa ((int)nX,zTzxt,10); sprintf(zTzxt,"%d",nX); strcat(resultText,zTzxt); strcat(resultText,","); // ltoa ((int)nY,zTzxt,10); sprintf(zTzxt,"%d",nY); strcat(resultText,zTzxt); strcat(resultText,","); // ltoa ((int)nZ,zTzxt,10); sprintf(zTzxt,"%d",nZ); strcat(resultText,zTzxt); strcat(resultText,")"); _vtkText_position -> SetInput(resultText); } //------------------------------------------------------------------- void vtkInfoTextImage::PutPixelIntensity(int xx, int yy, int zz) { //EEDx2 bool ok=true; int dim[3]; double spa[3]; vtkImageData *imagedata = _marimagedata->GetImageData(); imagedata->GetDimensions(dim); imagedata->GetSpacing(spa); // EEDx7 // xx=xx*(1/spa[0]); // yy=yy*(1/spa[1]); // zz=xx*spa[2]; if ( (xx<0) || (xx>=dim[0]) || (yy<0) || (yy>=dim[1]) || (zz<0) || (zz>=dim[2]) ) { ok=false; } char zTzxt[20]; char resultText[50]; strcpy(resultText,"GL: "); if (ok==true) { if (imagedata->GetScalarType()==VTK_BIT) { char *pOrg=(char*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); if(*pOrg==0) { sprintf(zTzxt,"%d",0); } else { sprintf(zTzxt,"%d",1); } } if (imagedata->GetScalarType()==VTK_CHAR) { char *pOrg=(char*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); int tmp=*pOrg; sprintf(zTzxt,"%d",tmp); } if (imagedata->GetScalarType()==VTK_SIGNED_CHAR) { signed char *pOrg=(signed char*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); int tmp=*pOrg; sprintf(zTzxt,"%d",tmp); } if (imagedata->GetScalarType()==VTK_UNSIGNED_CHAR) { unsigned char *pOrg=(unsigned char*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); int tmp=*pOrg; sprintf(zTzxt,"%d",tmp); } if (imagedata->GetScalarType()==VTK_SHORT) { short *pOrg=(short*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); int tmp=*pOrg; sprintf(zTzxt,"%d",tmp); } if (imagedata->GetScalarType()==VTK_UNSIGNED_SHORT) { unsigned short *pOrg=(unsigned short*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); int tmp=*pOrg; sprintf(zTzxt,"%d",tmp); } if (imagedata->GetScalarType()==VTK_INT) { int *pOrg=(int*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); sprintf(zTzxt,"%d",*pOrg); } if (imagedata->GetScalarType()==VTK_UNSIGNED_INT) { unsigned int *pOrg=(unsigned int*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); int tmp=*pOrg; sprintf(zTzxt,"%d",tmp); } if (imagedata->GetScalarType()==VTK_LONG) { long *pOrg=(long*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); double tmp=*pOrg; sprintf(zTzxt,"%3.2f",tmp); } if (imagedata->GetScalarType()==VTK_UNSIGNED_LONG) { unsigned long *pOrg=(unsigned long*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); double tmp=*pOrg; sprintf(zTzxt,"%3.2f",tmp); } if (imagedata->GetScalarType()==VTK_FLOAT) { long *pOrg=(long*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); double tmp=*pOrg; sprintf(zTzxt,"%3.2f",tmp); } if (imagedata->GetScalarType()==VTK_DOUBLE) { double *pOrg=(double*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); // itoa (*pOrg,zTzxt,10); double tmp=*pOrg; sprintf(zTzxt,"%3.2f",tmp); } } else { strcpy(zTzxt,"---"); } strcat(resultText,zTzxt); _vtkText_pixelIntensity -> SetInput(resultText); } //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- vtkInfoTextImageInteractor::vtkInfoTextImageInteractor() { } //------------------------------------------------------------------- vtkInfoTextImageInteractor::~vtkInfoTextImageInteractor() { } //------------------------------------------------------------------- void vtkInfoTextImageInteractor::SetModelVtkInfoTextImage(vtkInfoTextImage *vtkinfotextimage) { _vtkinfotextimage = vtkinfotextimage; } //------------------------------------------------------------------- bool vtkInfoTextImageInteractor::OnMouseMove() { int X,Y; wxVTKRenderWindowInteractor *wxVTKiren; wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor(); wxVTKiren->GetEventPosition(X,Y); int z = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetVtkBaseData()->GetZ()); double xx=X,yy=Y,zz=z; _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->TransfromeCoordScreenToWorld(xx,yy,zz); GetVtkInfoTextImage()->PutWindowLevel(); GetVtkInfoTextImage()->PutColorLevel(); GetVtkInfoTextImage()->PutPosition( (int)xx , (int)yy , (int)zz ); GetVtkInfoTextImage()->PutPixelIntensity( (int)xx , (int)yy , (int)zz ); this->_vtkInteractorStyleBaseView->SetRefresh_waiting(); return true; } //------------------------------------------------------------------- vtkInfoTextImage *vtkInfoTextImageInteractor::GetVtkInfoTextImage() { return _vtkinfotextimage; } //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- wxVtk2DBaseView::wxVtk2DBaseView(wxWindow *parent) :wxVtkBaseView(parent) { _imageViewer2XYZ = NULL; _vtkIinfoTextImage = NULL; } //------------------------------------------------------------------- wxVtk2DBaseView::~wxVtk2DBaseView() { if (_imageViewer2XYZ!=NULL) { delete _imageViewer2XYZ; } if (_imageViewer2XYZ!=NULL) { delete _vtkIinfoTextImage; } } //------------------------------------------------------------------- void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double &Y, double &Z) // virtual { //EEDx5 double spc[3]; // GetVtkBaseData()->GetImageData()->GetSpacing(spc); this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); X = X / spc[0]; Y = Y / spc[1]; Z = Z / spc[2]; } //------------------------------------------------------------------- void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &Y, double &Z) // virtual { //EEDx5 double spc[3]; // GetVtkBaseData()->GetImageData()->GetSpacing(spc); this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); X=X*spc[0]; Y=Y*spc[1]; Z=Z*spc[2]; } //------------------------------------------------------------------- void wxVtk2DBaseView::ResetView() { double spx,spy,spz; int x1,x2,y1,y2,z1,z2; wxVtkBaseView::Configure(); wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); vtkImageData *imageData = GetVtkBaseData()->GetImageData(); imageData->UpdateInformation(); imageData->SetUpdateExtent( imageData->GetWholeExtent()); imageData->Update(); _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData ); imageData->GetSpacing (spx,spy,spz); imageData->GetExtent (x1,x2,y1,y2,z1,z2); _imageViewer2XYZ -> SetExtentDimension(x1,x2,y1,y2,z1,z2); _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren ); printf("EED wxVtk2DBaseView::ResetView podemos 01\n "); _imageViewer2XYZ->GetVtkImageViewer2()->Render(); printf("EED wxVtk2DBaseView::ResetView podemos 02\n "); SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); } //------------------------------------------------------------------- void wxVtk2DBaseView::Configure(bool okimage) { double spx,spy,spz; int x1,x2,y1,y2,z1,z2; wxVtkBaseView::Configure(); // EED 17 Oct 2007 if (_imageViewer2XYZ==NULL) { _imageViewer2XYZ = new vtkImageViewer2_XYZ(); wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren ); SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); } vtkImageData *imageData = GetVtkBaseData()->GetMarImageData()->GetImageData(); if (imageData!=NULL){ imageData->UpdateInformation(); imageData->SetUpdateExtent( imageData->GetWholeExtent()); imageData->Update(); if (okimage==true){ imageData->GetSpacing (spx,spy,spz); imageData->GetExtent (x1,x2,y1,y2,z1,z2); _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData ); _imageViewer2XYZ->SetExtentDimension(x1,x2,y1,y2,z1,z2); double range[2]; imageData->GetScalarRange(range); if (range[1]<20000){ _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( (range[1]-range[0])/2 ); _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( (range[1]+range[0])/4 ); } else { _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( 1000 ); _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( 500 ); } // EED 31 Janvier 2007 //vtkImageActor *vtkimageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor (); //vtkimageactor->InterpolateOff (); //vtkLookupTable * _collookup = vtkLookupTable::New( ); //_collookup->SetNumberOfColors( 256 ); //_collookup->SetTableRange( 0 , 255 ); //_collookup->Build( ); //_collookup->SetTableValue( 0 , 1 , 0 , 0 , 1 ); //_collookup->SetTableValue(128 , 0 , 0 , 1 , 1 ); //_collookup->SetTableValue(255 , 0 , 1 , 0 , 1 ); //_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel ()->SetLookupTable(_collookup ); // EED 17 Oct 2007 // SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2(); vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera(); //EED 17Avril2009 /* camera->SetViewUp ( spx*0 , -spy*1 , spz*0 ); camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , -spz*10000 ); camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 ); */ camera->SetViewUp ( spx*0 , spy*1 , spz*0 ); camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*10000 ); camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 ); camera->SetClippingRange( 0.01 , 1000000 ); camera->ComputeViewPlaneNormal(); camera->SetParallelScale( spx*(x2-x1)/3.0 ); // text information over the graphic window _vtkIinfoTextImage = new vtkInfoTextImage(); _vtkIinfoTextImageInteractor = new vtkInfoTextImageInteractor(); _vtkIinfoTextImage->SetWxVtk2DBaseView(this); _vtkIinfoTextImage->SetMarImageData( GetVtkBaseData()->GetMarImageData() ); _vtkIinfoTextImageInteractor->SetModelVtkInfoTextImage(_vtkIinfoTextImage); _vtkIinfoTextImage->Configure(); this->GetInteractorStyleBaseView()->AddInteractorStyleMaracas(_vtkIinfoTextImageInteractor); } // okimage } // imageData } //------------------------------------------------------------------- int wxVtk2DBaseView::GetActualSlice() // virtual { return (int)(_vtkbasedata->GetZ()); } //------------------------------------------------------------------- void wxVtk2DBaseView::SetActualSlice(int slice) // Virtual { _vtkbasedata->SetZ(slice); } //------------------------------------------------------------------- vtkBaseData *wxVtk2DBaseView::GetVtkBaseData() { return _vtkbasedata; } //------------------------------------------------------------------- void wxVtk2DBaseView::SetVtkBaseData(vtkBaseData *vtkbasedata) { _vtkbasedata=vtkbasedata; } //------------------------------------------------------------------- void wxVtk2DBaseView::Refresh() { int z = (int)(GetVtkBaseData()->GetZ()); _imageViewer2XYZ->SetZSlice( z ); wxVtkBaseView::Refresh(); } //------------------------------------------------------------------- void wxVtk2DBaseView::SetInteractorStyleImage(vtkInteractorStyleBaseView *interactorstylebaseview) { SetInteractorStyleBaseView(interactorstylebaseview); wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); interactorstylebaseview->SetInteractor ( iren ); iren->SetInteractorStyle(interactorstylebaseview); interactorstylebaseview->SetwxVtkBaseView(this); vtkMaracasImageViewer2Callback *cbk = vtkMaracasImageViewer2Callback::New(); cbk->IV = _imageViewer2XYZ->GetVtkImageViewer2(); interactorstylebaseview->AddObserver( vtkCommand::WindowLevelEvent, cbk ); interactorstylebaseview->AddObserver( vtkCommand::StartWindowLevelEvent, cbk ); interactorstylebaseview->AddObserver( vtkCommand::ResetWindowLevelEvent, cbk ); cbk->Delete(); } //--------------------------------------------------------------------------- vtkRenderer* wxVtk2DBaseView::GetRenderer() // virtual { return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer(); } //--------------------------------------------------------------------------- vtkRenderWindow* wxVtk2DBaseView::GetRenWin() // virtual { return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderWindow(); } //------------------------------------------------------------------- void wxVtk2DBaseView::GetSpacing(double spc[3]) // virtual { vtkImageData *imageData = GetVtkBaseData()->GetImageData(); imageData->GetSpacing(spc); } //------------------------------------------------------------------- //------------------------------------------------------------------- //------------------------------------------------------------------- wxVtk3DBaseView::wxVtk3DBaseView(wxWindow *parent) :wxVtkBaseView( parent ) { _configure = false; _aRenderer = NULL; _renWin = NULL; _aCamera = NULL; } //------------------------------------------------------------------- wxVtk3DBaseView::~wxVtk3DBaseView() { if (_aCamera!=NULL) { _aCamera -> Delete(); } if (_aRenderer!=NULL) { _aRenderer -> Delete(); } if (_renWin!=NULL) { _renWin -> Delete(); } } //------------------------------------------------------------------- vtkCamera* wxVtk3DBaseView::GetCamera() { return _aCamera; } //------------------------------------------------------------------- vtkRenderer* wxVtk3DBaseView::GetRenderer() // virtual { return _aRenderer; } //------------------------------------------------------------------- vtkRenderWindow* wxVtk3DBaseView::GetRenWin() // virtual { return _renWin; } //------------------------------------------------------------------- void wxVtk3DBaseView::Refresh() { // _renWin->Render(); vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor(); vri->vtkRenderWindowInteractor::Render(); } //------------------------------------------------------------------- void wxVtk3DBaseView::Configure() { if (_configure==false) { _configure=true; wxVtkBaseView::Configure(); _aRenderer = vtkRenderer::New(); _renWin = vtkRenderWindow::New(); _renWin->AddRenderer(_aRenderer); // _renWin->SetStereoCapableWindow(1); // // //renderwindow->SetStereoTypeToCrystalEyes(); // _renWin->SetStereoTypeToRedBlue(); // _renWin->SetStereoRender(1); GetWxVTKRenderWindowInteractor()->SetRenderWindow(_renWin); // EED Borrame // vtkInteractorStyle3DMaracas *interactorStyle3DMaracas = vtkInteractorStyle3DMaracas::New(); vtkInteractorStyleBaseView3D *interactorStyleBaseView3D = vtkInteractorStyleBaseView3D::New(); SetInteractorStyleBaseView( interactorStyleBaseView3D ); interactorStyleBaseView3D->SetInteractor ( GetWxVTKRenderWindowInteractor() ); GetWxVTKRenderWindowInteractor()->SetInteractorStyle( interactorStyleBaseView3D ); interactorStyleBaseView3D->SetwxVtkBaseView(this); /* EED Borrame vtkInteractorStyleSwitch *iss = dynamic_cast(_iren->GetInteractorStyle()); iss->SetCurrentStyleToTrackballCamera(); */ // It is convenient to create an initial view of the data. The // FocalPoint and Position form a vector direction. Later on // (ResetCamera() method) this vector is used to position the camera // to look at the data in this direction. _aCamera = vtkCamera::New(); //EED 17Avril2009 /* _aCamera->SetViewUp (0, 0, -1); _aCamera->SetPosition (0, 1, 0); */ _aCamera->SetViewUp (0, 1, 0); _aCamera->SetPosition (0, 0, 1); _aCamera->SetFocalPoint (0, 0, 0); _aCamera->ComputeViewPlaneNormal(); } } //------------------------------------------------------------------- //EED 27 sep 2006 void wxVtk3DBaseView::GetSpacing(double spc[3]) { spc[0]=1; spc[1]=1; spc[2]=1; }