Mercurial > hg > orthanc-stone
comparison OrthancStone/Sources/Scene2DViewport/CreateLineMeasureTracker.cpp @ 1606:874e178f34e9
- ViewportController now has weak ptr to Viewport
- Measuring tools + related commands and all trackers now store only a weak_ptr to the Viewport and lock() on demand for usage
- LayerHolder and FixedPoint aligner store only a weak_ptr to the Viewport, too
- Fixed float/double warning in GrayscaleWindowingSceneTracker
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Wed, 28 Oct 2020 20:14:34 +0100 |
parents | 8563ea5d8ae4 |
children | 9ac2a65d4172 |
comparison
equal
deleted
inserted
replaced
1605:b3c439d96d3e | 1606:874e178f34e9 |
---|---|
25 #include <OrthancException.h> | 25 #include <OrthancException.h> |
26 | 26 |
27 namespace OrthancStone | 27 namespace OrthancStone |
28 { | 28 { |
29 CreateLineMeasureTracker::CreateLineMeasureTracker( | 29 CreateLineMeasureTracker::CreateLineMeasureTracker( |
30 boost::shared_ptr<IViewport> viewport, | 30 boost::weak_ptr<IViewport> viewport, |
31 const PointerEvent& e) | 31 const PointerEvent& e) |
32 : CreateMeasureTracker(viewport) | 32 : CreateMeasureTracker(viewport) |
33 { | 33 { |
34 ScenePoint2D point; | 34 ScenePoint2D point; |
35 | 35 |
36 { | 36 { |
37 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); | 37 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); |
38 ViewportController& controller = lock->GetController(); | 38 ViewportController& controller = lock->GetController(); |
39 point = e.GetMainPosition().Apply(controller.GetScene().GetCanvasToSceneTransform()); | 39 point = e.GetMainPosition().Apply(controller.GetScene().GetCanvasToSceneTransform()); |
40 } | 40 } |
41 | 41 |
42 command_.reset(new CreateLineMeasureCommand(viewport, point)); | 42 command_.reset(new CreateLineMeasureCommand(viewport, point)); |
54 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, | 54 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, |
55 "Internal error: wrong state in CreateLineMeasureTracker::" | 55 "Internal error: wrong state in CreateLineMeasureTracker::" |
56 "PointerMove: active_ == false"); | 56 "PointerMove: active_ == false"); |
57 } | 57 } |
58 | 58 |
59 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); | 59 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); |
60 ViewportController& controller = lock->GetController(); | 60 ViewportController& controller = lock->GetController(); |
61 | 61 |
62 ScenePoint2D scenePos = event.GetMainPosition().Apply( | 62 ScenePoint2D scenePos = event.GetMainPosition().Apply( |
63 controller.GetScene().GetCanvasToSceneTransform()); | 63 controller.GetScene().GetCanvasToSceneTransform()); |
64 | 64 |