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 
00036                 int colorWin;
00037                 int colorLev;
00038 
00039                 
00040                 vtkImageData* imgrange = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->GetVtkBaseData()->GetImageData();
00041 
00042                 if(imgrange != NULL){
00043                         double* scalarrange = imgrange->GetScalarRange();
00044                         double scalarr = scalarrange[1] - scalarrange[0];
00045                         //std::cout<<"scalar r="<<scalarr<<std::endl;
00046                         int w, h;
00047                         ((wxWindow*)wxVTKiren)->GetSize(&w, &h);                        
00048                         int dx = (scalarr*( _backPx - tmpPx ))/w;
00049                         int dy = (scalarr*( _backPy - tmpPy ))/h;
00050                         //colorWin=_backWindow - (scalarr)*( _backPx - tmpPx );
00051                         colorWin=_backWindow - dx;
00052                         colorLev=_backLevel  + dy;
00053                 }else{
00054                         colorWin=_backWindow - 2*( _backPx - tmpPx );
00055                         colorLev=_backLevel  + 2*( _backPy - tmpPy );
00056                 }
00057 
00058                 if (colorWin<0)
00059                 { 
00060                         colorWin=0;
00061                 }
00062                 if (colorWin>100000)
00063                 { 
00064                         colorWin=100000;
00065                 }       
00066 
00067                 if (colorLev<0)
00068                 { 
00069                         colorLev=0;
00070                 }
00071                 if (colorLev>100000)
00072                 { 
00073                         colorLev=100000;
00074                 }
00075                 vtkImageViewer2 *vtkimageviewer2;
00076                 vtkimageviewer2=((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2();
00077                 vtkimageviewer2->SetColorWindow(colorWin);
00078                 vtkimageviewer2->SetColorLevel(colorLev);
00079 //              vtkimageviewer2->Render();
00080         }
00081         return true;
00082 }
00083 
00084 //-------------------------------------------------------------------
00085 
00086 bool manualInteractorWindowLevel::OnMiddleButtonDown()  // virtual 
00087 {
00088         if ((_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) &&
00089                 (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ){
00090 
00091                 _stateWindowLevel       = true;
00092                 wxVTKRenderWindowInteractor *wxVTKiren;
00093                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
00094                 wxVTKiren->GetEventPosition( _backPx , _backPy );
00095 
00096                 _backWindow = (int)(((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow());
00097                 _backLevel  = (int)(((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel());
00098         }
00099         return true;
00100 }
00101 
00102 //-------------------------------------------------------------------
00103 
00104 bool manualInteractorWindowLevel::OnMiddleButtonUp()            // virtual
00105 {
00106         if (_stateWindowLevel==true)
00107         {
00108                 _stateWindowLevel=false;
00109         }
00110         return true;
00111 }

Generated on 18 Mar 2010 for creaMaracasVisu_lib by  doxygen 1.6.1