Vector Graphics Object
Evas

Vector Graphics Object is the scene graph for managing vector graphics objects. More...

## Topics

| Vector Graphics Node Functions
| Vector Graphics Shape Functions

## Data Structures

struct | _Evas_Vg_Gradient_Stop
| Type defining gradient stops. More...
struct | _Evas_Vg_Dash
| Type describing dash. More...

## Typedefs

typedef enum Evas_Vg_Cap_Type | Evas_Vg_Cap
| These values determine how the end of opened sub-paths are rendered in a stroke.
typedef enum Evas_Vg_Join_Type | Evas_Vg_Join
| These values determine how two joining lines are rendered in a stroker.
typedef enum Evas_Vg_Path_Command_Type | Evas_Vg_Path_Command
| These values determine how the points are interpreted in a stream of points.
typedef struct _Evas_Vg_Gradient_Stop | Evas_Vg_Gradient_Stop
| Type defining gradient stops.
typedef enum Evas_Vg_Gradient_Spread_Type | Evas_Vg_Gradient_Spread
| Specifies how the area outside the gradient area should be filled.
typedef struct _Evas_Vg_Dash | Evas_Vg_Dash
| Type describing dash.

## Enumerations

enum | Evas_Object_Vg_Fill_Mode { EVAS_OBJECT_VG_FILL_MODE_NONE = 0 , EVAS_OBJECT_VG_FILL_MODE_STRETCH , EVAS_OBJECT_VG_FILL_MODE_MEET , EVAS_OBJECT_VG_FILL_MODE_SLICE }
| Enumeration that defines how viewbox will be filled int the vg canvs's viewport. More...
enum | Evas_Vg_Cap_Type { EVAS_VG_CAP_BUTT = 0 , EVAS_VG_CAP_ROUND , EVAS_VG_CAP_SQUARE , EVAS_VG_CAP_LAST }
| These values determine how the end of opened sub-paths are rendered in a stroke. More...
enum | Evas_Vg_Join_Type { EVAS_VG_JOIN_MITER = 0 , EVAS_VG_JOIN_ROUND , EVAS_VG_JOIN_BEVEL , EVAS_VG_JOIN_LAST }
| These values determine how two joining lines are rendered in a stroker. More...
enum | Evas_Vg_Path_Command_Type { EVAS_VG_PATH_COMMAND_END = 0 , EVAS_VG_PATH_COMMAND_MOVE_TO , EVAS_VG_PATH_COMMAND_LINE_TO , EVAS_VG_PATH_COMMAND_CUBIC_TO , EVAS_VG_PATH_COMMAND_CLOSE , EVAS_VG_PATH_COMMAND_LAST }
| These values determine how the points are interpreted in a stream of points. More...
enum | Evas_Vg_Gradient_Spread_Type { EVAS_VG_GRADIENT_SPREAD_PAD = 0 , EVAS_VG_GRADIENT_SPREAD_REFLECT , EVAS_VG_GRADIENT_SPREAD_REPEAT , EVAS_VG_GRADIENT_SPREAD_LAST }
| Specifies how the area outside the gradient area should be filled. More...

## Functions

EVAS_API void | evas_object_vg_fill_mode_set (Evas_Object *obj, Evas_Object_Vg_Fill_Mode fill_mode)
| Control how the viewbox is mapped to the vg canvas's viewport.
EVAS_API Evas_Object_Vg_Fill_Mode | evas_object_vg_fill_mode_get (const Evas_Object *obj)
| Control how the viewbox is mapped to the vg canvas's viewport.
EVAS_API void | evas_object_vg_viewbox_set (Evas_Object *obj, Eina_Rect viewbox)
| Sets the viewbox for the evas vg canvas.
EVAS_API Eina_Rect | evas_object_vg_viewbox_get (const Evas_Object *obj)
| Get the current viewbox from the evas_object_vg.
EVAS_API void | evas_object_vg_viewbox_align_set (Evas_Object *obj, double align_x, double align_y)
| Control how the viewbox is positioned inside the viewport.
EVAS_API void | evas_object_vg_viewbox_align_get (const Evas_Object *obj, double *align_x, double *align_y)
| Control how the viewbox is positioned inside the viewport.
EVAS_API void | evas_object_vg_root_node_set (Evas_Object *obj, Evas_Vg_Node *root)
| Set the root node of the evas_object_vg.
EVAS_API Evas_Vg_Node * | evas_object_vg_root_node_get (const Evas_Object *obj)
| Get the root node of the evas_object_vg.
EVAS_API Evas_Object * | evas_object_vg_add (Evas *e)
| Creates a new vector object on the given Evas `e` canvas.
EVAS_API int | evas_object_vg_animated_frame_count_get (const Evas_Object *obj)
| Get the total number of frames of the vector, if it's animated.
EVAS_API double | evas_object_vg_animated_frame_duration_get (const Evas_Object *obj, int start_frame, int frame_num)
| Get the duration of a sequence of frames.
EVAS_API Eina_Bool | evas_object_vg_file_set (Evas_Object *obj, const char *file, const char *key)
| Set the source file from where an vector object must fetch the real vector data (it may be one of json, svg, eet files).
EVAS_API Eina_Bool | evas_object_vg_animated_frame_set (Evas_Object *obj, int frame_index)
| Set current frame of animated vector object.
EVAS_API int | evas_object_vg_animated_frame_get (const Evas_Object *obj)
| Get the current frame number of animated vector object.
EVAS_API Evas_Vg_Shape * | evas_vg_shape_add (Evas_Vg_Container *parent)
| Creates a new vector shape object.
EVAS_API Evas_Vg_Container * | evas_vg_container_add (Evas_Object *parent)
| Creates a new vector container object.
EVAS_API Eina_Bool | evas_vg_node_visible_get (Evas_Vg_Node *obj)
| Retrieves whether or not the given Evas_Vg_Node object is visible.
EVAS_API void | evas_vg_node_visible_set (Evas_Vg_Node *obj, Eina_Bool v)
| Makes the given Evas_Vg_Node object visible or invisible.
EVAS_API void | evas_vg_node_color_get (Evas_Vg_Node *obj, int *r, int *g, int *b, int *a)
| Retrieves the general/main color of the given Evas_Vg_Node object.
EVAS_API void | evas_vg_node_color_set (Evas_Vg_Node *obj, int r, int g, int b, int a)
| Sets the general/main color of the given Evas_Vg_Node object to the given one.
EVAS_API void | evas_vg_node_geometry_get (Evas_Vg_Node *obj, int *x, int *y, int *w, int *h)
| Retrieves the geometry of the given Evas_Vg_Node object.
EVAS_API void | evas_vg_node_geometry_set (Evas_Vg_Node *obj, int x, int y, int w, int h) EINA_DEPRECATED
| Changes the geometry of the given Evas_Vg_Node object.
EVAS_API void | evas_vg_node_stack_below (Evas_Vg_Node *obj, Evas_Vg_Node *below)
| Stack `obj` immediately below `below`.
EVAS_API void | evas_vg_node_stack_above (Evas_Vg_Node *obj, Evas_Vg_Node *above)
| Stack `obj` immediately above `above`.
EVAS_API void | evas_vg_node_raise (Evas_Vg_Node *obj)
| Raise `obj` to the top of its layer.
EVAS_API void | evas_vg_node_lower (Evas_Vg_Node *obj)
| Lower `obj` to the bottom of its layer.
EVAS_API double | evas_vg_shape_stroke_scale_get (Evas_Vg_Shape *obj)
| Get the stroke scaling factor used for stroking this path.
EVAS_API void | evas_vg_shape_stroke_scale_set (Evas_Vg_Shape *obj, double s)
| Sets the stroke scale to be used for stroking the path.
EVAS_API void | evas_vg_shape_stroke_color_get (Evas_Vg_Shape *obj, int *r, int *g, int *b, int *a)
| Gets the color used for stroking the path.
EVAS_API void | evas_vg_shape_stroke_color_set (Evas_Vg_Shape *obj, int r, int g, int b, int a)
| Sets the color to be used for stroking the path.
EVAS_API double | evas_vg_shape_stroke_width_get (Evas_Vg_Shape *obj)
| Gets the stroke width to be used for stroking the path.
EVAS_API void | evas_vg_shape_stroke_width_set (Evas_Vg_Shape *obj, double w)
| Sets the stroke width to be used for stroking the path.
EVAS_API double | evas_vg_shape_stroke_location_get (Evas_Vg_Shape *obj)
| Gets the stroke location to be used for stroking the path.
EVAS_API void | evas_vg_shape_stroke_location_set (Evas_Vg_Shape *obj, double centered)
| Sets the stroke location to be used for stroking the path.
EVAS_API void | evas_vg_shape_stroke_dash_get (Evas_Vg_Shape *obj, const Evas_Vg_Dash **dash, unsigned int *length)
| Gets the stroke dash type used for stroking path.
EVAS_API void | evas_vg_shape_stroke_dash_set (Evas_Vg_Shape *obj, const Evas_Vg_Dash *dash, unsigned int length)
| Sets the stroke dash type to be used for stroking the path.
EVAS_API Evas_Vg_Cap | evas_vg_shape_stroke_cap_get (Evas_Vg_Shape *obj)
| Gets the cap style used for stroking path.
EVAS_API void | evas_vg_shape_stroke_cap_set (Evas_Vg_Shape *obj, Evas_Vg_Cap c)
| Sets the cap style to be used for stroking the path.
EVAS_API Evas_Vg_Join | evas_vg_shape_stroke_join_get (Evas_Vg_Shape *obj)
| Gets the join style used for stroking path.
EVAS_API void | evas_vg_shape_stroke_join_set (Evas_Vg_Shape *obj, Evas_Vg_Join j)
| Sets the join style to be used for stroking the path.
EVAS_API void | evas_vg_shape_path_set (Evas_Vg_Shape *obj, const Evas_Vg_Path_Command *op, const double *points)
| Set the list of commands and points to be used to create the content of shape.
EVAS_API void | evas_vg_shape_path_get (Evas_Vg_Shape *obj, const Evas_Vg_Path_Command **op, const double **points)
| Gets the command and points list.
EVAS_API void | evas_vg_shape_path_length_get (Evas_Vg_Shape *obj, unsigned int *commands, unsigned int *points)
| Gets the command and points length.
EVAS_API void | evas_vg_shape_current_get (Evas_Vg_Shape *obj, double *x, double *y)
| Gets the current points.
EVAS_API void | evas_vg_shape_current_ctrl_get (Evas_Vg_Shape *obj, double *x, double *y)
| Gets the current control points.
EVAS_API void | evas_vg_shape_dup (Evas_Vg_Shape *obj, Evas_Vg_Shape *dup_from)
| Copy the shape data from the object specified.
EVAS_API void | evas_vg_shape_reset (Evas_Vg_Shape *obj)
| Reset the shape data of the shape object.
EVAS_API void | evas_vg_shape_append_move_to (Evas_Vg_Shape *obj, double x, double y)
| Moves the current point to the given point, implicitly starting a new subpath and closing the previous one.
EVAS_API void | evas_vg_shape_append_line_to (Evas_Vg_Shape *obj, double x, double y)
| Adds a straight line from the current position to the given endPoint.
EVAS_API void | evas_vg_shape_append_quadratic_to (Evas_Vg_Shape *obj, double x, double y, double ctrl_x, double ctrl_y)
| Adds a quadratic Bezier curve between the current position and the given end point (x,y) using the control points specified by (ctrl_x, ctrl_y).
EVAS_API void | evas_vg_shape_append_squadratic_to (Evas_Vg_Shape *obj, double x, double y)
| Same as evas_vg_shape_append_quadratic_to() api only difference is that it uses the current control point to draw the bezier.
EVAS_API void | evas_vg_shape_append_cubic_to (Evas_Vg_Shape *obj, double x, double y, double ctrl_x0, double ctrl_y0, double ctrl_x1, double ctrl_y1)
| Adds a cubic Bezier curve between the current position and the given end point (x,y) using the control points specified by (ctrl_x0, ctrl_y0), and (ctrl_x1, ctrl_y1).
EVAS_API void | evas_vg_shape_append_scubic_to (Evas_Vg_Shape *obj, double x, double y, double ctrl_x, double ctrl_y)
| Same as evas_vg_shape_append_cubic_to() api only difference is that it uses the current control point to draw the bezier.
EVAS_API void | evas_vg_shape_append_arc_to (Evas_Vg_Shape *obj, double x, double y, double rx, double ry, double angle, Eina_Bool large_arc, Eina_Bool sweep)
| Append an arc that connects from the current point int the point list to the given point (x,y).
EVAS_API void | evas_vg_shape_append_arc (Evas_Vg_Shape *obj, double x, double y, double w, double h, double start_angle, double sweep_length)
| Append an arc that enclosed in the given rectangle (x, y, w, h).
EVAS_API void | evas_vg_shape_append_close (Evas_Vg_Shape *obj)
| Closes the current subpath by drawing a line to the beginning of the subpath, automatically starting a new path.
EVAS_API void | evas_vg_shape_append_circle (Evas_Vg_Shape *obj, double x, double y, double radius)
| Append a circle with given center and radius.
EVAS_API void | evas_vg_shape_append_rect (Evas_Vg_Shape *obj, double x, double y, double w, double h, double rx, double ry)
| Append the given rectangle with rounded corner to the path.
EVAS_API void | evas_vg_shape_append_svg_path (Evas_Vg_Shape *obj, const char *svg_path_data)
| Append the SVG path data.
EVAS_API Eina_Bool | evas_vg_shape_interpolate (Evas_Vg_Shape *obj, const Eo *from, const Eo *to, double pos_map)
| Creates intermediary path part-way between two paths.
EVAS_API Eina_Bool | evas_vg_shape_equal_commands (Evas_Vg_Shape *obj, const Eo *with)
| Check if the given objects have equal commands.
EVAS_API void | evas_vg_shape_fill_set (Evas_Vg_Shape *obj, Evas_Vg_Node *f)
| Set a vg object as the fill property.
EVAS_API Evas_Vg_Node * | evas_vg_shape_fill_get (const Evas_Vg_Shape *obj)
| Returns the object that is set for the fill property.
EVAS_API void | evas_vg_shape_stroke_fill_set (Evas_Vg_Shape *obj, Evas_Vg_Node *f)
| Set a vg object as the stroke fill property.
EVAS_API Evas_Vg_Node * | evas_vg_shape_stroke_fill_get (const Evas_Vg_Shape *obj)
| Returns the object that is set for the stroke fill property.
EVAS_API void | evas_vg_gradient_stop_set (Evas_Vg_Gradient *obj, const Evas_Vg_Gradient_Stop *colors, unsigned int length)
| Set the list of color stops for the gradient.
EVAS_API void | evas_vg_gradient_stop_get (Evas_Vg_Gradient *obj, const Evas_Vg_Gradient_Stop **colors, unsigned int *length)
| Get the list of color stops.
EVAS_API void | evas_vg_gradient_spread_set (Evas_Vg_Gradient *obj, Evas_Vg_Gradient_Spread s)
| Specifies the spread method that should be used for this gradient.
EVAS_API Evas_Vg_Gradient_Spread | evas_vg_gradient_spread_get (Evas_Vg_Gradient *obj)
| Returns the spread method use by this gradient.
EVAS_API Evas_Vg_Gradient_Linear * | evas_vg_gradient_linear_add (Evas_Vg_Container *parent)
| Creates a new linear gradient object.
EVAS_API void | evas_vg_gradient_linear_start_set (Evas_Vg_Gradient_Linear *obj, double x, double y)
| Sets the start point of this linear gradient.
EVAS_API void | evas_vg_gradient_linear_start_get (Evas_Vg_Gradient_Linear *obj, double *x, double *y)
| Gets the start point of this linear gradient.
EVAS_API void | evas_vg_gradient_linear_end_set (Evas_Vg_Gradient_Linear *obj, double x, double y)
| Sets the end point of this linear gradient.
EVAS_API void | evas_vg_gradient_linear_end_get (Evas_Vg_Gradient_Linear *obj, double *x, double *y)
| Gets the end point of this linear gradient.
EVAS_API Evas_Vg_Gradient_Radial * | evas_vg_gradient_radial_add (Evas_Vg_Container *parent)
| Creates a new radial gradient object.
EVAS_API void | evas_vg_gradient_radial_center_set (Evas_Vg_Gradient_Radial *obj, double x, double y)
| Sets the center of this radial gradient.
EVAS_API void | evas_vg_gradient_radial_center_get (Evas_Vg_Gradient_Radial *obj, double *x, double *y)
| Gets the center of this radial gradient.
EVAS_API void | evas_vg_gradient_radial_radius_set (Evas_Vg_Gradient_Radial *obj, double r)
| Sets the center radius of this radial gradient.
EVAS_API double | evas_vg_gradient_radial_radius_get (Evas_Vg_Gradient_Radial *obj)
| Gets the center radius of this radial gradient.
EVAS_API void | evas_vg_gradient_radial_focal_set (Evas_Vg_Gradient_Radial *obj, double x, double y)
| Sets the focal point of this radial gradient.
EVAS_API void | evas_vg_gradient_radial_focal_get (Evas_Vg_Gradient_Radial *obj, double *x, double *y)
| Gets the focal point of this radial gradient.

## Detailed Description

Vector Graphics Object is the scene graph for managing vector graphics objects.

User can create shape objects as well as fill objects and give them to the Evas_Object_Vg for drawing on the screen as well as managing the lifecycle of the objects, enabling reuse of shape objects.

Since Evas_Object_Vg is an Evas_Object all operations applicable to an Evas_Object can be performed on it (clipping, mapping, etc).

To create complex vector graphics you can create a hierarchy of shape and fill objects and give the hierarchy to Evas_Object which will be responsible for drawing and showing on the screen.

As the shape object and fill object (linear and radial gradients) have retain mode API, you only have to create it once and set the properties and give it to Evas_Object_Vg.

Any change in the properties of a shape or fill object are automatically notified to Evas_Object_Vg triggering a redraw to reflect the changes.

To create a vector path, you can give a list of path commands to the shape object using efl_gfx_shape_path_set() API.

Below are the list of features currently supported by Vector object.

- Drawing SVG Path. You can construct a path by using api in efl_gfx_utils.h

- Gradient filling and stroking. You can fill or stroke the path using linear or radial gradient.
  See also
    Evas_Vg_Gradient_Linear and Evas_Vg_Gradient_Radial
- Transformation support for path and gradient fill. You can apply affine transforms to path objects.
  See also
    Eina_Matrix.
  Note
    Below are the list of interfaces and classes that can be used to draw vector graphics using vector objects.
- Efl.Gfx.Shape
- Evas.VG_Shape
- Evas.VG_Node
- Efl.Gfx.Gradient
- Efl.Gfx.Gradient_Radial
- Efl.Gfx.Gradient_Linear

Example:

vector = evas_object_vg_add(canvas);
root = evas_obj_vg_root_node_get(vector);
shape = efl_add(EVAS_VG_SHAPE_CLASS, root);
Efl_Gfx_Path_Command *path_cmd = NULL;
double *points = NULL;
efl_gfx_path_append_circle(&path_cmd, &points);
* evas_vg_node_origin_set(shape, 10, 10);
* efl_gfx_shape_stroke_width_set(shape, 1.0);
* evas_vg_node_color_set(shape, 128, 128, 128, 80);
* efl_gfx_shape_path_set(shape, path_cmd, points);
evas_object_vg_add
EVAS_API Eo * evas_object_vg_add(Evas *e)
Creates a new vector object on the given Evas e canvas.
Definition efl_canvas_vg_object.c:1087
evas_vg_node_color_set
EVAS_API void evas_vg_node_color_set(Evas_Vg_Node *obj, int r, int g, int b, int a)
Sets the general/main color of the given Evas_Vg_Node object to the given one.
Definition efl_canvas_vg_node.c:731
evas_vg_node_origin_set
EVAS_API void evas_vg_node_origin_set(Evas_Vg_Node *obj, double x, double y)
Sets the origin position of the node object.
Definition efl_canvas_vg_node_eo.legacy.c:15

Since
  1.14

## Typedef Documentation

## Evas_Vg_Cap

typedef enum Evas_Vg_Cap_Type Evas_Vg_Cap

These values determine how the end of opened sub-paths are rendered in a stroke.

evas_vg_shape_stroke_cap_set

Since
  1.24

## Evas_Vg_Join

typedef enum Evas_Vg_Join_Type Evas_Vg_Join

These values determine how two joining lines are rendered in a stroker.

evas_vg_shape_stroke_join_set

Since
  1.24

## Evas_Vg_Path_Command

typedef enum Evas_Vg_Path_Command_Type Evas_Vg_Path_Command

These values determine how the points are interpreted in a stream of points.

Since
  1.24

## Evas_Vg_Gradient_Stop

typedef struct _Evas_Vg_Gradient_Stop Evas_Vg_Gradient_Stop

Type defining gradient stops.

Describes the location and color of a transition point in a gradient.

Since
  1.24

## Evas_Vg_Gradient_Spread

typedef enum Evas_Vg_Gradient_Spread_Type Evas_Vg_Gradient_Spread

Specifies how the area outside the gradient area should be filled.

evas_vg_gradient_spread_set

Since
  1.24

## Evas_Vg_Dash

typedef struct _Evas_Vg_Dash Evas_Vg_Dash

Type describing dash.

evas_vg_shape_stroke_dash_set

Since
  1.24

## Enumeration Type Documentation

## Evas_Object_Vg_Fill_Mode

enum Evas_Object_Vg_Fill_Mode

Enumeration that defines how viewbox will be filled int the vg canvs's viewport.

default Fill_Mode is `none`

Since
  1.24

Enumerator
EVAS_OBJECT_VG_FILL_MODE_NONE | Don't scale the viewbox. Placed it inside viewport taking align property into account
EVAS_OBJECT_VG_FILL_MODE_STRETCH | Scale the viewbox so that it matches the canvas viewport. Aaspect ratio might be changed.
EVAS_OBJECT_VG_FILL_MODE_MEET | Scale the viewbox so that it fits inside canvas viewport while maintaining the aspect ratio. At least one of the dimensions of the viewbox should be equal to the corresponding dimension of the viewport.
EVAS_OBJECT_VG_FILL_MODE_SLICE | Scale the viewbox so that it covers the entire canvas viewport while maintaining the aspect ratio. At least one of the dimensions of the viewbox should be equal to the corresponding dimension of the viewport.

## Evas_Vg_Cap_Type

enum Evas_Vg_Cap_Type

These values determine how the end of opened sub-paths are rendered in a stroke.

evas_vg_shape_stroke_cap_set

Since
  1.24

Enumerator
EVAS_VG_CAP_BUTT | The end of lines is rendered as a full stop on the last point itself.
EVAS_VG_CAP_ROUND | The end of lines is rendered as a half-circle around.
EVAS_VG_CAP_SQUARE | The end of lines is rendered as a square around the last point.
EVAS_VG_CAP_LAST | Sentinel value to indicate last enum field during iteration.

## Evas_Vg_Join_Type

enum Evas_Vg_Join_Type

These values determine how two joining lines are rendered in a stroker.

evas_vg_shape_stroke_join_set

Since
  1.24

Enumerator
EVAS_VG_JOIN_MITER | Used to render mitered line joins. The intersection of the strokes is clipped at a line perpendicular to the bisector of the angle between the strokes, at the distance from the intersection of the segments equal to the product of the miter limit value and the border radius. This prevents long spikes being created
EVAS_VG_JOIN_ROUND | Used to render rounded line joins. Circular arcs are used to join two lines smoothly
EVAS_VG_JOIN_BEVEL | Used to render beveled line joins. The outer corner of the joined lines is filled by enclosing the triangular region of the corner with a straight line between the outer corners of each stroke
EVAS_VG_JOIN_LAST | Sentinel value to indicate last enum field during iteration.

## Evas_Vg_Path_Command_Type

enum Evas_Vg_Path_Command_Type

These values determine how the points are interpreted in a stream of points.

Since
  1.24

Enumerator
EVAS_VG_PATH_COMMAND_END | The end of stream , no more points to process.
EVAS_VG_PATH_COMMAND_MOVE_TO | The next point is the start point of a sub path.
EVAS_VG_PATH_COMMAND_LINE_TO | The next point is used to draw a line from current point.
EVAS_VG_PATH_COMMAND_CUBIC_TO | The next three point is used to draw a cubic bezier curve from current point.
EVAS_VG_PATH_COMMAND_CLOSE | Close the current subpath by drawing a line between current point and the first point of current subpath.
EVAS_VG_PATH_COMMAND_LAST | Sentinel value to indicate last enum field during iteration.

## Evas_Vg_Gradient_Spread_Type

enum Evas_Vg_Gradient_Spread_Type

Specifies how the area outside the gradient area should be filled.

evas_vg_gradient_spread_set

Since
  1.24

Enumerator
EVAS_VG_GRADIENT_SPREAD_PAD | The area is filled with the closest stop color. This is the default
EVAS_VG_GRADIENT_SPREAD_REFLECT | The gradient is reflected outside the gradient area.
EVAS_VG_GRADIENT_SPREAD_REPEAT | The gradient is repeated outside the gradient area.
EVAS_VG_GRADIENT_SPREAD_LAST | Sentinel value to indicate last enum field during iteration.

## Function Documentation

## evas_object_vg_fill_mode_set()

EVAS_API void evas_object_vg_fill_mode_set | ( | Evas_Object * | obj,
|  | Evas_Object_Vg_Fill_Mode | fill_mode )

Control how the viewbox is mapped to the vg canvas's viewport.

Parameters

  [in] | obj | The object.
  [in] | fill_mode | Fill mode type

Since
  1.24

## evas_object_vg_fill_mode_get()

EVAS_API Evas_Object_Vg_Fill_Mode evas_object_vg_fill_mode_get | ( | const Evas_Object * | obj | ) |

Control how the viewbox is mapped to the vg canvas's viewport.

Parameters

  [in] | obj | The object.

Returns
  Fill mode type

Since
  1.24

## evas_object_vg_viewbox_set()

EVAS_API void evas_object_vg_viewbox_set | ( | Evas_Object * | obj,
|  | Eina_Rect | viewbox )

Sets the viewbox for the evas vg canvas.

viewbox if set should be mapped to the canvas geometry when rendering the vg tree.

Parameters

  [in] | obj | The object.
  [in] | viewbox | viewbox for the vg canvas

Since
  1.24

## evas_object_vg_viewbox_get()

EVAS_API Eina_Rect evas_object_vg_viewbox_get | ( | const Evas_Object * | obj | ) |

Get the current viewbox from the evas_object_vg.

Parameters

  [in] | obj | The object.

Returns
  viewbox for the vg canvas

Since
  1.24

## evas_object_vg_viewbox_align_set()

EVAS_API void evas_object_vg_viewbox_align_set | ( | Evas_Object * | obj,
|  | double | align_x,
|  | double | align_y )

Control how the viewbox is positioned inside the viewport.

Parameters

  [in] | obj | The object.
  [in] | align_x | Alignment in the horizontal axis (0 <= align_x <= 1).
  [in] | align_y | Alignment in the vertical axis (0 <= align_y <= 1).

Since
  1.24

## evas_object_vg_viewbox_align_get()

EVAS_API void evas_object_vg_viewbox_align_get | ( | const Evas_Object * | obj,
|  | double * | align_x,
|  | double * | align_y )

Control how the viewbox is positioned inside the viewport.

Parameters

  [in] | obj | The object.
  [out] | align_x | Alignment in the horizontal axis (0 <= align_x <= 1).
  [out] | align_y | Alignment in the vertical axis (0 <= align_y <= 1).

Since
  1.24

## evas_object_vg_root_node_set()

EVAS_API void evas_object_vg_root_node_set | ( | Evas_Object * | obj,
|  | Evas_Vg_Node * | root )

Set the root node of the evas_object_vg.

Note
  To manually create the shape object and show in the Vg object canvas you must create the hierarchy and set as root node.

It takes the ownership of the root node.

Parameters

  [in] | obj | The object.
  [in] | root | Root node(Evas_Vg_Container) of the VG canvas.

Since
  1.24

## evas_object_vg_root_node_get()

EVAS_API Evas_Vg_Node * evas_object_vg_root_node_get | ( | const Evas_Object * | obj | ) |

Get the root node of the evas_object_vg.

Parameters

  [in] | obj | The object.

Returns
  Root node of the VG canvas.

Since
  1.14

## evas_object_vg_add()

EVAS_API Evas_Object * evas_object_vg_add | ( | Evas * | e | ) |

Creates a new vector object on the given Evas `e` canvas.

The shape object hierarchy can be added to the evas_object_vg by accessing the root node of the vg canvas and adding the hierarchy as child to the root node.

Parameters

  [in] | e | The given canvas.

Returns
  The created vector object handle.

See also
  evas_obj_vg_root_node_get()

Since
  1.14

References EINA_SAFETY_ON_FALSE_RETURN_VAL, and EVAS_CANVAS_CLASS.

## evas_object_vg_animated_frame_count_get()

EVAS_API int evas_object_vg_animated_frame_count_get | ( | const Evas_Object * | obj | ) |

Get the total number of frames of the vector, if it's animated.

Returns
  The number of frames. 0, if it's not animated.

Since
  1.23

## evas_object_vg_animated_frame_duration_get()

EVAS_API double evas_object_vg_animated_frame_duration_get | ( | const Evas_Object * | obj,
|  | int | start_frame,
|  | int | frame_num )

Get the duration of a sequence of frames.

This returns total duration in seconds that the specified sequence of frames should take.

If `start_frame` is 1 and `frame_num` is 0, this returns the duration of frame 1. If `start_frame` is 1 and `frame_num` is 1, this returns the total duration of frame 1 + frame 2.

Parameters

  [in] | start_frame | The first frame, ranges from 1 to maximum frame count.
  [in] | frame_num | Number of frames in the sequence, starts from 0.

Returns
  Duration in seconds.

See also
  evas_object_vg_animated_frame_count_get()

Since
  1.23

## evas_object_vg_file_set()

EVAS_API Eina_Bool evas_object_vg_file_set | ( | Evas_Object * | obj,
|  | const char * | file,
|  | const char * | key )

Set the source file from where an vector object must fetch the real vector data (it may be one of json, svg, eet files).

If the file supports multiple data stored in it (as Eet files do), you can specify the key to be used as the index of the vector in this file.

Parameters

  [in] | file | The vector file path.
  [in] | key | The vector key in `file` (if its an Eet one), or `NULL`, otherwise.

Returns
  `EINA_TRUE` if it's succeed to read file, `EINA_FALSE` otherwise.

Since
  1.23

## evas_object_vg_animated_frame_set()

EVAS_API Eina_Bool evas_object_vg_animated_frame_set | ( | Evas_Object * | obj,
|  | int | frame_index )

Set current frame of animated vector object.

Parameters

  [in] | frame_index | The index of current frame.

Note
  the `frame_index` must be in range of animation frames. (0 ~ max frame count)

Returns
  `EINA_TRUE`, if the frame index is valid. `EINA_FALSE`, otherwise.

See also
  evas_object_vg_animated_frame_count_get()

Since
  1.23

## evas_object_vg_animated_frame_get()

EVAS_API int evas_object_vg_animated_frame_get | ( | const Evas_Object * | obj | ) |

Get the current frame number of animated vector object.

Returns
  The frame index.

See also
  evas_object_vg_animated_frame_set()
  evas_object_vg_animated_frame_count_get()

Since
  1.23

## evas_vg_shape_add()

EVAS_API Evas_Vg_Shape * evas_vg_shape_add | ( | Evas_Vg_Container * | parent | ) |

Creates a new vector shape object.

Parameters

  [in] | parent | The given vector container object.

Returns
  The created vector shape object handle.

Since
  1.14

References ERR.

## evas_vg_container_add()

EVAS_API Evas_Vg_Container * evas_vg_container_add | ( | Evas_Object * | parent | ) |

Creates a new vector container object.

Parameters

  [in] | parent | The given vector container object.

Returns
  The created vector container object handle.

Since
  1.14

References ERR.

## evas_vg_node_visible_get()

EVAS_API Eina_Bool evas_vg_node_visible_get | ( | Evas_Vg_Node * | obj | ) |

Retrieves whether or not the given Evas_Vg_Node object is visible.

Parameters

  [in] | obj | The object.

Returns
  `EINA_TRUE` if the object is visible, `EINA_FALSE` otherwise.

Since
  1.24

## evas_vg_node_visible_set()

EVAS_API void evas_vg_node_visible_set | ( | Evas_Vg_Node * | obj,
|  | Eina_Bool | v )

Makes the given Evas_Vg_Node object visible or invisible.

Parameters

  [in] | obj | The object.
  [in] | v | `EINA_TRUE` if to make the object visible, `EINA_FALSE` otherwise.

Since
  1.24

## evas_vg_node_color_get()

EVAS_API void evas_vg_node_color_get | ( | Evas_Vg_Node * | obj,
|  | int * | r,
|  | int * | g,
|  | int * | b,
|  | int * | a )

Retrieves the general/main color of the given Evas_Vg_Node object.

Retrieves the “main” color's RGB component (and alpha channel) values, which range from 0 to 255. For the alpha channel, which defines the object's transparency level, 0 means totally transparent, while 255 means opaque. These color values are premultiplied by the alpha value.

Note
  Use `NULL` pointers on the components you're not interested in: they'll be ignored by the function.

Parameters

  [in] | obj | The object.
  [out] | r | The red component of the given color.
  [out] | g | The green component of the given color.
  [out] | b | The blue component of the given color.
  [out] | a | The alpha component of the given color.

Since
  1.24

## evas_vg_node_color_set()

EVAS_API void evas_vg_node_color_set | ( | Evas_Vg_Node * | obj,
|  | int | r,
|  | int | g,
|  | int | b,
|  | int | a )

Sets the general/main color of the given Evas_Vg_Node object to the given one.

See also
  evas_vg_node_color_get() (for an example)

Note
  These color values are expected to be premultiplied by `a`.

Parameters

  [in] | obj | The object.
  [in] | r | The red component of the given color.
  [in] | g | The green component of the given color.
  [in] | b | The blue component of the given color.
  [in] | a | The alpha component of the given color.

Since
  1.24

## evas_vg_node_geometry_get()

EVAS_API void evas_vg_node_geometry_get | ( | Evas_Vg_Node * | obj,
|  | int * | x,
|  | int * | y,
|  | int * | w,
|  | int * | h )

Retrieves the geometry of the given Evas_Vg_Node object.

Parameters

  [in] | obj | The object.
  [out] | x | The x geometry of the given object.
  [out] | y | The y geometry of the given object.
  [out] | w | The w geometry of the given object.
  [out] | h | The h geometry of the given object.

Since
  1.24

## evas_vg_node_geometry_set()

EVAS_API void evas_vg_node_geometry_set | ( | Evas_Vg_Node * | obj,
|  | int | x,
|  | int | y,
|  | int | w,
|  | int | h )

Changes the geometry of the given Evas_Vg_Node object.

Parameters

  [in] | obj | The object.
  [in] | x | The x geometry of the given object.
  [in] | y | The y geometry of the given object.
  [in] | w | The w geometry of the given object.
  [in] | h | The h geometry of the given object.

Since
  1.24

Deprecated

References EINA_POSITION2D, and EINA_SIZE2D.

## evas_vg_node_stack_below()

EVAS_API void evas_vg_node_stack_below | ( | Evas_Vg_Node * | obj,
|  | Evas_Vg_Node * | below )

Stack `obj` immediately below `below`.

Objects, in a given canvas, are stacked in the order they get added to it. This means that, if they overlap, the highest ones will cover the lowest ones, in that order. This function is a way to change the stacking order for the objects.

This function is intended to be used with objects belonging to the same layer in a given canvas, otherwise it will fail (and accomplish nothing).

If you have smart objects on your canvas and `obj` is a member of one of them, then `below` must also be a member of the same smart object.

Similarly, if `obj` is not a member of a smart object, `below` must not be either.

See also
  evas_object_layer_get()
  evas_object_layer_set()
  evas_object_stack_below()

Parameters

  [in] | obj | The object.
  [in] | below | The object below which to stack．

Since
  1.24

## evas_vg_node_stack_above()

EVAS_API void evas_vg_node_stack_above | ( | Evas_Vg_Node * | obj,
|  | Evas_Vg_Node * | above )

Stack `obj` immediately above `above`.

Objects, in a given canvas, are stacked in the order they get added to it. This means that, if they overlap, the highest ones will cover the lowest ones, in that order. This function is a way to change the stacking order for the objects.

This function is intended to be used with objects belonging to the same layer in a given canvas, otherwise it will fail (and accomplish nothing).

If you have smart objects on your canvas and `obj` is a member of one of them, then `above` must also be a member of the same smart object.

Similarly, if `obj` is not a member of a smart object, `above` must not be either.

See also
  evas_object_layer_get()
  evas_object_layer_set()
  evas_object_stack_below()

Parameters

  [in] | obj | The object.
  [in] | above | The object above which to stack.

Since
  1.24

## evas_vg_node_raise()

EVAS_API void evas_vg_node_raise | ( | Evas_Vg_Node * | obj | ) |

Raise `obj` to the top of its layer.

`obj` will, then, be the highest one in the layer it belongs to. Object on other layers won't get touched.

See also
  evas_object_stack_above()
  evas_object_stack_below()
  evas_object_lower()

Parameters

  [in] | obj | The object.

Since
  1.24

## evas_vg_node_lower()

EVAS_API void evas_vg_node_lower | ( | Evas_Vg_Node * | obj | ) |

Lower `obj` to the bottom of its layer.

`obj` will, then, be the lowest one in the layer it belongs to. Objects on other layers won't get touched.

See also
  evas_object_stack_above()
  evas_object_stack_below()
  evas_object_raise()

Parameters

  [in] | obj | The object.

Since
  1.24

## evas_vg_shape_stroke_scale_get()

EVAS_API double evas_vg_shape_stroke_scale_get | ( | Evas_Vg_Shape * | obj | ) |

Get the stroke scaling factor used for stroking this path.

Parameters

  [in] | obj | The object.

Returns
  The stroke scale of the given object.

Since
  1.14

## evas_vg_shape_stroke_scale_set()

EVAS_API void evas_vg_shape_stroke_scale_set | ( | Evas_Vg_Shape * | obj,
|  | double | s )

Sets the stroke scale to be used for stroking the path.

the scale property will be used along with stroke width property.

Parameters

  [in] | obj | The object.
  [in] | s | The stroke scale value.

Since
  1.14

## evas_vg_shape_stroke_color_get()

EVAS_API void evas_vg_shape_stroke_color_get | ( | Evas_Vg_Shape * | obj,
|  | int * | r,
|  | int * | g,
|  | int * | b,
|  | int * | a )

Gets the color used for stroking the path.

Parameters

  [in] | obj | The object.
  [out] | r | The red component of the given color.
  [out] | g | The green component of the given color.
  [out] | b | The blue component of the given color.
  [out] | a | The alpha component of the given color.

Since
  1.14

## evas_vg_shape_stroke_color_set()

EVAS_API void evas_vg_shape_stroke_color_set | ( | Evas_Vg_Shape * | obj,
|  | int | r,
|  | int | g,
|  | int | b,
|  | int | a )

Sets the color to be used for stroking the path.

Parameters

  [in] | obj | The object.
  [in] | r | The red component of the given color.
  [in] | g | The green component of the given color.
  [in] | b | The blue component of the given color.
  [in] | a | The alpha component of the given color.

Since
  1.14

## evas_vg_shape_stroke_width_get()

EVAS_API double evas_vg_shape_stroke_width_get | ( | Evas_Vg_Shape * | obj | ) |

Gets the stroke width to be used for stroking the path.

Parameters

  [in] | obj | The object.

Returns
  The stroke width of the given object.

Since
  1.14

## evas_vg_shape_stroke_width_set()

EVAS_API void evas_vg_shape_stroke_width_set | ( | Evas_Vg_Shape * | obj,
|  | double | w )

Sets the stroke width to be used for stroking the path.

Parameters

  [in] | obj | The object.
  [in] | w | The stroke width to be used.

Since
  1.14

## evas_vg_shape_stroke_location_get()

EVAS_API double evas_vg_shape_stroke_location_get | ( | Evas_Vg_Shape * | obj | ) |

Gets the stroke location to be used for stroking the path.

Parameters

  [in] | obj | The object.

Returns
  The stroke location.

Since
  1.24

## evas_vg_shape_stroke_location_set()

EVAS_API void evas_vg_shape_stroke_location_set | ( | Evas_Vg_Shape * | obj,
|  | double | centered )

Sets the stroke location to be used for stroking the path.

Parameters

  [in] | obj | The object.
  [in] | centered | The stroke location.

Since
  1.24

## evas_vg_shape_stroke_dash_get()

EVAS_API void evas_vg_shape_stroke_dash_get | ( | Evas_Vg_Shape * | obj,
|  | const Evas_Vg_Dash ** | dash,
|  | unsigned int * | length )

Gets the stroke dash type used for stroking path.

Parameters

  [in] | obj | The object.
  [out] | dash | The dash types.
  [out] | length | The length of dash types.

Since
  1.24

## evas_vg_shape_stroke_dash_set()

EVAS_API void evas_vg_shape_stroke_dash_set | ( | Evas_Vg_Shape * | obj,
|  | const Evas_Vg_Dash * | dash,
|  | unsigned int | length )

Sets the stroke dash type to be used for stroking the path.

Parameters

  [in] | obj | The object.
  [in] | dash | The dash types.
  [in] | length | The length of dash types.

Since
  1.24

## evas_vg_shape_stroke_cap_get()

EVAS_API Evas_Vg_Cap evas_vg_shape_stroke_cap_get | ( | Evas_Vg_Shape * | obj | ) |

Gets the cap style used for stroking path.

Parameters

  [in] | obj | The object.

Returns
  The cap style of the given object.

Since
  1.14

## evas_vg_shape_stroke_cap_set()

EVAS_API void evas_vg_shape_stroke_cap_set | ( | Evas_Vg_Shape * | obj,
|  | Evas_Vg_Cap | c )

Sets the cap style to be used for stroking the path.

The cap will be used for capping the end point of a open subpath.

See also
  Evas_Vg_Cap

Parameters

  [in] | obj | The object.
  [in] | c | The cap style to use , default is EVAS_VG_CAP_BUTT

Since
  1.14

## evas_vg_shape_stroke_join_get()

EVAS_API Evas_Vg_Join evas_vg_shape_stroke_join_get | ( | Evas_Vg_Shape * | obj | ) |

Gets the join style used for stroking path.

Parameters

  [in] | obj | The object.

Returns
  The join style of the given object.

Since
  1.14

## evas_vg_shape_stroke_join_set()

EVAS_API void evas_vg_shape_stroke_join_set | ( | Evas_Vg_Shape * | obj,
|  | Evas_Vg_Join | j )

Sets the join style to be used for stroking the path.

The join style will be used for joining the two line segment while stroking the path.

See also
  Evas_Vg_Join

Parameters

  [in] | obj | The object.
  [in] | j | The join style to use, default is EVAS_VG_JOIN_MITER.

Since
  1.14

## evas_vg_shape_path_set()

EVAS_API void evas_vg_shape_path_set | ( | Evas_Vg_Shape * | obj,
|  | const Evas_Vg_Path_Command * | op,
|  | const double * | points )

Set the list of commands and points to be used to create the content of shape.

See also
  Evas_Vg_Path_Command

Parameters

  [in] | obj | The object.
  [in] | op | The command list.
  [in] | points | The point list.

Since
  1.14

## evas_vg_shape_path_get()

EVAS_API void evas_vg_shape_path_get | ( | Evas_Vg_Shape * | obj,
|  | const Evas_Vg_Path_Command ** | op,
|  | const double ** | points )

Gets the command and points list.

Parameters

  [in] | obj | The object.
  [out] | op | The command list.
  [out] | points | The point list.

Since
  1.14

## evas_vg_shape_path_length_get()

EVAS_API void evas_vg_shape_path_length_get | ( | Evas_Vg_Shape * | obj,
|  | unsigned int * | commands,
|  | unsigned int * | points )

Gets the command and points length.

Parameters

  [in] | obj | The object.
  [out] | commands | The command length.
  [out] | points | The points length.

Since
  1.14

## evas_vg_shape_current_get()

EVAS_API void evas_vg_shape_current_get | ( | Evas_Vg_Shape * | obj,
|  | double * | x,
|  | double * | y )

Gets the current points.

Parameters

  [in] | obj | The object.
  [out] | x | The x co-ordinate of current point.
  [out] | y | The y co-ordinate of current point.

Since
  1.14

## evas_vg_shape_current_ctrl_get()

EVAS_API void evas_vg_shape_current_ctrl_get | ( | Evas_Vg_Shape * | obj,
|  | double * | x,
|  | double * | y )

Gets the current control points.

Parameters

  [in] | obj | The object.
  [out] | x | The x co-ordinate of control point.
  [out] | y | The y co-ordinate of control point.

Since
  1.14

## evas_vg_shape_dup()

EVAS_API void evas_vg_shape_dup | ( | Evas_Vg_Shape * | obj,
|  | Evas_Vg_Shape * | dup_from )

Copy the shape data from the object specified.

Parameters

  [in] | obj | The object.
  [in] | dup_from | The Shape object from where data will be copied.

Since
  1.14

## evas_vg_shape_reset()

EVAS_API void evas_vg_shape_reset | ( | Evas_Vg_Shape * | obj | ) |

Reset the shape data of the shape object.

Parameters

  [in] | obj | The object.

Since
  1.14

## evas_vg_shape_append_move_to()

EVAS_API void evas_vg_shape_append_move_to | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y )

Moves the current point to the given point, implicitly starting a new subpath and closing the previous one.

See also
  evas_vg_shape_append_close()

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of the current point.
  [in] | y | The y co-ordinate of the current point.

Since
  1.14

## evas_vg_shape_append_line_to()

EVAS_API void evas_vg_shape_append_line_to | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y )

Adds a straight line from the current position to the given endPoint.

After the line is drawn, the current position is updated to be at the end point of the line.

Note
  if no current position present, it draws a line to itself, basically a point.

See also
  evas_vg_shape_append_move_to()

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of end point of the line.
  [in] | y | The y co-ordinate of end point of the line.

Since
  1.14

## evas_vg_shape_append_quadratic_to()

EVAS_API void evas_vg_shape_append_quadratic_to | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y,
|  | double | ctrl_x,
|  | double | ctrl_y )

Adds a quadratic Bezier curve between the current position and the given end point (x,y) using the control points specified by (ctrl_x, ctrl_y).

After the path is drawn, the current position is updated to be at the end point of the path.

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of end point of the line.
  [in] | y | The y co-ordinate of end point of the line.
  [in] | ctrl_x | The x co-ordinate of control point.
  [in] | ctrl_y | The y co-ordinate of control point.

Since
  1.14

## evas_vg_shape_append_squadratic_to()

EVAS_API void evas_vg_shape_append_squadratic_to | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y )

Same as evas_vg_shape_append_quadratic_to() api only difference is that it uses the current control point to draw the bezier.

See also
  evas_vg_shape_append_quadratic_to()

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of end point of the line.
  [in] | y | The y co-ordinate of end point of the line.

Since
  1.14

## evas_vg_shape_append_cubic_to()

EVAS_API void evas_vg_shape_append_cubic_to | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y,
|  | double | ctrl_x0,
|  | double | ctrl_y0,
|  | double | ctrl_x1,
|  | double | ctrl_y1 )

Adds a cubic Bezier curve between the current position and the given end point (x,y) using the control points specified by (ctrl_x0, ctrl_y0), and (ctrl_x1, ctrl_y1).

After the path is drawn, the current position is updated to be at the end point of the path.

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of end point of the line.
  [in] | y | The y co-ordinate of end point of the line.
  [in] | ctrl_x0 | The x co-ordinate of 1st control point.
  [in] | ctrl_y0 | The y co-ordinate of 1st control point.
  [in] | ctrl_x1 | The x co-ordinate of 2nd control point.
  [in] | ctrl_y1 | The y co-ordinate of 2nd control point.

Since
  1.14

## evas_vg_shape_append_scubic_to()

EVAS_API void evas_vg_shape_append_scubic_to | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y,
|  | double | ctrl_x,
|  | double | ctrl_y )

Same as evas_vg_shape_append_cubic_to() api only difference is that it uses the current control point to draw the bezier.

See also
  evas_vg_shape_append_cubic_to()

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of end point of the line.
  [in] | y | The x co-ordinate of end point of the line.
  [in] | ctrl_x | The x co-ordinate of 2nd control point.
  [in] | ctrl_y | The y co-ordinate of 2nd control point.

Since
  1.14

## evas_vg_shape_append_arc_to()

EVAS_API void evas_vg_shape_append_arc_to | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y,
|  | double | rx,
|  | double | ry,
|  | double | angle,
|  | Eina_Bool | large_arc,
|  | Eina_Bool | sweep )

Append an arc that connects from the current point int the point list to the given point (x,y).

The arc is defined by the given radius in x-direction (rx) and radius in y direction (ry).

Note
  Use this api if you know the end point's of the arc otherwise use more convenient function evas_vg_shape_append_arc_to()

See also
  evas_vg_shape_append_arc_to()

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of end point of the arc.
  [in] | y | The y co-ordinate of end point of the arc.
  [in] | rx | The radius of arc in x direction.
  [in] | ry | The radius of arc in y direction.
  [in] | angle | The x-axis rotation , normally 0.
  [in] | large_arc | Defines whether to draw the larger arc or smaller arc joining two point.
  [in] | sweep | Defines whether the arc will be drawn counter-clockwise or clockwise from current point to the end point taking into account the large_arc property.

Since
  1.14

## evas_vg_shape_append_arc()

EVAS_API void evas_vg_shape_append_arc | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y,
|  | double | w,
|  | double | h,
|  | double | start_angle,
|  | double | sweep_length )

Append an arc that enclosed in the given rectangle (x, y, w, h).

The angle is defined in counter clock wise , use -ve angle for clockwise arc.

Parameters

  [in] | obj | The object.
  [in] | y | The x co-ordinate of the rect.
  [in] | y | The y co-ordinate of the rect.
  [in] | w | The width of the rect.
  [in] | h | The height of the rect.
  [in] | start_angle | The angle at which the arc will start.
  [in] | sweep_length | The length of the arc.

Since
  1.18

## evas_vg_shape_append_close()

EVAS_API void evas_vg_shape_append_close | ( | Evas_Vg_Shape * | obj | ) |

Closes the current subpath by drawing a line to the beginning of the subpath, automatically starting a new path.

The current point of the new path is (0, 0).

Note
  If the subpath does not contain any points, this function does nothing.

Parameters

  [in] | obj | The object.

Since
  1.14

## evas_vg_shape_append_circle()

EVAS_API void evas_vg_shape_append_circle | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y,
|  | double | radius )

Append a circle with given center and radius.

See also
  evas_vg_shape_append_arc()

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of the center of the circle.
  [in] | y | The y co-ordinate of the center of the circle.
  [in] | radius | The radius of the circle.

Since
  1.14

## evas_vg_shape_append_rect()

EVAS_API void evas_vg_shape_append_rect | ( | Evas_Vg_Shape * | obj,
|  | double | x,
|  | double | y,
|  | double | w,
|  | double | h,
|  | double | rx,
|  | double | ry )

Append the given rectangle with rounded corner to the path.

The xr and yr arguments specify the radii of the ellipses defining the corners of the rounded rectangle.

Note
  xr and yr are specified in terms of width and height respectively.
  if xr and yr are 0, then it will draw a rectangle without rounded corner.

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of the rectangle.
  [in] | y | The y co-ordinate of the rectangle.
  [in] | w | The width of the rectangle.
  [in] | h | The height of the rectangle.
  [in] | rx | The x radius of the rounded corner and should be in range [0 to w/2].
  [in] | ry | The y radius of the rounded corner and should be in range [0 to h/2].

Since
  1.14

## evas_vg_shape_append_svg_path()

EVAS_API void evas_vg_shape_append_svg_path | ( | Evas_Vg_Shape * | obj,
|  | const char * | svg_path_data )

Append the SVG path data.

Parameters

  [in] | obj | The object.
  [in] | svg_path_data | The svg path data to append.

Since
  1.24

## evas_vg_shape_interpolate()

EVAS_API Eina_Bool evas_vg_shape_interpolate | ( | Evas_Vg_Shape * | obj,
|  | const Eo * | from,
|  | const Eo * | to,
|  | double | pos_map )

Creates intermediary path part-way between two paths.

Sets the points of the `obj` as the linear interpolation of the points in the `from` and `to` paths. The path's x,y position and control point coordinates are likewise interpolated.

The `from` and `to` paths must not already have equivalent points, and `to` must contain at least as many points as `from`, else the function returns `false` with no interpolation performed. If `to` has more points than `from`, the excess points are ignored.

Parameters

  [in] | obj | The object.
  [in] | from | The source path.
  [in] | to | The destination path.
  [in] | pos_map | The position map in range 0.0 to 1.0.

Since
  1.24

## evas_vg_shape_equal_commands()

EVAS_API Eina_Bool evas_vg_shape_equal_commands | ( | Evas_Vg_Shape * | obj,
|  | const Eo * | with )

Check if the given objects have equal commands.

Parameters

  [in] | obj | The object.
  [in] | with | The target object.

Returns
  True on equal, `false` otherwise.

Since
  1.24

## evas_vg_shape_fill_set()

EVAS_API void evas_vg_shape_fill_set | ( | Evas_Vg_Shape * | obj,
|  | Evas_Vg_Node * | f )

Set a vg object as the fill property.

Parameters

  [in] | obj | The object whose fill property gets modified.
  [in] | f | The object content to be used for filling.

Since
  1.24

## evas_vg_shape_fill_get()

EVAS_API Evas_Vg_Node * evas_vg_shape_fill_get | ( | const Evas_Vg_Shape * | obj | ) |

Returns the object that is set for the fill property.

Parameters

  [in] | obj | The object whose fill property is inspected.

Returns
  The object that is set as fill property.

Since
  1.24

## evas_vg_shape_stroke_fill_set()

EVAS_API void evas_vg_shape_stroke_fill_set | ( | Evas_Vg_Shape * | obj,
|  | Evas_Vg_Node * | f )

Set a vg object as the stroke fill property.

Parameters

  [in] | obj | The object whose stroke fill property gets modified.
  [in] | f | The object content will be used for stroke filling.

Since
  1.24

## evas_vg_shape_stroke_fill_get()

EVAS_API Evas_Vg_Node * evas_vg_shape_stroke_fill_get | ( | const Evas_Vg_Shape * | obj | ) |

Returns the object that is set for the stroke fill property.

Parameters

  [in] | obj | The object whose stroke fill property is inspected.

Returns
  The object that is set as stroke fill property.

Since
  1.24

References EINA_ARG_NONNULL, EINA_MALLOC, EINA_WARN_UNUSED_RESULT, evas_object_image_filled_add(), and evas_object_image_memfile_set().

## evas_vg_gradient_stop_set()

EVAS_API void evas_vg_gradient_stop_set | ( | Evas_Vg_Gradient * | obj,
|  | const Evas_Vg_Gradient_Stop * | colors,
|  | unsigned int | length )

Set the list of color stops for the gradient.

Parameters

  [in] | obj | The object.
  [in] | colors | The color stops list.
  [in] | length | The length of the list.

Since
  1.14

## evas_vg_gradient_stop_get()

EVAS_API void evas_vg_gradient_stop_get | ( | Evas_Vg_Gradient * | obj,
|  | const Evas_Vg_Gradient_Stop ** | colors,
|  | unsigned int * | length )

Get the list of color stops.

Parameters

  [in] | obj | The object.
  [out] | colors | The color stops list.
  [out] | length | The length of the list.

Since
  1.14

## evas_vg_gradient_spread_set()

EVAS_API void evas_vg_gradient_spread_set | ( | Evas_Vg_Gradient * | obj,
|  | Evas_Vg_Gradient_Spread | s )

Specifies the spread method that should be used for this gradient.

Parameters

  [in] | obj | The object.
  [in] | s | The spread type to be used.

Since
  1.14

## evas_vg_gradient_spread_get()

EVAS_API Evas_Vg_Gradient_Spread evas_vg_gradient_spread_get | ( | Evas_Vg_Gradient * | obj | ) |

Returns the spread method use by this gradient.

The default is EVAS_VG_GRADIENT_SPREAD_PAD.

Parameters

  [in] | obj | The object.

Returns
  The spread type of the given object.

Since
  1.14

## evas_vg_gradient_linear_add()

EVAS_API Evas_Vg_Gradient_Linear * evas_vg_gradient_linear_add | ( | Evas_Vg_Container * | parent | ) |

Creates a new linear gradient object.

Parameters

  [in] | parent | The given vector container object.

Returns
  The created linear gradient object handle.

Since
  1.24

## evas_vg_gradient_linear_start_set()

EVAS_API void evas_vg_gradient_linear_start_set | ( | Evas_Vg_Gradient_Linear * | obj,
|  | double | x,
|  | double | y )

Sets the start point of this linear gradient.

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of start point.
  [in] | y | The y co-ordinate of start point

Since
  1.24

## evas_vg_gradient_linear_start_get()

EVAS_API void evas_vg_gradient_linear_start_get | ( | Evas_Vg_Gradient_Linear * | obj,
|  | double * | x,
|  | double * | y )

Gets the start point of this linear gradient.

Parameters

  [in] | obj | The object.
  [out] | x | The x co-ordinate of start point.
  [out] | y | The y co-ordinate of start point.

Since
  1.24

## evas_vg_gradient_linear_end_set()

EVAS_API void evas_vg_gradient_linear_end_set | ( | Evas_Vg_Gradient_Linear * | obj,
|  | double | x,
|  | double | y )

Sets the end point of this linear gradient.

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of end point.
  [in] | y | The y co-ordinate of end point.

Since
  1.24

## evas_vg_gradient_linear_end_get()

EVAS_API void evas_vg_gradient_linear_end_get | ( | Evas_Vg_Gradient_Linear * | obj,
|  | double * | x,
|  | double * | y )

Gets the end point of this linear gradient.

Parameters

  [in] | obj | The object.
  [out] | x | The x co-ordinate of end point.
  [out] | y | The y co-ordinate of end point.

Since
  1.24

## evas_vg_gradient_radial_add()

EVAS_API Evas_Vg_Gradient_Radial * evas_vg_gradient_radial_add | ( | Evas_Vg_Container * | parent | ) |

Creates a new radial gradient object.

Parameters

  [in] | parent | The given vector container object.

Returns
  The created radial gradient object handle.

Since
  1.24

## evas_vg_gradient_radial_center_set()

EVAS_API void evas_vg_gradient_radial_center_set | ( | Evas_Vg_Gradient_Radial * | obj,
|  | double | x,
|  | double | y )

Sets the center of this radial gradient.

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of center point.
  [in] | y | The y co-ordinate of center point.

Since
  1.24

## evas_vg_gradient_radial_center_get()

EVAS_API void evas_vg_gradient_radial_center_get | ( | Evas_Vg_Gradient_Radial * | obj,
|  | double * | x,
|  | double * | y )

Gets the center of this radial gradient.

Parameters

  [in] | obj | The object.
  [out] | x | The x co-ordinate of center point.
  [out] | y | The y co-ordinate of center point.

Since
  1.24

## evas_vg_gradient_radial_radius_set()

EVAS_API void evas_vg_gradient_radial_radius_set | ( | Evas_Vg_Gradient_Radial * | obj,
|  | double | r )

Sets the center radius of this radial gradient.

Parameters

  [in] | obj | The object.
  [in] | r | The center radius.

Since
  1.24

## evas_vg_gradient_radial_radius_get()

EVAS_API double evas_vg_gradient_radial_radius_get | ( | Evas_Vg_Gradient_Radial * | obj | ) |

Gets the center radius of this radial gradient.

Parameters

  [in] | obj | The object.

Returns
  The center radius of the given object.

Since
  1.24

## evas_vg_gradient_radial_focal_set()

EVAS_API void evas_vg_gradient_radial_focal_set | ( | Evas_Vg_Gradient_Radial * | obj,
|  | double | x,
|  | double | y )

Sets the focal point of this radial gradient.

Parameters

  [in] | obj | The object.
  [in] | x | The x co-ordinate of focal point.
  [in] | y | The y co-ordinate of focal point.

Since
  1.24

## evas_vg_gradient_radial_focal_get()

EVAS_API void evas_vg_gradient_radial_focal_get | ( | Evas_Vg_Gradient_Radial * | obj,
|  | double * | x,
|  | double * | y )

Gets the focal point of this radial gradient.

Parameters

  [in] | obj | The object.
  [out] | x | The x co-ordinate of focal point.
  [out] | y | The y co-ordinate of focal point.

Since
  1.24