comparison OrthancStone/Sources/Scene2DViewport/MeasureCommands.cpp @ 1512:244ad1e4e76a

reorganization of folders
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Jul 2020 16:21:02 +0200
parents Framework/Scene2DViewport/MeasureCommands.cpp@ab81ee8fce1f
children 85e117739eca
comparison
equal deleted inserted replaced
1511:9dfeee74c1e6 1512:244ad1e4e76a
1 /**
2 * Stone of Orthanc
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4 * Department, University Hospital of Liege, Belgium
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium
6 *
7 * This program is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Affero General Public License
9 * as published by the Free Software Foundation, either version 3 of
10 * the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21 #include "MeasureCommands.h"
22
23 #include <memory>
24
25 #include <boost/make_shared.hpp>
26 #include <boost/ref.hpp>
27
28 namespace OrthancStone
29 {
30 void CreateMeasureCommand::Undo()
31 {
32 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
33 // simply disable the measure tool upon undo
34 GetMeasureTool()->Disable();
35 lock->GetController().RemoveMeasureTool(GetMeasureTool());
36 }
37
38 void CreateMeasureCommand::Redo()
39 {
40 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
41 GetMeasureTool()->Enable();
42 lock->GetController().AddMeasureTool(GetMeasureTool());
43 }
44
45 CreateMeasureCommand::CreateMeasureCommand(boost::shared_ptr<IViewport> viewport)
46 : MeasureCommand(viewport)
47 {
48
49 }
50
51 CreateMeasureCommand::~CreateMeasureCommand()
52 {
53 // deleting the command should not change the model state
54 // we thus leave it as is
55 }
56
57 void DeleteMeasureCommand::Redo()
58 {
59 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
60 // simply disable the measure tool upon undo
61 GetMeasureTool()->Disable();
62 lock->GetController().RemoveMeasureTool(GetMeasureTool());
63 }
64
65 void DeleteMeasureCommand::Undo()
66 {
67 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
68 GetMeasureTool()->Enable();
69 lock->GetController().AddMeasureTool(GetMeasureTool());
70 }
71
72 DeleteMeasureCommand::~DeleteMeasureCommand()
73 {
74 // deleting the command should not change the model state
75 // we thus leave it as is
76 }
77
78 DeleteMeasureCommand::DeleteMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport)
79 : MeasureCommand(viewport)
80 , mementoOriginal_(measureTool->GetMemento())
81 , measureTool_(measureTool)
82 , mementoModified_(measureTool->GetMemento())
83 {
84 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
85 GetMeasureTool()->Disable();
86 lock->GetController().RemoveMeasureTool(GetMeasureTool());
87 }
88
89 EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::shared_ptr<IViewport> viewport)
90 : MeasureCommand(viewport)
91 , mementoOriginal_(measureTool->GetMemento())
92 , mementoModified_(measureTool->GetMemento())
93 {
94
95 }
96
97 EditMeasureCommand::~EditMeasureCommand()
98 {
99
100 }
101
102 void EditMeasureCommand::Undo()
103 {
104 // simply disable the measure tool upon undo
105 GetMeasureTool()->SetMemento(mementoOriginal_);
106 }
107
108 void EditMeasureCommand::Redo()
109 {
110 GetMeasureTool()->SetMemento(mementoModified_);
111 }
112 }