]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualInteractorWindowLevel.cxx
creaButtonContainer: exceptions added, doxygen documentation added :)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualInteractorWindowLevel.cxx
index 0be3029cf1920c451920411944d2a0932e77fbbd..db587e3f890180f89e9967235996e0835487afbf 100644 (file)
@@ -31,8 +31,30 @@ bool manualInteractorWindowLevel::OnMouseMove()                      // virtual
                wxVTKRenderWindowInteractor *wxVTKiren;
                wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
                wxVTKiren->GetEventPosition( tmpPx , tmpPy );
-               int colorWin=_backWindow - 2*( _backPx - tmpPx );
-               int colorLev=_backLevel  + 2*( _backPy - tmpPy );       
+
+               double colorWin;
+               double colorLev;
+               
+               vtkImageData* imgrange = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->GetVtkBaseData()->GetImageData();
+
+               if(imgrange != NULL){
+                       double* scalarrange = imgrange->GetScalarRange();
+                       double scalarr = scalarrange[1] - scalarrange[0];
+                       //std::cout<<"scalar r="<<scalarr<<std::endl;
+                       int w, h;
+                       ((wxWindow*)wxVTKiren)->GetSize(&w, &h);                        
+
+                       double dw=w,dh=h;
+                       double dx = (scalarr*( _backPx - tmpPx ))/dw;
+                       double dy = (scalarr*( _backPy - tmpPy ))/dh;
+
+                       //colorWin=_backWindow - (scalarr)*( _backPx - tmpPx );
+                       colorWin=_backWindow - dx;
+                       colorLev=_backLevel  + dy;
+               }else{
+                       colorWin=_backWindow - 2*( _backPx - tmpPx );
+                       colorLev=_backLevel  + 2*( _backPy - tmpPy );
+               }
 
                if (colorWin<0)
                { 
@@ -66,14 +88,12 @@ 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)(((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow());
-               _backLevel  = (int)(((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel());
+               _backWindow = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow();
+               _backLevel  = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel();
        }
        return true;
 }