1 #include <vtkRenderer.h>
2 #include <vtkRenderWindowInteractor.h>
3 #include <vtkRenderWindow.h>
4 #include <vtkObjectFactory.h>
6 #include <vtkProperty.h>
8 #include <vtkInteractorStyleTrackballCamera.h>
9 #include <vtkInteractorStyleSwitch.h>
10 #include <vtkImageActor.h>
11 #include <vtkTextProperty.h>
12 #include <vtkImageMapToWindowLevelColors.h>
14 #include "wxVtkBaseView.h"
17 vtkStandardNewMacro(vtkInteractorStyleBaseView);
18 vtkStandardNewMacro(vtkInteractorStyleBaseView2D);
19 vtkStandardNewMacro(vtkInteractorStyleBaseView3D);
23 //-------------------------------------------------------------------
24 //-------------------------------------------------------------------
25 //-------------------------------------------------------------------
26 vtkImageViewer2_XYZ::vtkImageViewer2_XYZ()
28 _vtkimageviewer2= vtkImageViewer2::New();
30 //-------------------------------------------------------------------
31 vtkImageViewer2_XYZ::~vtkImageViewer2_XYZ()
33 _vtkimageviewer2->Delete();
35 //-------------------------------------------------------------------
36 void vtkImageViewer2_XYZ::SetExtentDimension(int x1,int x2,
47 //-------------------------------------------------------------------
48 void vtkImageViewer2_XYZ::SetXSlice(int slice)
50 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
51 imageActor->SetDisplayExtent(slice, slice, _y1, _y2, _z1, _z2 );
53 //-------------------------------------------------------------------
54 void vtkImageViewer2_XYZ::SetYSlice(int slice)
56 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
57 imageActor->SetDisplayExtent(_x1, _x2, slice, slice, _z1, _z2 );
59 //-------------------------------------------------------------------
60 void vtkImageViewer2_XYZ::SetZSlice(int slice)
62 #if (VTK_MAJOR_VERSION >= 5)
63 // _vtkimageviewer2->SetSlice( slice );
64 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
65 imageActor->SetDisplayExtent(_x1, _x2, _y1, _y2, slice, slice );
67 _vtkimageviewer2->SetZSlice( slice );
72 //-------------------------------------------------------------------
73 int vtkImageViewer2_XYZ::GetXSlice()
75 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
76 return imageActor->GetDisplayExtent()[0];
78 //-------------------------------------------------------------------
79 int vtkImageViewer2_XYZ::GetYSlice()
81 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
82 return imageActor->GetDisplayExtent()[2];
84 //-------------------------------------------------------------------
85 int vtkImageViewer2_XYZ::GetZSlice()
89 #if (VTK_MAJOR_VERSION >= 5)
90 result= _vtkimageviewer2->GetSlice( );
92 result= _vtkimageviewer2->GetZSlice( );
98 //-------------------------------------------------------------------
99 vtkImageViewer2 *vtkImageViewer2_XYZ::GetVtkImageViewer2()
101 return _vtkimageviewer2;
105 //-------------------------------------------------------------------
106 //-------------------------------------------------------------------
107 //-------------------------------------------------------------------
111 BEGIN_EVENT_TABLE( wxVTKRenderWindowInteractorPlus, wxVTKRenderWindowInteractor )
112 EVT_LEFT_DCLICK( wxVTKRenderWindowInteractorPlus::OnLeftDClick )
113 EVT_RIGHT_DCLICK( wxVTKRenderWindowInteractorPlus::OnRightDClick )
114 EVT_MIDDLE_DCLICK( wxVTKRenderWindowInteractorPlus::OnMiddleDClick )
115 EVT_MOUSEWHEEL( wxVTKRenderWindowInteractorPlus::OnMouseWheel )
118 //-------------------------------------------------------------------
119 wxVTKRenderWindowInteractorPlus::wxVTKRenderWindowInteractorPlus()
120 : wxVTKRenderWindowInteractor()
125 //-------------------------------------------------------------------
126 wxVTKRenderWindowInteractorPlus::wxVTKRenderWindowInteractorPlus(wxWindow *parent, wxVtkBaseView *wxvtkbaseview)
127 : wxVTKRenderWindowInteractor(parent, -1)
129 _wxvtkbaseview = wxvtkbaseview;
132 //-------------------------------------------------------------------
133 wxVTKRenderWindowInteractorPlus::~wxVTKRenderWindowInteractorPlus()
137 //---------------------------------------------------------------------------
138 wxVTKRenderWindowInteractorPlus * wxVTKRenderWindowInteractorPlus::New()
140 // we don't make use of the objectfactory, because we're not registered
141 return new wxVTKRenderWindowInteractorPlus;
144 //-------------------------------------------------------------------
145 void wxVTKRenderWindowInteractorPlus::OnLeftDClick( wxMouseEvent& event )
147 _wxvtkbaseview->GetInteractorStyleBaseView()->OnLeftDClick();
149 //-------------------------------------------------------------------
150 void wxVTKRenderWindowInteractorPlus::OnRightDClick( wxMouseEvent& event )
152 _wxvtkbaseview->GetInteractorStyleBaseView()->OnRightDClick();
154 //-------------------------------------------------------------------
155 void wxVTKRenderWindowInteractorPlus::OnMiddleDClick( wxMouseEvent& event )
157 _wxvtkbaseview->GetInteractorStyleBaseView()->OnMiddleDClick();
159 //-------------------------------------------------------------------
160 void wxVTKRenderWindowInteractorPlus::OnMouseWheel( wxMouseEvent& event )
162 _wxvtkbaseview->GetInteractorStyleBaseView()->OnMouseWheel();
167 //-------------------------------------------------------------------
168 //-------------------------------------------------------------------
169 //-------------------------------------------------------------------
170 wxVtkBaseView::wxVtkBaseView()
174 _interactorStyle = NULL;
177 //-------------------------------------------------------------------
179 wxVtkBaseView::wxVtkBaseView(wxWindow *parent)
182 _iren = new wxVTKRenderWindowInteractorPlus(_parent,this);
183 // _iren->UseCaptureMouseOn();
184 // _iren = new wxVTKRenderWindowInteractor(_parent,-1);
185 _interactorStyle = NULL;
190 //-------------------------------------------------------------------
191 wxVtkBaseView::~wxVtkBaseView()
193 // _iren -> Delete();
195 //-------------------------------------------------------------------
196 wxVTKRenderWindowInteractor* wxVtkBaseView::GetWxVTKRenderWindowInteractor()
200 //-------------------------------------------------------------------
201 void wxVtkBaseView::Configure() // virtual
204 //-------------------------------------------------------------------
205 void wxVtkBaseView::Refresh() // virtual
210 _iren->Refresh(false);
217 //-------------------------------------------------------------------
218 void wxVtkBaseView::RefreshView() // virtual
223 GetRenWin()->Render();
225 //GetRenWin()->Render();
229 //---------------------------------------------------------------------------
230 vtkRenderer* wxVtkBaseView::GetRenderer() // virtual
234 //---------------------------------------------------------------------------
235 vtkRenderWindow* wxVtkBaseView::GetRenWin() // virtual
237 return _iren->GetRenderWindow();
240 //----------------------------------------------------------------------------
242 void wxVtkBaseView::TransfromeCoordScreenToWorld(double &X, double &Y, double &Z, int type) // virtual
244 GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z);
245 GetRenderer()->DisplayToWorld();
247 GetRenderer()->GetWorldPoint( fP );
255 this->GetInteractorStyleBaseView()->GetWxVtk2DBaseView()->TransformCoordinate_spacing_ViewToModel( fP[0] , fP[1] , fP[2] );
271 //---------------------------------------------------------------------------
273 vtkInteractorStyleBaseView* wxVtkBaseView::GetInteractorStyleBaseView()
275 return _interactorStyle;
278 //---------------------------------------------------------------------------
280 void wxVtkBaseView::SetInteractorStyleBaseView( vtkInteractorStyleBaseView* interactorStyle)
282 _interactorStyle = interactorStyle;
285 //---------------------------------------------------------------------------
287 void wxVtkBaseView::GetSpacing(double spc[3]) // virtual
295 //---------------------------------------------------------------------------
296 //---------------------------------------------------------------------------
297 //---------------------------------------------------------------------------
299 InteractorStyleMaracas::InteractorStyleMaracas()
302 _vtkInteractorStyleBaseView = NULL;
304 //---------------------------------------------------------------------------
305 InteractorStyleMaracas::~InteractorStyleMaracas()
309 // ----------------------------------------------------------------------------
310 InteractorStyleMaracas * InteractorStyleMaracas :: Clone() // virtual
312 InteractorStyleMaracas * clone = new InteractorStyleMaracas();
313 CopyAttributesTo(clone);
317 // ---------------------------------------------------------------------------
319 void InteractorStyleMaracas::CopyAttributesTo( InteractorStyleMaracas * cloneObject)
322 //<FATHERCLASS>::CopyAttributesTo(cloneObject);
324 cloneObject->SetActive( this->GetActive() );
328 //---------------------------------------------------------------------------
329 bool InteractorStyleMaracas::OnChar()
333 //---------------------------------------------------------------------------
334 bool InteractorStyleMaracas::OnMouseMove()
338 //---------------------------------------------------------------------------
339 bool InteractorStyleMaracas::OnLeftButtonDown()
343 //---------------------------------------------------------------------------
344 bool InteractorStyleMaracas::OnLeftButtonUp()
348 //---------------------------------------------------------------------------
349 bool InteractorStyleMaracas::OnLeftDClick()
353 //---------------------------------------------------------------------------
354 bool InteractorStyleMaracas::OnMiddleButtonDown()
358 //---------------------------------------------------------------------------
359 bool InteractorStyleMaracas::OnMiddleButtonUp()
363 //---------------------------------------------------------------------------
364 bool InteractorStyleMaracas::OnMiddleDClick()
368 //---------------------------------------------------------------------------
369 bool InteractorStyleMaracas::OnRightButtonDown()
373 //---------------------------------------------------------------------------
374 bool InteractorStyleMaracas::OnRightButtonUp()
378 //---------------------------------------------------------------------------
379 bool InteractorStyleMaracas::OnRightDClick()
383 //---------------------------------------------------------------------------
384 bool InteractorStyleMaracas::OnMouseWheel()
389 //---------------------------------------------------------------------------
390 void InteractorStyleMaracas::SetVtkInteractorStyleBaseView(vtkInteractorStyleBaseView* vtkInteractorStyleBaseView)
392 _vtkInteractorStyleBaseView = vtkInteractorStyleBaseView;
395 //---------------------------------------------------------------------------
396 void InteractorStyleMaracas::RemoveVtkInteractorStyleBaseView()
398 _vtkInteractorStyleBaseView = NULL;
400 //---------------------------------------------------------------------------
401 void InteractorStyleMaracas::SetActive(bool active)
405 //---------------------------------------------------------------------------
406 bool InteractorStyleMaracas::GetActive()
413 //-------------------------------------------------------------------
414 //-------------------------------------------------------------------
415 //-------------------------------------------------------------------
417 manualInteractorWindowLevel::manualInteractorWindowLevel()
419 _stateWindowLevel = false;
426 //-------------------------------------------------------------------
428 manualInteractorWindowLevel::~manualInteractorWindowLevel()
432 //-------------------------------------------------------------------
434 bool manualInteractorWindowLevel::OnMouseMove() // virtual
437 if (_stateWindowLevel==true)
440 wxVTKRenderWindowInteractor *wxVTKiren;
441 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
442 wxVTKiren->GetEventPosition( tmpPx , tmpPy );
443 int colorWin=_backWindow - 2*( _backPx - tmpPx );
444 int colorLev=_backLevel + 2*( _backPy - tmpPy );
463 vtkImageViewer2 *vtkimageviewer2;
464 vtkimageviewer2=_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2();
465 vtkimageviewer2->SetColorWindow(colorWin);
466 vtkimageviewer2->SetColorLevel(colorLev);
467 // vtkimageviewer2->Render();
472 //-------------------------------------------------------------------
474 bool manualInteractorWindowLevel::OnMiddleButtonDown() // virtual
476 if ((_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) &&
477 (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ){
479 _stateWindowLevel = true;
480 wxVTKRenderWindowInteractor *wxVTKiren;
481 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
482 wxVTKiren->GetEventPosition( _backPx , _backPy );
484 _backWindow = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow());
485 _backLevel = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel());
490 //-------------------------------------------------------------------
492 bool manualInteractorWindowLevel::OnMiddleButtonUp() // virtual
494 if (_stateWindowLevel==true)
496 _stateWindowLevel=false;
503 //---------------------------------------------------------------------------
504 //---------------------------------------------------------------------------
505 //---------------------------------------------------------------------------
507 vtkInteractorScrollZ::vtkInteractorScrollZ()
509 _stateFordware=false;
511 //---------------------------------------------------------------------------
512 vtkInteractorScrollZ::~vtkInteractorScrollZ()
515 //---------------------------------------------------------------------------
516 bool vtkInteractorScrollZ::OnRightButtonDown()
518 vtkRenderWindowInteractor *interactor = _vtkInteractorStyleBaseView->GetInteractor();
519 if ((interactor->GetControlKey()==0) && (interactor->GetShiftKey()==0) ){
520 _stateFordware = true;
521 _fordwareX = interactor->GetEventPosition()[0];
522 _fordwareY = interactor->GetEventPosition()[1];
523 _sliceZ = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetActualSlice();
527 //---------------------------------------------------------------------------
528 bool vtkInteractorScrollZ::OnRightButtonUp()
530 _stateFordware=false;
533 //---------------------------------------------------------------------------
534 bool vtkInteractorScrollZ::OnMouseMove ()
536 if (_stateFordware==true){
537 //int fx = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[0]; // JPRx
538 int fy = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[1];
539 int delta = (_fordwareY - fy)/3;
540 _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->SetActualSlice( _sliceZ + delta);
542 this->_vtkInteractorStyleBaseView->SetParent_refresh_waiting();
544 // wxCommandEvent newevent(wxEVT_COMMAND_MENU_SELECTED,12121);
545 // _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent);
547 //_wxvtk2Dbaseview->Refresh();
556 //---------------------------------------------------------------------------
557 //---------------------------------------------------------------------------
558 //---------------------------------------------------------------------------
560 vtkInteractorStyleBaseView::vtkInteractorStyleBaseView()
562 _refresh_waiting = false;
563 _parent_refresh_waiting = false;
564 _blockRefresh = false;
566 //---------------------------------------------------------------------------
567 vtkInteractorStyleBaseView::~vtkInteractorStyleBaseView()
570 //---------------------------------------------------------------------------
571 void vtkInteractorStyleBaseView::OnMouseMove() // virtual
573 CallLstInteractorStyleMaracas(3);
575 //---------------------------------------------------------------------------
576 void vtkInteractorStyleBaseView::OnLeftButtonDown() // virtual
578 CallLstInteractorStyleMaracas(4);
580 //---------------------------------------------------------------------------
581 void vtkInteractorStyleBaseView::OnLeftButtonUp() // virtual
583 CallLstInteractorStyleMaracas(5);
586 //---------------------------------------------------------------------------
587 void vtkInteractorStyleBaseView::OnLeftDClick() // virtual
589 CallLstInteractorStyleMaracas( 11 );
592 //---------------------------------------------------------------------------
593 void vtkInteractorStyleBaseView::OnMiddleButtonDown() // virtual
595 CallLstInteractorStyleMaracas(6);
597 //---------------------------------------------------------------------------
598 void vtkInteractorStyleBaseView::OnMiddleButtonUp() // virtual
600 CallLstInteractorStyleMaracas(7);
602 //---------------------------------------------------------------------------
603 void vtkInteractorStyleBaseView::OnMiddleDClick() // virtual
605 CallLstInteractorStyleMaracas( 13 );
608 //---------------------------------------------------------------------------
609 void vtkInteractorStyleBaseView::OnRightButtonDown() // virtual
611 CallLstInteractorStyleMaracas(1);
613 //---------------------------------------------------------------------------
614 void vtkInteractorStyleBaseView::OnRightButtonUp() // virtual
616 CallLstInteractorStyleMaracas(2);
618 //---------------------------------------------------------------------------
619 void vtkInteractorStyleBaseView::OnRightDClick() // virtual
621 CallLstInteractorStyleMaracas( 12 );
623 //---------------------------------------------------------------------------
624 void vtkInteractorStyleBaseView::OnMouseWheel() // virtual
626 CallLstInteractorStyleMaracas( 14 );
628 //---------------------------------------------------------------------------
629 void vtkInteractorStyleBaseView::AddInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas)
631 interactorStyleMaracas->SetVtkInteractorStyleBaseView(this);
632 _lstInteractorStyleMaracas.push_back(interactorStyleMaracas);
634 //---------------------------------------------------------------------------
635 void vtkInteractorStyleBaseView::RemoveInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas)
637 interactorStyleMaracas->RemoveVtkInteractorStyleBaseView();
638 int i, size = _lstInteractorStyleMaracas.size();
639 std::vector< InteractorStyleMaracas* >::iterator iter = _lstInteractorStyleMaracas.begin();
640 bool removed = false;
641 for (i=0; !removed && i<size; i++)
643 if ( _lstInteractorStyleMaracas[i] == interactorStyleMaracas )
645 _lstInteractorStyleMaracas.erase(iter);
651 //---------------------------------------------------------------------------
652 void vtkInteractorStyleBaseView::InsertInteractorStyleMaracas(int pos, InteractorStyleMaracas* interactorStyleMaracas)
654 interactorStyleMaracas->SetVtkInteractorStyleBaseView(this);
655 _lstInteractorStyleMaracas.insert(_lstInteractorStyleMaracas.begin()+pos,interactorStyleMaracas);
657 //---------------------------------------------------------------------------
658 void vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas(int type)
661 InteractorStyleMaracas *intStyMar;
663 int i,size=_lstInteractorStyleMaracas.size();
666 //FILE *ff = fopen("c:/temp/wxVtkBaseView_SceneManagerStadistics.txt","a+");
667 //fprintf(ff,"EED vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas \n" );
668 //for (i=0;i<size;i++)
670 //fprintf(ff," %p\n" , _lstInteractorStyleMaracas[i] );
678 intStyMar = _lstInteractorStyleMaracas[i];
679 if (intStyMar->GetActive()==true){
681 { // OnRightButtonDown
682 if (intStyMar->OnRightButtonDown()==false)
689 if (intStyMar->OnRightButtonUp()==false)
696 if (intStyMar->OnMouseMove()==false)
702 { // OnLeftButtonDown
703 if (intStyMar->OnLeftButtonDown()==false)
710 if (intStyMar->OnLeftButtonUp()==false)
716 { // OnMiddleButtonDown
717 if (intStyMar->OnMiddleButtonDown()==false)
723 { // OnMiddleButtonUp
724 if (intStyMar->OnMiddleButtonUp()==false)
730 { // OnMiddleButtonUp
731 if (intStyMar->OnChar()==false)
738 if (intStyMar->OnLeftDClick()==false)
745 if (intStyMar->OnRightDClick()==false)
752 if (intStyMar-> OnMiddleDClick()==false)
759 if (intStyMar->OnMouseWheel()==false)
769 //---------------------------------------------------------------------------
770 void vtkInteractorStyleBaseView::OnChar() // virtual
772 // char a=GetInteractor()->GetKeyCode();
773 CallLstInteractorStyleMaracas(10);
775 //---------------------------------------------------------------------------
776 void vtkInteractorStyleBaseView::TransformCoordinate(double &X, double &Y, double &Z)
778 vtkImageViewer2 *imageViewer = GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2();
780 imageViewer->GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z);
781 imageViewer->GetRenderer()->DisplayToWorld();
783 imageViewer->GetRenderer()->GetWorldPoint( fP );
792 GetWxVtk2DBaseView()->TransformCoordinate_spacing_ViewToModel(fP[0],fP[1],fP[2]);
798 //---------------------------------------------------------------------------
799 void vtkInteractorStyleBaseView::SetwxVtkBaseView(wxVtkBaseView *wxvtkbaseview)
801 _wxvtkbaseview = wxvtkbaseview;
803 //---------------------------------------------------------------------------
804 wxVtk2DBaseView* vtkInteractorStyleBaseView::GetWxVtk2DBaseView()
806 return (wxVtk2DBaseView*)_wxvtkbaseview;
808 //---------------------------------------------------------------------------
809 wxVtk3DBaseView* vtkInteractorStyleBaseView::GetWxVtk3DBaseView()
811 return (wxVtk3DBaseView*)_wxvtkbaseview;
813 //---------------------------------------------------------------------------
814 void vtkInteractorStyleBaseView::SetActiveAllInteractors(bool ok)
816 InteractorStyleMaracas *intStyMar;
817 int i,size=_lstInteractorStyleMaracas.size();
820 intStyMar = _lstInteractorStyleMaracas[i];
821 intStyMar->SetActive(ok);
825 //---------------------------------------------------------------------------
826 void vtkInteractorStyleBaseView::SetRefresh_waiting()
828 _refresh_waiting=true;
830 //---------------------------------------------------------------------------
831 bool vtkInteractorStyleBaseView::GetRefresh_waiting()
833 return _refresh_waiting;
835 //---------------------------------------------------------------------------
836 void vtkInteractorStyleBaseView::SetParent_refresh_waiting()
838 _parent_refresh_waiting=true;
840 //---------------------------------------------------------------------------
841 bool vtkInteractorStyleBaseView::GetParent_refresh_waiting()
843 return _parent_refresh_waiting;
845 //---------------------------------------------------------------------------
846 void vtkInteractorStyleBaseView::EvaluateToRefresh()
849 if ( _blockRefresh==false )
851 if ( (_refresh_waiting==true) && (_parent_refresh_waiting==false))
853 _refresh_waiting = false;
854 this->_wxvtkbaseview->Refresh();
856 if (_parent_refresh_waiting==true)
858 _parent_refresh_waiting = false;
859 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
860 this->_wxvtkbaseview->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
864 //---------------------------------------------------------------------------
865 void vtkInteractorStyleBaseView::BlockRefresh()
869 //---------------------------------------------------------------------------
870 void vtkInteractorStyleBaseView::UnBlockRefresh()
875 //---------------------------------------------------------------------------
876 //---------------------------------------------------------------------------
877 //---------------------------------------------------------------------------
881 //---------------------------------------------------------------------------
882 vtkInteractorStyleBaseView2D::vtkInteractorStyleBaseView2D()
884 _manualinteractorwindowlevel= new manualInteractorWindowLevel();
885 AddInteractorStyleMaracas( _manualinteractorwindowlevel );
887 _vtkInteractorScrollZ = new vtkInteractorScrollZ();
888 AddInteractorStyleMaracas(_vtkInteractorScrollZ);
891 //---------------------------------------------------------------------------
892 vtkInteractorStyleBaseView2D::~vtkInteractorStyleBaseView2D()
896 //---------------------------------------------------------------------------
897 void vtkInteractorStyleBaseView2D::OnRightButtonDown() // virtual
899 vtkInteractorStyleBaseView::OnRightButtonDown();
901 if ((GetInteractor()->GetControlKey()==1) && (GetInteractor()->GetShiftKey()==0) ){
902 this->vtkInteractorStyleImage::OnRightButtonDown();
907 //---------------------------------------------------------------------------
908 void vtkInteractorStyleBaseView2D::OnRightButtonUp() // virtual
910 vtkInteractorStyleBaseView::OnRightButtonUp();
911 this->vtkInteractorStyleImage::OnRightButtonUp();
913 //---------------------------------------------------------------------------
914 void vtkInteractorStyleBaseView2D::OnMouseMove () // virtual
916 vtkInteractorStyleBaseView::OnMouseMove();
917 this->vtkInteractorStyleImage::OnMouseMove();
919 //---------------------------------------------------------------------------
920 void vtkInteractorStyleBaseView2D::OnLeftButtonDown() // virtual
922 vtkInteractorStyleBaseView::OnLeftButtonDown();
924 if ((GetInteractor()->GetControlKey()==0) && (GetInteractor()->GetShiftKey()==1) )
926 this->vtkInteractorStyleImage::OnLeftButtonDown();
929 //---------------------------------------------------------------------------
930 void vtkInteractorStyleBaseView2D::OnLeftButtonUp () // virtual
932 vtkInteractorStyleBaseView::OnLeftButtonUp();
934 this->vtkInteractorStyleImage::OnLeftButtonUp();
936 //---------------------------------------------------------------------------
937 void vtkInteractorStyleBaseView2D::OnMiddleButtonDown () // virtual
939 vtkInteractorStyleBaseView::OnMiddleButtonDown();
941 if ((GetInteractor()->GetControlKey()==1) || (GetInteractor()->GetShiftKey()==1) )
943 this->vtkInteractorStyleImage::OnLeftButtonDown();
946 //---------------------------------------------------------------------------
947 void vtkInteractorStyleBaseView2D::OnMiddleButtonUp () // virtual
949 vtkInteractorStyleBaseView::OnMiddleButtonUp();
951 if ((GetInteractor()->GetControlKey()==1) || (GetInteractor()->GetShiftKey()==1) )
953 this->vtkInteractorStyleImage::OnLeftButtonUp();
959 //-------------------------------------------------------------------
960 //-------------------------------------------------------------------
961 //-------------------------------------------------------------------
964 //---------------------------------------------------------------------------
965 vtkInteractorStyleBaseView3D::vtkInteractorStyleBaseView3D(){
967 //---------------------------------------------------------------------------
968 vtkInteractorStyleBaseView3D::~vtkInteractorStyleBaseView3D(){
970 //---------------------------------------------------------------------------
971 void vtkInteractorStyleBaseView3D::OnRightButtonDown ()
973 vtkInteractorStyleBaseView::OnRightButtonDown();
976 if (GetInteractor()->GetControlKey()==1 ){
977 this->vtkInteractorStyleTrackballCamera::OnRightButtonDown();
980 this->FindPokedRenderer(this->Interactor->GetEventPosition()[0],
981 this->Interactor->GetEventPosition()[1]);
983 if (this->CurrentRenderer == NULL)
988 if (this->Interactor->GetControlKey()) {
993 //---------------------------------------------------------------------------
994 void vtkInteractorStyleBaseView3D::OnRightButtonUp ()
996 vtkInteractorStyleBaseView::OnRightButtonUp();
999 if (GetInteractor()->GetControlKey()==1 ){
1000 this->vtkInteractorStyleTrackballCamera::OnRightButtonUp();
1005 switch (this->State)
1012 //---------------------------------------------------------------------------
1013 void vtkInteractorStyleBaseView3D::OnMouseMove ()
1015 vtkInteractorStyleBaseView::OnMouseMove();
1017 // this->vtkInteractorStyleTrackballCamera::OnMouseMove();
1019 // int x = this->Interactor->GetEventPosition()[0]; // JPRx
1020 // int y = this->Interactor->GetEventPosition()[1]; // JPRx
1023 // vtkRenderWindowInteractor *rwi = this->Interactor;
1025 // int lx = rwi->GetLastEventPosition()[0]; // JPRx
1026 // int ly = rwi->GetLastEventPosition()[1]; // JPRx
1027 // int dx = rwi->GetEventPosition()[0] ; // JPRx
1028 // int dy = rwi->GetEventPosition()[1] ; // JPRx
1031 switch (this->State)
1034 // this->FindPokedRenderer(x, y);
1036 // this->InvokeEvent(vtkCommand::InteractionEvent, NULL);
1040 // this->FindPokedRenderer(x, y);
1042 // this->InvokeEvent(vtkCommand::InteractionEvent, NULL);
1046 // this->FindPokedRenderer(x, y);
1048 // this->InvokeEvent(vtkCommand::InteractionEvent, NULL);
1052 // this->FindPokedRenderer(x, y);
1054 // this->InvokeEvent(vtkCommand::InteractionEvent, NULL);
1061 //---------------------------------------------------------------------------
1062 void vtkInteractorStyleBaseView3D::OnLeftButtonDown ()
1064 vtkInteractorStyleBaseView::OnLeftButtonDown();
1066 if (GetInteractor()->GetControlKey()==1 ){
1067 this->vtkInteractorStyleTrackballCamera::OnMiddleButtonDown();
1069 this->vtkInteractorStyleTrackballCamera::OnLeftButtonDown();
1074 this->FindPokedRenderer(this->Interactor->GetEventPosition()[0],
1075 this->Interactor->GetEventPosition()[1]);
1076 if (this->CurrentRenderer == NULL)
1081 if (this->Interactor->GetControlKey()) {
1084 this->StartRotate();
1088 if (this->Interactor->GetShiftKey())
1090 if (this->Interactor->GetControlKey())
1101 if (this->Interactor->GetControlKey())
1107 this->StartRotate();
1114 //---------------------------------------------------------------------------
1115 void vtkInteractorStyleBaseView3D::OnLeftButtonUp ()
1117 vtkInteractorStyleBaseView::OnLeftButtonUp();
1120 if (GetInteractor()->GetControlKey()==1 ){
1121 this->vtkInteractorStyleTrackballCamera::OnMiddleButtonUp();
1123 this->vtkInteractorStyleTrackballCamera::OnLeftButtonUp();
1126 switch (this->State)
1138 //---------------------------------------------------------------------------
1139 void vtkInteractorStyleBaseView3D::OnMiddleButtonDown ()
1141 vtkInteractorStyleBaseView::OnMiddleButtonDown();
1142 // this->vtkInteractorStyleTrackballCamera::OnMiddleButtonDown();
1144 //---------------------------------------------------------------------------
1145 void vtkInteractorStyleBaseView3D::OnMiddleButtonUp ()
1147 vtkInteractorStyleBaseView::OnMiddleButtonUp();
1149 // this->vtkInteractorStyleTrackballCamera::OnMiddleButtonUp();
1153 //-------------------------------------------------------------------
1154 //-------------------------------------------------------------------
1155 //-------------------------------------------------------------------
1157 vtkInfoTextImage::vtkInfoTextImage()
1159 _vtkText_WindowLevel = NULL;
1160 _vtkText_ColorLevel = NULL;
1161 _vtkText_position = NULL;
1162 _vtkText_pixelIntensity = NULL;
1163 _marimagedata = NULL;
1166 //-------------------------------------------------------------------
1168 vtkInfoTextImage::~vtkInfoTextImage()
1172 //-------------------------------------------------------------------
1174 void vtkInfoTextImage::Configure()
1176 _vtkText_WindowLevel = Create_Text_Label( 10 , 55 );
1177 _vtkText_ColorLevel = Create_Text_Label( 10 , 40 );
1178 _vtkText_position = Create_Text_Label( 10 , 25 );
1179 _vtkText_pixelIntensity = Create_Text_Label( 10 , 10 );
1183 //-------------------------------------------------------------------
1185 void vtkInfoTextImage::SetMarImageData(marImageData *marimagedata)
1187 _marimagedata=marimagedata;
1190 //-------------------------------------------------------------------
1192 void vtkInfoTextImage::SetWxVtk2DBaseView(wxVtk2DBaseView *wxvtk2Dbaseview)
1194 _wxvtk2Dbaseview=wxvtk2Dbaseview;
1197 //-------------------------------------------------------------------
1199 vtkTextActor *vtkInfoTextImage::Create_Text_Label(int px, int py )
1201 // Text Window Level
1202 vtkTextActor *textActor = vtkTextActor::New();
1203 textActor->SetDisplayPosition(px, py);
1204 textActor->SetInput("--");
1206 // Set coordinates to match the old vtkScaledTextActor default value
1207 textActor->GetPosition2Coordinate()->SetCoordinateSystemToNormalizedViewport();
1208 textActor->GetPosition2Coordinate()->SetValue( 0.2 , 0.2 );
1210 vtkTextProperty *tprop = textActor->GetTextProperty();
1211 tprop->SetFontSize(14);
1212 tprop->SetFontFamilyToArial();
1213 tprop->SetColor(1, 1, 0);
1214 _wxvtk2Dbaseview->GetRenderer()->AddActor2D(textActor);
1219 //-------------------------------------------------------------------
1221 void vtkInfoTextImage::PutWindowLevel()
1223 int value = (int)( _wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->GetWindow() );
1225 char resultText[50];
1227 strcpy(resultText,"w:");
1230 //ltoa ( (long)value , zTzxt , 10 );
1231 sprintf(zTzxt,"%d",value);
1233 strcat(resultText,zTzxt);
1234 _vtkText_WindowLevel -> SetInput(resultText);
1237 //-------------------------------------------------------------------
1239 void vtkInfoTextImage::PutColorLevel()
1241 int value = (int)(_wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->GetLevel());
1243 char resultText[50];
1245 strcpy(resultText,"c:");
1247 // itoa (value,zTzxt,10);
1248 sprintf(zTzxt,"%d",value);
1250 strcat(resultText,zTzxt);
1251 _vtkText_ColorLevel -> SetInput(resultText);
1254 //-------------------------------------------------------------------
1256 void vtkInfoTextImage::PutPosition(int xx,int yy, int zz)
1261 // _imagedata->GetSpacing(spa);
1262 // xx=xx*(1/spa[0]);
1263 // yy=yy*(1/spa[1]);
1267 char resultText[50];
1268 strcpy(resultText,"p: ");
1269 // itoa ((int)xx,zTzxt,10);
1270 sprintf(zTzxt,"%d",xx);
1272 strcat(resultText,zTzxt);
1273 strcat(resultText," , ");
1275 // itoa ((int)yy,zTzxt,10);
1276 sprintf(zTzxt,"%d",yy);
1278 strcat(resultText,zTzxt);
1279 strcat(resultText," , ");
1281 // itoa ((int)zz,zTzxt,10);
1282 sprintf(zTzxt,"%d",zz);
1284 strcat(resultText,zTzxt);
1288 int nX = _marimagedata->GetXOriginal(xx);
1289 int nY = _marimagedata->GetYOriginal(yy);
1290 int nZ = _marimagedata->GetZOriginal(zz);
1292 strcat(resultText," (");
1293 // ltoa ((int)nX,zTzxt,10);
1294 sprintf(zTzxt,"%d",nX);
1296 strcat(resultText,zTzxt);
1297 strcat(resultText,",");
1299 // ltoa ((int)nY,zTzxt,10);
1300 sprintf(zTzxt,"%d",nY);
1302 strcat(resultText,zTzxt);
1303 strcat(resultText,",");
1305 // ltoa ((int)nZ,zTzxt,10);
1306 sprintf(zTzxt,"%d",nZ);
1308 strcat(resultText,zTzxt);
1309 strcat(resultText,")");
1314 _vtkText_position -> SetInput(resultText);
1317 //-------------------------------------------------------------------
1319 void vtkInfoTextImage::PutPixelIntensity(int xx, int yy, int zz)
1327 vtkImageData *imagedata = _marimagedata->GetImageData();
1328 imagedata->GetDimensions(dim);
1329 imagedata->GetSpacing(spa);
1332 // xx=xx*(1/spa[0]);
1333 // yy=yy*(1/spa[1]);
1336 if ( (xx<0) || (xx>=dim[0]) || (yy<0) || (yy>=dim[1]) || (zz<0) || (zz>=dim[2]) )
1343 char resultText[50];
1344 strcpy(resultText,"NG: ");
1346 unsigned short *pOrg=(unsigned short*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz);
1347 // itoa (*pOrg,zTzxt,10);
1349 sprintf(zTzxt,"%d",tmp);
1352 strcpy(zTzxt,"---");
1354 strcat(resultText,zTzxt);
1355 _vtkText_pixelIntensity -> SetInput(resultText);
1360 //-------------------------------------------------------------------
1361 //-------------------------------------------------------------------
1362 //-------------------------------------------------------------------
1364 vtkInfoTextImageInteractor::vtkInfoTextImageInteractor()
1368 //-------------------------------------------------------------------
1369 vtkInfoTextImageInteractor::~vtkInfoTextImageInteractor()
1373 //-------------------------------------------------------------------
1375 void vtkInfoTextImageInteractor::SetModelVtkInfoTextImage(vtkInfoTextImage *vtkinfotextimage)
1377 _vtkinfotextimage = vtkinfotextimage;
1380 //-------------------------------------------------------------------
1381 bool vtkInfoTextImageInteractor::OnMouseMove()
1384 wxVTKRenderWindowInteractor *wxVTKiren;
1385 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
1386 wxVTKiren->GetEventPosition(X,Y);
1388 int z = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetVtkBaseData()->GetZ());
1389 double xx=X,yy=Y,zz=z;
1390 _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->TransfromeCoordScreenToWorld(xx,yy,zz);
1392 GetVtkInfoTextImage()->PutWindowLevel();
1393 GetVtkInfoTextImage()->PutColorLevel();
1394 GetVtkInfoTextImage()->PutPosition( (int)xx , (int)yy , (int)zz );
1395 GetVtkInfoTextImage()->PutPixelIntensity( (int)xx , (int)yy , (int)zz );
1397 this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
1401 //-------------------------------------------------------------------
1402 vtkInfoTextImage *vtkInfoTextImageInteractor::GetVtkInfoTextImage()
1404 return _vtkinfotextimage;
1408 //-------------------------------------------------------------------
1409 //-------------------------------------------------------------------
1410 //-------------------------------------------------------------------
1413 wxVtk2DBaseView::wxVtk2DBaseView(wxWindow *parent)
1414 :wxVtkBaseView(parent)
1416 _imageViewer2XYZ = NULL;
1417 _vtkIinfoTextImage = NULL;
1420 //-------------------------------------------------------------------
1421 wxVtk2DBaseView::~wxVtk2DBaseView()
1423 if (_imageViewer2XYZ!=NULL) {
1424 delete _imageViewer2XYZ;
1427 if (_imageViewer2XYZ!=NULL) {
1428 delete _vtkIinfoTextImage;
1433 //-------------------------------------------------------------------
1434 void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double &Y, double &Z) // virtual
1438 // GetVtkBaseData()->GetImageData()->GetSpacing(spc);
1439 this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
1447 //-------------------------------------------------------------------
1448 void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &Y, double &Z) // virtual
1452 // GetVtkBaseData()->GetImageData()->GetSpacing(spc);
1453 this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
1461 //-------------------------------------------------------------------
1462 void wxVtk2DBaseView::ResetView()
1465 int x1,x2,y1,y2,z1,z2;
1466 wxVtkBaseView::Configure();
1468 wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
1469 vtkImageData *imageData = GetVtkBaseData()->GetImageData();
1470 imageData->UpdateInformation();
1471 imageData->SetUpdateExtent( imageData->GetWholeExtent());
1472 imageData->Update();
1474 _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData );
1475 imageData->GetSpacing (spx,spy,spz);
1476 imageData->GetExtent (x1,x2,y1,y2,z1,z2);
1477 _imageViewer2XYZ -> SetExtentDimension(x1,x2,y1,y2,z1,z2);
1478 _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren );
1480 printf("EED wxVtk2DBaseView::ResetView podemos 01\n ");
1481 _imageViewer2XYZ->GetVtkImageViewer2()->Render();
1482 printf("EED wxVtk2DBaseView::ResetView podemos 02\n ");
1484 SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
1489 //-------------------------------------------------------------------
1490 void wxVtk2DBaseView::Configure(bool okimage)
1493 int x1,x2,y1,y2,z1,z2;
1494 wxVtkBaseView::Configure();
1497 if (_imageViewer2XYZ==NULL)
1499 _imageViewer2XYZ = new vtkImageViewer2_XYZ();
1500 wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
1501 _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren );
1502 SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
1506 vtkImageData *imageData = GetVtkBaseData()->GetMarImageData()->GetImageData();
1507 if (imageData!=NULL){
1508 imageData->UpdateInformation();
1509 imageData->SetUpdateExtent( imageData->GetWholeExtent());
1510 imageData->Update();
1512 imageData->GetSpacing (spx,spy,spz);
1513 imageData->GetExtent (x1,x2,y1,y2,z1,z2);
1516 _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData );
1517 _imageViewer2XYZ->SetExtentDimension(x1,x2,y1,y2,z1,z2);
1519 imageData->GetScalarRange(range);
1520 if (range[1]<20000){
1521 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( (range[1]-range[0])/2 );
1522 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( (range[1]+range[0])/4 );
1524 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( 1000 );
1525 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( 500 );
1527 // EED 31 Janvier 2007
1528 //vtkImageActor *vtkimageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor ();
1529 //vtkimageactor->InterpolateOff ();
1530 //vtkLookupTable * _collookup = vtkLookupTable::New( );
1531 //_collookup->SetNumberOfColors( 256 );
1532 //_collookup->SetTableRange( 0 , 255 );
1533 //_collookup->Build( );
1534 //_collookup->SetTableValue( 0 , 1 , 0 , 0 , 1 );
1535 //_collookup->SetTableValue(128 , 0 , 0 , 1 , 1 );
1536 //_collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
1537 //_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel ()->SetLookupTable(_collookup );
1541 // SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
1544 vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2();
1545 vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera();
1546 camera->SetViewUp ( spx*0 , -spy*1 , spz*0 );
1547 camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , -spz*10000 );
1548 camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 );
1549 camera->SetClippingRange( 0.01 , 1000000 );
1550 camera->ComputeViewPlaneNormal();
1551 camera->SetParallelScale( spx*(x2-x1)/3.0 );
1553 // text information over the graphic window
1554 _vtkIinfoTextImage = new vtkInfoTextImage();
1555 _vtkIinfoTextImageInteractor = new vtkInfoTextImageInteractor();
1556 _vtkIinfoTextImage->SetWxVtk2DBaseView(this);
1557 _vtkIinfoTextImage->SetMarImageData( GetVtkBaseData()->GetMarImageData() );
1558 _vtkIinfoTextImageInteractor->SetModelVtkInfoTextImage(_vtkIinfoTextImage);
1559 _vtkIinfoTextImage->Configure();
1560 this->GetInteractorStyleBaseView()->AddInteractorStyleMaracas(_vtkIinfoTextImageInteractor);
1566 //-------------------------------------------------------------------
1568 int wxVtk2DBaseView::GetActualSlice() // virtual
1570 return (int)(_vtkbasedata->GetZ());
1573 //-------------------------------------------------------------------
1574 void wxVtk2DBaseView::SetActualSlice(int slice) // Virtual
1576 _vtkbasedata->SetZ(slice);
1579 //-------------------------------------------------------------------
1581 vtkBaseData *wxVtk2DBaseView::GetVtkBaseData()
1583 return _vtkbasedata;
1586 //-------------------------------------------------------------------
1588 void wxVtk2DBaseView::SetVtkBaseData(vtkBaseData *vtkbasedata)
1590 _vtkbasedata=vtkbasedata;
1593 //-------------------------------------------------------------------
1595 void wxVtk2DBaseView::Refresh()
1597 int z = (int)(GetVtkBaseData()->GetZ());
1598 _imageViewer2XYZ->SetZSlice( z );
1600 wxVtkBaseView::Refresh();
1603 //-------------------------------------------------------------------
1605 void wxVtk2DBaseView::SetInteractorStyleImage(vtkInteractorStyleBaseView *interactorstylebaseview)
1607 SetInteractorStyleBaseView(interactorstylebaseview);
1609 wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
1610 interactorstylebaseview->SetInteractor ( iren );
1611 iren->SetInteractorStyle(interactorstylebaseview);
1612 interactorstylebaseview->SetwxVtkBaseView(this);
1614 vtkMaracasImageViewer2Callback *cbk = vtkMaracasImageViewer2Callback::New();
1615 cbk->IV = _imageViewer2XYZ->GetVtkImageViewer2();
1616 interactorstylebaseview->AddObserver( vtkCommand::WindowLevelEvent, cbk );
1617 interactorstylebaseview->AddObserver( vtkCommand::StartWindowLevelEvent, cbk );
1618 interactorstylebaseview->AddObserver( vtkCommand::ResetWindowLevelEvent, cbk );
1622 //---------------------------------------------------------------------------
1623 vtkRenderer* wxVtk2DBaseView::GetRenderer() // virtual
1625 return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer();
1627 //---------------------------------------------------------------------------
1628 vtkRenderWindow* wxVtk2DBaseView::GetRenWin() // virtual
1630 return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderWindow();
1633 //-------------------------------------------------------------------
1635 void wxVtk2DBaseView::GetSpacing(double spc[3]) // virtual
1637 vtkImageData *imageData = GetVtkBaseData()->GetImageData();
1638 imageData->GetSpacing(spc);
1641 //-------------------------------------------------------------------
1642 //-------------------------------------------------------------------
1643 //-------------------------------------------------------------------
1648 wxVtk3DBaseView::wxVtk3DBaseView(wxWindow *parent)
1649 :wxVtkBaseView( parent )
1656 //-------------------------------------------------------------------
1657 wxVtk3DBaseView::~wxVtk3DBaseView()
1659 if (_aCamera!=NULL) { _aCamera -> Delete(); }
1660 if (_aRenderer!=NULL) { _aRenderer -> Delete(); }
1661 if (_renWin!=NULL) { _renWin -> Delete(); }
1663 //-------------------------------------------------------------------
1664 vtkCamera* wxVtk3DBaseView::GetCamera()
1668 //-------------------------------------------------------------------
1669 vtkRenderer* wxVtk3DBaseView::GetRenderer() // virtual
1673 //-------------------------------------------------------------------
1674 vtkRenderWindow* wxVtk3DBaseView::GetRenWin() // virtual
1678 //-------------------------------------------------------------------
1679 void wxVtk3DBaseView::Refresh()
1681 // _renWin->Render();
1682 vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor();
1683 vri->vtkRenderWindowInteractor::Render();
1685 //-------------------------------------------------------------------
1686 void wxVtk3DBaseView::Configure()
1688 if (_configure==false)
1691 wxVtkBaseView::Configure();
1692 _aRenderer = vtkRenderer::New();
1693 _renWin = vtkRenderWindow::New();
1694 _renWin->AddRenderer(_aRenderer);
1697 // _renWin->SetStereoCapableWindow(1);
1698 // // //renderwindow->SetStereoTypeToCrystalEyes();
1699 // _renWin->SetStereoTypeToRedBlue();
1700 // _renWin->SetStereoRender(1);
1702 GetWxVTKRenderWindowInteractor()->SetRenderWindow(_renWin);
1706 // vtkInteractorStyle3DMaracas *interactorStyle3DMaracas = vtkInteractorStyle3DMaracas::New();
1707 vtkInteractorStyleBaseView3D *interactorStyleBaseView3D = vtkInteractorStyleBaseView3D::New();
1709 SetInteractorStyleBaseView( interactorStyleBaseView3D );
1710 interactorStyleBaseView3D->SetInteractor ( GetWxVTKRenderWindowInteractor() );
1711 GetWxVTKRenderWindowInteractor()->SetInteractorStyle( interactorStyleBaseView3D );
1712 interactorStyleBaseView3D->SetwxVtkBaseView(this);
1716 vtkInteractorStyleSwitch *iss = dynamic_cast<vtkInteractorStyleSwitch*>(_iren->GetInteractorStyle());
1717 iss->SetCurrentStyleToTrackballCamera();
1720 // It is convenient to create an initial view of the data. The
1721 // FocalPoint and Position form a vector direction. Later on
1722 // (ResetCamera() method) this vector is used to position the camera
1723 // to look at the data in this direction.
1724 _aCamera = vtkCamera::New();
1725 _aCamera->SetViewUp (0, 0, -1);
1726 _aCamera->SetPosition (0, 1, 0);
1727 _aCamera->SetFocalPoint (0, 0, 0);
1728 _aCamera->ComputeViewPlaneNormal();
1731 //-------------------------------------------------------------------
1733 void wxVtk3DBaseView::GetSpacing(double spc[3])