NovaSVG 0.10.0
A header-only SVG library
Loading...
Searching...
No Matches
canvas.h File Reference
#include "private.h"
#include "utils.h"
Include dependency graph for canvas.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  novasvg
 Main namespace for the NovaSVG library.
 
namespace  novasvg::render
 

Macros

#define NOVASVG_DEFAULT_STROKE_STYLE   (stroke_style_t{1.f, NOVASVG_LINE_CAP_BUTT, NOVASVG_LINE_JOIN_MITER, 10.f})
 

Functions

NOVASVG_INLINE int novasvg::render::render_version (void)
 Gets the version of the novasvg rendering library.
 
NOVASVG_INLINE const char * novasvg::render::render_version_string (void)
 Gets the version of the novasvg rendering library as a string.
 
NOVASVG_INLINE state_t * novasvg::render::state_create (void)
 
NOVASVG_INLINE void novasvg::render::state_reset (state_t *state)
 
NOVASVG_INLINE void novasvg::render::state_copy (state_t *state, const state_t *source)
 
NOVASVG_INLINE void novasvg::render::state_destroy (state_t *state)
 
NOVASVG_INLINE canvas_t * novasvg::render::canvas_create (surface_t *surface)
 Creates a drawing context on a surface.
 
NOVASVG_INLINE canvas_t * novasvg::render::canvas_reference (canvas_t *canvas)
 Increases the reference count of the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_destroy (canvas_t *canvas)
 Decreases the reference count and destroys the canvas when it reaches zero.
 
NOVASVG_INLINE int novasvg::render::canvas_get_reference_count (const canvas_t *canvas)
 Retrieves the reference count of the canvas.
 
NOVASVG_INLINE surface_t * novasvg::render::canvas_get_surface (const canvas_t *canvas)
 Gets the surface associated with the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_save (canvas_t *canvas)
 Saves the current state of the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_restore (canvas_t *canvas)
 Restores the canvas to the most recently saved state.
 
NOVASVG_INLINE void novasvg::render::canvas_set_rgb (canvas_t *canvas, float r, float g, float b)
 Sets the current paint to a solid color.
 
NOVASVG_INLINE void novasvg::render::canvas_set_rgba (canvas_t *canvas, float r, float g, float b, float a)
 Sets the current paint to a solid color.
 
NOVASVG_INLINE void novasvg::render::canvas_set_color (canvas_t *canvas, const color_t *color)
 Sets the current paint to a solid color.
 
NOVASVG_INLINE void novasvg::render::canvas_set_linear_gradient (canvas_t *canvas, float x1, float y1, float x2, float y2, spread_method_t spread, const gradient_stop_t *stops, int nstops, const matrix_t *matrix)
 Sets the current paint to a linear gradient.
 
NOVASVG_INLINE void novasvg::render::canvas_set_radial_gradient (canvas_t *canvas, float cx, float cy, float cr, float fx, float fy, float fr, spread_method_t spread, const gradient_stop_t *stops, int nstops, const matrix_t *matrix)
 Sets the current paint to a radial gradient.
 
NOVASVG_INLINE void novasvg::render::canvas_set_texture (canvas_t *canvas, surface_t *surface, texture_type_t type, float opacity, const matrix_t *matrix)
 Sets the current paint to a texture.
 
NOVASVG_INLINE void novasvg::render::canvas_set_paint (canvas_t *canvas, paint_t *paint)
 Sets the current paint.
 
NOVASVG_INLINE paint_t * novasvg::render::canvas_get_paint (const canvas_t *canvas, color_t *color)
 Retrieves the current paint.
 
NOVASVG_INLINE void novasvg::render::canvas_set_font_face_cache (canvas_t *canvas, font_face_cache_t *cache)
 Assigns a font-face cache to the canvas for font management.
 
NOVASVG_INLINE font_face_cache_t * novasvg::render::canvas_get_font_face_cache (const canvas_t *canvas)
 Returns the font-face cache associated with the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_add_font_face (canvas_t *canvas, const char *family, bool bold, bool italic, font_face_t *face)
 Add a font face to the canvas using the specified family and style.
 
NOVASVG_INLINE bool novasvg::render::canvas_add_font_file (canvas_t *canvas, const char *family, bool bold, bool italic, const char *filename, int ttcindex)
 Load a font face from a file and add it to the canvas using the specified family and style.
 
NOVASVG_INLINE bool novasvg::render::canvas_select_font_face (canvas_t *canvas, const char *family, bool bold, bool italic)
 Selects and sets the current font face on the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_set_font (canvas_t *canvas, font_face_t *face, float size)
 Sets the font face and size for text rendering on the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_set_font_face (canvas_t *canvas, font_face_t *face)
 Sets the font face for text rendering on the canvas.
 
NOVASVG_INLINE font_face_t * novasvg::render::canvas_get_font_face (const canvas_t *canvas)
 Retrieves the current font face used for text rendering on the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_set_font_size (canvas_t *canvas, float size)
 Sets the font size for text rendering on the canvas.
 
NOVASVG_INLINE float novasvg::render::canvas_get_font_size (const canvas_t *canvas)
 Retrieves the current font size used for text rendering on the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_set_fill_rule (canvas_t *canvas, fill_rule_t winding)
 Sets the fill rule.
 
NOVASVG_INLINE fill_rule_t novasvg::render::canvas_get_fill_rule (const canvas_t *canvas)
 Retrieves the current fill rule.
 
NOVASVG_INLINE void novasvg::render::canvas_set_operator (canvas_t *canvas, operator_t op)
 Sets the compositing operator.
 
NOVASVG_INLINE operator_t novasvg::render::canvas_get_operator (const canvas_t *canvas)
 Retrieves the current compositing operator.
 
NOVASVG_INLINE void novasvg::render::canvas_set_opacity (canvas_t *canvas, float opacity)
 Sets the global opacity.
 
NOVASVG_INLINE float novasvg::render::canvas_get_opacity (const canvas_t *canvas)
 Retrieves the current global opacity.
 
NOVASVG_INLINE void novasvg::render::canvas_set_line_width (canvas_t *canvas, float line_width)
 Sets the line width.
 
NOVASVG_INLINE float novasvg::render::canvas_get_line_width (const canvas_t *canvas)
 Retrieves the current line width.
 
NOVASVG_INLINE void novasvg::render::canvas_set_line_cap (canvas_t *canvas, line_cap_t line_cap)
 Sets the line cap style.
 
NOVASVG_INLINE line_cap_t novasvg::render::canvas_get_line_cap (const canvas_t *canvas)
 Retrieves the current line cap style.
 
NOVASVG_INLINE void novasvg::render::canvas_set_line_join (canvas_t *canvas, line_join_t line_join)
 Sets the line join style.
 
NOVASVG_INLINE line_join_t novasvg::render::canvas_get_line_join (const canvas_t *canvas)
 Retrieves the current line join style.
 
NOVASVG_INLINE void novasvg::render::canvas_set_miter_limit (canvas_t *canvas, float miter_limit)
 Sets the miter limit.
 
NOVASVG_INLINE float novasvg::render::canvas_get_miter_limit (const canvas_t *canvas)
 Retrieves the current miter limit.
 
NOVASVG_INLINE void novasvg::render::canvas_set_dash (canvas_t *canvas, float offset, const float *dashes, int ndashes)
 Sets the dash pattern.
 
NOVASVG_INLINE void novasvg::render::canvas_set_dash_offset (canvas_t *canvas, float offset)
 Sets the dash offset.
 
NOVASVG_INLINE float novasvg::render::canvas_get_dash_offset (const canvas_t *canvas)
 Retrieves the current dash offset.
 
NOVASVG_INLINE void novasvg::render::canvas_set_dash_array (canvas_t *canvas, const float *dashes, int ndashes)
 Sets the dash pattern.
 
NOVASVG_INLINE int novasvg::render::canvas_get_dash_array (const canvas_t *canvas, const float **dashes)
 Retrieves the current dash pattern.
 
NOVASVG_INLINE void novasvg::render::canvas_translate (canvas_t *canvas, float tx, float ty)
 Translates the current transformation matrix by offsets tx and ty.
 
NOVASVG_INLINE void novasvg::render::canvas_scale (canvas_t *canvas, float sx, float sy)
 Scales the current transformation matrix by factors sx and sy.
 
NOVASVG_INLINE void novasvg::render::canvas_shear (canvas_t *canvas, float shx, float shy)
 Shears the current transformation matrix by factors shx and shy.
 
NOVASVG_INLINE void novasvg::render::canvas_rotate (canvas_t *canvas, float angle)
 Rotates the current transformation matrix by the specified angle (in radians).
 
NOVASVG_INLINE void novasvg::render::canvas_transform (canvas_t *canvas, const matrix_t *matrix)
 Multiplies the current transformation matrix with the specified matrix.
 
NOVASVG_INLINE void novasvg::render::canvas_reset_matrix (canvas_t *canvas)
 Resets the current transformation matrix to the identity matrix.
 
NOVASVG_INLINE void novasvg::render::canvas_set_matrix (canvas_t *canvas, const matrix_t *matrix)
 Resets the current transformation matrix to the specified matrix.
 
NOVASVG_INLINE void novasvg::render::canvas_get_matrix (const canvas_t *canvas, matrix_t *matrix)
 Stores the current transformation matrix in matrix.
 
NOVASVG_INLINE void novasvg::render::canvas_map (const canvas_t *canvas, float x, float y, float *xx, float *yy)
 Transforms the point (x, y) using the current transformation matrix and stores the result in (xx, yy).
 
NOVASVG_INLINE void novasvg::render::canvas_map_point (const canvas_t *canvas, const point_t *src, point_t *dst)
 Transforms the src point using the current transformation matrix and stores the result in dst.
 
NOVASVG_INLINE void novasvg::render::canvas_map_rect (const canvas_t *canvas, const rect_t *src, rect_t *dst)
 Transforms the src rectangle using the current transformation matrix and stores the result in dst.
 
NOVASVG_INLINE void novasvg::render::canvas_move_to (canvas_t *canvas, float x, float y)
 Moves the current point to a new position.
 
NOVASVG_INLINE void novasvg::render::canvas_line_to (canvas_t *canvas, float x, float y)
 Adds a straight line segment to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_quad_to (canvas_t *canvas, float x1, float y1, float x2, float y2)
 Adds a quadratic Bézier curve to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_cubic_to (canvas_t *canvas, float x1, float y1, float x2, float y2, float x3, float y3)
 Adds a cubic Bézier curve to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_arc_to (canvas_t *canvas, float rx, float ry, float angle, bool large_arc_flag, bool sweep_flag, float x, float y)
 Adds an elliptical arc to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_rect (canvas_t *canvas, float x, float y, float w, float h)
 Adds a rectangle to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_round_rect (canvas_t *canvas, float x, float y, float w, float h, float rx, float ry)
 Adds a rounded rectangle to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_ellipse (canvas_t *canvas, float cx, float cy, float rx, float ry)
 Adds an ellipse to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_circle (canvas_t *canvas, float cx, float cy, float r)
 Adds a circle to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_arc (canvas_t *canvas, float cx, float cy, float r, float a0, float a1, bool ccw)
 Adds an arc to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_add_path (canvas_t *canvas, const path_t *path)
 Adds a path to the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_new_path (canvas_t *canvas)
 Starts a new path on the canvas.
 
NOVASVG_INLINE void novasvg::render::canvas_close_path (canvas_t *canvas)
 Closes the current path.
 
NOVASVG_INLINE void novasvg::render::canvas_get_current_point (const canvas_t *canvas, float *x, float *y)
 Retrieves the current point of the canvas.
 
NOVASVG_INLINE path_t * novasvg::render::canvas_get_path (const canvas_t *canvas)
 Gets the current path from the canvas.
 
NOVASVG_INLINE bool novasvg::render::canvas_fill_contains (canvas_t *canvas, float x, float y)
 Tests whether a point lies within the current fill region.
 
NOVASVG_INLINE bool novasvg::render::canvas_stroke_contains (canvas_t *canvas, float x, float y)
 Tests whether a point lies within the current stroke region.
 
NOVASVG_INLINE bool novasvg::render::canvas_clip_contains (canvas_t *canvas, float x, float y)
 Tests whether a point lies within the current clipping region.
 
NOVASVG_INLINE void novasvg::render::canvas_fill_extents (canvas_t *canvas, rect_t *extents)
 Computes the bounding box of the area that would be affected by a fill operation.
 
NOVASVG_INLINE void novasvg::render::canvas_stroke_extents (canvas_t *canvas, rect_t *extents)
 Computes the bounding box of the area that would be affected by a stroke operation.
 
NOVASVG_INLINE void novasvg::render::canvas_clip_extents (canvas_t *canvas, rect_t *extents)
 Gets the bounding box of the current clipping region.
 
NOVASVG_INLINE void novasvg::render::canvas_fill (canvas_t *canvas)
 A drawing operator that fills the current path according to the current fill rule.
 
NOVASVG_INLINE void novasvg::render::canvas_stroke (canvas_t *canvas)
 A drawing operator that strokes the current path according to the current stroke settings.
 
NOVASVG_INLINE void novasvg::render::canvas_clip (canvas_t *canvas)
 A drawing operator that intersects the current clipping region with the current path according to the current fill rule.
 
NOVASVG_INLINE void novasvg::render::canvas_paint (canvas_t *canvas)
 A drawing operator that paints the current clipping region using the current paint.
 
NOVASVG_INLINE void novasvg::render::canvas_fill_preserve (canvas_t *canvas)
 A drawing operator that fills the current path according to the current fill rule.
 
NOVASVG_INLINE void novasvg::render::canvas_stroke_preserve (canvas_t *canvas)
 A drawing operator that strokes the current path according to the current stroke settings.
 
NOVASVG_INLINE void novasvg::render::canvas_clip_preserve (canvas_t *canvas)
 A drawing operator that intersects the current clipping region with the current path according to the current fill rule.
 
NOVASVG_INLINE void novasvg::render::canvas_fill_rect (canvas_t *canvas, float x, float y, float w, float h)
 Fills a rectangle according to the current fill rule.
 
NOVASVG_INLINE void novasvg::render::canvas_fill_path (canvas_t *canvas, const path_t *path)
 Fills a path according to the current fill rule.
 
NOVASVG_INLINE void novasvg::render::canvas_stroke_rect (canvas_t *canvas, float x, float y, float w, float h)
 Strokes a rectangle with the current stroke settings.
 
NOVASVG_INLINE void novasvg::render::canvas_stroke_path (canvas_t *canvas, const path_t *path)
 Strokes a path with the current stroke settings.
 
NOVASVG_INLINE void novasvg::render::canvas_clip_rect (canvas_t *canvas, float x, float y, float w, float h)
 Intersects the current clipping region with a rectangle according to the current fill rule.
 
NOVASVG_INLINE void novasvg::render::canvas_clip_path (canvas_t *canvas, const path_t *path)
 Intersects the current clipping region with a path according to the current fill rule.
 
NOVASVG_INLINE float novasvg::render::canvas_add_glyph (canvas_t *canvas, codepoint_t codepoint, float x, float y)
 Adds a glyph to the current path at the specified origin.
 
NOVASVG_INLINE float novasvg::render::canvas_add_text (canvas_t *canvas, const void *text, int length, text_encoding_t encoding, float x, float y)
 Adds text to the current path at the specified origin.
 
NOVASVG_INLINE float novasvg::render::canvas_fill_text (canvas_t *canvas, const void *text, int length, text_encoding_t encoding, float x, float y)
 Fills a text at the specified origin.
 
NOVASVG_INLINE float novasvg::render::canvas_stroke_text (canvas_t *canvas, const void *text, int length, text_encoding_t encoding, float x, float y)
 Strokes a text at the specified origin.
 
NOVASVG_INLINE float novasvg::render::canvas_clip_text (canvas_t *canvas, const void *text, int length, text_encoding_t encoding, float x, float y)
 Intersects the current clipping region with text at the specified origin.
 
NOVASVG_INLINE void novasvg::render::canvas_font_metrics (const canvas_t *canvas, float *ascent, float *descent, float *line_gap, rect_t *extents)
 Retrieves font metrics for the current font.
 
NOVASVG_INLINE void novasvg::render::canvas_glyph_metrics (canvas_t *canvas, codepoint_t codepoint, float *advance_width, float *left_side_bearing, rect_t *extents)
 Retrieves metrics for a specific glyph.
 
NOVASVG_INLINE float novasvg::render::canvas_text_extents (canvas_t *canvas, const void *text, int length, text_encoding_t encoding, rect_t *extents)
 Retrieves the extents of a text.
 

Macro Definition Documentation

◆ NOVASVG_DEFAULT_STROKE_STYLE

#define NOVASVG_DEFAULT_STROKE_STYLE   (stroke_style_t{1.f, NOVASVG_LINE_CAP_BUTT, NOVASVG_LINE_JOIN_MITER, 10.f})

Definition at line 19 of file canvas.h.