Mercurial > hg > orthanc-stone
comparison OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.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 | 646e581e115b |
comparison
equal
deleted
inserted
replaced
1605:b3c439d96d3e | 1606:874e178f34e9 |
---|---|
24 | 24 |
25 namespace OrthancStone | 25 namespace OrthancStone |
26 { | 26 { |
27 namespace Internals | 27 namespace Internals |
28 { | 28 { |
29 FixedPointAligner::FixedPointAligner(boost::shared_ptr<IViewport> viewport, | 29 FixedPointAligner::FixedPointAligner(boost::weak_ptr<IViewport> viewport, |
30 const ScenePoint2D& p) | 30 const ScenePoint2D& p) |
31 : viewport_(viewport) | 31 : viewport_(viewport) |
32 , canvas_(p) | 32 , canvas_(p) |
33 { | 33 { |
34 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); | 34 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); |
35 pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform()); | 35 pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform()); |
36 } | 36 } |
37 | 37 |
38 IViewport::ILock* FixedPointAligner::GetViewportLock() | |
39 { | |
40 boost::shared_ptr<IViewport> viewport = viewport_.lock(); | |
41 if (viewport) | |
42 return viewport->Lock(); | |
43 else | |
44 return nullptr; | |
45 } | |
38 | 46 |
39 void FixedPointAligner::Apply() | 47 void FixedPointAligner::Apply() |
40 { | 48 { |
41 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); | 49 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); |
42 ScenePoint2D p = canvas_.Apply( | 50 ScenePoint2D p = canvas_.Apply( |
43 lock->GetController().GetCanvasToSceneTransform()); | 51 lock->GetController().GetCanvasToSceneTransform()); |
44 | 52 |
45 lock->GetController().SetSceneToCanvasTransform( | 53 lock->GetController().SetSceneToCanvasTransform( |
46 AffineTransform2D::Combine( | 54 AffineTransform2D::Combine( |