Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/MeasureTrackers.cpp @ 1203:f3bb9a6dd949 broker
locking abstraction in IViewport
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 29 Nov 2019 21:22:21 +0100 |
parents | 0aff28f15ea2 |
children | 86a8266b8888 |
comparison
equal
deleted
inserted
replaced
1200:54cbffabdc45 | 1203:f3bb9a6dd949 |
---|---|
51 controllerW_.lock()->PushCommand(command_); | 51 controllerW_.lock()->PushCommand(command_); |
52 else | 52 else |
53 command_->Undo(); | 53 command_->Undo(); |
54 } | 54 } |
55 | 55 |
56 Scene2D& CreateMeasureTracker::GetScene() | |
57 { | |
58 return controllerW_.lock()->GetScene(); | |
59 } | |
60 | |
61 EditMeasureTracker::EditMeasureTracker(boost::weak_ptr<ViewportController> controllerW, const PointerEvent& e) | 56 EditMeasureTracker::EditMeasureTracker(boost::weak_ptr<ViewportController> controllerW, const PointerEvent& e) |
62 : controllerW_(controllerW) | 57 : controllerW_(controllerW) |
63 , alive_(true) | 58 , alive_(true) |
64 , commitResult_(true) | 59 , commitResult_(true) |
65 { | 60 { |
66 boost::shared_ptr<ViewportController> controller = controllerW.lock(); | 61 boost::shared_ptr<ViewportController> controller = controllerW.lock(); |
67 originalClickPosition_ = e.GetMainPosition().Apply(controller->GetScene().GetCanvasToSceneTransform()); | |
68 } | |
69 | 62 |
70 Scene2D& EditMeasureTracker::GetScene() | 63 if (controller) |
71 { | 64 { |
72 return controllerW_.lock()->GetScene(); | 65 std::auto_ptr<IViewport::ILock> lock(controller->GetViewport().Lock()); |
66 originalClickPosition_ = e.GetMainPosition().Apply(lock->GetScene().GetCanvasToSceneTransform()); | |
67 } | |
73 } | 68 } |
74 | 69 |
75 void EditMeasureTracker::Cancel() | 70 void EditMeasureTracker::Cancel() |
76 { | 71 { |
77 commitResult_ = false; | 72 commitResult_ = false; |