StuBS
Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE > Class Template Reference

Implementation of primitive operations on a memory area used as framebuffer. More...

#include <framebuffer.h>

Inheritance diagram for Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >:

Classes

union  Pixel
 Pixel (colored) More...
 
class  PixelComponent
 Pixel component. More...
 

Protected Member Functions

void init (const unsigned width, const unsigned height, const unsigned pitch)
 Initialize screen dimensions.
 
void buffer (void *lfb)
 Set the video memory address.
 
void clear ()
 Clear all pixel of the current back buffer (set full screen to black)
 
Pixelget (const unsigned x, const unsigned y) const
 Get pixel at position.
 
Pixelget (const Point &p) const
 Get pixel at position.
 
template<enum SpriteColorMode COLOR, bool ALPHA, unsigned BITS>
void set (const unsigned x, const unsigned y, const SpritePixel< COLOR, ALPHA, BITS > &color)
 Assign color to a pixel at a given position.
 
template<enum SpriteColorMode COLOR, bool ALPHA, unsigned BITS>
void set (const Point &p, const SpritePixel< COLOR, ALPHA, BITS > &color)
 Assign color to a pixel at a given position.
 

Protected Attributes

unsigned screen_width
 Visible width of the screen.
 
unsigned screen_height
 Visible height of the screen.
 

Private Attributes

uintptr_t framebuffer
 Start address of the linear framebuffer.
 
unsigned pitch
 Internal width of the screen.
 

Detailed Description

template<unsigned char COLORDEPTH, unsigned char OFFSET_RED, unsigned char OFFSET_GREEN, unsigned char OFFSET_BLUE, unsigned char BITS_RED, unsigned char BITS_GREEN, unsigned char BITS_BLUE>
class Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >

Implementation of primitive operations on a memory area used as framebuffer.

The implementation as template class allows the compiler to heavily optimize the bit operations depending on the video mode.

Template Parameters
COLORDEPTHcolor depth of video mode
OFFSET_REDBit position of red color mask in video mode
OFFSET_GREENBit position of green color mask in video mode
OFFSET_BLUEBit position of blue color mask in video mode
BITS_REDSize of red color mask in video mode
BITS_GREENSize of green color mask in video mode
BITS_BLUESize of blue color mask in video mode

Member Function Documentation

◆ buffer()

template<unsigned char COLORDEPTH, unsigned char OFFSET_RED, unsigned char OFFSET_GREEN, unsigned char OFFSET_BLUE, unsigned char BITS_RED, unsigned char BITS_GREEN, unsigned char BITS_BLUE>
void Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >::buffer ( void *  lfb)
inlineprotected

Set the video memory address.

Parameters
lfbpointer to the linear framebuffer (lfb)

◆ get() [1/2]

template<unsigned char COLORDEPTH, unsigned char OFFSET_RED, unsigned char OFFSET_GREEN, unsigned char OFFSET_BLUE, unsigned char BITS_RED, unsigned char BITS_GREEN, unsigned char BITS_BLUE>
Pixel * Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >::get ( const Point p) const
inlineprotected

Get pixel at position.

Parameters
pCoordinate of position
Returns
Pointer to pixel

◆ get() [2/2]

template<unsigned char COLORDEPTH, unsigned char OFFSET_RED, unsigned char OFFSET_GREEN, unsigned char OFFSET_BLUE, unsigned char BITS_RED, unsigned char BITS_GREEN, unsigned char BITS_BLUE>
Pixel * Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >::get ( const unsigned  x,
const unsigned  y 
) const
inlineprotected

Get pixel at position.

Parameters
xX position
yY position
Returns
Pointer to pixel

◆ init()

template<unsigned char COLORDEPTH, unsigned char OFFSET_RED, unsigned char OFFSET_GREEN, unsigned char OFFSET_BLUE, unsigned char BITS_RED, unsigned char BITS_GREEN, unsigned char BITS_BLUE>
void Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >::init ( const unsigned  width,
const unsigned  height,
const unsigned  pitch 
)
inlineprotected

Initialize screen dimensions.

Parameters
widthvisible width of graphics screen
heightvisible height of graphics screen
pitchwidth of graphics screen (including invisible part, has to be at least width)

◆ set() [1/2]

template<unsigned char COLORDEPTH, unsigned char OFFSET_RED, unsigned char OFFSET_GREEN, unsigned char OFFSET_BLUE, unsigned char BITS_RED, unsigned char BITS_GREEN, unsigned char BITS_BLUE>
template<enum SpriteColorMode COLOR, bool ALPHA, unsigned BITS>
void Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >::set ( const Point p,
const SpritePixel< COLOR, ALPHA, BITS > &  color 
)
inlineprotected

Assign color to a pixel at a given position.

Template Parameters
COLORcolor or greyscale?
ALPHAwith transparency?
BITSSize of mask
Parameters
pCoordinate of position
colorcolor to assign

◆ set() [2/2]

template<unsigned char COLORDEPTH, unsigned char OFFSET_RED, unsigned char OFFSET_GREEN, unsigned char OFFSET_BLUE, unsigned char BITS_RED, unsigned char BITS_GREEN, unsigned char BITS_BLUE>
template<enum SpriteColorMode COLOR, bool ALPHA, unsigned BITS>
void Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >::set ( const unsigned  x,
const unsigned  y,
const SpritePixel< COLOR, ALPHA, BITS > &  color 
)
inlineprotected

Assign color to a pixel at a given position.

Template Parameters
COLORcolor or greyscale?
ALPHAwith transparency?
BITSSize of mask
Parameters
xX position
yY position
colorcolor to assign

Member Data Documentation

◆ pitch

template<unsigned char COLORDEPTH, unsigned char OFFSET_RED, unsigned char OFFSET_GREEN, unsigned char OFFSET_BLUE, unsigned char BITS_RED, unsigned char BITS_GREEN, unsigned char BITS_BLUE>
unsigned Framebuffer< COLORDEPTH, OFFSET_RED, OFFSET_GREEN, OFFSET_BLUE, BITS_RED, BITS_GREEN, BITS_BLUE >::pitch
private

Internal width of the screen.

At least the visible width of the screen, depends on the hardware but required for calculating the rows


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