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(