34#include "../Render/graphic_context.h"
90 explicit operator bool()
const {
return bool(impl); }
373 void fill_triangles(
const std::vector<Vec2f> &positions,
const std::vector<Vec2f> &texture_positions,
const Texture2D &texture,
const std::vector<Colorf> &colors);
409 std::shared_ptr<Canvas_Impl> impl;
447 ~ClipRectStack() {
for (; push_count > 0; --push_count) canvas->pop_cliprect(); }
451 void pop_cliprect() {
if (push_count) { --push_count; canvas->pop_cliprect(); } }
453 unsigned int push_count = 0;
Blend state setup.
Definition blend_state.h:44
2D Graphics Canvas
Definition canvas.h:72
void fill_triangle(const Trianglef &dest_triangle, const Colorf &color=StandardColorf::white())
Draw a triangle.
Canvas(DisplayWindow &window)
Constructs a Canvas.
void set_viewport(const Rectf &viewport)
void fill_triangles(const std::vector< Vec2f > &positions, const Texture2D &texture, const Rect &texture_rect, const Gradient &gradient)
Draw triangles.
void fill_rect(float x1, float y1, float x2, float y2, const Gradient &color)
Gradient fill.
void clear_stencil(int value=0)
Clear the stencil buffer.
void fill_rect(const Rectf &rect, const Colorf &color)
Fill.
void set_rasterizer_state(const RasterizerState &state)
Set active rasterizer state.
void draw_box(const Pointf &start, const Pointf &end, const Colorf &color=StandardColorf::white())
Box.
void push_cliprect(const Rectf &rect)
Push current clipping rectangle to stack.
void fill_triangles(const std::vector< Vec2f > &positions, const Texture2D &texture, const Rect &texture_rect, const Colorf &color=StandardColorf::white())
Draw triangles.
Pointf grid_fit(const Pointf &pos)
Snaps the point to the nearest pixel corner.
void set_batcher(RenderBatcher *batcher)
Specifies which render batcher is to be currently active.
Sizef get_size() const
Returns the current size of the context.
Definition canvas.h:120
void fill_circle(float center_x, float center_y, float radius, const Colorf &color=StandardColorf::white())
Draw a circle.
Canvas()
Constructs a null instance.
const Mat4f & get_transform() const
Returns the current effective transform matrix.
const Mat4f & get_projection() const
Returns the current effective projection matrix.
void clear(const Colorf &color=StandardColorf::black())
Clears the whole context using the specified color.
void fill_triangles(const Vec2f *triangle_positions, int num_vertices, const Gradient &gradient)
Draw triangles.
void draw_point(float x1, float y1, const Colorf &color)
Draw a point.
friend class Font_DrawScaled
Definition canvas.h:416
PixelBuffer get_pixeldata(const Rect &rect, TextureFormat texture_format=TextureFormat::rgba8, bool clamp=true)
Return the content of the read buffer into a pixel buffer.
friend class Font_Impl
Definition canvas.h:413
friend class Path
Definition canvas.h:417
void set_blend_state(const BlendState &state, const Colorf &blend_color=StandardColorf::white(), unsigned int sample_mask=0xffffffff)
Set active blend state.
float get_pixel_ratio() const
Definition canvas.h:133
void mult_transform(const Mat4f &matrix)
Multiplies the passed matrix onto the transform matrix.
void fill_circle(const Pointf ¢er, float radius, const Colorf &color=StandardColorf::white())
Circle.
void fill_triangles(const Vec2f *triangle_positions, int num_vertices, const Texture2D &texture, const Rect &texture_rect, const Colorf &color=StandardColorf::white())
Draw triangles.
void flush()
Flushes the render batcher currently active.
friend class Image
Definition canvas.h:412
void draw_box(const Rectf &rect, const Colorf &color)
Box.
void reset_cliprect()
Removes the set clipping rectangle and empties the cliprect stack.
void throw_if_null() const
Throw an exception if this object is invalid.
void draw_box(float x1, float y1, float x2, float y2, const Colorf &color=StandardColorf::white())
Draw a box / rectangle.
void fill_triangles(const Vec2f *triangle_positions, const Colorf *colors, int num_vertices)
Draw triangles.
void pop_cliprect()
Pop current clipping rectangle from the stack.
void draw_line(const Pointf &start, const Pointf &end, const Colorf &color=StandardColorf::white())
Line.
void fill_rect(const Rectf &rect, const Gradient &gradient)
Gradient fill.
void draw_line(const LineSegment2f &line_segment, const Colorf &color=StandardColorf::white())
Line.
void draw_line_strip(const Vec2f *positions, int num_vertices, const Colorf &color=StandardColorf::white())
Line Strip.
void set_program_object(StandardProgram standard_program)
Set active program object to the standard program specified.
PixelBuffer get_pixeldata(TextureFormat texture_format=TextureFormat::rgba8, bool clamp=true)
Return the content of the read buffer into a pixel buffer.
void reset_blend_state()
Set active blend state.
void draw_line(float x1, float y1, float x2, float y2, const Colorf &color=StandardColorf::white())
Draw a line.
void fill_ellipse(const Pointf ¢er, float radius_x, float radius_y, const Colorf &color=StandardColorf::white())
Draw a filled ellipse.
float get_height() const
Returns the current height of the context.
Definition canvas.h:117
bool is_null() const
Returns true if this object is invalid.
Definition canvas.h:89
void set_transform(const Mat4f &matrix)
Sets the transform matrix to a new matrix.
void fill_triangles(const Vec2f *triangle_positions, int num_vertices, const Texture2D &texture, const Rect &texture_rect, const Gradient &gradient)
Draw triangles.
void push_cliprect()
Push cliprect.
void fill_rect(const Pointf &start, const Pointf &end, const Colorf &color=StandardColorf::white())
Fill.
void fill_triangles(const std::vector< Vec2f > &triangles, const Gradient &gradient)
Draw triangles.
void reset_depth_stencil_state()
Set active depth stencil state.
Canvas create()
Create a copy of a canvas.
GraphicContext & get_gc() const
Get gc.
void fill_triangles(const std::vector< Vec2f > &triangles, const Colorf *colors)
Draw triangles.
friend class Font_DrawSubPixel
Definition canvas.h:414
void fill_triangles(const std::vector< Vec2f > &positions, const Texture2D &texture, const Colorf &color=StandardColorf::white())
Draw triangles.
friend class Sprite_Impl
Definition canvas.h:411
void fill_circle(const Pointf ¢er, const Pointf ¢ergradient, float radius, const Gradient &gradient)
Gradient circle.
void reset_rasterizer_state()
Set active rasterizer state.
Rectf get_cliprect() const
Returns the current clipping rectangle.
void fill_rect(float x1, float y1, float x2, float y2, const Colorf &color=StandardColorf::white())
Draw a filled box / rectangle.
void fill_rect(const Pointf &start, const Pointf &end, const Gradient &gradient)
Gradient fill.
void fill_triangles(const Vec2f *positions, const Vec2f *texture_positions, int num_vertices, const Texture2D &texture, const Colorf *colors)
Draw triangles.
void fill_triangles(const Vec2f *triangle_positions, int num_vertices, const Texture2D &texture, const Gradient &gradient)
Draw triangles.
void set_projection(const Mat4f &matrix)
Set the projection matrix to be used in user projection map mode.
friend class Font_DrawFlat
Definition canvas.h:415
void fill_ellipse(const Pointf ¢er, float radius_x, float radius_y, const Gradient &gradient)
Draw a gradient filled ellipse.
Mat4f & get_inverse_transform()
Returns the inverse of the current effective transform matrix.
void fill_triangles(const std::vector< Vec2f > &positions, const std::vector< Vec2f > &texture_positions, const Texture2D &texture, const std::vector< Colorf > &colors)
Draw triangles.
Canvas(Canvas &canvas, FrameBuffer &framebuffer)
Constructs a Canvas based on a framebuffer. (based on the copy of the canvas)
void set_depth_stencil_state(const DepthStencilState &state, int stencil_ref=0)
Set active depth stencil state.
float get_width() const
Returns the current width of the context.
Definition canvas.h:114
void set_map_mode(MapMode mode)
Set the projection mapping mode.
void draw_point(const Pointf &point, const Colorf &color)
Point.
void fill_triangles(const Vec2f *triangle_positions, int num_vertices, const Texture2D &texture, const Colorf &color=StandardColorf::white())
Draw triangles.
void set_cliprect(const Rectf &rect)
Set the current clipping rectangle.
void fill_circle(const Pointf ¢er, float radius, const Gradient &gradient)
Gradient circle.
void draw_lines(const Vec2f *positions, int num_vertices, const Colorf &color=StandardColorf::white())
Lines.
void fill_triangles(const std::vector< Vec2f > &triangles, const Colorf &color=StandardColorf::white())
Draw triangles.
void clear_depth(float value=0)
Clear the depth buffer.
void fill_triangles(const std::vector< Vec2f > &positions, const Texture2D &texture, const Gradient &gradient)
Draw triangles.
void fill_triangles(const std::vector< Vec2f > &positions, const std::vector< Vec2f > &texture_positions, const Texture2D &texture, const Colorf &color=StandardColorf::white())
Draw triangles.
void draw_lines(const Vec2f *line_positions, const Vec2f *texture_positions, int num_vertices, const Texture2D &texture, const Colorf &line_color=StandardColorf::white())
Lines.
void fill_triangles(const Vec2f *positions, const Vec2f *texture_positions, int num_vertices, const Texture2D &texture, const Colorf &color=StandardColorf::white())
Draw triangles.
void fill_triangles(const Vec2f *triangle_positions, int num_vertices, const Colorf &color=StandardColorf::white())
Draw triangles.
void fill_triangle(const Pointf &a, const Pointf &b, const Pointf &c, const Colorf &color=StandardColorf::white())
Draw a triangle.
void push_cliprect()
Definition canvas.h:450
ClipRectStack(Canvas *current_canvas)
Definition canvas.h:446
void push_cliprect(const Rectf &rect)
Definition canvas.h:449
void pop_cliprect()
Definition canvas.h:451
~ClipRectStack()
Definition canvas.h:447
ClipRectState(Canvas *current_canvas)
Definition canvas.h:435
const Rectf cliprect
Definition canvas.h:437
~ClipRectState()
Definition canvas.h:436
Floating point color description class (for float).
Definition color.h:799
DepthStencil state setup.
Definition depth_stencil_state.h:44
Display window description class.
Definition display_window_description.h:50
Top-level window class.
Definition display_window.h:101
Frame-buffer object class.
Definition frame_buffer.h:72
Colorgradient description class.
Definition gradient.h:41
Interface to drawing graphics.
Definition graphic_context.h:257
Sizef get_dip_size() const
Definition graphic_context.h:353
float get_dip_height() const
Definition graphic_context.h:349
float get_dip_width() const
Definition graphic_context.h:345
float get_pixel_ratio() const
Image class.
Definition image.h:59
2D line segment - Integer
Definition line_segment.h:177
2D line segment - Float
Definition line_segment.h:188
Pixel data container.
Definition pixel_buffer.h:68
2D (x,y) point structure - Float
Definition point.h:72
Primitives array description.
Definition primitives_array.h:68
Rasterizer state setup.
Definition rasterizer_state.h:44
2D (left,top,right,bottom) rectangle structure - Integer
Definition rect.h:446
2D (left,top,right,bottom) rectangle structure - Float
Definition rect.h:460
Render batching abstraction.
Definition render_batcher.h:45
2D (width,height) size structure - Float
Definition size.h:189
static Colorf black()
Definition color.h:1747
static Colorf white()
Definition color.h:1884
2D texture object class.
Definition texture_2d.h:41
Triangles - Integer.
Definition triangle_math.h:72
Triangles - Float.
Definition triangle_math.h:81
Mat4< float > Mat4f
Definition mat4.h:521
Vec2< float > Vec2f
Definition vec2.h:357
C clamp(A val, B minval, C maxval)
Definition cl_math.h:97
@ center
Definition origin.h:44
TextureFormat
Texture format.
Definition texture_format.h:39
StandardProgram
Standard Program.
Definition graphic_context.h:239
MapMode
Mapping modes.
Definition canvas.h:64
@ rgba8
Definition texture_format.h:41
@ triangles
Definition graphic_context.h:227
@ point
Definition graphic_context.h:78
@ _2d_lower_left
Definition canvas.h:66
@ _2d_upper_left
Definition canvas.h:65
@ _user_projection
Definition canvas.h:67
@ color
value is an url
Definition style_value_type.h:43
@ end
Definition keys.h:57