Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/LineMeasureTool.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 | a29c13497557 |
children | 0aff28f15ea2 |
comparison
equal
deleted
inserted
replaced
865:a29c13497557 | 866:c71ef52602a0 |
---|---|
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
19 **/ | 19 **/ |
20 | 20 |
21 #include "LineMeasureTool.h" | 21 #include "LineMeasureTool.h" |
22 #include "MeasureToolsToolbox.h" | 22 #include "MeasureToolsToolbox.h" |
23 #include "EditLineMeasureTracker.h" | |
23 #include "LayerHolder.h" | 24 #include "LayerHolder.h" |
24 | 25 |
25 #include <Core/Logging.h> | 26 #include <Core/Logging.h> |
26 | 27 |
27 #include <boost/make_shared.hpp> | 28 #include <boost/make_shared.hpp> |
115 } | 116 } |
116 | 117 |
117 bool LineMeasureTool::HitTest(ScenePoint2D p) const | 118 bool LineMeasureTool::HitTest(ScenePoint2D p) const |
118 { | 119 { |
119 return LineHitTest(p) != LineHighlightArea_None; | 120 return LineHitTest(p) != LineHighlightArea_None; |
121 } | |
122 | |
123 boost::shared_ptr<IFlexiblePointerTracker> LineMeasureTool::CreateEditionTracker(const PointerEvent& e) | |
124 { | |
125 ScenePoint2D scenePos = e.GetMainPosition().Apply( | |
126 GetScene()->GetCanvasToSceneTransform()); | |
127 | |
128 if (!HitTest(scenePos)) | |
129 return boost::shared_ptr<IFlexiblePointerTracker>(); | |
130 | |
131 /** | |
132 new EditLineMeasureTracker( | |
133 boost::shared_ptr<LineMeasureTool> measureTool; | |
134 MessageBroker & broker, | |
135 boost::weak_ptr<ViewportController> controllerW, | |
136 const PointerEvent & e); | |
137 */ | |
138 boost::shared_ptr<EditLineMeasureTracker> editLineMeasureTracker( | |
139 new EditLineMeasureTracker(shared_from_this(), GetBroker(), GetController(), e)); | |
140 return editLineMeasureTracker; | |
141 } | |
142 | |
143 | |
144 boost::shared_ptr<MeasureToolMemento> LineMeasureTool::GetMemento() const | |
145 { | |
146 boost::shared_ptr<LineMeasureToolMemento> memento(new LineMeasureToolMemento()); | |
147 memento->start_ = start_; | |
148 memento->end_ = end_; | |
149 return memento; | |
150 } | |
151 | |
152 void LineMeasureTool::SetMemento(boost::shared_ptr<MeasureToolMemento> mementoBase) | |
153 { | |
154 boost::shared_ptr<LineMeasureToolMemento> memento = boost::dynamic_pointer_cast<LineMeasureToolMemento>(mementoBase); | |
155 ORTHANC_ASSERT(memento.get() != NULL, "Internal error: wrong (or bad) memento"); | |
156 start_ = memento->start_; | |
157 end_ = memento->end_; | |
158 RefreshScene(); | |
120 } | 159 } |
121 | 160 |
122 void LineMeasureTool::RefreshScene() | 161 void LineMeasureTool::RefreshScene() |
123 { | 162 { |
124 if (IsSceneAlive()) | 163 if (IsSceneAlive()) |