Mercurial > hg > orthanc-stone
comparison Framework/Radiography/RadiographyLayer.h @ 476:a95090305dd4 am-touch-events
Introduced ControlPoint instead of Corner in the trackers and layers + drawing mask from the ControlPoints
author | am@osimis.io |
---|---|
date | Wed, 13 Feb 2019 12:04:02 +0100 |
parents | 3c28542229a3 |
children | 2f6ecb5037ea |
comparison
equal
deleted
inserted
replaced
475:3c28542229a3 | 476:a95090305dd4 |
---|---|
25 #include "../Toolbox/Extent2D.h" | 25 #include "../Toolbox/Extent2D.h" |
26 #include "../Viewport/CairoContext.h" | 26 #include "../Viewport/CairoContext.h" |
27 | 27 |
28 namespace OrthancStone | 28 namespace OrthancStone |
29 { | 29 { |
30 struct ControlPoint | |
31 { | |
32 double x; | |
33 double y; | |
34 size_t index; | |
35 | |
36 ControlPoint(double x, double y, size_t index) | |
37 : x(x), | |
38 y(y), | |
39 index(index) | |
40 {} | |
41 | |
42 ControlPoint() | |
43 : x(0), | |
44 y(0), | |
45 index(std::numeric_limits<size_t>::max()) | |
46 {} | |
47 }; | |
48 | |
30 class RadiographyLayer : public boost::noncopyable | 49 class RadiographyLayer : public boost::noncopyable |
31 { | 50 { |
32 friend class RadiographyScene; | 51 friend class RadiographyScene; |
33 | 52 |
34 public: | 53 public: |
142 Geometry geometry_; | 161 Geometry geometry_; |
143 PhotometricDisplayMode prefferedPhotometricDisplayMode_; | 162 PhotometricDisplayMode prefferedPhotometricDisplayMode_; |
144 | 163 |
145 | 164 |
146 protected: | 165 protected: |
147 const AffineTransform2D& GetTransform() const | 166 virtual const AffineTransform2D& GetTransform() const |
148 { | 167 { |
149 return transform_; | 168 return transform_; |
150 } | 169 } |
151 | 170 |
171 virtual const AffineTransform2D& GetTransformInverse() const | |
172 { | |
173 return transformInverse_; | |
174 } | |
175 | |
152 void SetPreferredPhotomotricDisplayMode(PhotometricDisplayMode prefferedPhotometricDisplayMode) | 176 void SetPreferredPhotomotricDisplayMode(PhotometricDisplayMode prefferedPhotometricDisplayMode) |
153 { | 177 { |
154 prefferedPhotometricDisplayMode_ = prefferedPhotometricDisplayMode; | 178 prefferedPhotometricDisplayMode_ = prefferedPhotometricDisplayMode; |
155 } | 179 } |
180 | |
181 virtual void GetControlPointInternal(ControlPoint& controlPoint, | |
182 size_t index) const; | |
156 | 183 |
157 private: | 184 private: |
158 void UpdateTransform(); | 185 void UpdateTransform(); |
159 | 186 |
160 void AddToExtent(Extent2D& extent, | 187 void AddToExtent(Extent2D& extent, |
161 double x, | 188 double x, |
162 double y) const; | 189 double y) const; |
163 | 190 |
164 void GetCornerInternal(double& x, | |
165 double& y, | |
166 Corner corner, | |
167 unsigned int cropX, | |
168 unsigned int cropY, | |
169 unsigned int cropWidth, | |
170 unsigned int cropHeight) const; | |
171 | |
172 void SetIndex(size_t index) | 191 void SetIndex(size_t index) |
173 { | 192 { |
174 index_ = index; | 193 index_ = index; |
175 } | 194 } |
176 | 195 |
177 bool Contains(double x, | 196 bool Contains(double x, |
178 double y) const; | 197 double y) const; |
179 | 198 |
180 void DrawBorders(CairoContext& context, | 199 void DrawBorders(CairoContext& context, |
181 double zoom); | 200 double zoom); |
182 | 201 |
183 public: | 202 public: |
184 RadiographyLayer(); | 203 RadiographyLayer(); |
230 } | 249 } |
231 | 250 |
232 unsigned int GetWidth() const | 251 unsigned int GetWidth() const |
233 { | 252 { |
234 return width_; | 253 return width_; |
235 } | 254 } |
236 | 255 |
237 unsigned int GetHeight() const | 256 unsigned int GetHeight() const |
238 { | 257 { |
239 return height_; | 258 return height_; |
240 } | 259 } |
241 | 260 |
242 Extent2D GetExtent() const; | 261 Extent2D GetExtent() const; |
243 | 262 |
244 bool GetPixel(unsigned int& imageX, | 263 bool GetPixel(unsigned int& imageX, |
245 unsigned int& imageY, | 264 unsigned int& imageY, |
250 double y); | 269 double y); |
251 | 270 |
252 void GetCenter(double& centerX, | 271 void GetCenter(double& centerX, |
253 double& centerY) const; | 272 double& centerY) const; |
254 | 273 |
255 void GetCorner(double& x /* out */, | 274 void GetControlPoint(ControlPoint& controlPoint, |
256 double& y /* out */, | 275 size_t index) const; |
257 Corner corner) const; | 276 |
258 | 277 virtual size_t GetControlPointCount() const; |
259 bool LookupCorner(Corner& corner /* out */, | 278 |
260 double x, | 279 bool LookupControlPoint(ControlPoint& controlPoint /* out */, |
261 double y, | 280 double x, |
262 double zoom, | 281 double y, |
263 double viewportDistance) const; | 282 double zoom, |
283 double viewportDistance) const; | |
264 | 284 |
265 virtual bool GetDefaultWindowing(float& center, | 285 virtual bool GetDefaultWindowing(float& center, |
266 float& width) const = 0; | 286 float& width) const = 0; |
267 | 287 |
268 PhotometricDisplayMode GetPreferredPhotomotricDisplayMode() const | 288 PhotometricDisplayMode GetPreferredPhotomotricDisplayMode() const |