Mercurial > hg > orthanc-stone
comparison OrthancStone/Sources/Scene2D/PanSceneTracker.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 |
---|---|
26 | 26 |
27 #include <memory> | 27 #include <memory> |
28 | 28 |
29 namespace OrthancStone | 29 namespace OrthancStone |
30 { | 30 { |
31 PanSceneTracker::PanSceneTracker(boost::shared_ptr<IViewport> viewport, | 31 PanSceneTracker::PanSceneTracker(boost::weak_ptr<IViewport> viewport, |
32 const PointerEvent& event) | 32 const PointerEvent& event) |
33 : OneGesturePointerTracker(viewport) | 33 : OneGesturePointerTracker(viewport) |
34 { | 34 { |
35 | 35 |
36 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); | 36 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); |
37 | 37 |
38 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform(); | 38 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform(); |
39 originalCanvasToScene_ = lock->GetController().GetCanvasToSceneTransform(); | 39 originalCanvasToScene_ = lock->GetController().GetCanvasToSceneTransform(); |
40 | 40 |
41 pivot_ = event.GetMainPosition().Apply(originalCanvasToScene_); | 41 pivot_ = event.GetMainPosition().Apply(originalCanvasToScene_); |
44 | 44 |
45 void PanSceneTracker::PointerMove(const PointerEvent& event) | 45 void PanSceneTracker::PointerMove(const PointerEvent& event) |
46 { | 46 { |
47 ScenePoint2D p = event.GetMainPosition().Apply(originalCanvasToScene_); | 47 ScenePoint2D p = event.GetMainPosition().Apply(originalCanvasToScene_); |
48 | 48 |
49 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); | 49 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); |
50 | 50 |
51 lock->GetController().SetSceneToCanvasTransform( | 51 lock->GetController().SetSceneToCanvasTransform( |
52 AffineTransform2D::Combine( | 52 AffineTransform2D::Combine( |
53 originalSceneToCanvas_, | 53 originalSceneToCanvas_, |
54 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), | 54 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), |
56 lock->Invalidate(); | 56 lock->Invalidate(); |
57 } | 57 } |
58 | 58 |
59 void PanSceneTracker::Cancel() | 59 void PanSceneTracker::Cancel() |
60 { | 60 { |
61 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); | 61 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); |
62 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_); | 62 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_); |
63 } | 63 } |
64 } | 64 } |