comparison OrthancStone/Sources/Scene2D/ZoomSceneTracker.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
23 #include "ZoomSceneTracker.h" 23 #include "ZoomSceneTracker.h"
24 #include "../Scene2DViewport/ViewportController.h" 24 #include "../Scene2DViewport/ViewportController.h"
25 25
26 namespace OrthancStone 26 namespace OrthancStone
27 { 27 {
28 ZoomSceneTracker::ZoomSceneTracker(boost::shared_ptr<IViewport> viewport, 28 ZoomSceneTracker::ZoomSceneTracker(boost::weak_ptr<IViewport> viewport,
29 const PointerEvent& event, 29 const PointerEvent& event,
30 unsigned int canvasHeight) 30 unsigned int canvasHeight)
31 : OneGesturePointerTracker(viewport) 31 : OneGesturePointerTracker(viewport)
32 , clickY_(event.GetMainPosition().GetY()) 32 , clickY_(event.GetMainPosition().GetY())
33 , aligner_(viewport, event.GetMainPosition()) 33 , aligner_(viewport, event.GetMainPosition())
34 { 34 {
35 35
36 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); 36 std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
37 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform(); 37 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform();
38 38
39 if (canvasHeight <= 3) 39 if (canvasHeight <= 3)
40 { 40 {
41 active_ = false; 41 active_ = false;
75 z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0; 75 z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0;
76 } 76 }
77 77
78 double zoom = pow(2.0, z); 78 double zoom = pow(2.0, z);
79 79
80 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); 80 std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
81 lock->GetController().SetSceneToCanvasTransform( 81 lock->GetController().SetSceneToCanvasTransform(
82 AffineTransform2D::Combine( 82 AffineTransform2D::Combine(
83 AffineTransform2D::CreateScaling(zoom, zoom), 83 AffineTransform2D::CreateScaling(zoom, zoom),
84 originalSceneToCanvas_)); 84 originalSceneToCanvas_));
85 aligner_.Apply(); 85 aligner_.Apply();
87 } 87 }
88 } 88 }
89 89
90 void ZoomSceneTracker::Cancel() 90 void ZoomSceneTracker::Cancel()
91 { 91 {
92 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); 92 std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
93 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_); 93 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_);
94 lock->Invalidate(); 94 lock->Invalidate();
95 } 95 }
96 } 96 }