Mercurial > hg > orthanc-stone
diff Framework/Scene2D/Internals/FixedPointAligner.cpp @ 1305:a5326ce4f24b broker
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Wed, 04 Mar 2020 09:45:38 +0100 |
parents | 2d8ab34c8c91 |
children | ab81ee8fce1f |
line wrap: on
line diff
--- a/Framework/Scene2D/Internals/FixedPointAligner.cpp Wed Mar 04 09:44:34 2020 +0100 +++ b/Framework/Scene2D/Internals/FixedPointAligner.cpp Wed Mar 04 09:45:38 2020 +0100 @@ -25,26 +25,28 @@ { namespace Internals { - FixedPointAligner::FixedPointAligner(boost::weak_ptr<ViewportController> controllerW, + FixedPointAligner::FixedPointAligner(IViewport& viewport, const ScenePoint2D& p) - : controllerW_(controllerW) + : viewport_(viewport) , canvas_(p) { - boost::shared_ptr<ViewportController> controller = controllerW_.lock(); - pivot_ = canvas_.Apply(controller->GetCanvasToSceneTransform()); + std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); + pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform()); } void FixedPointAligner::Apply() { - boost::shared_ptr<ViewportController> controller = controllerW_.lock(); - ScenePoint2D p = canvas_.Apply(controller->GetCanvasToSceneTransform()); + std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); + ScenePoint2D p = canvas_.Apply( + lock->GetController().GetCanvasToSceneTransform()); - controller->SetSceneToCanvasTransform( + lock->GetController().SetSceneToCanvasTransform( AffineTransform2D::Combine( - controller->GetSceneToCanvasTransform(), + lock->GetController().GetSceneToCanvasTransform(), AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), p.GetY() - pivot_.GetY()))); + lock->Invalidate(); } } }