SourceXtractorPlusPlus  0.13
Please provide a description of the project.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ImageTile.cpp
Go to the documentation of this file.
1 
21 
22 namespace SourceXtractor {
23 
24 template<typename T>
25 class ImageTileImpl : public ImageTile {
26 public:
27 
28  ImageTileImpl(ImageType image_type, int x, int y, int width, int height, std::shared_ptr<ImageSource> source)
29  : ImageTile(image_type, x, y, width, height, source) {
30  }
31 
32 
33  virtual int getTileMemorySize() const {
34  return getWidth() * getHeight() * sizeof(T);
35  }
36 
37  virtual void* getDataPtr() {
39  }
40 
41  template<typename U>
42  void getValueImpl(int x, int y, U& value) const {
43  assert(isPixelInTile(x,y));
45  value = image->getValue(x-m_x, y-m_y);
46  }
47 
48  template<typename U>
49  void setValueImpl(int x, int y, U value) {
50  assert(isPixelInTile(x,y));
52  image->setValue(x-m_x, y-m_y, value);
53  }
54 
55  virtual void getValue(int x, int y, float& value) const {
56  getValueImpl(x, y, value);
57  }
58 
59  virtual void getValue(int x, int y, double& value) const {
60  getValueImpl(x, y, value);
61  }
62 
63  virtual void getValue(int x, int y, int& value) const {
64  getValueImpl(x, y, value);
65  }
66 
67  virtual void getValue(int x, int y, unsigned int& value) const {
68  getValueImpl(x, y, value);
69  }
70 
71  virtual void getValue(int x, int y, std::int64_t& value) const {
72  getValueImpl(x, y, value);
73  }
74 
75  virtual void setValue(int x, int y, float value) {
76  setValueImpl(x, y, value);
77  }
78 
79  virtual void setValue(int x, int y, double value) {
80  setValueImpl(x, y, value);
81  }
82 
83  virtual void setValue(int x, int y, int value) {
84  setValueImpl(x, y, value);
85  }
86 
87  virtual void setValue(int x, int y, unsigned int value) {
88  setValueImpl(x, y, value);
89  }
90 
91  virtual void setValue(int x, int y, std::int64_t value) {
92  setValueImpl(x, y, value);
93  }
94 };
95 
97  switch (image_type) {
98  default:
99  case FloatImage:
100  return std::make_shared<ImageTileImpl<float>>(image_type, x, y, width, height, source);
101  case DoubleImage:
102  return std::make_shared<ImageTileImpl<double>>(image_type, x, y, width, height, source);
103  case IntImage:
104  return std::make_shared<ImageTileImpl<int>>(image_type, x, y, width, height, source);
105  case UIntImage:
106  return std::make_shared<ImageTileImpl<unsigned int>>(image_type, x, y, width, height, source);
107  case LongLongImage:
108  return std::make_shared<ImageTileImpl<std::int64_t>>(image_type, x, y, width, height, source);
109  }
110 }
111 
113  if (isModified()) {
114  m_source->saveTile(*this);
115  setModified(false);
116  }
117 }
118 
119 }
120 
121 
virtual void getValue(int x, int y, int &value) const
Definition: ImageTile.cpp:63
virtual void * getDataPtr()
Definition: ImageTile.cpp:37
void getValueImpl(int x, int y, U &value) const
Definition: ImageTile.cpp:42
void setValue(int x, int y, T value) final
Definition: VectorImage.h:110
std::shared_ptr< void > m_tile_image
Definition: ImageTile.h:189
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
virtual void setValue(int x, int y, std::int64_t value)
Definition: ImageTile.cpp:91
virtual void setValue(int x, int y, unsigned int value)
Definition: ImageTile.cpp:87
virtual int getTileMemorySize() const
Definition: ImageTile.cpp:33
ImageTileImpl(ImageType image_type, int x, int y, int width, int height, std::shared_ptr< ImageSource > source)
Definition: ImageTile.cpp:28
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
virtual void setValue(int x, int y, int value)
Definition: ImageTile.cpp:83
void setModified(bool modified)
Definition: ImageTile.h:99
virtual void getValue(int x, int y, float &value) const
Definition: ImageTile.cpp:55
Image implementation which keeps the pixel values in memory.
Definition: VectorImage.h:53
virtual void saveIfModified()
Definition: ImageTile.cpp:112
virtual void getValue(int x, int y, std::int64_t &value) const
Definition: ImageTile.cpp:71
std::shared_ptr< ImageSource > m_source
Definition: ImageTile.h:185
T static_pointer_cast(T...args)
bool isModified() const
Definition: ImageTile.h:103
virtual void getValue(int x, int y, unsigned int &value) const
Definition: ImageTile.cpp:67
int getWidth() const
Definition: ImageTile.h:66
bool isPixelInTile(int x, int y) const
Definition: ImageTile.h:52
void setValueImpl(int x, int y, U value)
Definition: ImageTile.cpp:49
static std::shared_ptr< ImageTile > create(ImageType image_type, int x, int y, int width, int height, std::shared_ptr< ImageSource > source=nullptr)
Definition: ImageTile.cpp:96
int getHeight() const
Definition: ImageTile.h:70
virtual void setValue(int x, int y, float value)
Definition: ImageTile.cpp:75
virtual void setValue(int x, int y, double value)
Definition: ImageTile.cpp:79
virtual void getValue(int x, int y, double &value) const
Definition: ImageTile.cpp:59
T getValue(int x, int y) const final
Returns the value of the pixel with the coordinates (x,y)
Definition: VectorImage.h:106