]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualInteractorWindowLevel.cxx
20615fbcaae11f17729da6a3630210c86449a133
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualInteractorWindowLevel.cxx
1
2 #include "manualInteractorWindowLevel.h"
3 #include "wxVtk2DBaseView.h"
4 //-------------------------------------------------------------------
5 //-------------------------------------------------------------------
6 //-------------------------------------------------------------------
7
8 manualInteractorWindowLevel::manualInteractorWindowLevel()
9 {
10         _stateWindowLevel       =       false;
11         _backPx                         =       0;
12         _backPy                         =       0;
13         _backWindow                     =       -1;
14         _backLevel                      =       -1;
15 }
16
17 //-------------------------------------------------------------------
18
19 manualInteractorWindowLevel::~manualInteractorWindowLevel()
20 {
21 }
22
23 //-------------------------------------------------------------------
24
25 bool manualInteractorWindowLevel::OnMouseMove()                 // virtual 
26 {
27
28         if (_stateWindowLevel==true)
29         {
30                 int tmpPx,tmpPy;
31                 wxVTKRenderWindowInteractor *wxVTKiren;
32                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
33                 wxVTKiren->GetEventPosition( tmpPx , tmpPy );
34
35
36                 int colorWin;
37                 int colorLev;
38
39                 
40                 vtkImageData* imgrange = ((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->GetVtkBaseData()->GetImageData();
41
42                 if(imgrange != NULL){
43                         double* scalarrange = imgrange->GetScalarRange();
44                         double scalarr = scalarrange[1] - scalarrange[0];
45                         //std::cout<<"scalar r="<<scalarr<<std::endl;
46                         int w, h;
47                         ((wxWindow*)wxVTKiren)->GetSize(&w, &h);                        
48                         int dx = (scalarr*( _backPx - tmpPx ))/w;
49                         int dy = (scalarr*( _backPy - tmpPy ))/h;
50                         //colorWin=_backWindow - (scalarr)*( _backPx - tmpPx );
51                         colorWin=_backWindow - dx;
52                         colorLev=_backLevel  + dy;
53                 }else{
54                         colorWin=_backWindow - 2*( _backPx - tmpPx );
55                         colorLev=_backLevel  + 2*( _backPy - tmpPy );
56                 }
57
58                 if (colorWin<0)
59                 { 
60                         colorWin=0;
61                 }
62                 if (colorWin>100000)
63                 { 
64                         colorWin=100000;
65                 }       
66
67                 if (colorLev<0)
68                 { 
69                         colorLev=0;
70                 }
71                 if (colorLev>100000)
72                 { 
73                         colorLev=100000;
74                 }
75                 vtkImageViewer2 *vtkimageviewer2;
76                 vtkimageviewer2=((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2();
77                 vtkimageviewer2->SetColorWindow(colorWin);
78                 vtkimageviewer2->SetColorLevel(colorLev);
79 //              vtkimageviewer2->Render();
80         }
81         return true;
82 }
83
84 //-------------------------------------------------------------------
85
86 bool manualInteractorWindowLevel::OnMiddleButtonDown()  // virtual 
87 {
88         if ((_vtkInteractorStyleBaseView->GetInteractor()->GetControlKey()==0) &&
89                 (_vtkInteractorStyleBaseView->GetInteractor()->GetShiftKey()==0) ){
90
91                 _stateWindowLevel       = true;
92                 wxVTKRenderWindowInteractor *wxVTKiren;
93                 wxVTKiren = _vtkInteractorStyleBaseView->GetWxVtk2DBaseView()->GetWxVTKRenderWindowInteractor();
94                 wxVTKiren->GetEventPosition( _backPx , _backPy );
95
96                 _backWindow = (int)(((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorWindow());
97                 _backLevel  = (int)(((wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView())->_imageViewer2XYZ->GetVtkImageViewer2()->GetColorLevel());
98         }
99         return true;
100 }
101
102 //-------------------------------------------------------------------
103
104 bool manualInteractorWindowLevel::OnMiddleButtonUp()            // virtual
105 {
106         if (_stateWindowLevel==true)
107         {
108                 _stateWindowLevel=false;
109         }
110         return true;
111 }