Mercurial > hg > orthanc-stone
comparison OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.cpp @ 1972:9c0adcc8feec
refactoring to simplify OneGesturePointerTracker
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 28 Oct 2022 16:21:28 +0200 |
parents | 7053b8a0aaec |
children | b31e494e34c5 |
comparison
equal
deleted
inserted
replaced
1971:e5b31d55206d | 1972:9c0adcc8feec |
---|---|
18 * You should have received a copy of the GNU Lesser General Public | 18 * You should have received a copy of the GNU Lesser General Public |
19 * License along with this program. If not, see | 19 * License along with this program. If not, see |
20 * <http://www.gnu.org/licenses/>. | 20 * <http://www.gnu.org/licenses/>. |
21 **/ | 21 **/ |
22 | 22 |
23 #include "../../Scene2DViewport/ViewportController.h" | 23 |
24 #include "FixedPointAligner.h" | 24 #include "FixedPointAligner.h" |
25 | |
26 #include <OrthancException.h> | |
25 | 27 |
26 namespace OrthancStone | 28 namespace OrthancStone |
27 { | 29 { |
28 namespace Internals | 30 namespace Internals |
29 { | 31 { |
30 FixedPointAligner::FixedPointAligner(boost::weak_ptr<IViewport> viewport, | 32 FixedPointAligner::FixedPointAligner(ViewportController& controller, |
31 const ScenePoint2D& p) | 33 const ScenePoint2D& p) : |
32 : viewport_(viewport) | 34 canvas_(p) |
33 , canvas_(p) | |
34 { | 35 { |
35 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); | 36 pivot_ = canvas_.Apply(controller.GetCanvasToSceneTransform()); |
36 pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform()); | |
37 } | 37 } |
38 | 38 |
39 IViewport::ILock* FixedPointAligner::GetViewportLock() | 39 void FixedPointAligner::Apply(ViewportController& controller) |
40 { | 40 { |
41 boost::shared_ptr<IViewport> viewport = viewport_.lock(); | 41 ScenePoint2D p = canvas_.Apply(controller.GetCanvasToSceneTransform()); |
42 if (viewport) | |
43 return viewport->Lock(); | |
44 else | |
45 return NULL; | |
46 } | |
47 | |
48 void FixedPointAligner::Apply() | |
49 { | |
50 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); | |
51 ScenePoint2D p = canvas_.Apply( | |
52 lock->GetController().GetCanvasToSceneTransform()); | |
53 | 42 |
54 lock->GetController().SetSceneToCanvasTransform( | 43 controller.SetSceneToCanvasTransform( |
55 AffineTransform2D::Combine( | 44 AffineTransform2D::Combine( |
56 lock->GetController().GetSceneToCanvasTransform(), | 45 controller.GetSceneToCanvasTransform(), |
57 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), | 46 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), |
58 p.GetY() - pivot_.GetY()))); | 47 p.GetY() - pivot_.GetY()))); |
59 lock->Invalidate(); | |
60 } | 48 } |
61 } | 49 } |
62 } | 50 } |