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