manualInteractorWindowLevel.cxx

Go to the documentation of this file.
00001 
00002 #include "manualInteractorWindowLevel.h"
00003 #include "wxVtk2DBaseView.h"
00004 //-------------------------------------------------------------------
00005 //-------------------------------------------------------------------
00006 //-------------------------------------------------------------------
00007 
00008 manualInteractorWindowLevel::manualInteractorWindowLevel()
00009 {
00010         _stateWindowLevel       =       false;
00011         _backPx                         =       0;
00012         _backPy                         =       0;
00013         _backWindow                     =       -1;
00014         _backLevel                      =       -1;
00015 }
00016 
00017 //-------------------------------------------------------------------
00018 
00019 manualInteractorWindowLevel::~manualInteractorWindowLevel()
00020 {
00021 }
00022 
00023 //-------------------------------------------------------------------
00024 
00025 bool manualInteractorWindowLevel::OnMouseMove()                 // virtual 
00026 {
00027 
00028         if (_stateWindowLevel==true)
00029         {
00030                 int tmpPx,tmpPy;
00031                 wxVTKRenderWindowInteractor *wxVTKiren;
00032                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00033                 wxVTKiren->GetEventPosition( tmpPx , tmpPy );
00034 
00035                 double colorWin;
00036                 double colorLev;
00037                 
00038                 vtkImageData* imgrange = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->GetVtkBaseData()->GetImageData();
00039 
00040                 if(imgrange != NULL){
00041                         double* scalarrange = imgrange->GetScalarRange();
00042                         double scalarr = scalarrange[1] - scalarrange[0];
00043                         //std::cout<<"scalar r="<<scalarr<<std::endl;
00044                         int w, h;
00045                         ((wxWindow*)wxVTKiren)->GetSize(&w, &h);                        
00046 
00047                         double dw=w,dh=h;
00048                         double dx = (scalarr*( _backPx - tmpPx ))/dw;
00049                         double dy = (scalarr*( _backPy - tmpPy ))/dh;
00050 
00051                         //colorWin=_backWindow - (scalarr)*( _backPx - tmpPx );
00052                         colorWin=_backWindow - dx;
00053                         colorLev=_backLevel  + dy;
00054                 }else{
00055                         colorWin=_backWindow - 2*( _backPx - tmpPx );
00056                         colorLev=_backLevel  + 2*( _backPy - tmpPy );
00057                 }
00058 
00059                 if (colorWin<0)
00060                 { 
00061                         colorWin=0;
00062                 }
00063                 if (colorWin>100000)
00064                 { 
00065                         colorWin=100000;
00066                 }       
00067 
00068                 if (colorLev<0)
00069                 { 
00070                         colorLev=0;
00071                 }
00072                 if (colorLev>100000)
00073                 { 
00074                         colorLev=100000;
00075                 }
00076                 vtkImageViewer2 *vtkimageviewer2;
00077                 vtkimageviewer2=((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2();
00078                 vtkimageviewer2->SetColorWindow(colorWin);
00079                 vtkimageviewer2->SetColorLevel(colorLev);
00080 //              vtkimageviewer2->Render();
00081         }
00082         return true;
00083 }
00084 
00085 //-------------------------------------------------------------------
00086 
00087 bool manualInteractorWindowLevel::OnMiddleButtonDown()  // virtual 
00088 {
00089         if ((_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) &&
00090                 (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ){
00091                 _stateWindowLevel       = true;
00092                 wxVTKRenderWindowInteractor *wxVTKiren;
00093                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00094                 wxVTKiren->GetEventPosition( _backPx , _backPy );
00095                 _backWindow = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow();
00096                 _backLevel  = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel();
00097         }
00098         return true;
00099 }
00100 
00101 //-------------------------------------------------------------------
00102 
00103 bool manualInteractorWindowLevel::OnMiddleButtonUp()            // virtual
00104 {
00105         if (_stateWindowLevel==true)
00106         {
00107                 _stateWindowLevel=false;
00108         }
00109         return true;
00110 }

Generated on 20 Oct 2010 for creaMaracasVisu_lib by  doxygen 1.6.1