SourceXtractorPlusPlus  0.8
Please provide a description of the project.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ImageTile.h
Go to the documentation of this file.
1 
17 /*
18  * ImageTile.hm
19  *
20  * Created on: Feb 20, 2018
21  * Author: mschefer
22  */
23 
24 #ifndef _SEFRAMEWORK_IMAGE_IMAGETILE_H_
25 #define _SEFRAMEWORK_IMAGE_IMAGETILE_H_
26 
29 
30 namespace SourceXtractor {
31 
32 template<typename T> class ImageSource;
33 
35 public:
36  ImageTileBase() : m_modified(false) {}
37 
38  virtual ~ImageTileBase() = default;
39 
40  virtual int getTileSize() const = 0;
41 
42  void setModified(bool modified) {
43  m_modified = modified;
44  }
45 
46  bool isModified() const {
47  return m_modified;
48  }
49 
50  virtual void saveIfModified() = 0;
51 
52 private:
53  bool m_modified;
54 };
55 
56 template <typename T>
57 class ImageTile : public ImageTileBase {
58 public:
59  ImageTile(std::shared_ptr<ImageSource<T>> source, int x, int y, int width, int height) : m_source(source), m_x(x), m_y(y), m_max_x(x+width), m_max_y(y+height) {
60  m_tile_image = VectorImage<T>::create(width, height);
61  }
62 
63  ImageTile(int x, int y, int width, int height) : m_source(nullptr), m_x(x), m_y(y), m_max_x(x+width), m_max_y(y+height) {
64  m_tile_image = VectorImage<T>::create(width, height);
65  }
66 
67  virtual ~ImageTile() override {
69  }
70 
71  bool isPixelInTile(int x, int y) const {
72  return x >= m_x && y >= m_y && x < m_max_x && y < m_max_y;
73  }
74 
75  T getValue(int x, int y) const {
76  assert(isPixelInTile(x,y));
77 
78  return m_tile_image->getValue(x-m_x, y-m_y);
79  }
80 
81  void setValue(int x, int y, T value) {
82  assert(isPixelInTile(x,y));
83 
84  return m_tile_image->setValue(x-m_x, y-m_y, value);
85  }
86 
88  return m_tile_image;
89  }
90 
91  int getTileSize() const override {
92  return (m_max_x-m_x) * (m_max_y-m_y) * sizeof(T);
93  }
94 
95  virtual void saveIfModified() override {
96  if (isModified()) {
97  m_source->saveTile(*this);
98  setModified(false);
99  }
100  }
101 
102  int getPosX() const {
103  return m_x;
104  }
105 
106  int getPosY() const {
107  return m_y;
108  }
109 
110 private:
112  int m_x, m_y;
115 };
116 
117 
118 }
119 
120 
121 #endif /* _SEFRAMEWORK_IMAGE_IMAGETILE_H_ */
virtual ~ImageTileBase()=default
void setValue(int x, int y, T value)
Definition: ImageTile.h:81
std::shared_ptr< VectorImage< T > > getImage()
Definition: ImageTile.h:87
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
int getTileSize() const override
Definition: ImageTile.h:91
virtual void saveIfModified()=0
ImageTile(int x, int y, int width, int height)
Definition: ImageTile.h:63
static std::shared_ptr< VectorImage< T > > create(Args &&...args)
Definition: VectorImage.h:89
std::shared_ptr< VectorImage< T > > m_tile_image
Definition: ImageTile.h:114
ImageTile(std::shared_ptr< ImageSource< T >> source, int x, int y, int width, int height)
Definition: ImageTile.h:59
void setModified(bool modified)
Definition: ImageTile.h:42
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
bool isPixelInTile(int x, int y) const
Definition: ImageTile.h:71
std::shared_ptr< ImageSource< T > > m_source
Definition: ImageTile.h:111
T getValue(int x, int y) const
Definition: ImageTile.h:75
virtual int getTileSize() const =0
virtual ~ImageTile() override
Definition: ImageTile.h:67
virtual void saveIfModified() override
Definition: ImageTile.h:95