comparison OrthancStone/Sources/Scene2D/RotateSceneTracker.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
22 #include "RotateSceneTracker.h" 22 #include "RotateSceneTracker.h"
23 #include "../Scene2DViewport/ViewportController.h" 23 #include "../Scene2DViewport/ViewportController.h"
24 24
25 namespace OrthancStone 25 namespace OrthancStone
26 { 26 {
27 RotateSceneTracker::RotateSceneTracker(boost::shared_ptr<IViewport> viewport, 27 RotateSceneTracker::RotateSceneTracker(boost::weak_ptr<IViewport> viewport,
28 const PointerEvent& event) : 28 const PointerEvent& event) :
29 OneGesturePointerTracker(viewport), 29 OneGesturePointerTracker(viewport),
30 click_(event.GetMainPosition()), 30 click_(event.GetMainPosition()),
31 aligner_(viewport, click_), 31 aligner_(viewport, click_),
32 referenceAngle_(0), 32 referenceAngle_(0),
33 isFirst_(true) 33 isFirst_(true)
34 { 34 {
35 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); 35 std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
36 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform(); 36 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform();
37 } 37 }
38 38
39 39
40 void RotateSceneTracker::PointerMove(const PointerEvent& event) 40 void RotateSceneTracker::PointerMove(const PointerEvent& event)
52 { 52 {
53 referenceAngle_ = a; 53 referenceAngle_ = a;
54 isFirst_ = false; 54 isFirst_ = false;
55 } 55 }
56 56
57 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); 57 std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
58 58
59 lock->GetController().SetSceneToCanvasTransform( 59 lock->GetController().SetSceneToCanvasTransform(
60 AffineTransform2D::Combine( 60 AffineTransform2D::Combine(
61 AffineTransform2D::CreateRotation(a - referenceAngle_), 61 AffineTransform2D::CreateRotation(a - referenceAngle_),
62 originalSceneToCanvas_)); 62 originalSceneToCanvas_));
67 67
68 68
69 void RotateSceneTracker::Cancel() 69 void RotateSceneTracker::Cancel()
70 { 70 {
71 // See remark above 71 // See remark above
72 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); 72 std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
73 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_); 73 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_);
74 lock->Invalidate(); 74 lock->Invalidate();
75 } 75 }
76 } 76 }