Mercurial > hg > orthanc-stone
comparison Framework/Scene2D/RotateSceneTracker.cpp @ 1331:ab81ee8fce1f broker
- Viewport is not passed and stored as a shared_ptr instead
of raw reference.
- ViewportController can now be injected with an undo
stack (not a ctor param anymore, as a preparation for the
move of the undo stack to an interactor)
- Added (temp) flag to disable emscripten events registration
in the WebAssemblyViewport (because legacy client code
deals with them directly)
- Added emscripten_clear_timeout in ~WebGLViewportsRegistry
- Removed GenericToolbox::HoldingRef whose responsibility is
better served with proper callback un-registration.
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Mon, 30 Mar 2020 14:23:46 +0200 |
parents | a5326ce4f24b |
children |
comparison
equal
deleted
inserted
replaced
1329:8d3e669f01a2 | 1331:ab81ee8fce1f |
---|---|
21 #include "RotateSceneTracker.h" | 21 #include "RotateSceneTracker.h" |
22 #include "../Scene2DViewport/ViewportController.h" | 22 #include "../Scene2DViewport/ViewportController.h" |
23 | 23 |
24 namespace OrthancStone | 24 namespace OrthancStone |
25 { | 25 { |
26 RotateSceneTracker::RotateSceneTracker(IViewport& viewport, | 26 RotateSceneTracker::RotateSceneTracker(boost::shared_ptr<IViewport> viewport, |
27 const PointerEvent& event) | 27 const PointerEvent& event) |
28 : OneGesturePointerTracker(viewport) | 28 : OneGesturePointerTracker(viewport) |
29 , click_(event.GetMainPosition()) | 29 , click_(event.GetMainPosition()) |
30 , aligner_(viewport, click_) | 30 , aligner_(viewport, click_) |
31 , isFirst_(true) | 31 , isFirst_(true) |
32 { | 32 { |
33 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 33 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
34 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform(); | 34 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform(); |
35 | 35 |
36 } | 36 } |
37 | 37 |
38 void RotateSceneTracker::PointerMove(const PointerEvent& event) | 38 void RotateSceneTracker::PointerMove(const PointerEvent& event) |
50 { | 50 { |
51 referenceAngle_ = a; | 51 referenceAngle_ = a; |
52 isFirst_ = false; | 52 isFirst_ = false; |
53 } | 53 } |
54 | 54 |
55 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 55 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
56 | 56 |
57 lock->GetController().SetSceneToCanvasTransform( | 57 lock->GetController().SetSceneToCanvasTransform( |
58 AffineTransform2D::Combine( | 58 AffineTransform2D::Combine( |
59 AffineTransform2D::CreateRotation(a - referenceAngle_), | 59 AffineTransform2D::CreateRotation(a - referenceAngle_), |
60 originalSceneToCanvas_)); | 60 originalSceneToCanvas_)); |
64 } | 64 } |
65 | 65 |
66 void RotateSceneTracker::Cancel() | 66 void RotateSceneTracker::Cancel() |
67 { | 67 { |
68 // See remark above | 68 // See remark above |
69 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 69 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
70 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_); | 70 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_); |
71 lock->Invalidate(); | 71 lock->Invalidate(); |
72 } | 72 } |
73 } | 73 } |