]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/ManualPaintControler.cpp
#3474 Refresh optimization DrawAxisTree3D Box
[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         _wxvtk2Dbaseview1       = NULL;
38         _wxvtk2Dbaseview2       = NULL;
39         _wxvtk2Dbaseview3       = NULL;
40         _wxvtk2Dbaseview4       = NULL;
41 }
42
43 //---------------------------------------------------------------------------
44 ManualPaintControler::~ManualPaintControler() 
45 {
46 }
47
48 //---------------------------------------------------------------------------
49 void ManualPaintControler::SetManualPaintModel( ManualPaintModel* manualPaintModel ) 
50 {
51         _manualPaintModel       = manualPaintModel;
52 }
53
54 //---------------------------------------------------------------------------
55 ManualPaintModel* ManualPaintControler::GetManualPaintModel( ) 
56 {
57         return _manualPaintModel;
58 }
59
60 //---------------------------------------------------------------------------
61 void ManualPaintControler::SetWxVtk2DBaseView( int id, wxVtk2DBaseView *wxvtk2Dbaseview )
62 {
63         if (id==1) { _wxvtk2Dbaseview1  = wxvtk2Dbaseview; }
64         if (id==2) { _wxvtk2Dbaseview2  = wxvtk2Dbaseview; }
65         if (id==3) { _wxvtk2Dbaseview3  = wxvtk2Dbaseview; }
66         if (id==4) { _wxvtk2Dbaseview4  = wxvtk2Dbaseview; }
67 }
68
69 //---------------------------------------------------------------------------
70 void ManualPaintControler::Config() 
71 {
72         if (_wxvtk2Dbaseview1 != NULL) 
73         {
74                 vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview1->GetInteractorStyleBaseView());
75                 isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this));
76         } // if _wxvtk2Dbaseview
77         if (_wxvtk2Dbaseview2 != NULL) 
78         {
79                 vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview2->GetInteractorStyleBaseView());
80                 isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this));
81         } // if _wxvtk2Dbaseview
82         if (_wxvtk2Dbaseview3 != NULL) 
83         {
84                 vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview3->GetInteractorStyleBaseView());
85                 isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this));
86         } // if _wxvtk2Dbaseview
87         if (_wxvtk2Dbaseview4 != NULL) 
88         {
89                 vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*) (_wxvtk2Dbaseview4->GetInteractorStyleBaseView());
90                 isbv->AddInteractorStyleMaracas(new vtkInteractorManualPaint(this));
91         } // if _wxvtk2Dbaseview
92 }
93
94 //---------------------------------------------------------------------------
95 void ManualPaintControler::PaintImage(int px, int py, int pz,int direction) 
96 {
97         _manualPaintModel->SetDirection( direction );
98         _manualPaintModel->PaintImage(px, py, pz);
99         // The refresh mechanisme is made in the vtkInteractorManualPaint
100         //    RefreshView();
101 }
102
103 //---------------------------------------------------------------------------
104 void ManualPaintControler::SetImageUndo()
105 {
106         _manualPaintModel->SetUndoImage();
107 }
108
109 //---------------------------------------------------------------------------
110 void ManualPaintControler::Undo()
111 {
112         _manualPaintModel->Undo();
113         Refresh_UndoRedo();
114 }
115
116 void ManualPaintControler::Redo()
117 {
118         _manualPaintModel->Redo();
119         Refresh_UndoRedo();
120 }
121
122 void ManualPaintControler::Refresh_UndoRedo()
123 {
124         wxVtk2DBaseView *wxvtk2Dbaseview = NULL;
125         if (_wxvtk2Dbaseview1!=NULL){ wxvtk2Dbaseview=_wxvtk2Dbaseview1; }
126         if (_wxvtk2Dbaseview2!=NULL){ wxvtk2Dbaseview=_wxvtk2Dbaseview2; }
127         if (_wxvtk2Dbaseview3!=NULL){ wxvtk2Dbaseview=_wxvtk2Dbaseview3; }
128         if (_wxvtk2Dbaseview4!=NULL){ wxvtk2Dbaseview=_wxvtk2Dbaseview4; }
129         if (wxvtk2Dbaseview!=NULL)
130         {
131                 vtkMPRBaseData* vtkmprbasedata = (vtkMPRBaseData*) (wxvtk2Dbaseview->GetVtkBaseData());
132                 vtkmprbasedata->SetX( _manualPaintModel->GetRestorBaseInitialPointX() );
133                 vtkmprbasedata->SetY( _manualPaintModel->GetRestorBaseInitialPointY() );
134                 vtkmprbasedata->SetZ( _manualPaintModel->GetRestorBaseInitialPointZ() );
135                 wxCommandEvent newevent(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
136 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
137 #if wxMAJOR_VERSION <= 2
138                 wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor ()->GetParent()->ProcessEvent( newevent );
139 #else
140                 wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor ()->GetParent()->ProcessWindowEvent( newevent );
141 #endif                          
142         } // _wxvtk2Dbaseview
143 }
144
145