Pixel data container. More...

#include <pixel_buffer.h>

+ Inheritance diagram for clan::PixelBuffer:

Public Member Functions

 PixelBuffer ()
 Constructs a null instance. More...
 
 PixelBuffer (int width, int height, TextureFormat texture_format, const void *data=nullptr, bool only_reference_data=false)
 Constructs a PixelBuffer. More...
 
 PixelBuffer (const std::string &fullname, bool srgb=false)
 Constructs a PixelBuffer. More...
 
 PixelBuffer (const std::string &filename, const FileSystem &file_system, bool srgb=false)
 Constructs a PixelBuffer. More...
 
 PixelBuffer (IODevice &file, const std::string &image_type, bool srgb=false)
 Constructs a PixelBuffer. More...
 
 PixelBuffer (PixelBufferProvider *provider)
 Constructs a PixelBuffer. More...
 
virtual ~PixelBuffer ()
 
PixelBuffer copy () const
 Create a copy of the pixelbuffer that doesn't share data with the original pixel buffer. More...
 
PixelBuffer copy (const Rect &rect) const
 Create a copy of the pixelbuffer that doesn't share data with the original pixel buffer. More...
 
void flip_vertical ()
 Flip the entire image vertically (turn it upside down) More...
 
unsigned int get_bytes_per_block () const
 Returns the number of bytes per compression block. More...
 
unsigned int get_bytes_per_pixel () const
 Returns the number of bytes per pixel. More...
 
void * get_data ()
 Returns a pointer to the beginning of the pixel buffer. More...
 
const void * get_data () const
 
template<typename Type >
Type * get_data ()
 
template<typename Type >
const Type * get_data () const
 
unsigned int get_data_size () const
 Returns the size in bytes of the image data. More...
 
unsigned short * get_data_uint16 ()
 Returns a pointer to the beginning of the pixel buffer as 16 bit data. More...
 
const unsigned short * get_data_uint16 () const
 
unsigned int * get_data_uint32 ()
 Returns a pointer to the beginning of the pixel buffer as 32 bit data. More...
 
const unsigned int * get_data_uint32 () const
 
unsigned char * get_data_uint8 ()
 Returns a pointer to the beginning of the pixel buffer as 8 bit data. More...
 
const unsigned char * get_data_uint8 () const
 
float get_dip_height () const
 Returns the device independent height of this texture. More...
 
Sizef get_dip_size () const
 Returns the device independent size of this texture. More...
 
float get_dip_width () const
 Returns the device independent width of this texture. More...
 
TextureFormat get_format () const
 Returns the pixel format. More...
 
int get_height () const
 Retrieves the actual height of the buffer. More...
 
void * get_line (int line)
 Returns a pointer to the beginning of a specific line. More...
 
const void * get_line (int line) const
 
unsigned short * get_line_uint16 (int line)
 Returns a pointer to the beginning of a specific line as 16 bit data. More...
 
const unsigned short * get_line_uint16 (int line) const
 
unsigned int * get_line_uint32 (int line)
 Returns a pointer to the beginning of a specific line as 32 bit data. More...
 
const unsigned int * get_line_uint32 (int line) const
 
unsigned char * get_line_uint8 (int line)
 Returns a pointer to the beginning of a specific line as 8 bit data. More...
 
const unsigned char * get_line_uint8 (int line) const
 
int get_pitch () const
 Returns the pitch (in bytes per scanline). More...
 
Colorf get_pixel (int x, int y)
 Return color of pixel at the specified coordinates. More...
 
float get_pixel_ratio () const
 
PixelBufferProviderget_provider () const
 Get Provider. More...
 
Size get_size () const
 Retrieves the actual size of the buffer. More...
 
int get_width () const
 Retrieves the actual width of the buffer. More...
 
bool has_transparency () const
 Returns true if format has an alpha channel. More...
 
bool is_compressed () const
 Returns true if compressed. More...
 
bool is_gpu () const
 Returns true if this pixel buffer is a GPU based one. More...
 
bool is_null () const
 Returns true if this object is invalid. More...
 
void lock (GraphicContext &gc, BufferAccess access)
 Maps buffer into system memory. More...
 
 operator bool () const
 
void premultiply_alpha ()
 Multiply the RGB components by the Alpha component. More...
 
void premultiply_gamma (float gamma)
 Multiply the RGB components by gamma value. More...
 
void set_image (const PixelBuffer &source)
 Copy source pixel buffer into this buffer, doing a format conversion if needed. More...
 
void set_image (const PixelBuffer &source, PixelConverter &converter)
 Copy source pixel buffer into this buffer, doing a format conversion if needed. More...
 
void set_pixel_ratio (float ratio)
 Sets the display pixel ratio for this texture. More...
 
void set_subimage (const PixelBuffer &source, const Point &dest_pos, const Rect &src_rect)
 Copy source pixel buffer into this buffer, doing a format conversion if needed. More...
 
void set_subimage (const PixelBuffer &source, const Point &dest_pos, const Rect &src_rect, PixelConverter &converter)
 Copy source pixel buffer into this buffer, doing a format conversion if needed. More...
 
void throw_if_null () const
 Throw an exception if this object is invalid. More...
 
PixelBuffer to_cpu (GraphicContext &gc)
 Downloads the pixel buffer to CPU memory. More...
 
PixelBuffer to_format (TextureFormat texture_format) const
 Converts current buffer to a new pixel format and returns the result. More...
 
PixelBuffer to_format (TextureFormat texture_format, PixelConverter &converter) const
 Converts current buffer to a new pixel format and returns the result. More...
 
PixelBuffer to_gpu (GraphicContext &gc)
 Uploads the pixel buffer to GPU memory. More...
 
void unlock ()
 Unmaps element buffer. More...
 
void upload_data (GraphicContext &gc, const Rect &dest_rect, const void *data)
 Uploads data to buffer. More...
 

Static Public Member Functions

static unsigned int get_bytes_per_block (TextureFormat texture_format)
 Returns the number of bytes per compression block. More...
 
static unsigned int get_bytes_per_pixel (TextureFormat texture_format)
 Returns the number of bytes per pixel. More...
 
static unsigned int get_data_size (const Size &size, TextureFormat texture_format)
 Returns the size in bytes of the image data. More...
 
static bool is_compressed (TextureFormat texture_format)
 Returns true if compressed. More...
 

Friends

class PixelBuffer_Impl
 

Detailed Description

Pixel data container.

Constructor & Destructor Documentation

clan::PixelBuffer::PixelBuffer ( )

Constructs a null instance.

clan::PixelBuffer::PixelBuffer ( int  width,
int  height,
TextureFormat  texture_format,
const void *  data = nullptr,
bool  only_reference_data = false 
)

Constructs a PixelBuffer.

Parameters
width= value
height= value
sized_format= Pixel Format
data= The data (0 = Allocate automatically to a boundary of 16 bytes)
only_reference_data: true = Reference the data. false = Copy the data
clan::PixelBuffer::PixelBuffer ( const std::string fullname,
bool  srgb = false 
)

Constructs a PixelBuffer.

Parameters
fullname= String Ref
clan::PixelBuffer::PixelBuffer ( const std::string filename,
const FileSystem file_system,
bool  srgb = false 
)

Constructs a PixelBuffer.

Parameters
filename= String Ref
dir= Virtual Directory
clan::PixelBuffer::PixelBuffer ( IODevice file,
const std::string image_type,
bool  srgb = false 
)

Constructs a PixelBuffer.

Parameters
file= IODevice
image_type= String
clan::PixelBuffer::PixelBuffer ( PixelBufferProvider provider)

Constructs a PixelBuffer.

Parameters
provider= Font Provider
virtual clan::PixelBuffer::~PixelBuffer ( )
virtual

Member Function Documentation

PixelBuffer clan::PixelBuffer::copy ( ) const

Create a copy of the pixelbuffer that doesn't share data with the original pixel buffer.

PixelBuffer clan::PixelBuffer::copy ( const Rect rect) const

Create a copy of the pixelbuffer that doesn't share data with the original pixel buffer.

void clan::PixelBuffer::flip_vertical ( )

Flip the entire image vertically (turn it upside down)

unsigned int clan::PixelBuffer::get_bytes_per_block ( ) const

Returns the number of bytes per compression block.

Returns
Bytes per block. Exception thrown if not available (hint, use is_compressed() )
static unsigned int clan::PixelBuffer::get_bytes_per_block ( TextureFormat  texture_format)
static

Returns the number of bytes per compression block.

Returns
Bytes per block. Exception thrown if not available (hint, use is_compressed() )
unsigned int clan::PixelBuffer::get_bytes_per_pixel ( ) const

Returns the number of bytes per pixel.

Returns
Bytes per pixel. Exception thrown if not available (hint, use is_compressed() )
static unsigned int clan::PixelBuffer::get_bytes_per_pixel ( TextureFormat  texture_format)
static

Returns the number of bytes per pixel.

Returns
Bytes per pixel. Exception thrown if not available (hint, use is_compressed() )
void* clan::PixelBuffer::get_data ( )

Returns a pointer to the beginning of the pixel buffer.

Referenced by get_data_uint16(), get_data_uint32(), get_data_uint8(), and clan::PixelBufferLock< Type >::lock().

const void* clan::PixelBuffer::get_data ( ) const
template<typename Type >
Type* clan::PixelBuffer::get_data ( )
inline

References get_data().

Referenced by get_data().

template<typename Type >
const Type* clan::PixelBuffer::get_data ( ) const
inline

References get_data().

Referenced by get_data().

unsigned int clan::PixelBuffer::get_data_size ( ) const

Returns the size in bytes of the image data.

Returns
The data size
static unsigned int clan::PixelBuffer::get_data_size ( const Size size,
TextureFormat  texture_format 
)
static

Returns the size in bytes of the image data.

Returns
The data size
unsigned short* clan::PixelBuffer::get_data_uint16 ( )
inline

Returns a pointer to the beginning of the pixel buffer as 16 bit data.

References get_data().

const unsigned short* clan::PixelBuffer::get_data_uint16 ( ) const
inline

References get_data().

unsigned int* clan::PixelBuffer::get_data_uint32 ( )
inline

Returns a pointer to the beginning of the pixel buffer as 32 bit data.

References get_data().

const unsigned int* clan::PixelBuffer::get_data_uint32 ( ) const
inline

References get_data().

unsigned char* clan::PixelBuffer::get_data_uint8 ( )
inline

Returns a pointer to the beginning of the pixel buffer as 8 bit data.

References get_data().

Referenced by get_line().

const unsigned char* clan::PixelBuffer::get_data_uint8 ( ) const
inline

References get_data().

float clan::PixelBuffer::get_dip_height ( ) const
inline

Returns the device independent height of this texture.

References get_height(), and get_pixel_ratio().

Referenced by get_dip_size().

Sizef clan::PixelBuffer::get_dip_size ( ) const
inline

Returns the device independent size of this texture.

References get_dip_height(), and get_dip_width().

float clan::PixelBuffer::get_dip_width ( ) const
inline

Returns the device independent width of this texture.

References get_pixel_ratio(), and get_width().

Referenced by get_dip_size().

TextureFormat clan::PixelBuffer::get_format ( ) const

Returns the pixel format.

int clan::PixelBuffer::get_height ( ) const

Retrieves the actual height of the buffer.

Referenced by get_dip_height(), get_size(), and clan::PixelBufferLock< Type >::PixelBufferLock().

void* clan::PixelBuffer::get_line ( int  line)
inline

Returns a pointer to the beginning of a specific line.

References clan::d, get_data_uint8(), and get_pitch().

Referenced by get_line_uint16(), get_line_uint32(), and get_line_uint8().

const void* clan::PixelBuffer::get_line ( int  line) const
inline
unsigned short* clan::PixelBuffer::get_line_uint16 ( int  line)
inline

Returns a pointer to the beginning of a specific line as 16 bit data.

References get_line().

const unsigned short* clan::PixelBuffer::get_line_uint16 ( int  line) const
inline

References get_line().

unsigned int* clan::PixelBuffer::get_line_uint32 ( int  line)
inline

Returns a pointer to the beginning of a specific line as 32 bit data.

References get_line().

const unsigned int* clan::PixelBuffer::get_line_uint32 ( int  line) const
inline

References get_line().

unsigned char* clan::PixelBuffer::get_line_uint8 ( int  line)
inline

Returns a pointer to the beginning of a specific line as 8 bit data.

References get_line().

const unsigned char* clan::PixelBuffer::get_line_uint8 ( int  line) const
inline

References get_line().

int clan::PixelBuffer::get_pitch ( ) const

Returns the pitch (in bytes per scanline).

Referenced by get_line(), and clan::PixelBufferLock< Type >::lock().

Colorf clan::PixelBuffer::get_pixel ( int  x,
int  y 
)

Return color of pixel at the specified coordinates.

float clan::PixelBuffer::get_pixel_ratio ( ) const

Retrieves the pixel ratio of this texture.

Returns
The display pixel ratio set for this texture. A zero value implies that no pixel ratio has been set

Referenced by get_dip_height(), and get_dip_width().

PixelBufferProvider* clan::PixelBuffer::get_provider ( ) const

Get Provider.

Returns
provider
Size clan::PixelBuffer::get_size ( ) const
inline

Retrieves the actual size of the buffer.

References get_height(), and get_width().

int clan::PixelBuffer::get_width ( ) const

Retrieves the actual width of the buffer.

Referenced by get_dip_width(), get_size(), and clan::PixelBufferLock< Type >::PixelBufferLock().

bool clan::PixelBuffer::has_transparency ( ) const

Returns true if format has an alpha channel.

bool clan::PixelBuffer::is_compressed ( ) const

Returns true if compressed.

static bool clan::PixelBuffer::is_compressed ( TextureFormat  texture_format)
static

Returns true if compressed.

bool clan::PixelBuffer::is_gpu ( ) const

Returns true if this pixel buffer is a GPU based one.

Referenced by clan::PixelBufferLock< Type >::lock().

bool clan::PixelBuffer::is_null ( ) const
inline
void clan::PixelBuffer::lock ( GraphicContext gc,
BufferAccess  access 
)

Maps buffer into system memory.

Referenced by clan::PixelBufferLock< Type >::lock().

clan::PixelBuffer::operator bool ( ) const
inlineexplicit
void clan::PixelBuffer::premultiply_alpha ( )

Multiply the RGB components by the Alpha component.

This is useful with certain blending functions

void clan::PixelBuffer::premultiply_gamma ( float  gamma)

Multiply the RGB components by gamma value.

Calling this function with 2.2 gamma converts a sRGB image into linear space. To convert from linear to sRGB use 1.0/2.2

void clan::PixelBuffer::set_image ( const PixelBuffer source)

Copy source pixel buffer into this buffer, doing a format conversion if needed.

Parameters
sourceSource pixel buffer.
void clan::PixelBuffer::set_image ( const PixelBuffer source,
PixelConverter converter 
)

Copy source pixel buffer into this buffer, doing a format conversion if needed.

Parameters
sourceSource pixel buffer.
void clan::PixelBuffer::set_pixel_ratio ( float  ratio)

Sets the display pixel ratio for this texture.

void clan::PixelBuffer::set_subimage ( const PixelBuffer source,
const Point dest_pos,
const Rect src_rect 
)

Copy source pixel buffer into this buffer, doing a format conversion if needed.

Parameters
sourceSource pixel buffer.
dest_rectDestination position for copy.
src_rectSource rectangle for copy.
void clan::PixelBuffer::set_subimage ( const PixelBuffer source,
const Point dest_pos,
const Rect src_rect,
PixelConverter converter 
)

Copy source pixel buffer into this buffer, doing a format conversion if needed.

Parameters
sourceSource pixel buffer.
dest_rectDestination position for copy.
src_rectSource rectangle for copy.
void clan::PixelBuffer::throw_if_null ( ) const

Throw an exception if this object is invalid.

PixelBuffer clan::PixelBuffer::to_cpu ( GraphicContext gc)

Downloads the pixel buffer to CPU memory.

If the pixel buffer is already in CPU memory the function returns the current pixel buffer.

PixelBuffer clan::PixelBuffer::to_format ( TextureFormat  texture_format) const

Converts current buffer to a new pixel format and returns the result.

PixelBuffer clan::PixelBuffer::to_format ( TextureFormat  texture_format,
PixelConverter converter 
) const

Converts current buffer to a new pixel format and returns the result.

PixelBuffer clan::PixelBuffer::to_gpu ( GraphicContext gc)

Uploads the pixel buffer to GPU memory.

If the pixel buffer is already in GPU memory the function returns the current pixel buffer.

void clan::PixelBuffer::unlock ( )
void clan::PixelBuffer::upload_data ( GraphicContext gc,
const Rect dest_rect,
const void *  data 
)

Uploads data to buffer.

Friends And Related Function Documentation

friend class PixelBuffer_Impl
friend

The documentation for this class was generated from the following file: