35 #include "../api_display.h"
36 #include "../Render/graphic_context.h"
45 class PrimitivesArray;
59 class DisplayWindowDescription;
98 void throw_if_null()
const;
106 const Mat4f &get_modelview()
const;
109 const Mat4f &get_projection()
const;
114 inline int get_width()
const {
return get_gc().get_width();}
117 inline int get_height()
const {
return get_gc().get_height();}
123 Rect get_cliprect()
const;
142 void set_depth_stencil_state(
const DepthStencilState &state,
int stencil_ref = 0);
145 void reset_rasterizer_state();
148 void reset_blend_state();
151 void reset_depth_stencil_state();
154 void set_cliprect(
const Rect &rect);
160 void push_cliprect(
const Rect &rect);
163 void push_cliprect();
169 void reset_cliprect();
177 void clear_stencil(
int value = 0);
182 void clear_depth(
float value = 0);
188 void set_map_mode(
MapMode mode);
191 void set_projection(
const Mat4f &matrix);
200 void set_modelview(
const Mat4f &matrix);
203 void mult_modelview(
const Mat4f &matrix);
206 void push_modelview();
211 void set_translate(
float x,
float y,
float z = 0.0);
221 void mult_translate(
float x,
float y,
float z = 0.0);
232 void push_translate(
float x,
float y,
float z = 0.0);
238 void set_rotate(
const Angle &angle,
float x = 0.0,
float y = 0.0,
float z = 1.0,
bool normalize =
true);
243 void mult_rotate(
const Angle &angle,
float x = 0.0,
float y = 0.0,
float z = 1.0,
bool normalize =
true);
248 void push_rotate(
const Angle &angle,
float x = 0.0,
float y = 0.0,
float z = 1.0);
253 void set_scale(
float x,
float y,
float z = 1.0);
259 void mult_scale(
float x,
float y,
float z = 1.0);
265 void push_scale(
float x,
float y,
float z = 1.0);
271 void pop_modelview();
277 void draw_point(
float x1,
float y1,
const Colorf &color);
284 void draw_point(
const Pointf &point,
const Colorf &color);
287 void draw_line(
float x1,
float y1,
float x2,
float y2,
const Colorf &color =
Colorf::white);
314 void draw_box(
float x1,
float y1,
float x2,
float y2,
const Colorf &color =
Colorf::white);
329 void draw_box(
const Rectf &rect,
const Colorf &color);
332 void fill_rect(
float x1,
float y1,
float x2,
float y2,
const Colorf &color =
Colorf::white);
347 void fill_rect(
const Rectf &rect,
const Colorf &color);
357 void fill_rect(
float x1,
float y1,
float x2,
float y2,
const Gradient &color);
375 void fill_circle(
float center_x,
float center_y,
float radius,
const Colorf &color =
Colorf::white);
391 void fill_circle(
const Pointf ¢er,
float radius,
const Gradient &gradient);
400 void fill_circle(
const Pointf ¢er,
const Pointf ¢ergradient,
float radius,
const Gradient &gradient);
412 void fill_triangles(
const Vec2f *triangle_positions,
int num_vertices,
const Gradient &gradient);
415 void fill_triangles(
const Vec2f *triangle_positions,
const Colorf *colors,
int num_vertices);
418 void fill_triangles(
const std::vector<Vec2f> &triangles,
const Colorf *colors);
421 void fill_triangles(
const std::vector<Vec2f> &triangles,
const Colorf &color =
Colorf::white);
424 void fill_triangles(
const std::vector<Vec2f> &triangles,
const Gradient &gradient);
430 void fill_triangles(
const Vec2f *positions,
const Vec2f *texture_positions,
int num_vertices,
const Texture2D &texture,
const Colorf *colors);
433 void fill_triangles(
const std::vector<Vec2f> &positions,
const std::vector<Vec2f> &texture_positions,
const Texture2D &texture,
const Colorf &color =
Colorf::white);
436 void fill_triangles(
const std::vector<Vec2f> &positions,
const std::vector<Vec2f> &texture_positions,
const Texture2D &texture,
const std::vector<Colorf> &colors);
451 void fill_triangles(
const std::vector<Vec2f> &positions,
const Texture2D &texture,
const Gradient &gradient);
454 void fill_triangles(
const std::vector<Vec2f> &positions,
const Texture2D &texture,
const Rect &texture_rect,
const Gradient &gradient);
457 void fill_triangles(
const Vec2f *triangle_positions,
int num_vertices,
const Texture2D &texture,
const Gradient &gradient);
460 void fill_triangles(
const Vec2f *triangle_positions,
int num_vertices,
const Texture2D &texture,
const Rect &texture_rect,
const Gradient &gradient);
466 void fill_ellipse(
const Pointf ¢er,
float radius_x,
float radius_y,
const Gradient &gradient);
477 std::shared_ptr<Canvas_Impl> impl;
479 friend class Sprite_Impl;
481 friend class GlyphCache;
void push_translate(int x, int y, int z=0)
Definition: canvas.h:235
void mult_translate(const Vec2f &vec)
Definition: canvas.h:222
void mult_scale(const Vec2f &vec)
Definition: canvas.h:260
Floating point color description class (for float).
Definition: color.h:661
MapMode
Mapping modes.
Definition: canvas.h:62
Type x
Definition: vec3.h:81
Rasterizer state setup.
Definition: rasterizer_state.h:45
void push_translate(const Vec2f &vec)
Definition: canvas.h:233
Angle class.
Definition: angle.h:63
Colorgradient description class.
Definition: gradient.h:42
static Colorf white
Definition: color.h:1245
Frame-buffer object class.
Definition: frame_buffer.h:73
2D Graphics Canvas
Definition: canvas.h:70
void mult_translate(const Vec3f &vec)
Definition: canvas.h:223
Type y
Definition: vec3.h:82
Pixel data container.
Definition: pixel_buffer.h:69
int get_width() const
Returns the current width of the context.
Definition: canvas.h:114
Blend state setup.
Definition: blend_state.h:45
Triangles - Float.
Definition: triangle_math.h:99
void mult_rotate(const Angle &angle, const Vec2f &vec, bool normalize=true)
Definition: canvas.h:244
void set_rotate(const Angle &angle, const Vec2f &vec, bool normalize=true)
Definition: canvas.h:239
void push_rotate(const Angle &angle, const Vec3f &vec)
Definition: canvas.h:250
Render batching abstraction.
Definition: render_batcher.h:44
StandardProgram
Standard Program.
Definition: graphic_context.h:240
void set_translate(const Vec2f &vec)
Definition: canvas.h:212
2D (left,top,right,bottom) rectangle structure - Integer
Definition: rect.h:453
void set_translate(int x, int y, int z=0)
Definition: canvas.h:214
Type x
Definition: vec2.h:82
void mult_scale(int x, int y, int z=1)
Definition: canvas.h:262
2D texture object class.
Definition: texture_2d.h:42
void push_scale(int x, int y, int z=1)
Definition: canvas.h:268
2D (left,top,right,bottom) rectangle structure - Float
Definition: rect.h:467
void set_rotate(const Angle &angle, const Vec3f &vec, bool normalize=true)
Definition: canvas.h:240
int get_height() const
Returns the current height of the context.
Definition: canvas.h:117
TextureFormat
Texture format.
Definition: texture_format.h:41
void mult_translate(int x, int y, int z=0)
Definition: canvas.h:224
void set_translate(const Vec3f &vec)
Definition: canvas.h:213
void set_scale(const Vec2f &vec)
Definition: canvas.h:254
void push_rotate(const Angle &angle, const Vec2f &vec)
Definition: canvas.h:249
void push_scale(const Vec2f &vec)
Definition: canvas.h:266
3D vector
Definition: line_ray.h:49
Image class.
Definition: image.h:60
Interface to drawing graphics.
Definition: graphic_context.h:257
Size get_size() const
Returns the current size of the context.
Definition: canvas.h:120
void push_translate(const Vec3f &vec)
Definition: canvas.h:234
void set_scale(int x, int y, int z=1)
Definition: canvas.h:256
2D (width,height) size structure - Integer
Definition: size.h:157
DepthStencil state setup.
Definition: depth_stencil_state.h:45
4D matrix
Definition: mat2.h:52
static Colorf black
Definition: color.h:837
void mult_scale(const Vec3f &vec)
Definition: canvas.h:261
2D (x,y) point structure - Float
Definition: point.h:73
void push_scale(const Vec3f &vec)
Definition: canvas.h:267
Top-level window class.
Definition: display_window.h:85
Definition: texture_format.h:44
2D line segment - Float
Definition: line_segment.h:211
void set_scale(const Vec3f &vec)
Definition: canvas.h:255
void mult_rotate(const Angle &angle, const Vec3f &vec, bool normalize=true)
Definition: canvas.h:245
bool is_null() const
Returns true if this object is invalid.
Definition: canvas.h:95
Type z
Definition: vec3.h:83
Type y
Definition: vec2.h:83
C clamp(A val, B minval, C maxval)
Definition: cl_math.h:91