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);
|
_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
|
static void
|
||||||
_efl_gfx_path_append_horizontal_to(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
_efl_gfx_path_append_horizontal_to(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
||||||
double d, double current_x EINA_UNUSED, double current_y)
|
double d, double current_x EINA_UNUSED, double current_y)
|
||||||
|
|
|
@ -250,6 +250,16 @@ mixin Efl.Gfx.Shape
|
||||||
@in double radius;
|
@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 {
|
append_svg_path {
|
||||||
params {
|
params {
|
||||||
@in const(char)* svg_path_data;
|
@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_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_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_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 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_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);
|
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));
|
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
|
EAPI void
|
||||||
evas_vg_shape_shape_append_svg_path(Eo *obj, const char *svg_path_data)
|
evas_vg_shape_shape_append_svg_path(Eo *obj, const char *svg_path_data)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue