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