diff 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
line wrap: on
line diff
--- a/OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.cpp	Fri Oct 28 13:38:19 2022 +0200
+++ b/OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.cpp	Fri Oct 28 16:21:28 2022 +0200
@@ -20,43 +20,31 @@
  * <http://www.gnu.org/licenses/>.
  **/
 
-#include "../../Scene2DViewport/ViewportController.h"
+
 #include "FixedPointAligner.h"
 
+#include <OrthancException.h>
+
 namespace OrthancStone
 {
   namespace Internals
   {
-    FixedPointAligner::FixedPointAligner(boost::weak_ptr<IViewport> viewport,
-                                         const ScenePoint2D& p) 
-      : viewport_(viewport)
-      , canvas_(p)
+    FixedPointAligner::FixedPointAligner(ViewportController& controller,
+                                         const ScenePoint2D& p) :
+      canvas_(p)
     {
-      std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
-      pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform());
+      pivot_ = canvas_.Apply(controller.GetCanvasToSceneTransform());
     }
 
-    IViewport::ILock* FixedPointAligner::GetViewportLock()
+    void FixedPointAligner::Apply(ViewportController& controller)
     {
-      boost::shared_ptr<IViewport> viewport = viewport_.lock();
-      if (viewport)
-        return viewport->Lock();
-      else
-        return NULL;
-    }
-    
-    void FixedPointAligner::Apply()
-    {
-      std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
-      ScenePoint2D p = canvas_.Apply(
-        lock->GetController().GetCanvasToSceneTransform());
+      ScenePoint2D p = canvas_.Apply(controller.GetCanvasToSceneTransform());
 
-      lock->GetController().SetSceneToCanvasTransform(
+      controller.SetSceneToCanvasTransform(
         AffineTransform2D::Combine(
-          lock->GetController().GetSceneToCanvasTransform(),
+          controller.GetSceneToCanvasTransform(),
           AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(),
                                           p.GetY() - pivot_.GetY())));
-      lock->Invalidate();
     }
   }
 }