comparison 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
comparison
equal deleted inserted replaced
502:3ae7563b4fe1 503:77e0eb83ff63
22 #pragma once 22 #pragma once
23 23
24 #include "../Toolbox/AffineTransform2D.h" 24 #include "../Toolbox/AffineTransform2D.h"
25 #include "../Toolbox/Extent2D.h" 25 #include "../Toolbox/Extent2D.h"
26 #include "../Viewport/CairoContext.h" 26 #include "../Viewport/CairoContext.h"
27 #include "../Messages/IMessage.h"
28 #include "../Messages/IObservable.h"
27 29
28 namespace OrthancStone 30 namespace OrthancStone
29 { 31 {
32 class RadiographyScene;
33
30 struct ControlPoint 34 struct ControlPoint
31 { 35 {
32 double x; 36 double x;
33 double y; 37 double y;
34 size_t index; 38 size_t index;
44 y(0), 48 y(0),
45 index(std::numeric_limits<size_t>::max()) 49 index(std::numeric_limits<size_t>::max())
46 {} 50 {}
47 }; 51 };
48 52
49 class RadiographyLayer : public boost::noncopyable 53 class RadiographyLayer : public IObservable
50 { 54 {
51 friend class RadiographyScene; 55 friend class RadiographyScene;
52 56
53 public: 57 public:
58 class LayerEditedMessage :
59 public OriginMessage<MessageType_RadiographyLayer_Edited, RadiographyLayer>
60 {
61 private:
62
63 public:
64 LayerEditedMessage(const RadiographyLayer& origin) :
65 OriginMessage(origin)
66 {
67 }
68 };
69
70
54 class Geometry 71 class Geometry
55 { 72 {
56 bool hasCrop_; 73 bool hasCrop_;
57 unsigned int cropX_; 74 unsigned int cropX_;
58 unsigned int cropY_; 75 unsigned int cropY_;
158 unsigned int height_; 175 unsigned int height_;
159 AffineTransform2D transform_; 176 AffineTransform2D transform_;
160 AffineTransform2D transformInverse_; 177 AffineTransform2D transformInverse_;
161 Geometry geometry_; 178 Geometry geometry_;
162 PhotometricDisplayMode prefferedPhotometricDisplayMode_; 179 PhotometricDisplayMode prefferedPhotometricDisplayMode_;
163 180 const RadiographyScene& scene_;
164 181
165 protected: 182 protected:
166 virtual const AffineTransform2D& GetTransform() const 183 virtual const AffineTransform2D& GetTransform() const
167 { 184 {
168 return transform_; 185 return transform_;
171 virtual const AffineTransform2D& GetTransformInverse() const 188 virtual const AffineTransform2D& GetTransformInverse() const
172 { 189 {
173 return transformInverse_; 190 return transformInverse_;
174 } 191 }
175 192
176 void SetPreferredPhotomotricDisplayMode(PhotometricDisplayMode prefferedPhotometricDisplayMode) 193 void SetPreferredPhotomotricDisplayMode(PhotometricDisplayMode prefferedPhotometricDisplayMode);
177 {
178 prefferedPhotometricDisplayMode_ = prefferedPhotometricDisplayMode;
179 }
180 194
181 private: 195 private:
182 void UpdateTransform(); 196 void UpdateTransform();
183 197
184 void AddToExtent(Extent2D& extent, 198 void AddToExtent(Extent2D& extent,
195 209
196 void DrawBorders(CairoContext& context, 210 void DrawBorders(CairoContext& context,
197 double zoom); 211 double zoom);
198 212
199 public: 213 public:
200 RadiographyLayer(); 214 RadiographyLayer(MessageBroker& broker, const RadiographyScene& scene);
201 215
202 virtual ~RadiographyLayer() 216 virtual ~RadiographyLayer()
203 { 217 {
204 } 218 }
205 219
206 size_t GetIndex() const 220 size_t GetIndex() const
207 { 221 {
208 return index_; 222 return index_;
223 }
224
225 const RadiographyScene& GetScene() const
226 {
227 return scene_;
209 } 228 }
210 229
211 const Geometry& GetGeometry() const 230 const Geometry& GetGeometry() const
212 { 231 {
213 return geometry_; 232 return geometry_;