X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxVtkBaseView.cxx;h=eb454c97a37b72c888c3602cf80790fc1277e944;hb=1484229c7f3dab0bc65f08edc2e8d477f92424ff;hp=5fe48b74d73a43d6e68923a6edc5425df8252c54;hpb=3fdde2fc9525d85df4fcdd49dab89ab19266cf84;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkBaseView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkBaseView.cxx index 5fe48b7..eb454c9 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkBaseView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxVtkBaseView.cxx @@ -1,171 +1,38 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + + + +//#include "vtkInteractorStyleBaseView.h" #include "wxVtkBaseView.h" +#include "wxVtk2DBaseView.h" +#include "wxVTKRenderWindowInteractorPlus.h" -vtkStandardNewMacro(vtkInteractorStyleBaseView); -vtkStandardNewMacro(vtkInteractorStyleBaseView2D); -vtkStandardNewMacro(vtkInteractorStyleBaseView3D); - -//------------------------------------------------------------------- -//------------------------------------------------------------------- -//------------------------------------------------------------------- -vtkImageViewer2_XYZ::vtkImageViewer2_XYZ() -{ - _vtkimageviewer2= vtkImageViewer2::New(); -} -//------------------------------------------------------------------- -vtkImageViewer2_XYZ::~vtkImageViewer2_XYZ() -{ - _vtkimageviewer2->Delete(); -} -//------------------------------------------------------------------- -void vtkImageViewer2_XYZ::SetExtentDimension(int x1,int x2, - int y1,int y2, - int z1,int z2) -{ - _x1=x1; - _x2=x2; - _y1=y1; - _y2=y2; - _z1=z1; - _z2=z2; -} -//------------------------------------------------------------------- -void vtkImageViewer2_XYZ::SetXSlice(int slice) -{ - vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); - imageActor->SetDisplayExtent(slice, slice, _y1, _y2, _z1, _z2 ); -} -//------------------------------------------------------------------- -void vtkImageViewer2_XYZ::SetYSlice(int slice) -{ - vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); - imageActor->SetDisplayExtent(_x1, _x2, slice, slice, _z1, _z2 ); -} -//------------------------------------------------------------------- -void vtkImageViewer2_XYZ::SetZSlice(int slice) -{ -#if (VTK_MAJOR_VERSION >= 5) -// _vtkimageviewer2->SetSlice( slice ); - vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); - imageActor->SetDisplayExtent(_x1, _x2, _y1, _y2, slice, slice ); -#else - _vtkimageviewer2->SetZSlice( slice ); -#endif - - -} -//------------------------------------------------------------------- -int vtkImageViewer2_XYZ::GetXSlice() -{ - vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); - return imageActor->GetDisplayExtent()[0]; -} -//------------------------------------------------------------------- -int vtkImageViewer2_XYZ::GetYSlice() -{ - vtkImageActor *imageActor = _vtkimageviewer2->GetImageActor(); - return imageActor->GetDisplayExtent()[2]; -} -//------------------------------------------------------------------- -int vtkImageViewer2_XYZ::GetZSlice() -{ - - int result; -#if (VTK_MAJOR_VERSION >= 5) - result= _vtkimageviewer2->GetSlice( ); -#else - result= _vtkimageviewer2->GetZSlice( ); -#endif - - - return result; -} -//------------------------------------------------------------------- -vtkImageViewer2 *vtkImageViewer2_XYZ::GetVtkImageViewer2() -{ - return _vtkimageviewer2; -} - - -//------------------------------------------------------------------- -//------------------------------------------------------------------- -//------------------------------------------------------------------- - - - -BEGIN_EVENT_TABLE( wxVTKRenderWindowInteractorPlus, wxVTKRenderWindowInteractor ) - EVT_LEFT_DCLICK( wxVTKRenderWindowInteractorPlus::OnLeftDClick ) - EVT_RIGHT_DCLICK( wxVTKRenderWindowInteractorPlus::OnRightDClick ) - EVT_MIDDLE_DCLICK( wxVTKRenderWindowInteractorPlus::OnMiddleDClick ) - EVT_MOUSEWHEEL( wxVTKRenderWindowInteractorPlus::OnMouseWheel ) -END_EVENT_TABLE( ); - -//------------------------------------------------------------------- -wxVTKRenderWindowInteractorPlus::wxVTKRenderWindowInteractorPlus() -: wxVTKRenderWindowInteractor() -{ -} - - -//------------------------------------------------------------------- -wxVTKRenderWindowInteractorPlus::wxVTKRenderWindowInteractorPlus(wxWindow *parent, wxVtkBaseView *wxvtkbaseview) -: wxVTKRenderWindowInteractor(parent, -1) -{ - _wxvtkbaseview = wxvtkbaseview; -} - -//------------------------------------------------------------------- -wxVTKRenderWindowInteractorPlus::~wxVTKRenderWindowInteractorPlus() -{ -} - -//--------------------------------------------------------------------------- -wxVTKRenderWindowInteractorPlus * wxVTKRenderWindowInteractorPlus::New() -{ - // we don't make use of the objectfactory, because we're not registered - return new wxVTKRenderWindowInteractorPlus; -} - -//------------------------------------------------------------------- -void wxVTKRenderWindowInteractorPlus::OnLeftDClick( wxMouseEvent& event ) -{ - _wxvtkbaseview->GetInteractorStyleBaseView()->OnLeftDClick(); -} -//------------------------------------------------------------------- -void wxVTKRenderWindowInteractorPlus::OnRightDClick( wxMouseEvent& event ) -{ - _wxvtkbaseview->GetInteractorStyleBaseView()->OnRightDClick(); -} -//------------------------------------------------------------------- -void wxVTKRenderWindowInteractorPlus::OnMiddleDClick( wxMouseEvent& event ) -{ - _wxvtkbaseview->GetInteractorStyleBaseView()->OnMiddleDClick(); -} -//------------------------------------------------------------------- -void wxVTKRenderWindowInteractorPlus::OnMouseWheel( wxMouseEvent& event ) -{ - _wxvtkbaseview->GetInteractorStyleBaseView()->OnMouseWheel(); -} - - - -//------------------------------------------------------------------- -//------------------------------------------------------------------- -//------------------------------------------------------------------- wxVtkBaseView::wxVtkBaseView() { _parent = NULL; @@ -178,22 +45,25 @@ wxVtkBaseView::wxVtkBaseView() wxVtkBaseView::wxVtkBaseView(wxWindow *parent) { _parent = parent; - _iren = new wxVTKRenderWindowInteractorPlus(_parent,this); + _iren = (wxVTKRenderWindowInteractor*)new wxVTKRenderWindowInteractorPlus(_parent,this); // _iren->UseCaptureMouseOn(); // _iren = new wxVTKRenderWindowInteractor(_parent,-1); _interactorStyle = NULL; - - } //------------------------------------------------------------------- wxVtkBaseView::~wxVtkBaseView() { - // _iren -> Delete(); + _iren -> Delete(); + //_iren=NULL; } //------------------------------------------------------------------- -wxVTKRenderWindowInteractor* wxVtkBaseView::GetWxVTKRenderWindowInteractor() +wxVTKRenderWindowInteractor* wxVtkBaseView::GetWxVTKRenderWindowInteractor() throw (char*) { + + if(_iren==NULL){ + throw "wxVtkBaseView::GetWxVTKRenderWindowInteractor() _iren wxVTKRenderWindowInteractorPlus =NULL"; + } return _iren; } //------------------------------------------------------------------- @@ -204,26 +74,28 @@ void wxVtkBaseView::Configure() // virtual void wxVtkBaseView::Refresh() // virtual { // EED 10 Oct 2007 - #if defined(WIN32) - _iren->Refresh(false); + _iren->Refresh(true); +// EED 27 sept 2016 + vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor(); + vri->vtkRenderWindowInteractor::Render(); #else - _iren->Render(); +//EED 01Avril2009 +// _iren->Render(); + vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor(); + vri->vtkRenderWindowInteractor::Render(); //_iren->Refresh(); #endif - } //------------------------------------------------------------------- void wxVtkBaseView::RefreshView() // virtual { // EED 10 Oct 2007 - #if defined(WIN32) GetRenWin()->Render(); #else //GetRenWin()->Render(); #endif - } //--------------------------------------------------------------------------- vtkRenderer* wxVtkBaseView::GetRenderer() // virtual @@ -238,8 +110,8 @@ vtkRenderWindow* wxVtkBaseView::GetRenWin() // virtual //---------------------------------------------------------------------------- -void wxVtkBaseView::TransfromeCoordScreenToWorld(double &X, double &Y, double &Z, int type) // virtual -{ +void wxVtkBaseView::TransCoordScreenToWorld(double &X, double &Y, double &Z, int type) +{ GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z); GetRenderer()->DisplayToWorld(); double fP[4]; @@ -250,8 +122,46 @@ void wxVtkBaseView::TransfromeCoordScreenToWorld(double &X, double &Y, double &Z fP[2] /= fP[3]; } + if (type!=0) + { + X=fP[0]; + } + if (type!=1) + { + Y=fP[1]; + } + if (type!=2) + { + Z=fP[2]; + } +} +//---------------------------------------------------------------------------- + +void wxVtkBaseView::TransFromCoordScreenToWorld(double &X, double &Y, double &Z, bool keepNormalDirection, int type) //virtual //keepNormalDirection=false, type=2 +{ + double xx = X; + double yy = Y; + double zz = Z; + + //RaC 03-2010 + TransCoordScreenToWorld(xx,yy,zz,type); + + X = xx; + Y = yy; + Z=zz; + // EEDx5 - this->GetInteractorStyleBaseView()->GetWxVtk2DBaseView()->TransformCoordinate_spacing_ViewToModel( fP[0] , fP[1] , fP[2] ); + //JCP 13/05/2009 + vtkInteractorStyleBaseView* interactorstyle = (vtkInteractorStyleBaseView*)this->GetInteractorStyleBaseView(); + wxVtk2DBaseView* baseview = (wxVtk2DBaseView*)interactorstyle->GetWxVtk2DBaseView(); + + double fP[3]; + fP[0] = X; + fP[1] = Y; + fP[2] = Z; + + baseview->TransformCoordinate_spacing_ViewToModel( fP[0] , fP[1] , fP[2] ); + //JCP 13/05/2009 if (type!=0) { @@ -268,15 +178,20 @@ void wxVtkBaseView::TransfromeCoordScreenToWorld(double &X, double &Y, double &Z } //--------------------------------------------------------------------------- - +/* JCP 14/05/09 vtkInteractorStyleBaseView* wxVtkBaseView::GetInteractorStyleBaseView() { return _interactorStyle; } +*/ +vtkInteractorStyleImage* wxVtkBaseView::GetInteractorStyleBaseView() +{ + return _interactorStyle; +} //--------------------------------------------------------------------------- -void wxVtkBaseView::SetInteractorStyleBaseView( vtkInteractorStyleBaseView* interactorStyle) +void wxVtkBaseView::SetInteractorStyleBaseView( vtkInteractorStyleImage* interactorStyle) { _interactorStyle = interactorStyle; } @@ -292,1446 +207,28 @@ void wxVtkBaseView::GetSpacing(double spc[3]) // virtual //--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- - -InteractorStyleMaracas::InteractorStyleMaracas() -{ - _active = true; - _vtkInteractorStyleBaseView = NULL; -} -//--------------------------------------------------------------------------- -InteractorStyleMaracas::~InteractorStyleMaracas() -{ -} - -// ---------------------------------------------------------------------------- -InteractorStyleMaracas * InteractorStyleMaracas :: Clone() // virtual -{ - InteractorStyleMaracas * clone = new InteractorStyleMaracas(); - CopyAttributesTo(clone); - return clone; -} - -// --------------------------------------------------------------------------- - -void InteractorStyleMaracas::CopyAttributesTo( InteractorStyleMaracas * cloneObject) -{ - // Fathers object - //::CopyAttributesTo(cloneObject); - - cloneObject->SetActive( this->GetActive() ); -} - - -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnChar() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnMouseMove() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnLeftButtonDown() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnLeftButtonUp() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnLeftDClick() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnMiddleButtonDown() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnMiddleButtonUp() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnMiddleDClick() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnRightButtonDown() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnRightButtonUp() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnRightDClick() -{ - return true; -} -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::OnMouseWheel() -{ - return true; -} - -//--------------------------------------------------------------------------- -void InteractorStyleMaracas::SetVtkInteractorStyleBaseView(vtkInteractorStyleBaseView* vtkInteractorStyleBaseView) -{ - _vtkInteractorStyleBaseView = vtkInteractorStyleBaseView; -} - -//--------------------------------------------------------------------------- -void InteractorStyleMaracas::RemoveVtkInteractorStyleBaseView() -{ - _vtkInteractorStyleBaseView = NULL; -} -//--------------------------------------------------------------------------- -void InteractorStyleMaracas::SetActive(bool active) +int wxVtkBaseView::GetDirection() // virtual { - _active = active; + return -1; } -//--------------------------------------------------------------------------- -bool InteractorStyleMaracas::GetActive() -{ - return _active; -} - - -//------------------------------------------------------------------- //------------------------------------------------------------------- -//------------------------------------------------------------------- - -manualInteractorWindowLevel::manualInteractorWindowLevel() +vtkBaseData *wxVtkBaseView::GetVtkBaseData() { - _stateWindowLevel = false; - _backPx = 0; - _backPy = 0; - _backWindow = -1; - _backLevel = -1; + return _vtkbasedata; } //------------------------------------------------------------------- - -manualInteractorWindowLevel::~manualInteractorWindowLevel() +void wxVtkBaseView::SetVtkBaseData(vtkBaseData *vtkbasedata) { + _vtkbasedata=vtkbasedata; } -//------------------------------------------------------------------- - -bool manualInteractorWindowLevel::OnMouseMove() // virtual -{ - - if (_stateWindowLevel==true) - { - int tmpPx,tmpPy; - wxVTKRenderWindowInteractor *wxVTKiren; - wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor(); - wxVTKiren->GetEventPosition( tmpPx , tmpPy ); - int colorWin=_backWindow - 2*( _backPx - tmpPx ); - int colorLev=_backLevel + 2*( _backPy - tmpPy ); - - if (colorWin<0) - { - colorWin=0; - } - if (colorWin>100000) - { - colorWin=100000; - } - if (colorLev<0) - { - colorLev=0; - } - if (colorLev>100000) - { - colorLev=100000; - } - vtkImageViewer2 *vtkimageviewer2; - vtkimageviewer2=_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2(); - vtkimageviewer2->SetColorWindow(colorWin); - vtkimageviewer2->SetColorLevel(colorLev); -// vtkimageviewer2->Render(); - } - return true; -} //------------------------------------------------------------------- - -bool manualInteractorWindowLevel::OnMiddleButtonDown() // virtual -{ - if ((_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) && - (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ){ - - _stateWindowLevel = true; - wxVTKRenderWindowInteractor *wxVTKiren; - wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor(); - wxVTKiren->GetEventPosition( _backPx , _backPy ); - - _backWindow = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow()); - _backLevel = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel()); - } - return true; -} - +//------------------------------------------------------------------- //------------------------------------------------------------------- -bool manualInteractorWindowLevel::OnMiddleButtonUp() // virtual -{ - if (_stateWindowLevel==true) - { - _stateWindowLevel=false; - } - return true; -} - - - -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- - -vtkInteractorScrollZ::vtkInteractorScrollZ() -{ - _stateFordware=false; -} -//--------------------------------------------------------------------------- -vtkInteractorScrollZ::~vtkInteractorScrollZ() -{ -} -//--------------------------------------------------------------------------- -bool vtkInteractorScrollZ::OnRightButtonDown() -{ - vtkRenderWindowInteractor *interactor = _vtkInteractorStyleBaseView->GetInteractor(); - if ((interactor->GetControlKey()==0) && (interactor->GetShiftKey()==0) ){ - _stateFordware = true; - _fordwareX = interactor->GetEventPosition()[0]; - _fordwareY = interactor->GetEventPosition()[1]; - _sliceZ = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetActualSlice(); - } - return true; -} -//--------------------------------------------------------------------------- -bool vtkInteractorScrollZ::OnRightButtonUp() -{ - _stateFordware=false; - return true; -} -//--------------------------------------------------------------------------- -bool vtkInteractorScrollZ::OnMouseMove () -{ - if (_stateFordware==true){ - //int fx = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[0]; - int fy = _vtkInteractorStyleBaseView->GetInteractor()->GetEventPosition()[1]; - int delta = (_fordwareY - fy)/3; - _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->SetActualSlice( _sliceZ + delta); - - this->_vtkInteractorStyleBaseView->SetParent_refresh_waiting(); - - // wxCommandEvent newevent(wxEVT_COMMAND_MENU_SELECTED,12121); - // _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent); - - //_wxvtk2Dbaseview->Refresh(); - } - return true; -} - - - - - -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -vtkInteractorStyleBaseView::vtkInteractorStyleBaseView() -{ - _refresh_waiting = false; - _parent_refresh_waiting = false; - _blockRefresh = false; -} -//--------------------------------------------------------------------------- -vtkInteractorStyleBaseView::~vtkInteractorStyleBaseView() -{ -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnMouseMove() // virtual -{ - CallLstInteractorStyleMaracas(3); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnLeftButtonDown() // virtual -{ - CallLstInteractorStyleMaracas(4); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnLeftButtonUp() // virtual -{ - CallLstInteractorStyleMaracas(5); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnLeftDClick() // virtual -{ - CallLstInteractorStyleMaracas( 11 ); -} - -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnMiddleButtonDown() // virtual -{ - CallLstInteractorStyleMaracas(6); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnMiddleButtonUp() // virtual -{ - CallLstInteractorStyleMaracas(7); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnMiddleDClick() // virtual -{ - CallLstInteractorStyleMaracas( 13 ); -} - -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnRightButtonDown() // virtual -{ - CallLstInteractorStyleMaracas(1); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnRightButtonUp() // virtual -{ - CallLstInteractorStyleMaracas(2); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnRightDClick() // virtual -{ - CallLstInteractorStyleMaracas( 12 ); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnMouseWheel() // virtual -{ - CallLstInteractorStyleMaracas( 14 ); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::AddInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas) -{ - interactorStyleMaracas->SetVtkInteractorStyleBaseView(this); - _lstInteractorStyleMaracas.push_back(interactorStyleMaracas); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::RemoveInteractorStyleMaracas(InteractorStyleMaracas* interactorStyleMaracas) -{ - interactorStyleMaracas->RemoveVtkInteractorStyleBaseView(); - int i, size = _lstInteractorStyleMaracas.size(); - std::vector< InteractorStyleMaracas* >::iterator iter = _lstInteractorStyleMaracas.begin(); - bool removed = false; - for (i=0; !removed && iSetVtkInteractorStyleBaseView(this); - _lstInteractorStyleMaracas.insert(_lstInteractorStyleMaracas.begin()+pos,interactorStyleMaracas); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas(int type) -{ - - InteractorStyleMaracas *intStyMar; - - int i,size=_lstInteractorStyleMaracas.size(); - -//EED Borrame -//FILE *ff = fopen("c:/temp/wxVtkBaseView_SceneManagerStadistics.txt","a+"); -//fprintf(ff,"EED vtkInteractorStyleBaseView::CallLstInteractorStyleMaracas \n" ); -//for (i=0;iGetActive()==true){ - if (type ==1) - { // OnRightButtonDown - if (intStyMar->OnRightButtonDown()==false) - { - i=size; - } - } - if (type ==2) - { // OnRightButtonUp - if (intStyMar->OnRightButtonUp()==false) - { - i=size; - } - } - if (type==3) - { // OnMouseMouve - if (intStyMar->OnMouseMove()==false) - { - i=size; - } - } - if (type==4) - { // OnLeftButtonDown - if (intStyMar->OnLeftButtonDown()==false) - { - i=size; - } - } - if (type==5) - { // OnLeftButtonUp - if (intStyMar->OnLeftButtonUp()==false) - { - i=size; - } - } - if (type==6) - { // OnMiddleButtonDown - if (intStyMar->OnMiddleButtonDown()==false) - { - i=size; - } - } - if (type==7) - { // OnMiddleButtonUp - if (intStyMar->OnMiddleButtonUp()==false) - { - i=size; - } - } - if (type==10) - { // OnMiddleButtonUp - if (intStyMar->OnChar()==false) - { - i=size; - } - } - if (type==11) - { // OnLeftDClick - if (intStyMar->OnLeftDClick()==false) - { - i=size; - } - } - if (type==12) - { // OnRightDClick - if (intStyMar->OnRightDClick()==false) - { - i=size; - } - } - if (type==13) - { // OnMiddleDClick - if (intStyMar-> OnMiddleDClick()==false) - { - i=size; - } - } - if (type==14) - { // OnMouseWheel - if (intStyMar->OnMouseWheel()==false) - { - i=size; - } - } - } // if active - } // for - - EvaluateToRefresh(); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::OnChar() // virtual -{ -// char a=GetInteractor()->GetKeyCode(); - CallLstInteractorStyleMaracas(10); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::TransformCoordinate(double &X, double &Y, double &Z) -{ - vtkImageViewer2 *imageViewer = GetWxVtk2DBaseView()->_imageViewer2XYZ->GetVtkImageViewer2(); - - imageViewer->GetRenderer()->SetDisplayPoint((int)X, (int)Y, (int)Z); - imageViewer->GetRenderer()->DisplayToWorld(); - double fP[4]; - imageViewer->GetRenderer()->GetWorldPoint( fP ); - - if ( fP[3] ){ - fP[0] /= fP[3]; - fP[1] /= fP[3]; - fP[2] /= fP[3]; - } - -// EEDx5 - GetWxVtk2DBaseView()->TransformCoordinate_spacing_ViewToModel(fP[0],fP[1],fP[2]); - - X=fP[0]; - Y=fP[1]; - Z=fP[2]; -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::SetwxVtkBaseView(wxVtkBaseView *wxvtkbaseview) -{ - _wxvtkbaseview = wxvtkbaseview; -} -//--------------------------------------------------------------------------- -wxVtk2DBaseView* vtkInteractorStyleBaseView::GetWxVtk2DBaseView() -{ - return (wxVtk2DBaseView*)_wxvtkbaseview; -} -//--------------------------------------------------------------------------- -wxVtk3DBaseView* vtkInteractorStyleBaseView::GetWxVtk3DBaseView() -{ - return (wxVtk3DBaseView*)_wxvtkbaseview; -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::SetActiveAllInteractors(bool ok) -{ - InteractorStyleMaracas *intStyMar; - int i,size=_lstInteractorStyleMaracas.size(); - for (i=0;iSetActive(ok); - } - -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::SetRefresh_waiting() -{ - _refresh_waiting=true; -} -//--------------------------------------------------------------------------- -bool vtkInteractorStyleBaseView::GetRefresh_waiting() -{ - return _refresh_waiting; -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::SetParent_refresh_waiting() -{ - _parent_refresh_waiting=true; -} -//--------------------------------------------------------------------------- -bool vtkInteractorStyleBaseView::GetParent_refresh_waiting() -{ - return _parent_refresh_waiting; -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::EvaluateToRefresh() -{ - - if ( _blockRefresh==false ) - { - if ( (_refresh_waiting==true) && (_parent_refresh_waiting==false)) - { - _refresh_waiting = false; - this->_wxvtkbaseview->Refresh(); - } - if (_parent_refresh_waiting==true) - { - _parent_refresh_waiting = false; - wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh - this->_wxvtkbaseview->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1); - } - } -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::BlockRefresh() -{ - _blockRefresh=true; -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView::UnBlockRefresh() -{ - _blockRefresh=false; -} - -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- - - - -//--------------------------------------------------------------------------- -vtkInteractorStyleBaseView2D::vtkInteractorStyleBaseView2D() -{ - _manualinteractorwindowlevel= new manualInteractorWindowLevel(); - AddInteractorStyleMaracas( _manualinteractorwindowlevel ); - - _vtkInteractorScrollZ = new vtkInteractorScrollZ(); - AddInteractorStyleMaracas(_vtkInteractorScrollZ); - -} -//--------------------------------------------------------------------------- -vtkInteractorStyleBaseView2D::~vtkInteractorStyleBaseView2D() -{ -} - -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView2D::OnRightButtonDown() // virtual -{ - vtkInteractorStyleBaseView::OnRightButtonDown(); - - if ((GetInteractor()->GetControlKey()==1) && (GetInteractor()->GetShiftKey()==0) ){ - this->vtkInteractorStyleImage::OnRightButtonDown(); - } - -} - -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView2D::OnRightButtonUp() // virtual -{ - vtkInteractorStyleBaseView::OnRightButtonUp(); - this->vtkInteractorStyleImage::OnRightButtonUp(); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView2D::OnMouseMove () // virtual -{ - vtkInteractorStyleBaseView::OnMouseMove(); - this->vtkInteractorStyleImage::OnMouseMove(); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView2D::OnLeftButtonDown() // virtual -{ - vtkInteractorStyleBaseView::OnLeftButtonDown(); - - if ((GetInteractor()->GetControlKey()==0) && (GetInteractor()->GetShiftKey()==1) ) - { - this->vtkInteractorStyleImage::OnLeftButtonDown(); - } -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView2D::OnLeftButtonUp () // virtual -{ - vtkInteractorStyleBaseView::OnLeftButtonUp(); - - this->vtkInteractorStyleImage::OnLeftButtonUp(); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView2D::OnMiddleButtonDown () // virtual -{ - vtkInteractorStyleBaseView::OnMiddleButtonDown(); - - if ((GetInteractor()->GetControlKey()==1) || (GetInteractor()->GetShiftKey()==1) ) - { - this->vtkInteractorStyleImage::OnLeftButtonDown(); - } -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView2D::OnMiddleButtonUp () // virtual -{ - vtkInteractorStyleBaseView::OnMiddleButtonUp(); - - if ((GetInteractor()->GetControlKey()==1) || (GetInteractor()->GetShiftKey()==1) ) - { - this->vtkInteractorStyleImage::OnLeftButtonUp(); - } -} - - - -//------------------------------------------------------------------- -//------------------------------------------------------------------- -//------------------------------------------------------------------- - - -//--------------------------------------------------------------------------- -vtkInteractorStyleBaseView3D::vtkInteractorStyleBaseView3D(){ -} -//--------------------------------------------------------------------------- -vtkInteractorStyleBaseView3D::~vtkInteractorStyleBaseView3D(){ -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView3D::OnRightButtonDown () -{ - vtkInteractorStyleBaseView::OnRightButtonDown(); - -/* - if (GetInteractor()->GetControlKey()==1 ){ - this->vtkInteractorStyleTrackballCamera::OnRightButtonDown(); - } -*/ - this->FindPokedRenderer(this->Interactor->GetEventPosition()[0], - this->Interactor->GetEventPosition()[1]); - - if (this->CurrentRenderer == NULL) - { - return; - } - - if (this->Interactor->GetControlKey()) { - this->StartDolly(); - } - -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView3D::OnRightButtonUp () -{ - vtkInteractorStyleBaseView::OnRightButtonUp(); - -/* - if (GetInteractor()->GetControlKey()==1 ){ - this->vtkInteractorStyleTrackballCamera::OnRightButtonUp(); - } -*/ - - - switch (this->State) - { - case VTKIS_DOLLY: - this->EndDolly(); - break; - } -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView3D::OnMouseMove () -{ - vtkInteractorStyleBaseView::OnMouseMove(); - -// this->vtkInteractorStyleTrackballCamera::OnMouseMove(); - - // int x = this->Interactor->GetEventPosition()[0]; - // int y = this->Interactor->GetEventPosition()[1]; - - - // vtkRenderWindowInteractor *rwi = this->Interactor; - - // int lx = rwi->GetLastEventPosition()[0]; - // int ly = rwi->GetLastEventPosition()[1]; - // int dx = rwi->GetEventPosition()[0] ; - // int dy = rwi->GetEventPosition()[1] ; - - - switch (this->State) - { - case VTKIS_ROTATE: - // this->FindPokedRenderer(x, y); - this->Rotate(); - // this->InvokeEvent(vtkCommand::InteractionEvent, NULL); - break; - - case VTKIS_PAN: - // this->FindPokedRenderer(x, y); - this->Pan(); - // this->InvokeEvent(vtkCommand::InteractionEvent, NULL); - break; - - case VTKIS_DOLLY: - // this->FindPokedRenderer(x, y); - this->Dolly(); - // this->InvokeEvent(vtkCommand::InteractionEvent, NULL); - break; - - case VTKIS_SPIN: - // this->FindPokedRenderer(x, y); - this->Spin(); - // this->InvokeEvent(vtkCommand::InteractionEvent, NULL); - break; - } - - - -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView3D::OnLeftButtonDown () -{ - vtkInteractorStyleBaseView::OnLeftButtonDown(); -/* - if (GetInteractor()->GetControlKey()==1 ){ - this->vtkInteractorStyleTrackballCamera::OnMiddleButtonDown(); - } else { - this->vtkInteractorStyleTrackballCamera::OnLeftButtonDown(); - } -*/ - - - this->FindPokedRenderer(this->Interactor->GetEventPosition()[0], - this->Interactor->GetEventPosition()[1]); - if (this->CurrentRenderer == NULL) - { - return; - } - - if (this->Interactor->GetControlKey()) { - this->StartPan(); - } else { - this->StartRotate(); - } - - /* - if (this->Interactor->GetShiftKey()) - { - if (this->Interactor->GetControlKey()) - { - this->StartDolly(); - } - else - { - this->StartPan(); - } - } - else - { - if (this->Interactor->GetControlKey()) - { - this->StartSpin(); - } - else - { - this->StartRotate(); - } - } -*/ - - -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView3D::OnLeftButtonUp () -{ - vtkInteractorStyleBaseView::OnLeftButtonUp(); - -/* - if (GetInteractor()->GetControlKey()==1 ){ - this->vtkInteractorStyleTrackballCamera::OnMiddleButtonUp(); - } else { - this->vtkInteractorStyleTrackballCamera::OnLeftButtonUp(); - } -*/ - switch (this->State) - { - - case VTKIS_PAN: - this->EndPan(); - break; - - case VTKIS_ROTATE: - this->EndRotate(); - break; - } -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView3D::OnMiddleButtonDown () -{ - vtkInteractorStyleBaseView::OnMiddleButtonDown(); - // this->vtkInteractorStyleTrackballCamera::OnMiddleButtonDown(); -} -//--------------------------------------------------------------------------- -void vtkInteractorStyleBaseView3D::OnMiddleButtonUp () -{ - vtkInteractorStyleBaseView::OnMiddleButtonUp(); - - // this->vtkInteractorStyleTrackballCamera::OnMiddleButtonUp(); -} - - -//------------------------------------------------------------------- -//------------------------------------------------------------------- -//------------------------------------------------------------------- - -vtkInfoTextImage::vtkInfoTextImage() -{ - _vtkText_WindowLevel = NULL; - _vtkText_ColorLevel = NULL; - _vtkText_position = NULL; - _vtkText_pixelIntensity = NULL; - _marimagedata = NULL; -} - -//------------------------------------------------------------------- - -vtkInfoTextImage::~vtkInfoTextImage() -{ -} - -//------------------------------------------------------------------- - -void vtkInfoTextImage::Configure() -{ - _vtkText_WindowLevel = Create_Text_Label( 10 , 55 ); - _vtkText_ColorLevel = Create_Text_Label( 10 , 40 ); - _vtkText_position = Create_Text_Label( 10 , 25 ); - _vtkText_pixelIntensity = Create_Text_Label( 10 , 10 ); -} - - -//------------------------------------------------------------------- - -void vtkInfoTextImage::SetMarImageData(marImageData *marimagedata) -{ - _marimagedata=marimagedata; -} - -//------------------------------------------------------------------- - -void vtkInfoTextImage::SetWxVtk2DBaseView(wxVtk2DBaseView *wxvtk2Dbaseview) -{ - _wxvtk2Dbaseview=wxvtk2Dbaseview; -} - -//------------------------------------------------------------------- - -vtkTextActor *vtkInfoTextImage::Create_Text_Label(int px, int py ) -{ - // Text Window Level - vtkTextActor *textActor = vtkTextActor::New(); - textActor->SetDisplayPosition(px, py); - textActor->SetInput("--"); - - // Set coordinates to match the old vtkScaledTextActor default value - textActor->GetPosition2Coordinate()->SetCoordinateSystemToNormalizedViewport(); - textActor->GetPosition2Coordinate()->SetValue( 0.2 , 0.2 ); - - vtkTextProperty *tprop = textActor->GetTextProperty(); - tprop->SetFontSize(14); - tprop->SetFontFamilyToArial(); - tprop->SetColor(1, 1, 0); - _wxvtk2Dbaseview->GetRenderer()->AddActor2D(textActor); - - return textActor; -} - -//------------------------------------------------------------------- - -void vtkInfoTextImage::PutWindowLevel() -{ - int value = (int)( _wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->GetWindow() ); - char zTzxt[20]; - char resultText[50]; - - strcpy(resultText,"w:"); - - - //ltoa ( (long)value , zTzxt , 10 ); - sprintf(zTzxt,"%d",value); - - strcat(resultText,zTzxt); - _vtkText_WindowLevel -> SetInput(resultText); -} - -//------------------------------------------------------------------- - -void vtkInfoTextImage::PutColorLevel() -{ - int value = (int)(_wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel()->GetLevel()); - char zTzxt[20]; - char resultText[50]; - - strcpy(resultText,"c:"); - -// itoa (value,zTzxt,10); - sprintf(zTzxt,"%d",value); - - strcat(resultText,zTzxt); - _vtkText_ColorLevel -> SetInput(resultText); -} - -//------------------------------------------------------------------- - -void vtkInfoTextImage::PutPosition(int xx,int yy, int zz) -{ - -//EEDx7 -// double spa[3]; -// _imagedata->GetSpacing(spa); -// xx=xx*(1/spa[0]); -// yy=yy*(1/spa[1]); - - - char zTzxt[50]; - char resultText[50]; - strcpy(resultText,"p: "); -// itoa ((int)xx,zTzxt,10); - sprintf(zTzxt,"%d",xx); - - strcat(resultText,zTzxt); - strcat(resultText," , "); - -// itoa ((int)yy,zTzxt,10); - sprintf(zTzxt,"%d",yy); - - strcat(resultText,zTzxt); - strcat(resultText," , "); - -// itoa ((int)zz,zTzxt,10); - sprintf(zTzxt,"%d",zz); - - strcat(resultText,zTzxt); - - - - int nX = _marimagedata->GetXOriginal(xx); - int nY = _marimagedata->GetYOriginal(yy); - int nZ = _marimagedata->GetZOriginal(zz); - - strcat(resultText," ("); -// ltoa ((int)nX,zTzxt,10); - sprintf(zTzxt,"%d",nX); - - strcat(resultText,zTzxt); - strcat(resultText,","); - -// ltoa ((int)nY,zTzxt,10); - sprintf(zTzxt,"%d",nY); - - strcat(resultText,zTzxt); - strcat(resultText,","); - -// ltoa ((int)nZ,zTzxt,10); - sprintf(zTzxt,"%d",nZ); - - strcat(resultText,zTzxt); - strcat(resultText,")"); - - - - - _vtkText_position -> SetInput(resultText); -} - -//------------------------------------------------------------------- - -void vtkInfoTextImage::PutPixelIntensity(int xx, int yy, int zz) -{ - -//EEDx2 - bool ok=true; - - int dim[3]; - double spa[3]; - vtkImageData *imagedata = _marimagedata->GetImageData(); - imagedata->GetDimensions(dim); - imagedata->GetSpacing(spa); - -// EEDx7 -// xx=xx*(1/spa[0]); -// yy=yy*(1/spa[1]); -// zz=xx*spa[2]; - - if ( (xx<0) || (xx>=dim[0]) || (yy<0) || (yy>=dim[1]) || (zz<0) || (zz>=dim[2]) ) - { - ok=false; - } - - - char zTzxt[20]; - char resultText[50]; - strcpy(resultText,"NG: "); - if (ok==true) { - unsigned short *pOrg=(unsigned short*)imagedata->GetScalarPointer ((int)xx,(int)yy,(int)zz); -// itoa (*pOrg,zTzxt,10); - int tmp=*pOrg; - sprintf(zTzxt,"%d",tmp); - - } else { - strcpy(zTzxt,"---"); - } - strcat(resultText,zTzxt); - _vtkText_pixelIntensity -> SetInput(resultText); -} - - - -//------------------------------------------------------------------- -//------------------------------------------------------------------- -//------------------------------------------------------------------- - -vtkInfoTextImageInteractor::vtkInfoTextImageInteractor() -{ -} - -//------------------------------------------------------------------- -vtkInfoTextImageInteractor::~vtkInfoTextImageInteractor() -{ -} - -//------------------------------------------------------------------- - -void vtkInfoTextImageInteractor::SetModelVtkInfoTextImage(vtkInfoTextImage *vtkinfotextimage) -{ - _vtkinfotextimage = vtkinfotextimage; -} - -//------------------------------------------------------------------- -bool vtkInfoTextImageInteractor::OnMouseMove() -{ - int X,Y; - wxVTKRenderWindowInteractor *wxVTKiren; - wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor(); - wxVTKiren->GetEventPosition(X,Y); - - int z = (int)(_vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetVtkBaseData()->GetZ()); - double xx=X,yy=Y,zz=z; - _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->TransfromeCoordScreenToWorld(xx,yy,zz); - - GetVtkInfoTextImage()->PutWindowLevel(); - GetVtkInfoTextImage()->PutColorLevel(); - GetVtkInfoTextImage()->PutPosition( (int)xx , (int)yy , (int)zz ); - GetVtkInfoTextImage()->PutPixelIntensity( (int)xx , (int)yy , (int)zz ); - - this->_vtkInteractorStyleBaseView->SetRefresh_waiting(); - return true; -} - -//------------------------------------------------------------------- -vtkInfoTextImage *vtkInfoTextImageInteractor::GetVtkInfoTextImage() -{ - return _vtkinfotextimage; -} - - -//------------------------------------------------------------------- -//------------------------------------------------------------------- -//------------------------------------------------------------------- - - -wxVtk2DBaseView::wxVtk2DBaseView(wxWindow *parent) -:wxVtkBaseView(parent) -{ - _imageViewer2XYZ = NULL; - _vtkIinfoTextImage = NULL; -} - -//------------------------------------------------------------------- -wxVtk2DBaseView::~wxVtk2DBaseView() -{ - if (_imageViewer2XYZ!=NULL) { - delete _imageViewer2XYZ; - } - - if (_imageViewer2XYZ!=NULL) { - delete _vtkIinfoTextImage; - } - -} - -//------------------------------------------------------------------- -void wxVtk2DBaseView::TransformCoordinate_spacing_ViewToModel(double &X,double &Y, double &Z) // virtual -{ -//EEDx5 - double spc[3]; -// GetVtkBaseData()->GetImageData()->GetSpacing(spc); - this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); - - X = X / spc[0]; - Y = Y / spc[1]; - Z = Z / spc[2]; - -} - -//------------------------------------------------------------------- -void wxVtk2DBaseView::TransformCoordinate_spacing_ModelToView(double &X,double &Y, double &Z) // virtual -{ -//EEDx5 - double spc[3]; -// GetVtkBaseData()->GetImageData()->GetSpacing(spc); - this->_imageViewer2XYZ->GetVtkImageViewer2()->GetInput()->GetSpacing(spc); - - X=X*spc[0]; - Y=Y*spc[1]; - Z=Z*spc[2]; - -} - -//------------------------------------------------------------------- -void wxVtk2DBaseView::ResetView() -{ - double spx,spy,spz; - int x1,x2,y1,y2,z1,z2; - wxVtkBaseView::Configure(); - - wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); - vtkImageData *imageData = GetVtkBaseData()->GetImageData(); - imageData->UpdateInformation(); - imageData->SetUpdateExtent( imageData->GetWholeExtent()); - imageData->Update(); - - _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData ); - imageData->GetSpacing (spx,spy,spz); - imageData->GetExtent (x1,x2,y1,y2,z1,z2); - _imageViewer2XYZ -> SetExtentDimension(x1,x2,y1,y2,z1,z2); - _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren ); - -printf("EED wxVtk2DBaseView::ResetView podemos 01\n "); - _imageViewer2XYZ->GetVtkImageViewer2()->Render(); -printf("EED wxVtk2DBaseView::ResetView podemos 02\n "); - - SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); - -} - - -//------------------------------------------------------------------- -void wxVtk2DBaseView::Configure(bool okimage) -{ - double spx,spy,spz; - int x1,x2,y1,y2,z1,z2; - wxVtkBaseView::Configure(); - -// EED 17 Oct 2007 - if (_imageViewer2XYZ==NULL) - { - _imageViewer2XYZ = new vtkImageViewer2_XYZ(); - wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); - _imageViewer2XYZ -> GetVtkImageViewer2()->SetupInteractor ( iren ); - SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); - } - - - vtkImageData *imageData = GetVtkBaseData()->GetMarImageData()->GetImageData(); - if (imageData!=NULL){ - imageData->UpdateInformation(); - imageData->SetUpdateExtent( imageData->GetWholeExtent()); - imageData->Update(); - if (okimage==true){ - imageData->GetSpacing (spx,spy,spz); - imageData->GetExtent (x1,x2,y1,y2,z1,z2); - - - _imageViewer2XYZ->GetVtkImageViewer2()->SetInput(imageData ); - _imageViewer2XYZ->SetExtentDimension(x1,x2,y1,y2,z1,z2); - double range[2]; - imageData->GetScalarRange(range); - if (range[1]<20000){ - _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( (range[1]-range[0])/2 ); - _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( (range[1]+range[0])/4 ); - } else { - _imageViewer2XYZ->GetVtkImageViewer2()->SetColorWindow( 1000 ); - _imageViewer2XYZ->GetVtkImageViewer2()->SetColorLevel( 500 ); - } -// EED 31 Janvier 2007 -//vtkImageActor *vtkimageactor = _imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor (); -//vtkimageactor->InterpolateOff (); -//vtkLookupTable * _collookup = vtkLookupTable::New( ); -//_collookup->SetNumberOfColors( 256 ); -//_collookup->SetTableRange( 0 , 255 ); -//_collookup->Build( ); -//_collookup->SetTableValue( 0 , 1 , 0 , 0 , 1 ); -//_collookup->SetTableValue(128 , 0 , 0 , 1 , 1 ); -//_collookup->SetTableValue(255 , 0 , 1 , 0 , 1 ); -//_imageViewer2XYZ->GetVtkImageViewer2()->GetWindowLevel ()->SetLookupTable(_collookup ); - - -// EED 17 Oct 2007 -// SetInteractorStyleImage( vtkInteractorStyleBaseView2D::New() ); - - - vtkImageViewer2 *IV2=_imageViewer2XYZ->GetVtkImageViewer2(); - vtkCamera *camera = IV2->GetRenderer()->GetActiveCamera(); - camera->SetViewUp ( spx*0 , -spy*1 , spz*0 ); - camera->SetPosition ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , -spz*10000 ); - camera->SetFocalPoint ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 ); - camera->SetClippingRange( 0.01 , 1000000 ); - camera->ComputeViewPlaneNormal(); - camera->SetParallelScale( spx*(x2-x1)/3.0 ); - - // text information over the graphic window - _vtkIinfoTextImage = new vtkInfoTextImage(); - _vtkIinfoTextImageInteractor = new vtkInfoTextImageInteractor(); - _vtkIinfoTextImage->SetWxVtk2DBaseView(this); - _vtkIinfoTextImage->SetMarImageData( GetVtkBaseData()->GetMarImageData() ); - _vtkIinfoTextImageInteractor->SetModelVtkInfoTextImage(_vtkIinfoTextImage); - _vtkIinfoTextImage->Configure(); - this->GetInteractorStyleBaseView()->AddInteractorStyleMaracas(_vtkIinfoTextImageInteractor); - } // okimage - } // imageData - -} - -//------------------------------------------------------------------- - -int wxVtk2DBaseView::GetActualSlice() // virtual -{ - return (int)(_vtkbasedata->GetZ()); -} - -//------------------------------------------------------------------- -void wxVtk2DBaseView::SetActualSlice(int slice) // Virtual -{ - _vtkbasedata->SetZ(slice); -} - -//------------------------------------------------------------------- - -vtkBaseData *wxVtk2DBaseView::GetVtkBaseData() -{ - return _vtkbasedata; -} - -//------------------------------------------------------------------- - -void wxVtk2DBaseView::SetVtkBaseData(vtkBaseData *vtkbasedata) -{ - _vtkbasedata=vtkbasedata; -} - -//------------------------------------------------------------------- - -void wxVtk2DBaseView::Refresh() -{ - int z = (int)(GetVtkBaseData()->GetZ()); - _imageViewer2XYZ->SetZSlice( z ); - - wxVtkBaseView::Refresh(); -} - -//------------------------------------------------------------------- - -void wxVtk2DBaseView::SetInteractorStyleImage(vtkInteractorStyleBaseView *interactorstylebaseview) -{ - SetInteractorStyleBaseView(interactorstylebaseview); - - wxVTKRenderWindowInteractor *iren = GetWxVTKRenderWindowInteractor(); - interactorstylebaseview->SetInteractor ( iren ); - iren->SetInteractorStyle(interactorstylebaseview); - interactorstylebaseview->SetwxVtkBaseView(this); - - vtkMaracasImageViewer2Callback *cbk = vtkMaracasImageViewer2Callback::New(); - cbk->IV = _imageViewer2XYZ->GetVtkImageViewer2(); - interactorstylebaseview->AddObserver( vtkCommand::WindowLevelEvent, cbk ); - interactorstylebaseview->AddObserver( vtkCommand::StartWindowLevelEvent, cbk ); - interactorstylebaseview->AddObserver( vtkCommand::ResetWindowLevelEvent, cbk ); - cbk->Delete(); -} - -//--------------------------------------------------------------------------- -vtkRenderer* wxVtk2DBaseView::GetRenderer() // virtual -{ - return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer(); -} -//--------------------------------------------------------------------------- -vtkRenderWindow* wxVtk2DBaseView::GetRenWin() // virtual -{ - return _imageViewer2XYZ->GetVtkImageViewer2()->GetRenderWindow(); -} - -//------------------------------------------------------------------- - -void wxVtk2DBaseView::GetSpacing(double spc[3]) // virtual -{ - vtkImageData *imageData = GetVtkBaseData()->GetImageData(); - imageData->GetSpacing(spc); -} - -//------------------------------------------------------------------- -//------------------------------------------------------------------- -//------------------------------------------------------------------- - - - - -wxVtk3DBaseView::wxVtk3DBaseView(wxWindow *parent) -:wxVtkBaseView( parent ) -{ - _configure = false; - _aRenderer = NULL; - _renWin = NULL; - _aCamera = NULL; -} -//------------------------------------------------------------------- -wxVtk3DBaseView::~wxVtk3DBaseView() -{ - if (_aCamera!=NULL) { _aCamera -> Delete(); } - if (_aRenderer!=NULL) { _aRenderer -> Delete(); } - if (_renWin!=NULL) { _renWin -> Delete(); } -} -//------------------------------------------------------------------- -vtkCamera* wxVtk3DBaseView::GetCamera() -{ - return _aCamera; -} -//------------------------------------------------------------------- -vtkRenderer* wxVtk3DBaseView::GetRenderer() // virtual -{ - return _aRenderer; -} -//------------------------------------------------------------------- -vtkRenderWindow* wxVtk3DBaseView::GetRenWin() // virtual -{ - return _renWin; -} -//------------------------------------------------------------------- -void wxVtk3DBaseView::Refresh() -{ -// _renWin->Render(); - vtkRenderWindowInteractor *vri = GetWxVTKRenderWindowInteractor(); - vri->vtkRenderWindowInteractor::Render(); -} -//------------------------------------------------------------------- -void wxVtk3DBaseView::Configure() -{ - if (_configure==false) - { - _configure=true; - wxVtkBaseView::Configure(); - _aRenderer = vtkRenderer::New(); - _renWin = vtkRenderWindow::New(); - _renWin->AddRenderer(_aRenderer); - - -// _renWin->SetStereoCapableWindow(1); -// // //renderwindow->SetStereoTypeToCrystalEyes(); -// _renWin->SetStereoTypeToRedBlue(); -// _renWin->SetStereoRender(1); - - GetWxVTKRenderWindowInteractor()->SetRenderWindow(_renWin); - - -// EED Borrame -// vtkInteractorStyle3DMaracas *interactorStyle3DMaracas = vtkInteractorStyle3DMaracas::New(); - vtkInteractorStyleBaseView3D *interactorStyleBaseView3D = vtkInteractorStyleBaseView3D::New(); - - SetInteractorStyleBaseView( interactorStyleBaseView3D ); - interactorStyleBaseView3D->SetInteractor ( GetWxVTKRenderWindowInteractor() ); - GetWxVTKRenderWindowInteractor()->SetInteractorStyle( interactorStyleBaseView3D ); - interactorStyleBaseView3D->SetwxVtkBaseView(this); - - -/* EED Borrame - vtkInteractorStyleSwitch *iss = dynamic_cast(_iren->GetInteractorStyle()); - iss->SetCurrentStyleToTrackballCamera(); -*/ - - // It is convenient to create an initial view of the data. The - // FocalPoint and Position form a vector direction. Later on - // (ResetCamera() method) this vector is used to position the camera - // to look at the data in this direction. - _aCamera = vtkCamera::New(); - _aCamera->SetViewUp (0, 0, -1); - _aCamera->SetPosition (0, 1, 0); - _aCamera->SetFocalPoint (0, 0, 0); - _aCamera->ComputeViewPlaneNormal(); - } -} -//------------------------------------------------------------------- -//EED 27 sep 2006 -void wxVtk3DBaseView::GetSpacing(double spc[3]) -{ - spc[0]=1; - spc[1]=1; - spc[2]=1; -}