SourceXtractorPlusPlus
0.15
Please provide a description of the project.
SEFramework
SEFramework
Image
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
#include <iostream>
27
#include "
SEFramework/Image/Image.h
"
28
#include "
SEFramework/Image/VectorImage.h
"
29
30
namespace
SourceXtractor
{
31
32
class
ImageSource;
33
34
class
ImageTile
{
35
public
:
36
37
enum
ImageType
{
38
AutoType
=-1,
39
FloatImage
=0,
40
DoubleImage
,
41
IntImage
,
42
UIntImage
,
43
LongLongImage
,
44
};
45
46
static
std::shared_ptr<ImageTile>
create
(
ImageType
image_type,
int
x
,
int
y
,
int
width,
int
height,
std::shared_ptr<ImageSource>
source=
nullptr
);
47
48
virtual
~ImageTile
() {
49
saveIfModified
();
50
}
51
52
bool
isPixelInTile
(
int
x
,
int
y
)
const
{
53
return
x
>=
m_x
&&
y
>=
m_y
&&
x
<
m_max_x
&&
y
<
m_max_y
;
54
}
55
56
int
getPosX
()
const
{
57
return
m_x
;
58
}
59
60
int
getPosY
()
const
{
61
return
m_y
;
62
}
63
64
virtual
int
getTileMemorySize
()
const
= 0;
65
66
int
getWidth
()
const
{
67
return
m_max_x
-
m_x
;
68
}
69
70
int
getHeight
()
const
{
71
return
m_max_y
-
m_y
;
72
}
73
74
template
<
typename
T>
75
T
getValue
(
int
x
,
int
y
)
const
{
76
T value;
77
getValue
(
x
,
y
, value);
78
return
value;
79
}
80
81
virtual
void
setValue
(
int
x
,
int
y
,
float
value) = 0;
82
virtual
void
setValue
(
int
x
,
int
y
,
double
value) = 0;
83
virtual
void
setValue
(
int
x
,
int
y
,
int
value) = 0;
84
virtual
void
setValue
(
int
x
,
int
y
,
unsigned
int
value) = 0;
85
virtual
void
setValue
(
int
x
,
int
y
,
std::int64_t
value) = 0;
86
87
virtual
void
*
getDataPtr
()=0;
88
89
void
setModified
(
bool
modified) {
90
m_modified
= modified;
91
}
92
93
bool
isModified
()
const
{
94
return
m_modified
;
95
}
96
97
virtual
void
saveIfModified
();
98
99
static
ImageType
getTypeValue
(
float
) {
100
return
FloatImage
;
101
}
102
103
static
ImageType
getTypeValue
(
double
) {
104
return
DoubleImage
;
105
}
106
107
static
ImageType
getTypeValue
(
int
) {
108
return
IntImage
;
109
}
110
111
static
ImageType
getTypeValue
(
unsigned
int
) {
112
return
UIntImage
;
113
}
114
115
static
ImageType
getTypeValue
(
std::int64_t
) {
116
return
LongLongImage
;
117
}
118
119
static
size_t
getTypeSize
(
ImageType
image_type) {
120
switch
(image_type) {
121
default
:
122
case
ImageTile::FloatImage
:
123
case
ImageTile::IntImage
:
124
case
ImageTile::UIntImage
:
125
return
4;
126
case
ImageTile::LongLongImage
:
127
case
ImageTile::DoubleImage
:
128
return
8;
129
}
130
}
131
132
ImageType
getType
()
const
{
133
return
m_image_type
;
134
}
135
136
protected
:
137
virtual
void
getValue
(
int
x
,
int
y
,
float
& value)
const
= 0;
138
virtual
void
getValue
(
int
x
,
int
y
,
double
& value)
const
= 0;
139
virtual
void
getValue
(
int
x
,
int
y
,
int
& value)
const
= 0;
140
virtual
void
getValue
(
int
x
,
int
y
,
unsigned
int
& value)
const
= 0;
141
virtual
void
getValue
(
int
x
,
int
y
,
std::int64_t
& value)
const
= 0;
142
143
ImageTile
(
ImageType
image_type,
int
x
,
int
y
,
int
width,
int
height,
std::shared_ptr<ImageSource>
source=
nullptr
)
144
:
m_modified
(false),
m_image_type
(image_type),
m_source
(source),
m_x
(
x
),
m_y
(
y
),
m_max_x
(
x
+width),
m_max_y
(
y
+height) {
145
}
146
147
ImageTile
(
const
ImageTile
&) =
delete
;
148
ImageTile
(
ImageTile
&&) =
delete
;
149
ImageTile
&
operator=
(
const
ImageTile
&) =
delete
;
150
ImageTile
&
operator=
(
ImageTile
&&) =
delete
;
151
152
bool
m_modified
;
153
ImageType
m_image_type
;
154
std::shared_ptr<ImageSource>
m_source
;
155
int
m_x
,
m_y
;
156
int
m_max_x
,
m_max_y
;
157
};
158
159
template
<
typename
T>
160
class
ImageTileWithType
final :
public
ImageTile
{
161
public
:
162
163
ImageTileWithType
(
int
x
,
int
y
,
int
width,
int
height,
std::shared_ptr<ImageSource>
source)
164
:
ImageTile
(
getTypeValue
(T()),
x
,
y
, width, height, source) {
165
m_tile_image
=
VectorImage<T>::create
(width, height);
166
}
167
168
int
getTileMemorySize
()
const override
{
169
return
getWidth
() *
getHeight
() *
sizeof
(T);
170
}
171
172
void
*
getDataPtr
()
override
{
173
return
&
m_tile_image
->getData()[0];
174
}
175
176
const
std::shared_ptr<VectorImage<T>
>&
getImage
()
const
{
177
return
m_tile_image
;
178
}
179
180
template
<
typename
U>
181
void
getValueImpl
(
int
x
,
int
y
, U& value)
const
{
182
assert(
isPixelInTile
(
x
,
y
));
183
value =
m_tile_image
->getValue(
x
-
m_x
,
y
-
m_y
);
184
}
185
186
template
<
typename
U>
187
void
setValueImpl
(
int
x
,
int
y
, U value) {
188
assert(
isPixelInTile
(
x
,
y
));
189
m_tile_image
->setValue(
x
-
m_x
,
y
-
m_y
, value);
190
}
191
192
void
getValue
(
int
x
,
int
y
,
float
& value)
const override
{
193
getValueImpl
(
x
,
y
, value);
194
}
195
196
void
getValue
(
int
x
,
int
y
,
double
& value)
const override
{
197
getValueImpl
(
x
,
y
, value);
198
}
199
200
void
getValue
(
int
x
,
int
y
,
int
& value)
const override
{
201
getValueImpl
(
x
,
y
, value);
202
}
203
204
void
getValue
(
int
x
,
int
y
,
unsigned
int
& value)
const override
{
205
getValueImpl
(
x
,
y
, value);
206
}
207
208
void
getValue
(
int
x
,
int
y
,
std::int64_t
& value)
const override
{
209
getValueImpl
(
x
,
y
, value);
210
}
211
212
void
setValue
(
int
x
,
int
y
,
float
value)
override
{
213
setValueImpl
(
x
,
y
, value);
214
}
215
216
void
setValue
(
int
x
,
int
y
,
double
value)
override
{
217
setValueImpl
(
x
,
y
, value);
218
}
219
220
void
setValue
(
int
x
,
int
y
,
int
value)
override
{
221
setValueImpl
(
x
,
y
, value);
222
}
223
224
void
setValue
(
int
x
,
int
y
,
unsigned
int
value)
override
{
225
setValueImpl
(
x
,
y
, value);
226
}
227
228
void
setValue
(
int
x
,
int
y
,
std::int64_t
value)
override
{
229
setValueImpl
(
x
,
y
, value);
230
}
231
232
private
:
233
std::shared_ptr<VectorImage<T>
>
m_tile_image
;
234
};
235
236
}
237
238
239
#endif
/* _SEFRAMEWORK_IMAGE_IMAGETILE_H_ */
Image.h
x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
Definition:
MoffatModelFittingTask.cpp:94
y
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
Definition:
MoffatModelFittingTask.cpp:94
VectorImage.h
SourceXtractor::ImageTileWithType
Definition:
ImageTile.h:160
SourceXtractor::ImageTileWithType::ImageTileWithType
ImageTileWithType(int x, int y, int width, int height, std::shared_ptr< ImageSource > source)
Definition:
ImageTile.h:163
SourceXtractor::ImageTileWithType::getValue
void getValue(int x, int y, int &value) const override
Definition:
ImageTile.h:200
SourceXtractor::ImageTileWithType::getDataPtr
void * getDataPtr() override
Definition:
ImageTile.h:172
SourceXtractor::ImageTileWithType::getValue
void getValue(int x, int y, float &value) const override
Definition:
ImageTile.h:192
SourceXtractor::ImageTileWithType::setValueImpl
void setValueImpl(int x, int y, U value)
Definition:
ImageTile.h:187
SourceXtractor::ImageTileWithType::setValue
void setValue(int x, int y, unsigned int value) override
Definition:
ImageTile.h:224
SourceXtractor::ImageTileWithType::setValue
void setValue(int x, int y, std::int64_t value) override
Definition:
ImageTile.h:228
SourceXtractor::ImageTileWithType::setValue
void setValue(int x, int y, float value) override
Definition:
ImageTile.h:212
SourceXtractor::ImageTileWithType::m_tile_image
std::shared_ptr< VectorImage< T > > m_tile_image
Definition:
ImageTile.h:233
SourceXtractor::ImageTileWithType::getValue
void getValue(int x, int y, double &value) const override
Definition:
ImageTile.h:196
SourceXtractor::ImageTileWithType::getValue
void getValue(int x, int y, unsigned int &value) const override
Definition:
ImageTile.h:204
SourceXtractor::ImageTileWithType::setValue
void setValue(int x, int y, double value) override
Definition:
ImageTile.h:216
SourceXtractor::ImageTileWithType::getValueImpl
void getValueImpl(int x, int y, U &value) const
Definition:
ImageTile.h:181
SourceXtractor::ImageTileWithType::getImage
const std::shared_ptr< VectorImage< T > > & getImage() const
Definition:
ImageTile.h:176
SourceXtractor::ImageTileWithType::getTileMemorySize
int getTileMemorySize() const override
Definition:
ImageTile.h:168
SourceXtractor::ImageTileWithType::setValue
void setValue(int x, int y, int value) override
Definition:
ImageTile.h:220
SourceXtractor::ImageTileWithType::getValue
void getValue(int x, int y, std::int64_t &value) const override
Definition:
ImageTile.h:208
SourceXtractor::ImageTile
Definition:
ImageTile.h:34
SourceXtractor::ImageTile::isModified
bool isModified() const
Definition:
ImageTile.h:93
SourceXtractor::ImageTile::setValue
virtual void setValue(int x, int y, float value)=0
SourceXtractor::ImageTile::m_source
std::shared_ptr< ImageSource > m_source
Definition:
ImageTile.h:154
SourceXtractor::ImageTile::getValue
virtual void getValue(int x, int y, int &value) const =0
SourceXtractor::ImageTile::operator=
ImageTile & operator=(const ImageTile &)=delete
SourceXtractor::ImageTile::setValue
virtual void setValue(int x, int y, double value)=0
SourceXtractor::ImageTile::getValue
virtual void getValue(int x, int y, unsigned int &value) const =0
SourceXtractor::ImageTile::saveIfModified
virtual void saveIfModified()
Definition:
ImageTile.cpp:40
SourceXtractor::ImageTile::m_image_type
ImageType m_image_type
Definition:
ImageTile.h:153
SourceXtractor::ImageTile::getTypeValue
static ImageType getTypeValue(double)
Definition:
ImageTile.h:103
SourceXtractor::ImageTile::getValue
virtual void getValue(int x, int y, float &value) const =0
SourceXtractor::ImageTile::getTypeSize
static size_t getTypeSize(ImageType image_type)
Definition:
ImageTile.h:119
SourceXtractor::ImageTile::m_x
int m_x
Definition:
ImageTile.h:155
SourceXtractor::ImageTile::getPosY
int getPosY() const
Definition:
ImageTile.h:60
SourceXtractor::ImageTile::m_max_y
int m_max_y
Definition:
ImageTile.h:156
SourceXtractor::ImageTile::ImageTile
ImageTile(ImageType image_type, int x, int y, int width, int height, std::shared_ptr< ImageSource > source=nullptr)
Definition:
ImageTile.h:143
SourceXtractor::ImageTile::setValue
virtual void setValue(int x, int y, int value)=0
SourceXtractor::ImageTile::getDataPtr
virtual void * getDataPtr()=0
SourceXtractor::ImageTile::setValue
virtual void setValue(int x, int y, std::int64_t value)=0
SourceXtractor::ImageTile::ImageType
ImageType
Definition:
ImageTile.h:37
SourceXtractor::ImageTile::UIntImage
@ UIntImage
Definition:
ImageTile.h:42
SourceXtractor::ImageTile::DoubleImage
@ DoubleImage
Definition:
ImageTile.h:40
SourceXtractor::ImageTile::AutoType
@ AutoType
Definition:
ImageTile.h:38
SourceXtractor::ImageTile::FloatImage
@ FloatImage
Definition:
ImageTile.h:39
SourceXtractor::ImageTile::IntImage
@ IntImage
Definition:
ImageTile.h:41
SourceXtractor::ImageTile::LongLongImage
@ LongLongImage
Definition:
ImageTile.h:43
SourceXtractor::ImageTile::getTypeValue
static ImageType getTypeValue(int)
Definition:
ImageTile.h:107
SourceXtractor::ImageTile::getTypeValue
static ImageType getTypeValue(float)
Definition:
ImageTile.h:99
SourceXtractor::ImageTile::getTypeValue
static ImageType getTypeValue(unsigned int)
Definition:
ImageTile.h:111
SourceXtractor::ImageTile::getValue
virtual void getValue(int x, int y, std::int64_t &value) const =0
SourceXtractor::ImageTile::getValue
virtual void getValue(int x, int y, double &value) const =0
SourceXtractor::ImageTile::setValue
virtual void setValue(int x, int y, unsigned int value)=0
SourceXtractor::ImageTile::getTypeValue
static ImageType getTypeValue(std::int64_t)
Definition:
ImageTile.h:115
SourceXtractor::ImageTile::getPosX
int getPosX() const
Definition:
ImageTile.h:56
SourceXtractor::ImageTile::m_y
int m_y
Definition:
ImageTile.h:155
SourceXtractor::ImageTile::setModified
void setModified(bool modified)
Definition:
ImageTile.h:89
SourceXtractor::ImageTile::getWidth
int getWidth() const
Definition:
ImageTile.h:66
SourceXtractor::ImageTile::~ImageTile
virtual ~ImageTile()
Definition:
ImageTile.h:48
SourceXtractor::ImageTile::getHeight
int getHeight() const
Definition:
ImageTile.h:70
SourceXtractor::ImageTile::getTileMemorySize
virtual int getTileMemorySize() const =0
SourceXtractor::ImageTile::m_modified
bool m_modified
Definition:
ImageTile.h:152
SourceXtractor::ImageTile::isPixelInTile
bool isPixelInTile(int x, int y) const
Definition:
ImageTile.h:52
SourceXtractor::ImageTile::m_max_x
int m_max_x
Definition:
ImageTile.h:156
SourceXtractor::ImageTile::getValue
T getValue(int x, int y) const
Definition:
ImageTile.h:75
SourceXtractor::ImageTile::ImageTile
ImageTile(ImageTile &&)=delete
SourceXtractor::ImageTile::getType
ImageType getType() const
Definition:
ImageTile.h:132
SourceXtractor::ImageTile::ImageTile
ImageTile(const ImageTile &)=delete
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:24
SourceXtractor::ImageTile::operator=
ImageTile & operator=(ImageTile &&)=delete
SourceXtractor::VectorImage::create
static std::shared_ptr< VectorImage< T > > create(Args &&... args)
Definition:
VectorImage.h:100
std::int64_t
SourceXtractor
Definition:
Aperture.h:30
std::shared_ptr
Generated by
1.9.1