Mercurial > hg > orthanc-stone
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_; |