Mercurial > hg > orthanc-stone
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 } |