diff Framework/Radiography/RadiographyLayer.h @ 503:77e0eb83ff63 am-touch-events

layers are now Observable and emitting LayerEdited messages
author amazy
date Tue, 26 Feb 2019 12:58:03 +0100
parents 2f6ecb5037ea
children fd9b9d993fc7 f0008c55e5f7
line wrap: on
line diff
--- a/Framework/Radiography/RadiographyLayer.h	Mon Feb 25 17:57:37 2019 +0100
+++ b/Framework/Radiography/RadiographyLayer.h	Tue Feb 26 12:58:03 2019 +0100
@@ -24,9 +24,13 @@
 #include "../Toolbox/AffineTransform2D.h"
 #include "../Toolbox/Extent2D.h"
 #include "../Viewport/CairoContext.h"
+#include "../Messages/IMessage.h"
+#include "../Messages/IObservable.h"
 
 namespace OrthancStone
 {
+  class RadiographyScene;
+
   struct ControlPoint
   {
     double x;
@@ -46,11 +50,24 @@
     {}
   };
 
-  class RadiographyLayer : public boost::noncopyable
+  class RadiographyLayer : public IObservable
   {
     friend class RadiographyScene;
 
   public:
+    class LayerEditedMessage :
+        public OriginMessage<MessageType_RadiographyLayer_Edited, RadiographyLayer>
+    {
+    private:
+
+    public:
+      LayerEditedMessage(const RadiographyLayer& origin) :
+        OriginMessage(origin)
+      {
+      }
+    };
+
+
     class Geometry
     {
       bool               hasCrop_;
@@ -160,7 +177,7 @@
     AffineTransform2D  transformInverse_;
     Geometry           geometry_;
     PhotometricDisplayMode  prefferedPhotometricDisplayMode_;
-
+    const RadiographyScene&   scene_;
 
   protected:
     virtual const AffineTransform2D& GetTransform() const
@@ -173,10 +190,7 @@
       return transformInverse_;
     }
 
-    void SetPreferredPhotomotricDisplayMode(PhotometricDisplayMode  prefferedPhotometricDisplayMode)
-    {
-      prefferedPhotometricDisplayMode_ = prefferedPhotometricDisplayMode;
-    }
+    void SetPreferredPhotomotricDisplayMode(PhotometricDisplayMode  prefferedPhotometricDisplayMode);
 
   private:
     void UpdateTransform();
@@ -197,7 +211,7 @@
                      double zoom);
 
   public:
-    RadiographyLayer();
+    RadiographyLayer(MessageBroker& broker, const RadiographyScene& scene);
 
     virtual ~RadiographyLayer()
     {
@@ -208,6 +222,11 @@
       return index_;
     }
 
+    const RadiographyScene& GetScene() const
+    {
+      return scene_;
+    }
+
     const Geometry& GetGeometry() const
     {
       return geometry_;