]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/vtkInteractorManualPaint.cpp
DFCH: ManualPaint + imageUndoRedo -> 50% tested. (Save Images undo and redo) :) :)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / vtkInteractorManualPaint.cpp
1 #include "vtkInteractorManualPaint.h"
2
3 #include "wxVtk2DBaseView.h"
4 #include "wxVTKRenderWindowInteractor.h"
5
6 vtkInteractorManualPaint::vtkInteractorManualPaint(ManualPaintControler* mpc) {
7         _manualPaintControler = mpc;
8         _state = false;
9         _stateKey = false;
10         _stateMouse = false;
11 }
12
13 //---------------------------------------------------------------------------
14 vtkInteractorManualPaint::~vtkInteractorManualPaint() {
15 }
16
17 //---------------------------------------------------------------------------
18 bool vtkInteractorManualPaint::OnChar() {
19         vtkRenderWindowInteractor *interactor =
20                         _vtkInteractorStyleBaseView->GetInteractor();
21
22         if (interactor->GetKeyCode() == 97) {
23                 _stateKey = !_stateKey;
24         }
25         return true;
26 }
27
28 //---------------------------------------------------------------------------
29 bool vtkInteractorManualPaint::OnLeftButtonDown() {
30         vtkRenderWindowInteractor *interactor =
31                         _vtkInteractorStyleBaseView->GetInteractor();
32         if (interactor->GetControlKey() == 1) {
33                 _state = true;
34 //        wxVtk2DBaseView             *wxvtk2Dbaseview    = (wxVtk2DBaseView*)_vtkInteractorStyleBaseView->GetWxVtk2DBaseView();
35 //        _Z      =   wxvtk2Dbaseview->GetActualSlice();
36         }
37         return true;
38 }
39
40 //---------------------------------------------------------------------------
41 bool vtkInteractorManualPaint::OnLeftButtonUp() {
42     if((_state == true) || (_stateKey == true))
43         _manualPaintControler->SetImageUndo();
44         _state = false;
45         return true;
46 }
47
48 //---------------------------------------------------------------------------
49 bool vtkInteractorManualPaint::OnMouseMove() {
50         if ((_state == true) || (_stateKey == true)) {
51                 wxVtk2DBaseView *wxvtk2Dbaseview =
52                                 (wxVtk2DBaseView*) _vtkInteractorStyleBaseView->GetWxVtk2DBaseView();
53                 wxVTKRenderWindowInteractor *wxVTKiren =
54                                 wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor();
55                 int px, py;
56                 wxVTKiren->GetEventPosition(px, py);
57
58 //        int     typeView = 1;
59                 double X = (double) px;
60                 double Y = (double) py;
61                 double Z = wxvtk2Dbaseview->GetActualSlice();
62 //        wxvtk2Dbaseview->TransFromCoordScreenToWorld(X, Y, Z,true, typeView);
63                 wxvtk2Dbaseview->TransFromCoordScreenToWorld(X, Y, Z, true);
64
65                 _manualPaintControler->PaintImage((int) X, (int) Y, (int) Z);
66                 this->_vtkInteractorStyleBaseView->SetParent_refresh_waiting();
67
68                 /*
69                  wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->Modified();
70                  wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor()->Modified();
71                  wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetImageActor()->SetDisplayExtent(0, 50+_auxZ, 0, 50,_Z, _Z );
72                  wxvtk2Dbaseview->Refresh();
73                  wxvtk2Dbaseview->RefreshView();
74                  //        wxvtk2Dbaseview->SetActualSlice(_Z+_auxZ);
75                  _auxZ=(_auxZ+1)%2;
76                  wxvtk2Dbaseview->_imageViewer2XYZ->GetVtkImageViewer2()->GetRenderer()->Render();
77                  this->_vtkInteractorStyleBaseView->SetParent_refresh_waiting();
78                  */
79         } // if _state
80         return true;
81 }
82