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