_efl_canvas_vg_gradient_linear_efl_gfx_path_bounds_get(const Eo *obj, Efl_Canvas_Vg_Gradient_Linear_Data *pd, Eina_Rect *r)
{
Efl_Canvas_Vg_Node_Data *nd;
-
nd = efl_data_scope_get(obj, EFL_CANVAS_VG_NODE_CLASS);
+#ifdef HAVE_THORVG
+ if (!obj) return;
+ float x1 = 0.f, y1 = 0.f, x2 = 0.f, y2 = 0.f;
+ Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+ if (gd && tvg_linear_gradient_get(gd->gradient, &x1, &y1, &x2, &y2) == TVG_RESULT_SUCCESS)
+ {
+ EINA_RECTANGLE_SET(r, nd->x + x1, nd->y + y1, x2 - x1, y2 - y1);
+ }
+#else
EINA_RECTANGLE_SET(r,
nd->x + pd->start.x, nd->y + pd->start.y,
- pd->end.x - pd->start.x, pd->end.y - pd->start.x);
+ pd->end.x - pd->start.x, pd->end.y - pd->start.y);
+#endif
}
static Eina_Bool
_efl_canvas_vg_gradient_radial_efl_gfx_path_bounds_get(const Eo *obj, Efl_Canvas_Vg_Gradient_Radial_Data *pd, Eina_Rect *r)
{
Efl_Canvas_Vg_Node_Data *nd;
-
nd = efl_data_scope_get(obj, EFL_CANVAS_VG_NODE_CLASS);
+#ifdef HAVE_THORVG
+ if (!obj) return;
+ float tx = 0.f, ty = 0.f, tr = 0.f;
+ Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+ if (gd && tvg_radial_gradient_get(gd->gradient, &tx, &ty, &tr) == TVG_RESULT_SUCCESS)
+ {
+ EINA_RECTANGLE_SET(r, nd->x + tx - tr, nd->y + ty - tr, tr * 2, tr * 2);
+ }
+#else
EINA_RECTANGLE_SET(r,
nd->x + pd->center.x - pd->radius,
nd->y + pd->center.y - pd->radius,
pd->radius * 2, pd->radius * 2);
+#endif
}
static Eina_Bool