Mercurial > hg > orthanc-stone
comparison Framework/Scene2D/PanSceneTracker.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 |
---|---|
25 | 25 |
26 #include <memory> | 26 #include <memory> |
27 | 27 |
28 namespace OrthancStone | 28 namespace OrthancStone |
29 { | 29 { |
30 PanSceneTracker::PanSceneTracker(IViewport& viewport, | 30 PanSceneTracker::PanSceneTracker(boost::shared_ptr<IViewport> viewport, |
31 const PointerEvent& event) | 31 const PointerEvent& event) |
32 : OneGesturePointerTracker(viewport) | 32 : OneGesturePointerTracker(viewport) |
33 { | 33 { |
34 | 34 |
35 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 35 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
36 | 36 |
37 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform(); | 37 originalSceneToCanvas_ = lock->GetController().GetSceneToCanvasTransform(); |
38 originalCanvasToScene_ = lock->GetController().GetCanvasToSceneTransform(); | 38 originalCanvasToScene_ = lock->GetController().GetCanvasToSceneTransform(); |
39 | 39 |
40 pivot_ = event.GetMainPosition().Apply(originalCanvasToScene_); | 40 pivot_ = event.GetMainPosition().Apply(originalCanvasToScene_); |
43 | 43 |
44 void PanSceneTracker::PointerMove(const PointerEvent& event) | 44 void PanSceneTracker::PointerMove(const PointerEvent& event) |
45 { | 45 { |
46 ScenePoint2D p = event.GetMainPosition().Apply(originalCanvasToScene_); | 46 ScenePoint2D p = event.GetMainPosition().Apply(originalCanvasToScene_); |
47 | 47 |
48 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 48 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
49 | 49 |
50 lock->GetController().SetSceneToCanvasTransform( | 50 lock->GetController().SetSceneToCanvasTransform( |
51 AffineTransform2D::Combine( | 51 AffineTransform2D::Combine( |
52 originalSceneToCanvas_, | 52 originalSceneToCanvas_, |
53 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), | 53 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), |
55 lock->Invalidate(); | 55 lock->Invalidate(); |
56 } | 56 } |
57 | 57 |
58 void PanSceneTracker::Cancel() | 58 void PanSceneTracker::Cancel() |
59 { | 59 { |
60 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 60 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
61 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_); | 61 lock->GetController().SetSceneToCanvasTransform(originalSceneToCanvas_); |
62 } | 62 } |
63 } | 63 } |