diff Framework/Scene2D/Scene2D.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 b4fe9642e83b
children 059e1fd05fd6
line wrap: on
line diff
--- a/Framework/Scene2D/Scene2D.cpp	Tue May 14 13:49:12 2019 +0200
+++ b/Framework/Scene2D/Scene2D.cpp	Tue May 14 13:51:00 2019 +0200
@@ -75,10 +75,11 @@
   };
   
   
-  Scene2D::Scene2D(const Scene2D& other) :
-    sceneToCanvas_(other.sceneToCanvas_),
-    canvasToScene_(other.canvasToScene_),
-    layerCounter_(0)
+  Scene2D::Scene2D(const Scene2D& other) 
+    : IObservable(other.GetBroker())
+    , sceneToCanvas_(other.sceneToCanvas_)
+    , canvasToScene_(other.canvasToScene_)
+    , layerCounter_(0)
   {
     for (Content::const_iterator it = other.content_.begin();
          it != other.content_.end(); ++it)
@@ -220,9 +221,9 @@
 
     sceneToCanvas_ = transform;
     canvasToScene_ = inverse;
+    BroadcastMessage(SceneTransformChanged(*this));
   }
 
-
   void Scene2D::FitContent(unsigned int canvasWidth,
                            unsigned int canvasHeight)
   {