32#include "../../Core/System/exception.h" 
   33#include "../../Core/Math/vec2.h" 
   34#include "../../Core/Math/vec3.h" 
   35#include "../../Core/Math/vec4.h" 
   36#include "../../Core/Math/half_float_vector.h" 
   37#include "pixel_buffer.h" 
   46        template<
typename Type>
 
   52                        : pixel_buffer(pixel_buffer), lock_count(0), pitch(0), data(nullptr)
 
 
   62                        : pixel_buffer(pixel_buffer), lock_count(0), pitch(0), data(nullptr)
 
 
   72                        if (lock_count > 0 && !(pixel_buffer.
is_null()))
 
 
   83                Type *
get_data() { 
return reinterpret_cast<Type*
>(data); }
 
   84                Type *
get_row(
int y) { 
return reinterpret_cast<Type*
>(data + pitch * 
y); }
 
   85                Type &
get_pixel(
int x, 
int y) { 
return *(
reinterpret_cast<Type*
>(data + pitch * 
y) + 
x); }
 
   95                                pixel_buffer.
lock(gc, access);
 
   96                                data = 
static_cast<unsigned char*
>(pixel_buffer.
get_data());
 
 
  107                                if (pixel_buffer.
is_gpu())
 
  108                                        throw Exception(
"Incorrect PixelBufferLock constructor called with a GPU pixelbuffer");
 
  112                                data = 
static_cast<unsigned char*
>(pixel_buffer.
get_data());
 
 
 
Top-level exception class.
Definition exception.h:42
Interface to drawing graphics.
Definition graphic_context.h:257
PixelBuffer locking helper.
Definition pixel_buffer_lock.h:48
Type * get_row(int y)
Definition pixel_buffer_lock.h:84
void lock()
Lock the system pixel_buffer.
Definition pixel_buffer_lock.h:103
int get_pitch() const
Definition pixel_buffer_lock.h:88
~PixelBufferLock()
Definition pixel_buffer_lock.h:70
void unlock()
Unlock pixel_buffer.
Definition pixel_buffer_lock.h:119
int get_width() const
Definition pixel_buffer_lock.h:86
Type & get_pixel(int x, int y)
Definition pixel_buffer_lock.h:85
void lock(GraphicContext &gc, BufferAccess access)
Lock the gpu pixel_buffer.
Definition pixel_buffer_lock.h:91
Type * get_data()
Definition pixel_buffer_lock.h:83
PixelBufferLock(GraphicContext &gc, PixelBuffer &pixel_buffer, BufferAccess access, bool lock_pixelbuffer=true)
Constructs a gpu pixel buffer lock.
Definition pixel_buffer_lock.h:51
int get_height() const
Definition pixel_buffer_lock.h:87
int get_lock_count() const
Returns the amounts of recursive pixel_buffer locks performed by this section.
Definition pixel_buffer_lock.h:78
PixelBufferLock(PixelBuffer &pixel_buffer, bool lock_pixelbuffer=true)
Constructs a system pixel buffer lock.
Definition pixel_buffer_lock.h:61
Pixel data container.
Definition pixel_buffer.h:68
int get_height() const
Retrieves the actual height of the buffer.
void unlock()
Unmaps element buffer.
bool is_null() const
Returns true if this object is invalid.
Definition pixel_buffer.h:107
void lock(GraphicContext &gc, BufferAccess access)
Maps buffer into system memory.
int get_width() const
Retrieves the actual width of the buffer.
void * get_data()
Returns a pointer to the beginning of the pixel buffer.
bool is_gpu() const
Returns true if this pixel buffer is a GPU based one.
int get_pitch() const
Returns the pitch (in bytes per scanline).
PixelBufferLock< Vec3ub > PixelBufferLock3ub
Definition pixel_buffer_lock.h:144
PixelBufferLock< Vec4us > PixelBufferLock4us
Definition pixel_buffer_lock.h:149
PixelBufferLock< Vec4d > PixelBufferLock4d
Definition pixel_buffer_lock.h:180
PixelBufferLock< HalfFloat > PixelBufferLock1hf
Definition pixel_buffer_lock.h:168
PixelBufferLock< signed int > PixelBufferLock1i
Definition pixel_buffer_lock.h:163
PixelBufferLock< Vec4hf > PixelBufferLock4hf
Definition pixel_buffer_lock.h:171
PixelBufferLock< Vec4f > PixelBufferLock4f
Definition pixel_buffer_lock.h:176
PixelBufferLock< Vec4ub > PixelBufferLock4ub
Definition pixel_buffer_lock.h:145
PixelBufferLock< Vec2b > PixelBufferLock2b
Definition pixel_buffer_lock.h:156
PixelBufferLock< Vec3s > PixelBufferLock3s
Definition pixel_buffer_lock.h:161
PixelBufferLock< unsigned int > PixelBufferLock1ui
Definition pixel_buffer_lock.h:150
PixelBufferLock< unsigned short > PixelBufferLock1us
Definition pixel_buffer_lock.h:146
PixelBufferLock< Vec3us > PixelBufferLock3us
Definition pixel_buffer_lock.h:148
BufferAccess
Array Buffer access enum.
Definition buffer_usage.h:53
PixelBufferLock< double > PixelBufferLock1d
Definition pixel_buffer_lock.h:177
PixelBufferLock< Vec2ui > PixelBufferLock2ui
Definition pixel_buffer_lock.h:151
PixelBufferLock< Vec4ui > PixelBufferLock4ui
Definition pixel_buffer_lock.h:153
PixelBufferLock< Vec2f > PixelBufferLock2f
Definition pixel_buffer_lock.h:174
PixelBufferLock< Vec4i > PixelBufferLock4i
Definition pixel_buffer_lock.h:166
PixelBufferLock< Vec2d > PixelBufferLock2d
Definition pixel_buffer_lock.h:178
PixelBufferLock< Vec3hf > PixelBufferLock3hf
Definition pixel_buffer_lock.h:170
PixelBufferLock< Vec3b > PixelBufferLock3b
Definition pixel_buffer_lock.h:157
PixelBufferLock< signed short > PixelBufferLock1s
Definition pixel_buffer_lock.h:159
PixelBufferLock< Vec3d > PixelBufferLock3d
Definition pixel_buffer_lock.h:179
PixelBufferLock< float > PixelBufferLock1f
Definition pixel_buffer_lock.h:173
PixelBufferLock< Vec2ub > PixelBufferLock2ub
Definition pixel_buffer_lock.h:143
PixelBufferLock< Vec2us > PixelBufferLock2us
Definition pixel_buffer_lock.h:147
PixelBufferLock< Vec2i > PixelBufferLock2i
Definition pixel_buffer_lock.h:164
PixelBufferLock< Vec2s > PixelBufferLock2s
Definition pixel_buffer_lock.h:160
PixelBufferLock< signed char > PixelBufferLock1b
Definition pixel_buffer_lock.h:155
PixelBufferLock< Vec3ui > PixelBufferLock3ui
Definition pixel_buffer_lock.h:152
PixelBufferLock< Vec4b > PixelBufferLock4b
Definition pixel_buffer_lock.h:158
PixelBufferLock< Vec4s > PixelBufferLock4s
Definition pixel_buffer_lock.h:162
PixelBufferLock< Vec2hf > PixelBufferLock2hf
Definition pixel_buffer_lock.h:169
PixelBufferLock< Vec3i > PixelBufferLock3i
Definition pixel_buffer_lock.h:165
PixelBufferLock< unsigned char > PixelBufferLock1ub
Definition pixel_buffer_lock.h:142
PixelBufferLock< Vec3f > PixelBufferLock3f
Definition pixel_buffer_lock.h:175
PixelBufferLock< unsigned char > PixelBufferLockAny
Definition pixel_buffer_lock.h:182