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 }