19 #ifndef OMNI_BUFFER_H_
20 #define OMNI_BUFFER_H_
58 data_[_offset] = _pixel;
76 return pixel(_offset);
82 return pixel(_offset);
87 return pixel(_offset);
92 return pixel(_offset);
103 Buffer _buffer(_rect.width(), _rect.height());
105 for (
int y = 0; y < _rect.height(); ++y)
106 for (
int x = 0; x < _rect.width(); ++x)
108 _buffer(x, y) =
pixel(x + _rect.x(), y + _rect.y());
122 return data_[_offset];
127 return data_[_offset];
163 return data_.empty();
174 if (_width * _height <= 0)
return;
184 QImage _output(
width(),
height(), QImage::Format_RGB32);
186 for (
int y = 0; y <
height(); ++y)
187 for (
int x = 0; x <
width(); ++x)
189 auto _p =
pixel(x, y);
190 _output.setPixel(x, y, convertPixel<QColor>(_p).rgb());
199 return static_cast<void *
>(
data_.data());
205 return static_cast<void const*
>(
data_.data());
245 QDataStream& operator<<(QDataStream& _os, omni::Buffer<T>
const& _buf) {
T pixel_type
Our pixel type.
Definition: Buffer.h:36
data_type const & data() const
Return const reference to data.
Definition: Buffer.h:143
void clear()
Clear buffer with black color.
Definition: Buffer.h:149
pixel_type & operator()(int _x, int _y)
Return pixel on position (x,y)
Definition: Buffer.h:62
void put(size_t _offset, const pixel_type &_pixel)
Write pixel value to offset (= x * width + y)
Definition: Buffer.h:56
pixel_type const & operator[](size_t _offset) const
Subscript operator for accessing elements by index (const version)
Definition: Buffer.h:91
int height() const
Return height of the buffer.
Definition: Buffer.h:137
pixel_type const & operator()(size_t _offset) const
Return pixel on offset (= x * width + y) (const version)
Definition: Buffer.h:80
STREAM & serialize(STREAM &_stream, T const &_t)
Serialize object to stream.
Definition: traits.h:140
size_t size() const
Returns size of buffer (= width * height)
Definition: Buffer.h:167
pixel_type & pixel(size_t _offset)
Return pixel on offset (= x * width + y)
Definition: Buffer.h:121
#define OMNI_TEST_MEMBER_EQUAL(member)
Definition: util.h:125
Buffer(int _width, int _height)
Constructor with automatic resize.
Definition: Buffer.h:45
void const * ptr() const
Return void pointer to data (const version)
Definition: Buffer.h:203
STREAM & deserialize(STREAM &_stream, T &_t, ARGS &&..._args)
Deserialize object of type T from stream with optional additional arguments.
Definition: traits.h:125
Buffer cropRect(QRect const &_rect) const
Definition: Buffer.h:101
void put(int _x, int _y, const pixel_type &_pixel)
Write pixel value to position (x,y)
Definition: Buffer.h:50
data_type data_
Definition: Buffer.h:232
bool empty() const
Returns true if width and height are zero.
Definition: Buffer.h:161
void clear(const pixel_type &_pixel)
Clear buffer with specific pixel.
Definition: Buffer.h:155
int height_
Definition: Buffer.h:231
void resize(int _width, int _height)
Resize buffer to given width and height.
Definition: Buffer.h:172
Buffer()
Standard constructor.
Definition: Buffer.h:42
int width_
Definition: Buffer.h:231
QImage toQImage() const
Convert buffer to QImage.
Definition: Buffer.h:182
void toStream(QDataStream &_os) const
Write blend mask to stream.
Definition: Buffer.h:209
std::vector< pixel_type > data_type
Our data type (a dynamic array)
Definition: Buffer.h:39
pixel_type & operator()(size_t _offset)
Return pixel on offset (= x * width + y)
Definition: Buffer.h:74
pixel_type & operator[](size_t _offset)
Subscript operator for accessing elements by index.
Definition: Buffer.h:86
void * ptr()
Return void pointer to data.
Definition: Buffer.h:197
A buffer holds an w x h pixel array.
Definition: Buffer.h:33
pixel_type const & pixel(int _x, int _y) const
Return pixel on position (x,y) (const version)
Definition: Buffer.h:115
QDataStream & operator>>(QDataStream &_is, omni::Buffer< T > &_buf)
Deserialize buffer from stream.
Definition: Buffer.h:238
pixel_type const & operator()(int _x, int _y) const
Return pixel on position (x,y) (const version)
Definition: Buffer.h:68
pixel_type & pixel(int _x, int _y)
Return pixel on position (x,y)
Definition: Buffer.h:96
pixel_type const & pixel(size_t _offset) const
Return pixel on offset (= x * width + y) (const version)
Definition: Buffer.h:126
void fromStream(QDataStream &_is)
Read blend mask from stream.
Definition: Buffer.h:216
int width() const
Return width of the buffer.
Definition: Buffer.h:131
friend bool operator==(Buffer const &_lhs, Buffer const &_rhs)
Test for equality, buffer is ignored.
Definition: Buffer.h:223