SourceXtractorPlusPlus  0.13
Please provide a description of the project.
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() {
38  return &std::static_pointer_cast<VectorImage<T>>(m_tile_image)->getData()[0];
39  }
40 
41  template<typename U>
42  void getValueImpl(int x, int y, U& value) const {
43  assert(isPixelInTile(x,y));
44  auto image = std::static_pointer_cast<VectorImage<T>>(m_tile_image);
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));
51  auto image = std::static_pointer_cast<VectorImage<T>>(m_tile_image);
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 
96 std::shared_ptr<ImageTile> ImageTile::create(ImageType image_type, int x, int y, int width, int height, std::shared_ptr<ImageSource> source) {
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 
SourceXtractor::ImageTile::isPixelInTile
bool isPixelInTile(int x, int y) const
Definition: ImageTile.h:52
ImageBase.h
SourceXtractor::ImageTile::m_y
int m_y
Definition: ImageTile.h:186
SourceXtractor::ImageTileImpl::getValue
virtual void getValue(int x, int y, std::int64_t &value) const
Definition: ImageTile.cpp:71
std::shared_ptr
STL class.
SourceXtractor::ImageTile::IntImage
@ IntImage
Definition: ImageTile.h:41
SourceXtractor::ImageTile::DoubleImage
@ DoubleImage
Definition: ImageTile.h:40
SourceXtractor::ImageTile::getWidth
int getWidth() const
Definition: ImageTile.h:66
SourceXtractor::ImageTileImpl::getValue
virtual void getValue(int x, int y, float &value) const
Definition: ImageTile.cpp:55
SourceXtractor::ImageTileImpl::ImageTileImpl
ImageTileImpl(ImageType image_type, int x, int y, int width, int height, std::shared_ptr< ImageSource > source)
Definition: ImageTile.cpp:28
SourceXtractor::ImageTileImpl::setValue
virtual void setValue(int x, int y, int value)
Definition: ImageTile.cpp:83
SourceXtractor::ImageTileImpl::setValue
virtual void setValue(int x, int y, std::int64_t value)
Definition: ImageTile.cpp:91
SourceXtractor::ImageTileImpl::getValueImpl
void getValueImpl(int x, int y, U &value) const
Definition: ImageTile.cpp:42
SourceXtractor::ImageTileImpl
Definition: ImageTile.cpp:25
SourceXtractor::ImageTileImpl::setValue
virtual void setValue(int x, int y, unsigned int value)
Definition: ImageTile.cpp:87
SourceXtractor::ImageTileImpl::getValue
virtual void getValue(int x, int y, double &value) const
Definition: ImageTile.cpp:59
SourceXtractor::ImageTile::create
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
SourceXtractor::ImageTile
Definition: ImageTile.h:34
SourceXtractor::ImageTileImpl::getTileMemorySize
virtual int getTileMemorySize() const
Definition: ImageTile.cpp:33
SourceXtractor::ImageTile::m_tile_image
std::shared_ptr< void > m_tile_image
Definition: ImageTile.h:189
SourceXtractor
Definition: Aperture.h:30
SourceXtractor::ImageTile::UIntImage
@ UIntImage
Definition: ImageTile.h:42
ImageTile.h
SourceXtractor::ImageTile::m_x
int m_x
Definition: ImageTile.h:186
SourceXtractor::ImageTileImpl::getValue
virtual void getValue(int x, int y, unsigned int &value) const
Definition: ImageTile.cpp:67
SourceXtractor::ImageTileImpl::setValueImpl
void setValueImpl(int x, int y, U value)
Definition: ImageTile.cpp:49
std::int64_t
SourceXtractor::ImageTileImpl::getValue
virtual void getValue(int x, int y, int &value) const
Definition: ImageTile.cpp:63
SourceXtractor::ImageTile::isModified
bool isModified() const
Definition: ImageTile.h:103
SourceXtractor::ImageTile::m_source
std::shared_ptr< ImageSource > m_source
Definition: ImageTile.h:185
x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
Definition: MoffatModelFittingTask.cpp:94
ImageSource.h
SourceXtractor::ImageTileImpl::setValue
virtual void setValue(int x, int y, double value)
Definition: ImageTile.cpp:79
SourceXtractor::ImageTile::LongLongImage
@ LongLongImage
Definition: ImageTile.h:43
SourceXtractor::ImageTile::getHeight
int getHeight() const
Definition: ImageTile.h:70
SourceXtractor::ImageTile::setModified
void setModified(bool modified)
Definition: ImageTile.h:99
y
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
Definition: MoffatModelFittingTask.cpp:94
SourceXtractor::ImageTileImpl::setValue
virtual void setValue(int x, int y, float value)
Definition: ImageTile.cpp:75
SourceXtractor::ImageTile::ImageType
ImageType
Definition: ImageTile.h:37
SourceXtractor::ImageTileImpl::getDataPtr
virtual void * getDataPtr()
Definition: ImageTile.cpp:37
SourceXtractor::ImageTile::saveIfModified
virtual void saveIfModified()
Definition: ImageTile.cpp:112
SourceXtractor::ImageTile::FloatImage
@ FloatImage
Definition: ImageTile.h:39