ClanLib
2.3.7
|
Interface to drawing graphics. More...
#include <graphic_context.h>
Public Member Functions | |
Construction | |
CL_GraphicContext () | |
Constructs a null instance. More... | |
CL_GraphicContext (CL_GraphicContextProvider *provider) | |
Constructs a GraphicContext. More... | |
~CL_GraphicContext () | |
Attributes | |
bool | is_null () const |
Returns true if this object is invalid. More... | |
void | throw_if_null () const |
Throw an exception if this object is invalid. More... | |
CL_Texture | get_texture (int index) const |
Returns the currently selected texture for the specified index. More... | |
std::vector< CL_Texture > | get_textures () const |
Returns the currently selected textures. More... | |
CL_BlendMode | get_blend_mode () const |
Returns the blending mode description. More... | |
CL_BufferControl | get_buffer_control () const |
Returns the buffer control description. More... | |
CL_PolygonRasterizer | get_polygon_rasterizer () const |
Returns the polygon rasterizer setup. More... | |
CL_FrameBuffer | get_write_frame_buffer () const |
Returns the currently selected write frame buffer. More... | |
CL_FrameBuffer | get_read_frame_buffer () const |
Returns the currently selected read frame buffer. More... | |
CL_Pen | get_pen () const |
Returns the currently selected pen. More... | |
int | get_width () const |
Returns the current width of the context. More... | |
int | get_height () const |
Returns the current height of the context. More... | |
CL_Size | get_size () const |
Returns the current size of the context. More... | |
CL_Rect | get_cliprect () const |
Returns the current clipping rectangle used on the graphic context. More... | |
const CL_Mat4f & | get_modelview () const |
Returns the current effective modelview matrix. More... | |
CL_Size | get_max_texture_size () const |
Returns the maximum size of a texture this graphic context supports. More... | |
CL_GraphicContextProvider * | get_provider () |
Returns the provider for this graphic context. More... | |
const CL_GraphicContextProvider *const | get_provider () const |
Operations | |
CL_PixelBuffer | get_pixeldata (const CL_Rect &rect, CL_TextureFormat pixel_format=cl_abgr8, bool clamp=true) const |
Return the content of the read buffer into a pixel buffer. More... | |
CL_PixelBuffer | get_pixeldata (CL_TextureFormat pixel_format=cl_abgr8, bool clamp=true) const |
Return the content of the read buffer into a pixel buffer. More... | |
void | set_frame_buffer (const CL_FrameBuffer &write_buffer) |
Sets the current frame buffer. More... | |
void | set_frame_buffer (const CL_FrameBuffer &write_buffer, const CL_FrameBuffer &read_buffer) |
void | reset_frame_buffer () |
Resets the current frame buffer to be the initial frame buffer. More... | |
void | set_texture (int unit_index, const CL_Texture &texture) |
Select texture into index. More... | |
void | set_textures (std::vector< CL_Texture > &textures) |
Select textures. More... | |
void | reset_texture (int unit_index) |
Remove texture from index. More... | |
void | reset_textures () |
Remove all selected textures. More... | |
void | set_program_object (CL_StandardProgram standard_program) |
Set active program object to the standard program specified. More... | |
void | set_program_object (const CL_ProgramObject &program, int program_matrix_flags=cl_program_matrix_all_standard) |
Set active program object. More... | |
void | reset_program_object () |
Remove active program object. More... | |
void | set_blend_mode (const CL_BlendMode &blend_mode) |
Set blending modes. More... | |
void | reset_blend_mode () |
Reset blending to the default. More... | |
void | set_buffer_control (const CL_BufferControl &buffer_control) |
Set buffer control states. More... | |
void | reset_buffer_control () |
Set default buffer control states. More... | |
void | set_pen (const CL_Pen &pen) |
Select pen. More... | |
void | reset_pen () |
Reset pen settings to defaults. More... | |
void | set_polygon_rasterizer (const CL_PolygonRasterizer &raster) |
Set polygon rasterizer settings. More... | |
void | reset_polygon_rasterizer () |
Reset polygon rasterizer settings to defaults. More... | |
void | draw_primitives (CL_PrimitivesType type, int num_vertices, const CL_PrimitivesArray &array) |
Draw primitives on gc. More... | |
void | set_primitives_array (const CL_PrimitivesArray &array) |
Set the primitives array on the gc. More... | |
void | draw_primitives_array (CL_PrimitivesType type, int num_vertices) |
Draws primitives from the current assigned primitives array. More... | |
void | draw_primitives_array (CL_PrimitivesType type, int offset, int num_vertices) |
Draw primitives array. More... | |
void | draw_primitives_array_instanced (CL_PrimitivesType type, int offset, int num_vertices, int instance_count) |
Draw primitives array instanced. More... | |
void | draw_primitives_elements (CL_PrimitivesType type, int count, unsigned int *indices) |
Draw primitives elements. More... | |
void | draw_primitives_elements (CL_PrimitivesType type, int count, unsigned short *indices) |
Draw primitives elements. More... | |
void | draw_primitives_elements (CL_PrimitivesType type, int count, unsigned char *indices) |
Draw primitives elements. More... | |
void | draw_primitives_elements_instanced (CL_PrimitivesType type, int count, unsigned int *indices, int instance_count) |
Draw primitives elements instanced. More... | |
void | draw_primitives_elements_instanced (CL_PrimitivesType type, int count, unsigned short *indices, int instance_count) |
Draw primitives elements instanced. More... | |
void | draw_primitives_elements_instanced (CL_PrimitivesType type, int count, unsigned char *indices, int instance_count) |
Draw primitives elements instanced. More... | |
void | draw_primitives_elements (CL_PrimitivesType type, int count, CL_ElementArrayBuffer &element_array, CL_VertexAttributeDataType indices_type, void *offset=0) |
Draw primitives elements. More... | |
void | draw_primitives_elements_instanced (CL_PrimitivesType type, int count, CL_ElementArrayBuffer &element_array, CL_VertexAttributeDataType indices_type, void *offset, int instance_count) |
Draw primitives elements instanced. More... | |
void | reset_primitives_array () |
Reset the primitives arrays. More... | |
void | draw_pixels (float x, float y, const CL_PixelBuffer &pixel_buffer, const CL_Rect &src_rect, const CL_Colorf &color=CL_Colorf::white) |
Draw pixel buffer on gc. More... | |
void | draw_pixels (float x, float y, float zoom_x, float zoom_y, const CL_PixelBuffer &pixel_buffer, const CL_Rect &src_rect, const CL_Colorf &color=CL_Colorf::white) |
Draw pixels. More... | |
void | clear (const CL_Colorf &color=CL_Colorf::black) |
Clears the whole context using the specified color. More... | |
void | clear_stencil (int value=0) |
Clear the stencil buffer. More... | |
void | clear_depth (float value=0) |
Clear the depth buffer. More... | |
void | set_cliprect (const CL_Rect &rect) |
Set the current clipping rectangle. More... | |
void | push_cliprect (const CL_Rect &rect) |
Push current clipping rectangle to stack. More... | |
void | push_cliprect () |
Push cliprect. More... | |
void | pop_cliprect () |
Pop current clipping rectangle from the stack. More... | |
void | reset_cliprect () |
Removes the set clipping rectangle and empties the cliprect stack. More... | |
void | set_map_mode (CL_MapMode mode) |
Set the projection mapping mode. More... | |
void | set_viewport (const CL_Rectf &viewport) |
Set the viewport to be used in user projection map mode. More... | |
void | set_projection (const CL_Mat4f &matrix) |
Set the projection matrix to be used in user projection map mode. More... | |
void | set_modelview (const CL_Mat4f &matrix) |
Sets the model view matrix to a new matrix. More... | |
void | mult_modelview (const CL_Mat4f &matrix) |
Multiplies the passed matrix onto the model view matrix. More... | |
void | push_modelview () |
Pushes current model view matrix onto the model view stack. More... | |
void | set_translate (float x, float y, float z=0.0) |
Sets a translate offset matrix, ignoring any earlier model view settings. More... | |
void | mult_translate (float x, float y, float z=0.0) |
Adds the translate offset. More... | |
void | push_translate (float x, float y, float z=0.0) |
Push translation offset onto model view stack. More... | |
void | set_rotate (const CL_Angle &angle, float x=0.0, float y=0.0, float z=1.0, bool normalize=true) |
Sets a rotation matrix, ignoring any earlier model view settings. More... | |
void | mult_rotate (const CL_Angle &angle, float x=0.0, float y=0.0, float z=1.0, bool normalize=true) |
Adds a rotation matrix to existing model view. More... | |
void | push_rotate (const CL_Angle &angle, float x=0.0, float y=0.0, float z=1.0) |
Pushes a rotation matrix onto model view stack. More... | |
void | set_scale (float x, float y, float z=1.0) |
Sets a scale matrix, ignoring any earlier model view settings. More... | |
void | mult_scale (float x, float y, float z=1.0) |
Adds a scale matrix to existing model view. More... | |
void | push_scale (float x, float y, float z=1.0) |
Pushes a scale matrix onto model view stack. More... | |
void | pop_modelview () |
Pops last pushed model view matrix off the stack and makes it the active one. More... | |
void | flush_batcher () |
Flushes the render batcher currently active. More... | |
void | set_batcher (CL_RenderBatcher *batcher) |
Specifies which render batcher is to be currently active. More... | |
Events | |
CL_Signal_v0 & | sig_gc_destruction_imminent () |
Called when the last GC in the thread is about to be destroyed. More... | |
Implementation | |
class | CL_PrimitivesArray |
class | CL_Sprite_Impl |
class | CL_Image |
class | CL_GlyphCache |
class | CL_Draw |
Interface to drawing graphics.
CL_GraphicContext::CL_GraphicContext | ( | ) |
Constructs a null instance.
CL_GraphicContext::CL_GraphicContext | ( | CL_GraphicContextProvider * | provider) |
Constructs a GraphicContext.
provider | = Graphic Context Provider |
CL_GraphicContext::~CL_GraphicContext | ( | ) |
void CL_GraphicContext::clear | ( | const CL_Colorf & | color = CL_Colorf::black ) |
Clears the whole context using the specified color.
void CL_GraphicContext::clear_depth | ( | float | value = 0 ) |
Clear the depth buffer.
value,: | value to clear to. Range 0.0 - 1.0. |
void CL_GraphicContext::clear_stencil | ( | int | value = 0 ) |
Clear the stencil buffer.
value | value to clear to. |
void CL_GraphicContext::draw_pixels | ( | float | x, |
float | y, | ||
const CL_PixelBuffer & | pixel_buffer, | ||
const CL_Rect & | src_rect, | ||
const CL_Colorf & | color = CL_Colorf::white |
||
) |
Draw pixel buffer on gc.
Note, For OpenGL targets this is slow. Consider drawing a texture with a pixelbuffer object (created via CL_PixelBuffer(gc, ...) )
void CL_GraphicContext::draw_pixels | ( | float | x, |
float | y, | ||
float | zoom_x, | ||
float | zoom_y, | ||
const CL_PixelBuffer & | pixel_buffer, | ||
const CL_Rect & | src_rect, | ||
const CL_Colorf & | color = CL_Colorf::white |
||
) |
Draw pixels.
Note, For OpenGL targets this is slow. Consider drawing a texture with a pixelbuffer object (created via CL_PixelBuffer(gc, ...) )
x | = value |
y | = value |
zoom_x | = value |
zoom_y | = value |
pixel_buffer | = Pixel Buffer Ref |
src_rect | = Source rect |
color | = Colorf |
void CL_GraphicContext::draw_primitives | ( | CL_PrimitivesType | type, |
int | num_vertices, | ||
const CL_PrimitivesArray & | array | ||
) |
Draw primitives on gc.
void CL_GraphicContext::draw_primitives_array | ( | CL_PrimitivesType | type, |
int | num_vertices | ||
) |
Draws primitives from the current assigned primitives array.
void CL_GraphicContext::draw_primitives_array | ( | CL_PrimitivesType | type, |
int | offset, | ||
int | num_vertices | ||
) |
Draw primitives array.
type | = Primitives Type |
offset | = value |
num_vertices | = value |
void CL_GraphicContext::draw_primitives_array_instanced | ( | CL_PrimitivesType | type, |
int | offset, | ||
int | num_vertices, | ||
int | instance_count | ||
) |
Draw primitives array instanced.
type | = Primitives Type |
offset | = value |
num_vertices | = value |
instance_count | = number of instances drawn |
void CL_GraphicContext::draw_primitives_elements | ( | CL_PrimitivesType | type, |
int | count, | ||
unsigned int * | indices | ||
) |
Draw primitives elements.
type | = Primitives Type |
count | = value |
indices | = value |
void CL_GraphicContext::draw_primitives_elements | ( | CL_PrimitivesType | type, |
int | count, | ||
unsigned short * | indices | ||
) |
Draw primitives elements.
type | = Primitives Type |
count | = value |
indices | = short |
void CL_GraphicContext::draw_primitives_elements | ( | CL_PrimitivesType | type, |
int | count, | ||
unsigned char * | indices | ||
) |
Draw primitives elements.
type | = Primitives Type |
count | = value |
indices | = char |
void CL_GraphicContext::draw_primitives_elements | ( | CL_PrimitivesType | type, |
int | count, | ||
CL_ElementArrayBuffer & | element_array, | ||
CL_VertexAttributeDataType | indices_type, | ||
void * | offset = 0 |
||
) |
Draw primitives elements.
type | = Primitives Type |
count | = value |
element_array | = Element Array Buffer |
indices_type | = Vertex Attribute Data Type |
offset | = void |
void CL_GraphicContext::draw_primitives_elements_instanced | ( | CL_PrimitivesType | type, |
int | count, | ||
unsigned int * | indices, | ||
int | instance_count | ||
) |
Draw primitives elements instanced.
type | = Primitives Type |
count | = value |
indices | = value |
instance_count | = number of instances drawn |
void CL_GraphicContext::draw_primitives_elements_instanced | ( | CL_PrimitivesType | type, |
int | count, | ||
unsigned short * | indices, | ||
int | instance_count | ||
) |
Draw primitives elements instanced.
type | = Primitives Type |
count | = value |
indices | = short |
instance_count | = number of instances drawn |
void CL_GraphicContext::draw_primitives_elements_instanced | ( | CL_PrimitivesType | type, |
int | count, | ||
unsigned char * | indices, | ||
int | instance_count | ||
) |
Draw primitives elements instanced.
type | = Primitives Type |
count | = value |
indices | = char |
instance_count | = number of instances drawn |
void CL_GraphicContext::draw_primitives_elements_instanced | ( | CL_PrimitivesType | type, |
int | count, | ||
CL_ElementArrayBuffer & | element_array, | ||
CL_VertexAttributeDataType | indices_type, | ||
void * | offset, | ||
int | instance_count | ||
) |
Draw primitives elements instanced.
type | = Primitives Type |
count | = value |
element_array | = Element Array Buffer |
indices_type | = Vertex Attribute Data Type |
offset | = void |
instance_count | = number of instances drawn |
void CL_GraphicContext::flush_batcher | ( | ) |
Flushes the render batcher currently active.
CL_BlendMode CL_GraphicContext::get_blend_mode | ( | ) | const |
Returns the blending mode description.
CL_BufferControl CL_GraphicContext::get_buffer_control | ( | ) | const |
Returns the buffer control description.
CL_Rect CL_GraphicContext::get_cliprect | ( | ) | const |
Returns the current clipping rectangle used on the graphic context.
int CL_GraphicContext::get_height | ( | ) | const |
Returns the current height of the context.
CL_Size CL_GraphicContext::get_max_texture_size | ( | ) | const |
Returns the maximum size of a texture this graphic context supports.
It returns CL_Size(0,0) if there is no known limitation to the max texture size.
const CL_Mat4f& CL_GraphicContext::get_modelview | ( | ) | const |
Returns the current effective modelview matrix.
CL_Pen CL_GraphicContext::get_pen | ( | ) | const |
Returns the currently selected pen.
CL_PixelBuffer CL_GraphicContext::get_pixeldata | ( | const CL_Rect & | rect, |
CL_TextureFormat | pixel_format = cl_abgr8 , |
||
bool | clamp = true |
||
) | const |
Return the content of the read buffer into a pixel buffer.
CL_PixelBuffer CL_GraphicContext::get_pixeldata | ( | CL_TextureFormat | pixel_format = cl_abgr8 , |
bool | clamp = true |
||
) | const |
Return the content of the read buffer into a pixel buffer.
CL_PolygonRasterizer CL_GraphicContext::get_polygon_rasterizer | ( | ) | const |
Returns the polygon rasterizer setup.
CL_GraphicContextProvider* CL_GraphicContext::get_provider | ( | ) |
Returns the provider for this graphic context.
const CL_GraphicContextProvider* const CL_GraphicContext::get_provider | ( | ) | const |
CL_FrameBuffer CL_GraphicContext::get_read_frame_buffer | ( | ) | const |
Returns the currently selected read frame buffer.
CL_Size CL_GraphicContext::get_size | ( | ) | const |
Returns the current size of the context.
CL_Texture CL_GraphicContext::get_texture | ( | int | index) | const |
Returns the currently selected texture for the specified index.
index | = 0 to x, the index of the texture |
std::vector<CL_Texture> CL_GraphicContext::get_textures | ( | ) | const |
Returns the currently selected textures.
int CL_GraphicContext::get_width | ( | ) | const |
Returns the current width of the context.
CL_FrameBuffer CL_GraphicContext::get_write_frame_buffer | ( | ) | const |
Returns the currently selected write frame buffer.
|
inline |
Returns true if this object is invalid.
void CL_GraphicContext::mult_modelview | ( | const CL_Mat4f & | matrix) |
Multiplies the passed matrix onto the model view matrix.
void CL_GraphicContext::mult_rotate | ( | const CL_Angle & | angle, |
float | x = 0.0 , |
||
float | y = 0.0 , |
||
float | z = 1.0 , |
||
bool | normalize = true |
||
) |
Adds a rotation matrix to existing model view.
void CL_GraphicContext::mult_scale | ( | float | x, |
float | y, | ||
float | z = 1.0 |
||
) |
Adds a scale matrix to existing model view.
void CL_GraphicContext::mult_translate | ( | float | x, |
float | y, | ||
float | z = 0.0 |
||
) |
Adds the translate offset.
This offset will affect any subsequent display operations on the current displaycard, by translating the position of the display operation with the offset. The offset will be offset by any previous offsets pushed onto the stack, eg. it inherits the previous offset.
void CL_GraphicContext::pop_cliprect | ( | ) |
Pop current clipping rectangle from the stack.
void CL_GraphicContext::pop_modelview | ( | ) |
Pops last pushed model view matrix off the stack and makes it the active one.
void CL_GraphicContext::push_cliprect | ( | const CL_Rect & | rect) |
Push current clipping rectangle to stack.
If a rectangle is passed, it afterwards sets clipping rectangle to the union of the current rectangle and the passed rectangle.
void CL_GraphicContext::push_cliprect | ( | ) |
Push cliprect.
void CL_GraphicContext::push_modelview | ( | ) |
Pushes current model view matrix onto the model view stack.
void CL_GraphicContext::push_rotate | ( | const CL_Angle & | angle, |
float | x = 0.0 , |
||
float | y = 0.0 , |
||
float | z = 1.0 |
||
) |
Pushes a rotation matrix onto model view stack.
void CL_GraphicContext::push_scale | ( | float | x, |
float | y, | ||
float | z = 1.0 |
||
) |
Pushes a scale matrix onto model view stack.
void CL_GraphicContext::push_translate | ( | float | x, |
float | y, | ||
float | z = 0.0 |
||
) |
Push translation offset onto model view stack.
This function is a convenience function for calling push_modelview, then mult_translate.
This offset will affect any subsequent display operations on the current displaycard, by translating the position of the display operation with the offset. The offset will be offset by any previous offsets pushed onto the stack, eg. it inherits the previous offset.
void CL_GraphicContext::reset_blend_mode | ( | ) |
Reset blending to the default.
void CL_GraphicContext::reset_buffer_control | ( | ) |
Set default buffer control states.
void CL_GraphicContext::reset_cliprect | ( | ) |
Removes the set clipping rectangle and empties the cliprect stack.
void CL_GraphicContext::reset_frame_buffer | ( | ) |
Resets the current frame buffer to be the initial frame buffer.
void CL_GraphicContext::reset_pen | ( | ) |
Reset pen settings to defaults.
void CL_GraphicContext::reset_polygon_rasterizer | ( | ) |
Reset polygon rasterizer settings to defaults.
void CL_GraphicContext::reset_primitives_array | ( | ) |
Reset the primitives arrays.
void CL_GraphicContext::reset_program_object | ( | ) |
Remove active program object.
void CL_GraphicContext::reset_texture | ( | int | unit_index) |
Remove texture from index.
unit_index | = 0 to x, the index of the texture |
void CL_GraphicContext::reset_textures | ( | ) |
Remove all selected textures.
void CL_GraphicContext::set_batcher | ( | CL_RenderBatcher * | batcher) |
Specifies which render batcher is to be currently active.
If the render batcher is already active, nothing happens. If a different render batcher is currently active, it is flushed before the new batcher is made active.
void CL_GraphicContext::set_blend_mode | ( | const CL_BlendMode & | blend_mode) |
Set blending modes.
void CL_GraphicContext::set_buffer_control | ( | const CL_BufferControl & | buffer_control) |
Set buffer control states.
void CL_GraphicContext::set_cliprect | ( | const CL_Rect & | rect) |
Set the current clipping rectangle.
void CL_GraphicContext::set_frame_buffer | ( | const CL_FrameBuffer & | write_buffer) |
Sets the current frame buffer.
void CL_GraphicContext::set_frame_buffer | ( | const CL_FrameBuffer & | write_buffer, |
const CL_FrameBuffer & | read_buffer | ||
) |
void CL_GraphicContext::set_map_mode | ( | CL_MapMode | mode) |
Set the projection mapping mode.
void CL_GraphicContext::set_modelview | ( | const CL_Mat4f & | matrix) |
Sets the model view matrix to a new matrix.
void CL_GraphicContext::set_pen | ( | const CL_Pen & | pen) |
Select pen.
void CL_GraphicContext::set_polygon_rasterizer | ( | const CL_PolygonRasterizer & | raster) |
Set polygon rasterizer settings.
void CL_GraphicContext::set_primitives_array | ( | const CL_PrimitivesArray & | array) |
Set the primitives array on the gc.
void CL_GraphicContext::set_program_object | ( | CL_StandardProgram | standard_program) |
Set active program object to the standard program specified.
void CL_GraphicContext::set_program_object | ( | const CL_ProgramObject & | program, |
int | program_matrix_flags = cl_program_matrix_all_standard |
||
) |
Set active program object.
program | = Program to set |
program_matrix_flags | = Which matricies will be set in the program object ( CL_ProgramMatrixFlags bitmask flags) |
void CL_GraphicContext::set_projection | ( | const CL_Mat4f & | matrix) |
Set the projection matrix to be used in user projection map mode.
void CL_GraphicContext::set_rotate | ( | const CL_Angle & | angle, |
float | x = 0.0 , |
||
float | y = 0.0 , |
||
float | z = 1.0 , |
||
bool | normalize = true |
||
) |
Sets a rotation matrix, ignoring any earlier model view settings.
void CL_GraphicContext::set_scale | ( | float | x, |
float | y, | ||
float | z = 1.0 |
||
) |
Sets a scale matrix, ignoring any earlier model view settings.
void CL_GraphicContext::set_texture | ( | int | unit_index, |
const CL_Texture & | texture | ||
) |
Select texture into index.
unit_index | = 0 to x, the index of this texture |
texture | = The texture to select. This can be an empty texture CL_Texture() |
void CL_GraphicContext::set_textures | ( | std::vector< CL_Texture > & | textures) |
Select textures.
Only textures units from 0 to textures.size()-1 are set.
textures | = The texture to select (placed at unit_index 0 to texture.size()-1). These may contain null textures |
void CL_GraphicContext::set_translate | ( | float | x, |
float | y, | ||
float | z = 0.0 |
||
) |
Sets a translate offset matrix, ignoring any earlier model view settings.
This offset will affect any subsequent display operations on the current displaycard, by translating the position of the display operation with the offset.
void CL_GraphicContext::set_viewport | ( | const CL_Rectf & | viewport) |
Set the viewport to be used in user projection map mode.
CL_Signal_v0& CL_GraphicContext::sig_gc_destruction_imminent | ( | ) |
Called when the last GC in the thread is about to be destroyed.
void CL_GraphicContext::throw_if_null | ( | ) | const |
Throw an exception if this object is invalid.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |