Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/MeasureCommands.cpp @ 866:c71ef52602a0 toa2019062501
Added the ability to edit existing measuring tools (demo not updated yet)
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Tue, 25 Jun 2019 17:54:46 +0200 |
parents | e42b491f1fb2 |
children | ac88989817e3 |
comparison
equal
deleted
inserted
replaced
865:a29c13497557 | 866:c71ef52602a0 |
---|---|
48 { | 48 { |
49 // deleting the command should not change the model state | 49 // deleting the command should not change the model state |
50 // we thus leave it as is | 50 // we thus leave it as is |
51 } | 51 } |
52 | 52 |
53 EditMeasureCommand::EditMeasureCommand(boost::shared_ptr<MeasureTool> measureTool, boost::weak_ptr<ViewportController> controllerW) | |
54 : TrackerCommand(controllerW) | |
55 , mementoOriginal_(measureTool->GetMemento()) | |
56 , mementoModified_(measureTool->GetMemento()) | |
57 { | |
58 | |
59 } | |
60 | |
61 EditMeasureCommand::~EditMeasureCommand() | |
62 { | |
63 | |
64 } | |
65 | |
66 void EditMeasureCommand::Undo() | |
67 { | |
68 // simply disable the measure tool upon undo | |
69 GetMeasureTool()->SetMemento(mementoOriginal_); | |
70 } | |
71 | |
72 void EditMeasureCommand::Redo() | |
73 { | |
74 GetMeasureTool()->SetMemento(mementoModified_); | |
75 } | |
76 | |
53 CreateLineMeasureCommand::CreateLineMeasureCommand( | 77 CreateLineMeasureCommand::CreateLineMeasureCommand( |
54 MessageBroker& broker, | 78 MessageBroker& broker, |
55 boost::weak_ptr<ViewportController> controllerW, | 79 boost::weak_ptr<ViewportController> controllerW, |
56 ScenePoint2D point) | 80 ScenePoint2D point) |
57 : CreateMeasureCommand(controllerW) | 81 : CreateMeasureCommand(controllerW) |
65 void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos) | 89 void CreateLineMeasureCommand::SetEnd(ScenePoint2D scenePos) |
66 { | 90 { |
67 measureTool_->SetEnd(scenePos); | 91 measureTool_->SetEnd(scenePos); |
68 } | 92 } |
69 | 93 |
94 EditLineMeasureCommand::EditLineMeasureCommand( | |
95 boost::shared_ptr<LineMeasureTool> measureTool, | |
96 MessageBroker& broker, | |
97 boost::weak_ptr<ViewportController> controllerW) | |
98 : EditMeasureCommand(measureTool,controllerW) | |
99 , measureTool_(measureTool) | |
100 { | |
101 } | |
102 | |
103 | |
104 void EditLineMeasureCommand::SetStart(ScenePoint2D scenePos) | |
105 { | |
106 measureTool_->SetStart(scenePos); | |
107 mementoModified_ = measureTool_->GetMemento(); | |
108 } | |
109 | |
110 | |
111 void EditLineMeasureCommand::SetEnd(ScenePoint2D scenePos) | |
112 { | |
113 measureTool_->SetEnd(scenePos); | |
114 mementoModified_ = measureTool_->GetMemento(); | |
115 } | |
116 | |
70 CreateAngleMeasureCommand::CreateAngleMeasureCommand( | 117 CreateAngleMeasureCommand::CreateAngleMeasureCommand( |
71 MessageBroker& broker, | 118 MessageBroker& broker, |
72 boost::weak_ptr<ViewportController> controllerW, | 119 boost::weak_ptr<ViewportController> controllerW, |
73 ScenePoint2D point) | 120 ScenePoint2D point) |
74 : CreateMeasureCommand(controllerW) | 121 : CreateMeasureCommand(controllerW) |
97 { | 144 { |
98 boost::shared_ptr<ViewportController> controller = controllerW_.lock(); | 145 boost::shared_ptr<ViewportController> controller = controllerW_.lock(); |
99 assert(controller); // accessing dead object? | 146 assert(controller); // accessing dead object? |
100 return controller; | 147 return controller; |
101 } | 148 } |
149 | |
150 EditAngleMeasureCommand::EditAngleMeasureCommand( | |
151 boost::shared_ptr<AngleMeasureTool> measureTool, | |
152 MessageBroker& broker, | |
153 boost::weak_ptr<ViewportController> controllerW) | |
154 : EditMeasureCommand(measureTool, controllerW) | |
155 , measureTool_(measureTool) | |
156 { | |
157 } | |
158 | |
159 void EditAngleMeasureCommand::SetCenter(ScenePoint2D scenePos) | |
160 { | |
161 measureTool_->SetCenter(scenePos); | |
162 mementoModified_ = measureTool_->GetMemento(); | |
163 } | |
164 | |
165 | |
166 void EditAngleMeasureCommand::SetSide1End(ScenePoint2D scenePos) | |
167 { | |
168 measureTool_->SetSide1End(scenePos); | |
169 mementoModified_ = measureTool_->GetMemento(); | |
170 } | |
171 | |
172 | |
173 void EditAngleMeasureCommand::SetSide2End(ScenePoint2D scenePos) | |
174 { | |
175 measureTool_->SetSide2End(scenePos); | |
176 mementoModified_ = measureTool_->GetMemento(); | |
177 } | |
178 | |
102 } | 179 } |