]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/ManualPaintControler.cpp
#3332 creaContours Bug New - Manual Paint UnDo ReDo with vtk update (working)
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / ManualPaintControler.cpp
1 /*# ---------------------------------------------------------------------
2 #
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
4 #                        pour la Sant�)
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
8 #
9 #  This software is governed by the CeCILL-B license under French law and
10 #  abiding by the rules of distribution of free software. You can  use,
11 #  modify and/ or redistribute the software under the terms of the CeCILL-B
12 #  license as circulated by CEA, CNRS and INRIA at the following URL
13 #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 #  or in the file LICENSE.txt.
15 #
16 #  As a counterpart to the access to the source code and  rights to copy,
17 #  modify and redistribute granted by the license, users are provided only
18 #  with a limited warranty  and the software's author,  the holder of the
19 #  economic rights,  and the successive licensors  have only  limited
20 #  liability.
21 #
22 #  The fact that you are presently reading this means that you have had
23 #  knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
25
26 #include <wxMPRBaseData.h>
27
28 #include "ManualPaintControler.h"
29 #include "vtkInteractorManualPaint.h"
30 #include "vtkImageActor.h"
31
32 //---------------------------------------------------------------------------
33 ManualPaintControler::ManualPaintControler() 
34 {
35         auxZ                            = 0;
36         _wxvtk2Dbaseview        = NULL;
37 }
38
39 //---------------------------------------------------------------------------
40 ManualPaintControler::~ManualPaintControler() 
41 {
42 }
43
44 //---------------------------------------------------------------------------
45 void ManualPaintControler::SetManualPaintModel( ManualPaintModel* manualPaintModel ) 
46 {
47         _manualPaintModel       = manualPaintModel;
48 }
49
50 //---------------------------------------------------------------------------
51 ManualPaintModel* ManualPaintControler::GetManualPaintModel( ) 
52 {
53         return _manualPaintModel;
54 }
55
56 //---------------------------------------------------------------------------
57 //void ManualPaintControler::SetManualPaintPanel( ManualPaintPanel* manualPaintPanel ) 
58 //{
59 //      _manualPaintPanel       = manualPaintPanel;
60 //}
61
62 //---------------------------------------------------------------------------
63 void ManualPaintControler::SetWxVtk2DBaseView( wxVtk2DBaseView *wxvtk2Dbaseview )
64 {
65         _wxvtk2Dbaseview        = wxvtk2Dbaseview;
66 }
67
68 //---------------------------------------------------------------------------
69 void ManualPaintControler::Config() 
70 {
71         if (_wxvtk2Dbaseview != NULL) 
72         {
73                 vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview->GetInteractorStyleBaseView());
74                 isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this));
75         } // if _wxvtk2Dbaseview
76 }
77
78 //---------------------------------------------------------------------------
79 void ManualPaintControler::PaintImage(int px, int py, int pz) 
80 {
81         _manualPaintModel->SetDirection(_wxvtk2Dbaseview->GetDirection());
82         _manualPaintModel->PaintImage(px, py, pz);
83         // The refresh mechanisme is made in the vtkInteractorManualPaint
84         //    RefreshView();
85 }
86
87 //---------------------------------------------------------------------------
88 void ManualPaintControler::SetImageUndo()
89 {
90         _manualPaintModel->SetUndoImage();
91 }
92
93
94
95 //---------------------------------------------------------------------------
96 void ManualPaintControler::Undo()
97 {
98         _manualPaintModel->Undo();
99         Refresh();
100 }
101
102 void ManualPaintControler::Redo()
103 {
104         _manualPaintModel->Redo();
105         Refresh();
106 }
107
108
109 void ManualPaintControler::Refresh()
110 {
111         if (_wxvtk2Dbaseview!=NULL)
112         {
113                 vtkMPRBaseData* vtkmprbasedata = (vtkMPRBaseData*) (_wxvtk2Dbaseview->GetVtkBaseData());
114 //              if (bbGetInputPoint().size()==3)
115 //              {
116 //                      vtkmprbasedata->SetX( bbGetInputPoint()[0] );
117 //                      vtkmprbasedata->SetY( bbGetInputPoint()[1] );
118 //                      vtkmprbasedata->SetZ( bbGetInputPoint()[2] );
119                         wxCommandEvent newevent(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
120 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
121 #if wxMAJOR_VERSION <= 2
122                         _wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor ()->GetParent()->ProcessEvent( newevent );
123 #else
124                         _wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor ()->GetParent()->ProcessWindowEvent( newevent );
125 #endif                          
126 //              } // if Position
127         } // _wxvtk2Dbaseview
128 }
129
130