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