forked from enlightenment/efl
efl: add Efl.Gfx.Shape.append_rect following SVG specification.
SVG rectangle can have rounded corner.
This commit is contained in:
parent
59635cd492
commit
9f8c35002b
|
@ -665,6 +665,26 @@ _efl_gfx_shape_append_circle(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
|||
_efl_gfx_shape_append_arc_to(obj, pd, x, y - radius, radius, radius, 0, EINA_FALSE, EINA_FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
_efl_gfx_shape_append_rect(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
||||
double x, double y, double w, double h,
|
||||
double rx, double ry)
|
||||
{
|
||||
_efl_gfx_shape_append_move_to(obj, pd, x, y + ry);
|
||||
// Top left corner
|
||||
_efl_gfx_shape_append_arc_to(obj, pd, x + rx, y, rx, ry, 0, EINA_FALSE, EINA_TRUE);
|
||||
_efl_gfx_shape_append_line_to(obj, pd, x + w - rx, y);
|
||||
// Top right corner
|
||||
_efl_gfx_shape_append_arc_to(obj, pd, x + w, y + ry, rx, ry, 0, EINA_FALSE, EINA_TRUE);
|
||||
_efl_gfx_shape_append_line_to(obj, pd, x + w, y + h - ry);
|
||||
// Bottom right corner
|
||||
_efl_gfx_shape_append_arc_to(obj, pd, x + w - rx, y + h, rx, ry, 0, EINA_FALSE, EINA_TRUE);
|
||||
_efl_gfx_shape_append_line_to(obj, pd, x + rx, y + h);
|
||||
// Bottom left corner
|
||||
_efl_gfx_shape_append_arc_to(obj, pd, x, y + h - ry, rx, ry, 0, EINA_FALSE, EINA_TRUE);
|
||||
_efl_gfx_shape_append_line_to(obj, pd, x, y - ry);
|
||||
}
|
||||
|
||||
static void
|
||||
_efl_gfx_path_append_horizontal_to(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
||||
double d, double current_x EINA_UNUSED, double current_y)
|
||||
|
|
|
@ -250,6 +250,16 @@ mixin Efl.Gfx.Shape
|
|||
@in double radius;
|
||||
}
|
||||
}
|
||||
append_rect {
|
||||
params {
|
||||
@in double x;
|
||||
@in double y;
|
||||
@in double w;
|
||||
@in double h;
|
||||
@in double rx;
|
||||
@in double ry;
|
||||
}
|
||||
}
|
||||
append_svg_path {
|
||||
params {
|
||||
@in const(char)* svg_path_data;
|
||||
|
|
|
@ -1755,6 +1755,7 @@ EAPI void evas_vg_shape_shape_append_scubic_to(Eo *obj, double x, double y, doub
|
|||
EAPI void evas_vg_shape_shape_append_arc_to(Eo *obj, double x, double y, double rx, double ry, double angle, Eina_Bool large_arc, Eina_Bool sweep);
|
||||
EAPI void evas_vg_shape_shape_append_close(Eo *obj);
|
||||
EAPI void evas_vg_shape_shape_append_circle(Eo *obj, double x, double y, double radius);
|
||||
EAPI void evas_vg_shape_shape_append_rect(Eo *obj, double x, double y, double w, double h, double rx, double ry);
|
||||
EAPI void evas_vg_shape_shape_append_svg_path(Eo *obj, const char *svg_path_data);
|
||||
EAPI Eina_Bool evas_vg_shape_shape_interpolate(Eo *obj, const Eo *from, const Eo *to, double pos_map);
|
||||
EAPI Eina_Bool evas_vg_shape_shape_equal_commands(Eo *obj, const Eo *with);
|
||||
|
|
|
@ -525,6 +525,12 @@ evas_vg_shape_shape_append_circle(Eo *obj, double x, double y, double radius)
|
|||
eo_do(obj, efl_gfx_shape_append_circle(x, y, radius));
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_vg_shape_shape_append_rect(Eo *obj, double x, double y, double w, double h, double rx, double ry)
|
||||
{
|
||||
eo_do(obj, efl_gfx_shape_append_rect(x, y, w, h, rx, ry));
|
||||
}
|
||||
|
||||
EAPI void
|
||||
evas_vg_shape_shape_append_svg_path(Eo *obj, const char *svg_path_data)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue