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"
16 vtkStandardNewMacro(vtkInteractorStyleBaseView);
17 vtkStandardNewMacro(vtkInteractorStyleBaseView2D);
18 vtkStandardNewMacro(vtkInteractorStyleBaseView3D);
22 //-------------------------------------------------------------------
23 //-------------------------------------------------------------------
24 //-------------------------------------------------------------------
25 vtkImageViewer2_XYZ::vtkImageViewer2_XYZ()
27 _vtkimageviewer2= vtkImageViewer2::New();
29 //-------------------------------------------------------------------
30 vtkImageViewer2_XYZ::~vtkImageViewer2_XYZ()
32 _vtkimageviewer2->Delete();
34 //-------------------------------------------------------------------
35 void vtkImageViewer2_XYZ::SetExtentDimension(int x1,int x2,
46 //-------------------------------------------------------------------
47 void vtkImageViewer2_XYZ::SetXSlice(int slice)
49 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
50 imageActor->SetDisplayExtent(slice, slice, _y1, _y2, _z1, _z2 );
52 //-------------------------------------------------------------------
53 void vtkImageViewer2_XYZ::SetYSlice(int slice)
55 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
56 imageActor->SetDisplayExtent(_x1, _x2, slice, slice, _z1, _z2 );
58 //-------------------------------------------------------------------
59 void vtkImageViewer2_XYZ::SetZSlice(int slice)
61 #if (VTK_MAJOR_VERSION >= 5)
62 // _vtkimageviewer2->SetSlice( slice );
63 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
64 imageActor->SetDisplayExtent(_x1, _x2, _y1, _y2, slice, slice );
66 _vtkimageviewer2->SetZSlice( slice );
71 //-------------------------------------------------------------------
72 int vtkImageViewer2_XYZ::GetXSlice()
74 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
75 return imageActor->GetDisplayExtent()[0];
77 //-------------------------------------------------------------------
78 int vtkImageViewer2_XYZ::GetYSlice()
80 vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor();
81 return imageActor->GetDisplayExtent()[2];
83 //-------------------------------------------------------------------
84 int vtkImageViewer2_XYZ::GetZSlice()
88 #if (VTK_MAJOR_VERSION >= 5)
89 result= _vtkimageviewer2->GetSlice( );
91 result= _vtkimageviewer2->GetZSlice( );
97 //-------------------------------------------------------------------
98 vtkImageViewer2 *vtkImageViewer2_XYZ::GetVtkImageViewer2()
100 return _vtkimageviewer2;
104 //-------------------------------------------------------------------
105 //-------------------------------------------------------------------
106 //-------------------------------------------------------------------
110 BEGIN_EVENT_TABLE( wxVTKRenderWindowInteractorPlus, wxVTKRenderWindowInteractor )
111 EVT_LEFT_DCLICK( wxVTKRenderWindowInteractorPlus::OnLeftDClick )
112 EVT_RIGHT_DCLICK( wxVTKRenderWindowInteractorPlus::OnRightDClick )
113 EVT_MIDDLE_DCLICK( wxVTKRenderWindowInteractorPlus::OnMiddleDClick )
114 EVT_MOUSEWHEEL( wxVTKRenderWindowInteractorPlus::OnMouseWheel )
117 //-------------------------------------------------------------------
118 wxVTKRenderWindowInteractorPlus::wxVTKRenderWindowInteractorPlus()
119 : wxVTKRenderWindowInteractor()
124 //-------------------------------------------------------------------
125 wxVTKRenderWindowInteractorPlus::wxVTKRenderWindowInteractorPlus(wxWindow *parent, wxVtkBaseView *wxvtkbaseview)
126 : wxVTKRenderWindowInteractor(parent, -1)
128 _wxvtkbaseview = wxvtkbaseview;
131 //-------------------------------------------------------------------
132 wxVTKRenderWindowInteractorPlus::~wxVTKRenderWindowInteractorPlus()
136 //---------------------------------------------------------------------------
137 wxVTKRenderWindowInteractorPlus * wxVTKRenderWindowInteractorPlus::New()
139 // we don't make use of the objectfactory, because we're not registered
140 return new wxVTKRenderWindowInteractorPlus;
143 //-------------------------------------------------------------------
144 void wxVTKRenderWindowInteractorPlus::OnLeftDClick( wxMouseEvent& event )
146 _wxvtkbaseview->GetInteractorStyleBaseView()->OnLeftDClick();
148 //-------------------------------------------------------------------
149 void wxVTKRenderWindowInteractorPlus::OnRightDClick( wxMouseEvent& event )
151 _wxvtkbaseview->GetInteractorStyleBaseView()->OnRightDClick();
153 //-------------------------------------------------------------------
154 void wxVTKRenderWindowInteractorPlus::OnMiddleDClick( wxMouseEvent& event )
156 _wxvtkbaseview->GetInteractorStyleBaseView()->OnMiddleDClick();
158 //-------------------------------------------------------------------
159 void wxVTKRenderWindowInteractorPlus::OnMouseWheel( wxMouseEvent& event )
161 _wxvtkbaseview->GetInteractorStyleBaseView()->OnMouseWheel();
166 //-------------------------------------------------------------------
167 //-------------------------------------------------------------------
168 //-------------------------------------------------------------------
169 wxVtkBaseView::wxVtkBaseView()
173 _interactorStyle = NULL;
176 //-------------------------------------------------------------------
178 wxVtkBaseView::wxVtkBaseView(wxWindow *parent)
181 _iren = new wxVTKRenderWindowInteractorPlus(_parent,this);
182 // _iren->UseCaptureMouseOn();
183 // _iren = new wxVTKRenderWindowInteractor(_parent,-1);
184 _interactorStyle = NULL;
189 //-------------------------------------------------------------------
190 wxVtkBaseView::~wxVtkBaseView()
192 // _iren -> Delete();
194 //-------------------------------------------------------------------
195 wxVTKRenderWindowInteractor* wxVtkBaseView::GetWxVTKRenderWindowInteractor()
199 //-------------------------------------------------------------------
200 void wxVtkBaseView::Configure() // virtual
203 //-------------------------------------------------------------------
204 void wxVtkBaseView::Refresh() // virtual
209 _iren->Refresh(false);
216 //-------------------------------------------------------------------
217 void wxVtkBaseView::RefreshView() // virtual
222 GetRenWin()->Render();
224 //GetRenWin()->Render();
228 //---------------------------------------------------------------------------
229 vtkRenderer* wxVtkBaseView::GetRenderer() // virtual
233 //---------------------------------------------------------------------------
234 vtkRenderWindow* wxVtkBaseView::GetRenWin() // virtual
236 return _iren->GetRenderWindow();
239 //----------------------------------------------------------------------------
241 void wxVtkBaseView::TransfromeCoordScreenToWorld(double &X, double &Y, double &Z, int type) // virtual
243 GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z);
244 GetRenderer()->DisplayToWorld();
246 GetRenderer()->GetWorldPoint( fP );
254 this->GetInteractorStyleBaseView()->GetWxVtk2DBaseView()->TransformCoordinate_spacing_ViewToModel( fP[0] , fP[1] , fP[2] );
270 //---------------------------------------------------------------------------
272 vtkInteractorStyleBaseView* wxVtkBaseView::GetInteractorStyleBaseView()
274 return _interactorStyle;
277 //---------------------------------------------------------------------------
279 void wxVtkBaseView::SetInteractorStyleBaseView( vtkInteractorStyleBaseView* interactorStyle)
281 _interactorStyle = interactorStyle;
284 //---------------------------------------------------------------------------
286 void wxVtkBaseView::GetSpacing(double spc[3]) // virtual
294 //---------------------------------------------------------------------------
295 //---------------------------------------------------------------------------
296 //---------------------------------------------------------------------------
298 InteractorStyleMaracas::InteractorStyleMaracas()
301 _vtkInteractorStyleBaseView = NULL;
303 //---------------------------------------------------------------------------
304 InteractorStyleMaracas::~InteractorStyleMaracas()
308 // ----------------------------------------------------------------------------
309 InteractorStyleMaracas * InteractorStyleMaracas :: Clone() // virtual
311 InteractorStyleMaracas * clone = new InteractorStyleMaracas();
312 CopyAttributesTo(clone);
316 // ---------------------------------------------------------------------------
318 void InteractorStyleMaracas::CopyAttributesTo( InteractorStyleMaracas * cloneObject)
321 //<FATHERCLASS>::CopyAttributesTo(cloneObject);
323 cloneObject->SetActive( this->GetActive() );
327 //---------------------------------------------------------------------------
328 bool InteractorStyleMaracas::OnChar()
332 //---------------------------------------------------------------------------
333 bool InteractorStyleMaracas::OnMouseMove()
337 //---------------------------------------------------------------------------
338 bool InteractorStyleMaracas::OnLeftButtonDown()
342 //---------------------------------------------------------------------------
343 bool InteractorStyleMaracas::OnLeftButtonUp()
347 //---------------------------------------------------------------------------
348 bool InteractorStyleMaracas::OnLeftDClick()
352 //---------------------------------------------------------------------------
353 bool InteractorStyleMaracas::OnMiddleButtonDown()
357 //---------------------------------------------------------------------------
358 bool InteractorStyleMaracas::OnMiddleButtonUp()
362 //---------------------------------------------------------------------------
363 bool InteractorStyleMaracas::OnMiddleDClick()
367 //---------------------------------------------------------------------------
368 bool InteractorStyleMaracas::OnRightButtonDown()
372 //---------------------------------------------------------------------------
373 bool InteractorStyleMaracas::OnRightButtonUp()
377 //---------------------------------------------------------------------------
378 bool InteractorStyleMaracas::OnRightDClick()
382 //---------------------------------------------------------------------------
383 bool InteractorStyleMaracas::OnMouseWheel()
388 //---------------------------------------------------------------------------
389 void InteractorStyleMaracas::SetVtkInteractorStyleBaseView(vtkInteractorStyleBaseView* vtkInteractorStyleBaseView)
391 _vtkInteractorStyleBaseView = vtkInteractorStyleBaseView;
394 //---------------------------------------------------------------------------
395 void InteractorStyleMaracas::RemoveVtkInteractorStyleBaseView()
397 _vtkInteractorStyleBaseView = NULL;
399 //---------------------------------------------------------------------------
400 void InteractorStyleMaracas::SetActive(bool active)
404 //---------------------------------------------------------------------------
405 bool InteractorStyleMaracas::GetActive()
412 //-------------------------------------------------------------------
413 //-------------------------------------------------------------------
414 //-------------------------------------------------------------------
416 manualInteractorWindowLevel::manualInteractorWindowLevel()
418 _stateWindowLevel = false;
425 //-------------------------------------------------------------------
427 manualInteractorWindowLevel::~manualInteractorWindowLevel()
431 //-------------------------------------------------------------------
433 bool manualInteractorWindowLevel::OnMouseMove() // virtual
436 if (_stateWindowLevel==true)
439 wxVTKRenderWindowInteractor *wxVTKiren;
440 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
441 wxVTKiren->GetEventPosition( tmpPx , tmpPy );
442 int colorWin=_backWindow - 2*( _backPx - tmpPx );
443 int colorLev=_backLevel + 2*( _backPy - tmpPy );
462 vtkImageViewer2 *vtkimageviewer2;
463 vtkimageviewer2=_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2();
464 vtkimageviewer2->SetColorWindow(colorWin);
465 vtkimageviewer2->SetColorLevel(colorLev);
466 // vtkimageviewer2->Render();
471 //-------------------------------------------------------------------
473 bool manualInteractorWindowLevel::OnMiddleButtonDown() // virtual
475 if ((_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) &&
476 (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ){
478 _stateWindowLevel = true;
479 wxVTKRenderWindowInteractor *wxVTKiren;
480 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
481 wxVTKiren->GetEventPosition( _backPx , _backPy );
483 _backWindow = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow());
484 _backLevel = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel());
489 //-------------------------------------------------------------------
491 bool manualInteractorWindowLevel::OnMiddleButtonUp() // virtual
493 if (_stateWindowLevel==true)
495 _stateWindowLevel=false;
502 //---------------------------------------------------------------------------
503 //---------------------------------------------------------------------------
504 //---------------------------------------------------------------------------
506 vtkInteractorScrollZ::vtkInteractorScrollZ()
508 _stateFordware=false;
510 //---------------------------------------------------------------------------
511 vtkInteractorScrollZ::~vtkInteractorScrollZ()
514 //---------------------------------------------------------------------------
515 bool vtkInteractorScrollZ::OnRightButtonDown()
517 vtkRenderWindowInteractor *interactor = _vtkInteractorStyleBaseView->GetInteractor();
518 if ((interactor->GetControlKey()==0) && (interactor->GetShiftKey()==0) ){
519 _stateFordware = true;
520 _fordwareX = interactor->GetEventPosition()[0];
521 _fordwareY = interactor->GetEventPosition()[1];
522 _sliceZ = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetActualSlice();
526 //---------------------------------------------------------------------------
527 bool vtkInteractorScrollZ::OnRightButtonUp()
529 _stateFordware=false;
532 //---------------------------------------------------------------------------
533 bool vtkInteractorScrollZ::OnMouseMove ()
535 if (_stateFordware==true){
536 //int fx = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[0]; // JPRx
537 int fy = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[1];
538 int delta = (_fordwareY - fy)/3;
539 _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->SetActualSlice( _sliceZ + delta);
541 this->_vtkInteractorStyleBaseView->SetParent_refresh_waiting();
543 // wxCommandEvent newevent(wxEVT_COMMAND_MENU_SELECTED,12121);
544 // _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent);
546 //_wxvtk2Dbaseview->Refresh();
555 //---------------------------------------------------------------------------
556 //---------------------------------------------------------------------------
557 //---------------------------------------------------------------------------
559 vtkInteractorStyleBaseView::vtkInteractorStyleBaseView()
561 _refresh_waiting = false;
562 _parent_refresh_waiting = false;
563 _blockRefresh = false;
565 //---------------------------------------------------------------------------
566 vtkInteractorStyleBaseView::~vtkInteractorStyleBaseView()
569 //---------------------------------------------------------------------------
570 void vtkInteractorStyleBaseView::OnMouseMove() // virtual
572 CallLstInteractorStyleMaracas(3);
574 //---------------------------------------------------------------------------
575 void vtkInteractorStyleBaseView::OnLeftButtonDown() // virtual
577 CallLstInteractorStyleMaracas(4);
579 //---------------------------------------------------------------------------
580 void vtkInteractorStyleBaseView::OnLeftButtonUp() // virtual
582 CallLstInteractorStyleMaracas(5);
585 //---------------------------------------------------------------------------
586 void vtkInteractorStyleBaseView::OnLeftDClick() // virtual
588 CallLstInteractorStyleMaracas( 11 );
591 //---------------------------------------------------------------------------
592 void vtkInteractorStyleBaseView::OnMiddleButtonDown() // virtual
594 CallLstInteractorStyleMaracas(6);
596 //---------------------------------------------------------------------------
597 void vtkInteractorStyleBaseView::OnMiddleButtonUp() // virtual
599 CallLstInteractorStyleMaracas(7);
601 //---------------------------------------------------------------------------
602 void vtkInteractorStyleBaseView::OnMiddleDClick() // virtual
604 CallLstInteractorStyleMaracas( 13 );
607 //---------------------------------------------------------------------------
608 void vtkInteractorStyleBaseView::OnRightButtonDown() // virtual
610 CallLstInteractorStyleMaracas(1);
612 //---------------------------------------------------------------------------
613 void vtkInteractorStyleBaseView::OnRightButtonUp() // virtual
615 CallLstInteractorStyleMaracas(2);
617 //---------------------------------------------------------------------------
618 void vtkInteractorStyleBaseView::OnRightDClick() // virtual
620 CallLstInteractorStyleMaracas( 12 );
622 //---------------------------------------------------------------------------
623 void vtkInteractorStyleBaseView::OnMouseWheel() // virtual
625 CallLstInteractorStyleMaracas( 14 );
627 //---------------------------------------------------------------------------
628 void vtkInteractorStyleBaseView::AddInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas)
630 interactorStyleMaracas->SetVtkInteractorStyleBaseView(this);
631 _lstInteractorStyleMaracas.push_back(interactorStyleMaracas);
633 //---------------------------------------------------------------------------
634 void vtkInteractorStyleBaseView::RemoveInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas)
636 interactorStyleMaracas->RemoveVtkInteractorStyleBaseView();
637 int i, size = _lstInteractorStyleMaracas.size();
638 std::vector< InteractorStyleMaracas* >::iterator iter = _lstInteractorStyleMaracas.begin();
639 bool removed = false;
640 for (i=0; !removed && i<size; i++)
642 if ( _lstInteractorStyleMaracas[i] == interactorStyleMaracas )
644 _lstInteractorStyleMaracas.erase(iter);
650 //---------------------------------------------------------------------------
651 void vtkInteractorStyleBaseView::InsertInteractorStyleMaracas(int pos, InteractorStyleMaracas* interactorStyleMaracas)
653 interactorStyleMaracas->SetVtkInteractorStyleBaseView(this);
654 _lstInteractorStyleMaracas.insert(_lstInteractorStyleMaracas.begin()+pos,interactorStyleMaracas);
656 //---------------------------------------------------------------------------
657 void vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas(int type)
660 InteractorStyleMaracas *intStyMar;
662 int i,size=_lstInteractorStyleMaracas.size();
665 //FILE *ff = fopen("c:/temp/wxVtkBaseView_SceneManagerStadistics.txt","a+");
666 //fprintf(ff,"EED vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas \n" );
667 //for (i=0;i<size;i++)
669 //fprintf(ff," %p\n" , _lstInteractorStyleMaracas[i] );
677 intStyMar = _lstInteractorStyleMaracas[i];
678 if (intStyMar->GetActive()==true){
680 { // OnRightButtonDown
681 if (intStyMar->OnRightButtonDown()==false)
688 if (intStyMar->OnRightButtonUp()==false)
695 if (intStyMar->OnMouseMove()==false)
701 { // OnLeftButtonDown
702 if (intStyMar->OnLeftButtonDown()==false)
709 if (intStyMar->OnLeftButtonUp()==false)
715 { // OnMiddleButtonDown
716 if (intStyMar->OnMiddleButtonDown()==false)
722 { // OnMiddleButtonUp
723 if (intStyMar->OnMiddleButtonUp()==false)
729 { // OnMiddleButtonUp
730 if (intStyMar->OnChar()==false)
737 if (intStyMar->OnLeftDClick()==false)
744 if (intStyMar->OnRightDClick()==false)
751 if (intStyMar-> OnMiddleDClick()==false)
758 if (intStyMar->OnMouseWheel()==false)
768 //---------------------------------------------------------------------------
769 void vtkInteractorStyleBaseView::OnChar() // virtual
771 // char a=GetInteractor()->GetKeyCode();
772 CallLstInteractorStyleMaracas(10);
774 //---------------------------------------------------------------------------
775 void vtkInteractorStyleBaseView::TransformCoordinate(double &X, double &Y, double &Z)
777 vtkImageViewer2 *imageViewer = GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2();
779 imageViewer->GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z);
780 imageViewer->GetRenderer()->DisplayToWorld();
782 imageViewer->GetRenderer()->GetWorldPoint( fP );
791 GetWxVtk2DBaseView()->TransformCoordinate_spacing_ViewToModel(fP[0],fP[1],fP[2]);
797 //---------------------------------------------------------------------------
798 void vtkInteractorStyleBaseView::SetwxVtkBaseView(wxVtkBaseView *wxvtkbaseview)
800 _wxvtkbaseview = wxvtkbaseview;
802 //---------------------------------------------------------------------------
803 wxVtk2DBaseView* vtkInteractorStyleBaseView::GetWxVtk2DBaseView()
805 return (wxVtk2DBaseView*)_wxvtkbaseview;
807 //---------------------------------------------------------------------------
808 wxVtk3DBaseView* vtkInteractorStyleBaseView::GetWxVtk3DBaseView()
810 return (wxVtk3DBaseView*)_wxvtkbaseview;
812 //---------------------------------------------------------------------------
813 void vtkInteractorStyleBaseView::SetActiveAllInteractors(bool ok)
815 InteractorStyleMaracas *intStyMar;
816 int i,size=_lstInteractorStyleMaracas.size();
819 intStyMar = _lstInteractorStyleMaracas[i];
820 intStyMar->SetActive(ok);
824 //---------------------------------------------------------------------------
825 void vtkInteractorStyleBaseView::SetRefresh_waiting()
827 _refresh_waiting=true;
829 //---------------------------------------------------------------------------
830 bool vtkInteractorStyleBaseView::GetRefresh_waiting()
832 return _refresh_waiting;
834 //---------------------------------------------------------------------------
835 void vtkInteractorStyleBaseView::SetParent_refresh_waiting()
837 _parent_refresh_waiting=true;
839 //---------------------------------------------------------------------------
840 bool vtkInteractorStyleBaseView::GetParent_refresh_waiting()
842 return _parent_refresh_waiting;
844 //---------------------------------------------------------------------------
845 void vtkInteractorStyleBaseView::EvaluateToRefresh()
848 if ( _blockRefresh==false )
850 if ( (_refresh_waiting==true) && (_parent_refresh_waiting==false))
852 _refresh_waiting = false;
853 this->_wxvtkbaseview->Refresh();
855 if (_parent_refresh_waiting==true)
857 _parent_refresh_waiting = false;
858 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
859 this->_wxvtkbaseview->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
863 //---------------------------------------------------------------------------
864 void vtkInteractorStyleBaseView::BlockRefresh()
868 //---------------------------------------------------------------------------
869 void vtkInteractorStyleBaseView::UnBlockRefresh()
874 //---------------------------------------------------------------------------
875 //---------------------------------------------------------------------------
876 //---------------------------------------------------------------------------
880 //---------------------------------------------------------------------------
881 vtkInteractorStyleBaseView2D::vtkInteractorStyleBaseView2D()
883 _manualinteractorwindowlevel= new manualInteractorWindowLevel();
884 AddInteractorStyleMaracas( _manualinteractorwindowlevel );
886 _vtkInteractorScrollZ = new vtkInteractorScrollZ();
887 AddInteractorStyleMaracas(_vtkInteractorScrollZ);
890 //---------------------------------------------------------------------------
891 vtkInteractorStyleBaseView2D::~vtkInteractorStyleBaseView2D()
895 //---------------------------------------------------------------------------
896 void vtkInteractorStyleBaseView2D::OnRightButtonDown() // virtual
898 vtkInteractorStyleBaseView::OnRightButtonDown();
900 if ((GetInteractor()->GetControlKey()==1) && (GetInteractor()->GetShiftKey()==0) ){
901 this->vtkInteractorStyleImage::OnRightButtonDown();
906 //---------------------------------------------------------------------------
907 void vtkInteractorStyleBaseView2D::OnRightButtonUp() // virtual
909 vtkInteractorStyleBaseView::OnRightButtonUp();
910 this->vtkInteractorStyleImage::OnRightButtonUp();
912 //---------------------------------------------------------------------------
913 void vtkInteractorStyleBaseView2D::OnMouseMove () // virtual
915 vtkInteractorStyleBaseView::OnMouseMove();
916 this->vtkInteractorStyleImage::OnMouseMove();
918 //---------------------------------------------------------------------------
919 void vtkInteractorStyleBaseView2D::OnLeftButtonDown() // virtual
921 vtkInteractorStyleBaseView::OnLeftButtonDown();
923 if ((GetInteractor()->GetControlKey()==0) && (GetInteractor()->GetShiftKey()==1) )
925 this->vtkInteractorStyleImage::OnLeftButtonDown();
928 //---------------------------------------------------------------------------
929 void vtkInteractorStyleBaseView2D::OnLeftButtonUp () // virtual
931 vtkInteractorStyleBaseView::OnLeftButtonUp();
933 this->vtkInteractorStyleImage::OnLeftButtonUp();
935 //---------------------------------------------------------------------------
936 void vtkInteractorStyleBaseView2D::OnMiddleButtonDown () // virtual
938 vtkInteractorStyleBaseView::OnMiddleButtonDown();
940 if ((GetInteractor()->GetControlKey()==1) || (GetInteractor()->GetShiftKey()==1) )
942 this->vtkInteractorStyleImage::OnLeftButtonDown();
945 //---------------------------------------------------------------------------
946 void vtkInteractorStyleBaseView2D::OnMiddleButtonUp () // virtual
948 vtkInteractorStyleBaseView::OnMiddleButtonUp();
950 if ((GetInteractor()->GetControlKey()==1) || (GetInteractor()->GetShiftKey()==1) )
952 this->vtkInteractorStyleImage::OnLeftButtonUp();
958 //-------------------------------------------------------------------
959 //-------------------------------------------------------------------
960 //-------------------------------------------------------------------
963 //---------------------------------------------------------------------------
964 vtkInteractorStyleBaseView3D::vtkInteractorStyleBaseView3D(){
966 //---------------------------------------------------------------------------
967 vtkInteractorStyleBaseView3D::~vtkInteractorStyleBaseView3D(){
969 //---------------------------------------------------------------------------
970 void vtkInteractorStyleBaseView3D::OnRightButtonDown ()
972 vtkInteractorStyleBaseView::OnRightButtonDown();
975 if (GetInteractor()->GetControlKey()==1 ){
976 this->vtkInteractorStyleTrackballCamera::OnRightButtonDown();
979 this->FindPokedRenderer(this->Interactor->GetEventPosition()[0],
980 this->Interactor->GetEventPosition()[1]);
982 if (this->CurrentRenderer == NULL)
987 if (this->Interactor->GetControlKey()) {
992 //---------------------------------------------------------------------------
993 void vtkInteractorStyleBaseView3D::OnRightButtonUp ()
995 vtkInteractorStyleBaseView::OnRightButtonUp();
998 if (GetInteractor()->GetControlKey()==1 ){
999 this->vtkInteractorStyleTrackballCamera::OnRightButtonUp();
1004 switch (this->State)
1011 //---------------------------------------------------------------------------
1012 void vtkInteractorStyleBaseView3D::OnMouseMove ()
1014 vtkInteractorStyleBaseView::OnMouseMove();
1016 // this->vtkInteractorStyleTrackballCamera::OnMouseMove();
1018 // int x = this->Interactor->GetEventPosition()[0]; // JPRx
1019 // int y = this->Interactor->GetEventPosition()[1]; // JPRx
1022 // vtkRenderWindowInteractor *rwi = this->Interactor;
1024 // int lx = rwi->GetLastEventPosition()[0]; // JPRx
1025 // int ly = rwi->GetLastEventPosition()[1]; // JPRx
1026 // int dx = rwi->GetEventPosition()[0] ; // JPRx
1027 // int dy = rwi->GetEventPosition()[1] ; // JPRx
1030 switch (this->State)
1033 // this->FindPokedRenderer(x, y);
1035 // this->InvokeEvent(vtkCommand::InteractionEvent, NULL);
1039 // this->FindPokedRenderer(x, y);
1041 // this->InvokeEvent(vtkCommand::InteractionEvent, NULL);
1045 // this->FindPokedRenderer(x, y);
1047 // this->InvokeEvent(vtkCommand::InteractionEvent, NULL);
1051 // this->FindPokedRenderer(x, y);
1053 // this->InvokeEvent(vtkCommand::InteractionEvent, NULL);
1060 //---------------------------------------------------------------------------
1061 void vtkInteractorStyleBaseView3D::OnLeftButtonDown ()
1063 vtkInteractorStyleBaseView::OnLeftButtonDown();
1065 if (GetInteractor()->GetControlKey()==1 ){
1066 this->vtkInteractorStyleTrackballCamera::OnMiddleButtonDown();
1068 this->vtkInteractorStyleTrackballCamera::OnLeftButtonDown();
1073 this->FindPokedRenderer(this->Interactor->GetEventPosition()[0],
1074 this->Interactor->GetEventPosition()[1]);
1075 if (this->CurrentRenderer == NULL)
1080 if (this->Interactor->GetControlKey()) {
1083 this->StartRotate();
1087 if (this->Interactor->GetShiftKey())
1089 if (this->Interactor->GetControlKey())
1100 if (this->Interactor->GetControlKey())
1106 this->StartRotate();
1113 //---------------------------------------------------------------------------
1114 void vtkInteractorStyleBaseView3D::OnLeftButtonUp ()
1116 vtkInteractorStyleBaseView::OnLeftButtonUp();
1119 if (GetInteractor()->GetControlKey()==1 ){
1120 this->vtkInteractorStyleTrackballCamera::OnMiddleButtonUp();
1122 this->vtkInteractorStyleTrackballCamera::OnLeftButtonUp();
1125 switch (this->State)
1137 //---------------------------------------------------------------------------
1138 void vtkInteractorStyleBaseView3D::OnMiddleButtonDown ()
1140 vtkInteractorStyleBaseView::OnMiddleButtonDown();
1141 // this->vtkInteractorStyleTrackballCamera::OnMiddleButtonDown();
1143 //---------------------------------------------------------------------------
1144 void vtkInteractorStyleBaseView3D::OnMiddleButtonUp ()
1146 vtkInteractorStyleBaseView::OnMiddleButtonUp();
1148 // this->vtkInteractorStyleTrackballCamera::OnMiddleButtonUp();
1152 //-------------------------------------------------------------------
1153 //-------------------------------------------------------------------
1154 //-------------------------------------------------------------------
1156 vtkInfoTextImage::vtkInfoTextImage()
1158 _vtkText_WindowLevel = NULL;
1159 _vtkText_ColorLevel = NULL;
1160 _vtkText_position = NULL;
1161 _vtkText_pixelIntensity = NULL;
1162 _marimagedata = NULL;
1165 //-------------------------------------------------------------------
1167 vtkInfoTextImage::~vtkInfoTextImage()
1171 //-------------------------------------------------------------------
1173 void vtkInfoTextImage::Configure()
1175 _vtkText_WindowLevel = Create_Text_Label( 10 , 55 );
1176 _vtkText_ColorLevel = Create_Text_Label( 10 , 40 );
1177 _vtkText_position = Create_Text_Label( 10 , 25 );
1178 _vtkText_pixelIntensity = Create_Text_Label( 10 , 10 );
1182 //-------------------------------------------------------------------
1184 void vtkInfoTextImage::SetMarImageData(marImageData *marimagedata)
1186 _marimagedata=marimagedata;
1189 //-------------------------------------------------------------------
1191 void vtkInfoTextImage::SetWxVtk2DBaseView(wxVtk2DBaseView *wxvtk2Dbaseview)
1193 _wxvtk2Dbaseview=wxvtk2Dbaseview;
1196 //-------------------------------------------------------------------
1198 vtkTextActor *vtkInfoTextImage::Create_Text_Label(int px, int py )
1200 // Text Window Level
1201 vtkTextActor *textActor = vtkTextActor::New();
1202 textActor->SetDisplayPosition(px, py);
1203 textActor->SetInput("--");
1205 // Set coordinates to match the old vtkScaledTextActor default value
1206 textActor->GetPosition2Coordinate()->SetCoordinateSystemToNormalizedViewport();
1207 textActor->GetPosition2Coordinate()->SetValue( 0.2 , 0.2 );
1209 vtkTextProperty *tprop = textActor->GetTextProperty();
1210 tprop->SetFontSize(14);
1211 tprop->SetFontFamilyToArial();
1212 tprop->SetColor(1, 1, 0);
1213 _wxvtk2Dbaseview->GetRenderer()->AddActor2D(textActor);
1218 //-------------------------------------------------------------------
1220 void vtkInfoTextImage::PutWindowLevel()
1222 int value = (int)( _wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->GetWindow() );
1224 char resultText[50];
1226 strcpy(resultText,"w:");
1229 //ltoa ( (long)value , zTzxt , 10 );
1230 sprintf(zTzxt,"%d",value);
1232 strcat(resultText,zTzxt);
1233 _vtkText_WindowLevel -> SetInput(resultText);
1236 //-------------------------------------------------------------------
1238 void vtkInfoTextImage::PutColorLevel()
1240 int value = (int)(_wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->GetLevel());
1242 char resultText[50];
1244 strcpy(resultText,"c:");
1246 // itoa (value,zTzxt,10);
1247 sprintf(zTzxt,"%d",value);
1249 strcat(resultText,zTzxt);
1250 _vtkText_ColorLevel -> SetInput(resultText);
1253 //-------------------------------------------------------------------
1255 void vtkInfoTextImage::PutPosition(int xx,int yy, int zz)
1260 // _imagedata->GetSpacing(spa);
1261 // xx=xx*(1/spa[0]);
1262 // yy=yy*(1/spa[1]);
1266 char resultText[50];
1267 strcpy(resultText,"p: ");
1268 // itoa ((int)xx,zTzxt,10);
1269 sprintf(zTzxt,"%d",xx);
1271 strcat(resultText,zTzxt);
1272 strcat(resultText," , ");
1274 // itoa ((int)yy,zTzxt,10);
1275 sprintf(zTzxt,"%d",yy);
1277 strcat(resultText,zTzxt);
1278 strcat(resultText," , ");
1280 // itoa ((int)zz,zTzxt,10);
1281 sprintf(zTzxt,"%d",zz);
1283 strcat(resultText,zTzxt);
1287 int nX = _marimagedata->GetXOriginal(xx);
1288 int nY = _marimagedata->GetYOriginal(yy);
1289 int nZ = _marimagedata->GetZOriginal(zz);
1291 strcat(resultText," (");
1292 // ltoa ((int)nX,zTzxt,10);
1293 sprintf(zTzxt,"%d",nX);
1295 strcat(resultText,zTzxt);
1296 strcat(resultText,",");
1298 // ltoa ((int)nY,zTzxt,10);
1299 sprintf(zTzxt,"%d",nY);
1301 strcat(resultText,zTzxt);
1302 strcat(resultText,",");
1304 // ltoa ((int)nZ,zTzxt,10);
1305 sprintf(zTzxt,"%d",nZ);
1307 strcat(resultText,zTzxt);
1308 strcat(resultText,")");
1313 _vtkText_position -> SetInput(resultText);
1316 //-------------------------------------------------------------------
1318 void vtkInfoTextImage::PutPixelIntensity(int xx, int yy, int zz)
1326 vtkImageData *imagedata = _marimagedata->GetImageData();
1327 imagedata->GetDimensions(dim);
1328 imagedata->GetSpacing(spa);
1331 // xx=xx*(1/spa[0]);
1332 // yy=yy*(1/spa[1]);
1335 if ( (xx<0) || (xx>=dim[0]) || (yy<0) || (yy>=dim[1]) || (zz<0) || (zz>=dim[2]) )
1342 char resultText[50];
1343 strcpy(resultText,"NG: ");
1345 unsigned short *pOrg=(unsigned short*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz);
1346 // itoa (*pOrg,zTzxt,10);
1348 sprintf(zTzxt,"%d",tmp);
1351 strcpy(zTzxt,"---");
1353 strcat(resultText,zTzxt);
1354 _vtkText_pixelIntensity -> SetInput(resultText);
1359 //-------------------------------------------------------------------
1360 //-------------------------------------------------------------------
1361 //-------------------------------------------------------------------
1363 vtkInfoTextImageInteractor::vtkInfoTextImageInteractor()
1367 //-------------------------------------------------------------------
1368 vtkInfoTextImageInteractor::~vtkInfoTextImageInteractor()
1372 //-------------------------------------------------------------------
1374 void vtkInfoTextImageInteractor::SetModelVtkInfoTextImage(vtkInfoTextImage *vtkinfotextimage)
1376 _vtkinfotextimage = vtkinfotextimage;
1379 //-------------------------------------------------------------------
1380 bool vtkInfoTextImageInteractor::OnMouseMove()
1383 wxVTKRenderWindowInteractor *wxVTKiren;
1384 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
1385 wxVTKiren->GetEventPosition(X,Y);
1387 int z = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetVtkBaseData()->GetZ());
1388 double xx=X,yy=Y,zz=z;
1389 _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->TransfromeCoordScreenToWorld(xx,yy,zz);
1391 GetVtkInfoTextImage()->PutWindowLevel();
1392 GetVtkInfoTextImage()->PutColorLevel();
1393 GetVtkInfoTextImage()->PutPosition( (int)xx , (int)yy , (int)zz );
1394 GetVtkInfoTextImage()->PutPixelIntensity( (int)xx , (int)yy , (int)zz );
1396 this->_vtkInteractorStyleBaseView->SetRefresh_waiting();
1400 //-------------------------------------------------------------------
1401 vtkInfoTextImage *vtkInfoTextImageInteractor::GetVtkInfoTextImage()
1403 return _vtkinfotextimage;
1407 //-------------------------------------------------------------------
1408 //-------------------------------------------------------------------
1409 //-------------------------------------------------------------------
1412 wxVtk2DBaseView::wxVtk2DBaseView(wxWindow *parent)
1413 :wxVtkBaseView(parent)
1415 _imageViewer2XYZ = NULL;
1416 _vtkIinfoTextImage = NULL;
1419 //-------------------------------------------------------------------
1420 wxVtk2DBaseView::~wxVtk2DBaseView()
1422 if (_imageViewer2XYZ!=NULL) {
1423 delete _imageViewer2XYZ;
1426 if (_imageViewer2XYZ!=NULL) {
1427 delete _vtkIinfoTextImage;
1432 //-------------------------------------------------------------------
1433 void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double &Y, double &Z) // virtual
1437 // GetVtkBaseData()->GetImageData()->GetSpacing(spc);
1438 this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
1446 //-------------------------------------------------------------------
1447 void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &Y, double &Z) // virtual
1451 // GetVtkBaseData()->GetImageData()->GetSpacing(spc);
1452 this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc);
1460 //-------------------------------------------------------------------
1461 void wxVtk2DBaseView::ResetView()
1464 int x1,x2,y1,y2,z1,z2;
1465 wxVtkBaseView::Configure();
1467 wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
1468 vtkImageData *imageData = GetVtkBaseData()->GetImageData();
1469 imageData->UpdateInformation();
1470 imageData->SetUpdateExtent( imageData->GetWholeExtent());
1471 imageData->Update();
1473 _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData );
1474 imageData->GetSpacing (spx,spy,spz);
1475 imageData->GetExtent (x1,x2,y1,y2,z1,z2);
1476 _imageViewer2XYZ -> SetExtentDimension(x1,x2,y1,y2,z1,z2);
1477 _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren );
1479 printf("EED wxVtk2DBaseView::ResetView podemos 01\n ");
1480 _imageViewer2XYZ->GetVtkImageViewer2()->Render();
1481 printf("EED wxVtk2DBaseView::ResetView podemos 02\n ");
1483 SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
1488 //-------------------------------------------------------------------
1489 void wxVtk2DBaseView::Configure(bool okimage)
1492 int x1,x2,y1,y2,z1,z2;
1493 wxVtkBaseView::Configure();
1496 if (_imageViewer2XYZ==NULL)
1498 _imageViewer2XYZ = new vtkImageViewer2_XYZ();
1499 wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
1500 _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren );
1501 SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
1505 vtkImageData *imageData = GetVtkBaseData()->GetMarImageData()->GetImageData();
1506 if (imageData!=NULL){
1507 imageData->UpdateInformation();
1508 imageData->SetUpdateExtent( imageData->GetWholeExtent());
1509 imageData->Update();
1511 imageData->GetSpacing (spx,spy,spz);
1512 imageData->GetExtent (x1,x2,y1,y2,z1,z2);
1515 _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData );
1516 _imageViewer2XYZ->SetExtentDimension(x1,x2,y1,y2,z1,z2);
1518 imageData->GetScalarRange(range);
1519 if (range[1]<20000){
1520 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( (range[1]-range[0])/2 );
1521 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( (range[1]+range[0])/4 );
1523 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( 1000 );
1524 _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( 500 );
1526 // EED 31 Janvier 2007
1527 //vtkImageActor *vtkimageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor ();
1528 //vtkimageactor->InterpolateOff ();
1529 //vtkLookupTable * _collookup = vtkLookupTable::New( );
1530 //_collookup->SetNumberOfColors( 256 );
1531 //_collookup->SetTableRange( 0 , 255 );
1532 //_collookup->Build( );
1533 //_collookup->SetTableValue( 0 , 1 , 0 , 0 , 1 );
1534 //_collookup->SetTableValue(128 , 0 , 0 , 1 , 1 );
1535 //_collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
1536 //_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel ()->SetLookupTable(_collookup );
1540 // SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() );
1543 vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2();
1544 vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera();
1545 camera->SetViewUp ( spx*0 , -spy*1 , spz*0 );
1546 camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , -spz*10000 );
1547 camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 );
1548 camera->SetClippingRange( 0.01 , 1000000 );
1549 camera->ComputeViewPlaneNormal();
1550 camera->SetParallelScale( spx*(x2-x1)/3.0 );
1552 // text information over the graphic window
1553 _vtkIinfoTextImage = new vtkInfoTextImage();
1554 _vtkIinfoTextImageInteractor = new vtkInfoTextImageInteractor();
1555 _vtkIinfoTextImage->SetWxVtk2DBaseView(this);
1556 _vtkIinfoTextImage->SetMarImageData( GetVtkBaseData()->GetMarImageData() );
1557 _vtkIinfoTextImageInteractor->SetModelVtkInfoTextImage(_vtkIinfoTextImage);
1558 _vtkIinfoTextImage->Configure();
1559 this->GetInteractorStyleBaseView()->AddInteractorStyleMaracas(_vtkIinfoTextImageInteractor);
1565 //-------------------------------------------------------------------
1567 int wxVtk2DBaseView::GetActualSlice() // virtual
1569 return (int)(_vtkbasedata->GetZ());
1572 //-------------------------------------------------------------------
1573 void wxVtk2DBaseView::SetActualSlice(int slice) // Virtual
1575 _vtkbasedata->SetZ(slice);
1578 //-------------------------------------------------------------------
1580 vtkBaseData *wxVtk2DBaseView::GetVtkBaseData()
1582 return _vtkbasedata;
1585 //-------------------------------------------------------------------
1587 void wxVtk2DBaseView::SetVtkBaseData(vtkBaseData *vtkbasedata)
1589 _vtkbasedata=vtkbasedata;
1592 //-------------------------------------------------------------------
1594 void wxVtk2DBaseView::Refresh()
1596 int z = (int)(GetVtkBaseData()->GetZ());
1597 _imageViewer2XYZ->SetZSlice( z );
1599 wxVtkBaseView::Refresh();
1602 //-------------------------------------------------------------------
1604 void wxVtk2DBaseView::SetInteractorStyleImage(vtkInteractorStyleBaseView *interactorstylebaseview)
1606 SetInteractorStyleBaseView(interactorstylebaseview);
1608 wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor();
1609 interactorstylebaseview->SetInteractor ( iren );
1610 iren->SetInteractorStyle(interactorstylebaseview);
1611 interactorstylebaseview->SetwxVtkBaseView(this);
1613 vtkMaracasImageViewer2Callback *cbk = vtkMaracasImageViewer2Callback::New();
1614 cbk->IV = _imageViewer2XYZ->GetVtkImageViewer2();
1615 interactorstylebaseview->AddObserver( vtkCommand::WindowLevelEvent, cbk );
1616 interactorstylebaseview->AddObserver( vtkCommand::StartWindowLevelEvent, cbk );
1617 interactorstylebaseview->AddObserver( vtkCommand::ResetWindowLevelEvent, cbk );
1621 //---------------------------------------------------------------------------
1622 vtkRenderer* wxVtk2DBaseView::GetRenderer() // virtual
1624 return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer();
1626 //---------------------------------------------------------------------------
1627 vtkRenderWindow* wxVtk2DBaseView::GetRenWin() // virtual
1629 return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderWindow();
1632 //-------------------------------------------------------------------
1634 void wxVtk2DBaseView::GetSpacing(double spc[3]) // virtual
1636 vtkImageData *imageData = GetVtkBaseData()->GetImageData();
1637 imageData->GetSpacing(spc);
1640 //-------------------------------------------------------------------
1641 //-------------------------------------------------------------------
1642 //-------------------------------------------------------------------
1647 wxVtk3DBaseView::wxVtk3DBaseView(wxWindow *parent)
1648 :wxVtkBaseView( parent )
1655 //-------------------------------------------------------------------
1656 wxVtk3DBaseView::~wxVtk3DBaseView()
1658 if (_aCamera!=NULL) { _aCamera -> Delete(); }
1659 if (_aRenderer!=NULL) { _aRenderer -> Delete(); }
1660 if (_renWin!=NULL) { _renWin -> Delete(); }
1662 //-------------------------------------------------------------------
1663 vtkCamera* wxVtk3DBaseView::GetCamera()
1667 //-------------------------------------------------------------------
1668 vtkRenderer* wxVtk3DBaseView::GetRenderer() // virtual
1672 //-------------------------------------------------------------------
1673 vtkRenderWindow* wxVtk3DBaseView::GetRenWin() // virtual
1677 //-------------------------------------------------------------------
1678 void wxVtk3DBaseView::Refresh()
1680 // _renWin->Render();
1681 vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor();
1682 vri->vtkRenderWindowInteractor::Render();
1684 //-------------------------------------------------------------------
1685 void wxVtk3DBaseView::Configure()
1687 if (_configure==false)
1690 wxVtkBaseView::Configure();
1691 _aRenderer = vtkRenderer::New();
1692 _renWin = vtkRenderWindow::New();
1693 _renWin->AddRenderer(_aRenderer);
1696 // _renWin->SetStereoCapableWindow(1);
1697 // // //renderwindow->SetStereoTypeToCrystalEyes();
1698 // _renWin->SetStereoTypeToRedBlue();
1699 // _renWin->SetStereoRender(1);
1701 GetWxVTKRenderWindowInteractor()->SetRenderWindow(_renWin);
1705 // vtkInteractorStyle3DMaracas *interactorStyle3DMaracas = vtkInteractorStyle3DMaracas::New();
1706 vtkInteractorStyleBaseView3D *interactorStyleBaseView3D = vtkInteractorStyleBaseView3D::New();
1708 SetInteractorStyleBaseView( interactorStyleBaseView3D );
1709 interactorStyleBaseView3D->SetInteractor ( GetWxVTKRenderWindowInteractor() );
1710 GetWxVTKRenderWindowInteractor()->SetInteractorStyle( interactorStyleBaseView3D );
1711 interactorStyleBaseView3D->SetwxVtkBaseView(this);
1715 vtkInteractorStyleSwitch *iss = dynamic_cast<vtkInteractorStyleSwitch*>(_iren->GetInteractorStyle());
1716 iss->SetCurrentStyleToTrackballCamera();
1719 // It is convenient to create an initial view of the data. The
1720 // FocalPoint and Position form a vector direction. Later on
1721 // (ResetCamera() method) this vector is used to position the camera
1722 // to look at the data in this direction.
1723 _aCamera = vtkCamera::New();
1724 _aCamera->SetViewUp (0, 0, -1);
1725 _aCamera->SetPosition (0, 1, 0);
1726 _aCamera->SetFocalPoint (0, 0, 0);
1727 _aCamera->ComputeViewPlaneNormal();
1730 //-------------------------------------------------------------------
1732 void wxVtk3DBaseView::GetSpacing(double spc[3])