diff Samples/Common/MeasureTools.cpp @ 654:462a5074f914

Turned the scene into an observable to be able to dynamically react to scene to canvas transform changes --> now the handles and angle measure adornments are immune to zoom changes
author Benjamin Golinvaux <bgo@osimis.io>
date Tue, 14 May 2019 13:51:00 +0200
parents 1e9ed656318e
children
line wrap: on
line diff
--- a/Samples/Common/MeasureTools.cpp	Tue May 14 13:49:12 2019 +0200
+++ b/Samples/Common/MeasureTools.cpp	Tue May 14 13:51:00 2019 +0200
@@ -26,6 +26,12 @@
 
 namespace OrthancStone
 {
+
+  MeasureTool::~MeasureTool()
+  {
+
+  }
+
   void MeasureTool::Enable()
   {
     enabled_ = true;
@@ -37,5 +43,33 @@
     enabled_ = false;
     RefreshScene();
   }
+
+  bool MeasureTool::IsEnabled() const
+  {
+    return enabled_;
+  }
+
+  OrthancStone::Scene2D& MeasureTool::GetScene()
+  {
+    return scene_;
+  }
+
+  MeasureTool::MeasureTool(MessageBroker& broker, Scene2D& scene)
+    : IObserver(broker)
+    , scene_(scene)
+    , enabled_(true)
+  {
+    scene_.RegisterObserverCallback(
+      new Callable<MeasureTool, Scene2D::SceneTransformChanged>
+      (*this, &MeasureTool::OnSceneTransformChanged));
+  }
+
+  void MeasureTool::OnSceneTransformChanged(
+    const Scene2D::SceneTransformChanged& message)
+  {
+    RefreshScene();
+  }
+
+
 }