png++  0.2.9
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
png::solid_pixel_buffer< pixel > Class Template Reference

Pixel buffer, that stores pixels as continuous memory chunk. solid_pixel_buffer is useful when user whats to open png, do some changes and fetch to buffer to draw (as texture for example). More...

#include <solid_pixel_buffer.hpp>

List of all members.

Classes

struct  row_traits

Public Types

typedef pixel_traits< pixel > pixel_traits_t
typedef row_traits::row_access row_access
 A row of pixel data.
typedef
row_traits::row_const_access 
row_const_access
typedef row_access row_type

Public Member Functions

 solid_pixel_buffer ()
 Constructs an empty 0x0 pixel buffer object.
 solid_pixel_buffer (uint_32 width, uint_32 height)
 Constructs an empty pixel buffer object.
uint_32 get_width () const
uint_32 get_height () const
void resize (uint_32 width, uint_32 height)
 Resizes the pixel buffer.
row_access get_row (size_t index)
 Returns a reference to the row of image data at specified index.
row_const_access get_row (size_t index) const
 Returns a const reference to the row of image data at specified index.
row_access operator[] (size_t index)
 The non-checking version of get_row() method.
row_const_access operator[] (size_t index) const
 The non-checking version of get_row() method.
void put_row (size_t index, row_const_access r)
 Replaces the row at specified index.
pixel get_pixel (size_t x, size_t y) const
 Returns a pixel at (x,y) position.
void set_pixel (size_t x, size_t y, pixel p)
 Replaces a pixel at (x,y) position.
const std::vector< byte > & get_bytes () const
 Provides easy constant read access to underlying byte-buffer.
std::vector< bytefetch_bytes ()
 Moves the buffer to client code (c++11 only) .

Protected Member Functions

 static_assert (pixel_traits_t::bit_depth%CHAR_BIT==0,"Bit_depth should consist of integer number of bytes")
 static_assert (sizeof(pixel)*CHAR_BIT==pixel_traits_t::channels *pixel_traits_t::bit_depth,"pixel type should contain channels data only")

Protected Attributes

uint_32 m_width
uint_32 m_height
size_t m_stride
std::vector< bytem_bytes

Static Protected Attributes

static const size_t bytes_per_pixel

Detailed Description

template<typename pixel>
class png::solid_pixel_buffer< pixel >

Pixel buffer, that stores pixels as continuous memory chunk. solid_pixel_buffer is useful when user whats to open png, do some changes and fetch to buffer to draw (as texture for example).


Member Typedef Documentation

template<typename pixel >
typedef pixel_traits< pixel > png::solid_pixel_buffer< pixel >::pixel_traits_t
template<typename pixel >
typedef row_traits::row_access png::solid_pixel_buffer< pixel >::row_access

A row of pixel data.

template<typename pixel >
typedef row_traits::row_const_access png::solid_pixel_buffer< pixel >::row_const_access
template<typename pixel >
typedef row_access png::solid_pixel_buffer< pixel >::row_type

Constructor & Destructor Documentation

template<typename pixel >
png::solid_pixel_buffer< pixel >::solid_pixel_buffer ( ) [inline]

Constructs an empty 0x0 pixel buffer object.

template<typename pixel >
png::solid_pixel_buffer< pixel >::solid_pixel_buffer ( uint_32  width,
uint_32  height 
) [inline]

Constructs an empty pixel buffer object.

References png::solid_pixel_buffer< pixel >::resize().


Member Function Documentation

template<typename pixel >
uint_32 png::solid_pixel_buffer< pixel >::get_width ( ) const [inline]
template<typename pixel >
uint_32 png::solid_pixel_buffer< pixel >::get_height ( ) const [inline]
template<typename pixel >
void png::solid_pixel_buffer< pixel >::resize ( uint_32  width,
uint_32  height 
) [inline]
template<typename pixel >
row_access png::solid_pixel_buffer< pixel >::get_row ( size_t  index) [inline]

Returns a reference to the row of image data at specified index.

Checks the index before returning a row: an instance of std::out_of_range is thrown if index is greater than height.

References png::solid_pixel_buffer< pixel >::m_bytes, and png::solid_pixel_buffer< pixel >::m_stride.

Referenced by png::solid_pixel_buffer< pixel >::put_row().

template<typename pixel >
row_const_access png::solid_pixel_buffer< pixel >::get_row ( size_t  index) const [inline]

Returns a const reference to the row of image data at specified index.

The checking version.

References png::solid_pixel_buffer< pixel >::m_bytes, and png::solid_pixel_buffer< pixel >::m_stride.

template<typename pixel >
row_access png::solid_pixel_buffer< pixel >::operator[] ( size_t  index) [inline]
template<typename pixel >
row_const_access png::solid_pixel_buffer< pixel >::operator[] ( size_t  index) const [inline]
template<typename pixel >
void png::solid_pixel_buffer< pixel >::put_row ( size_t  index,
row_const_access  r 
) [inline]

Replaces the row at specified index.

References png::solid_pixel_buffer< pixel >::get_row(), and png::solid_pixel_buffer< pixel >::m_width.

template<typename pixel >
pixel png::solid_pixel_buffer< pixel >::get_pixel ( size_t  x,
size_t  y 
) const [inline]
template<typename pixel >
void png::solid_pixel_buffer< pixel >::set_pixel ( size_t  x,
size_t  y,
pixel  p 
) [inline]
template<typename pixel >
const std::vector< byte >& png::solid_pixel_buffer< pixel >::get_bytes ( ) const [inline]

Provides easy constant read access to underlying byte-buffer.

References png::solid_pixel_buffer< pixel >::m_bytes.

template<typename pixel >
std::vector< byte > png::solid_pixel_buffer< pixel >::fetch_bytes ( ) [inline]
template<typename pixel >
png::solid_pixel_buffer< pixel >::static_assert ( pixel_traits_t::bit_depth%  CHAR_BIT = =0,
"Bit_depth should consist of integer number of bytes"   
) [protected]
template<typename pixel >
png::solid_pixel_buffer< pixel >::static_assert ( sizeof(pixel)*  CHAR_BIT = =pixel_traits_t::channels *pixel_traits_t::bit_depth,
"pixel type should contain channels data only"   
) [protected]

Member Data Documentation

template<typename pixel >
const size_t png::solid_pixel_buffer< pixel >::bytes_per_pixel [static, protected]
Initial value:
 pixel_traits_t::channels *
                pixel_traits_t::bit_depth / CHAR_BIT

Referenced by png::solid_pixel_buffer< pixel >::get_pixel(), png::solid_pixel_buffer< pixel >::resize(), and png::solid_pixel_buffer< pixel >::set_pixel().

template<typename pixel >
uint_32 png::solid_pixel_buffer< pixel >::m_width [protected]
template<typename pixel >
uint_32 png::solid_pixel_buffer< pixel >::m_height [protected]
template<typename pixel >
size_t png::solid_pixel_buffer< pixel >::m_stride [protected]
template<typename pixel >
std::vector< byte > png::solid_pixel_buffer< pixel >::m_bytes [protected]

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