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