evas vg: Radial gradient code cleanup. 96/258096/7
authorMichal Szczecinski <m.szczecinsk@partner.samsung.com>
Mon, 10 May 2021 10:49:20 +0000 (12:49 +0200)
committerHermet Park <chuneon.park@samsung.com>
Mon, 17 May 2021 06:18:26 +0000 (06:18 +0000)
Removed ector dependency. Removed redundant code.

Change-Id: If81e57d02aafbd7489f2a4ff5fa44995d0462637

src/lib/evas/canvas/efl_canvas_vg_gradient_radial.c

index 9b2c2e2..7ed737e 100644 (file)
@@ -14,42 +14,35 @@ struct _Efl_Canvas_Vg_Gradient_Radial_Data
    double radius;
 };
 
-
 static void
-_efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_center_set(Eo *obj EINA_UNUSED,
-                                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd,
+_efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_center_set(Eo *obj,
+                                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd EINA_UNUSED,
                                                            double x, double y)
 {
-   pd->center.x = x;
-   pd->center.y = y;
-
-   efl_canvas_vg_node_change(obj);
+   evas_vg_gradient_radial_center_set((Evas_Vg_Gradient_Radial*)obj, x, y);
 }
 
 static void
-_efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_center_get(const Eo *obj EINA_UNUSED,
-                                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd,
+_efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_center_get(const Eo *obj,
+                                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd EINA_UNUSED,
                                                            double *x, double *y)
 {
-   if (x) *x = pd->center.x;
-   if (y) *y = pd->center.y;
+   evas_vg_gradient_radial_center_get((Evas_Vg_Gradient_Radial*)obj, x, y);
 }
 
 static void
-_efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_radius_set(Eo *obj EINA_UNUSED,
-                                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd,
+_efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_radius_set(Eo *obj,
+                                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd EINA_UNUSED,
                                                            double r)
 {
-   pd->radius = r;
-
-   efl_canvas_vg_node_change(obj);
+   evas_vg_gradient_radial_radius_set((Evas_Vg_Gradient_Radial*)obj, r);
 }
 
 static double
-_efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_radius_get(const Eo *obj EINA_UNUSED,
-                                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd)
+_efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_radius_get(const Eo *obj,
+                                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd EINA_UNUSED)
 {
-   return pd->radius;
+   return evas_vg_gradient_radial_radius_get((Evas_Vg_Gradient_Radial*)obj);
 }
 
 static void
@@ -72,50 +65,6 @@ _efl_canvas_vg_gradient_radial_efl_gfx_gradient_radial_focal_get(const Eo *obj E
    if (y) *y = pd->focal.y;
 }
 
-#ifndef HAVE_THORVG
-static void
-_efl_canvas_vg_gradient_radial_render_pre(Evas_Object_Protected_Data *vg_pd EINA_UNUSED,
-                                          Efl_VG *obj,
-                                          Efl_Canvas_Vg_Node_Data *nd,
-                                          void *engine EINA_UNUSED,
-                                          void *output EINA_UNUSED,
-                                          void *context EINA_UNUSED,
-                                          Ector_Surface *surface,
-                                          Eina_Matrix3 *ptransform,
-                                          int p_opacity EINA_UNUSED,
-                                          Ector_Buffer *comp,
-                                          Efl_Gfx_Vg_Composite_Method comp_method,
-                                          void *data)
-{
-   Efl_Canvas_Vg_Gradient_Radial_Data *pd = data;
-   Efl_Canvas_Vg_Gradient_Data *gd;
-
-   if (nd->flags == EFL_GFX_CHANGE_FLAG_NONE) return;
-
-   nd->flags = EFL_GFX_CHANGE_FLAG_NONE;
-
-   gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
-   EFL_CANVAS_VG_COMPUTE_MATRIX(ctransform, ptransform, nd);
-
-   if (!nd->renderer)
-     {
-        efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
-        nd->renderer = ector_surface_renderer_factory_new(surface, ECTOR_RENDERER_GRADIENT_RADIAL_MIXIN);
-        efl_domain_current_pop();
-     }
-
-   ector_renderer_transformation_set(nd->renderer, ctransform);
-   ector_renderer_origin_set(nd->renderer, nd->x, nd->y);
-   ector_renderer_visibility_set(nd->renderer, nd->visibility);
-   efl_gfx_gradient_stop_set(nd->renderer, gd->colors, gd->colors_count);
-   efl_gfx_gradient_spread_set(nd->renderer, gd->spread);
-   efl_gfx_gradient_radial_center_set(nd->renderer, pd->center.x, pd->center.y);
-   efl_gfx_gradient_radial_focal_set(nd->renderer, pd->focal.x, pd->focal.y);
-   efl_gfx_gradient_radial_radius_set(nd->renderer, pd->radius);
-   ector_renderer_prepare(nd->renderer);
-   ector_renderer_comp_method_set(nd->renderer, comp, comp_method);
-}
-#else
 static void
 _gradient_radial_render_pre_tvg(Efl_Canvas_Vg_Gradient_Data *gd,
                                 Tvg_Paint *shape,
@@ -128,23 +77,25 @@ _gradient_radial_render_pre_tvg(Efl_Canvas_Vg_Gradient_Data *gd,
    else if (owner == EVAS_VG_GRADIENT_OWNER_TYPE_STROKE)
      tvg_shape_set_stroke_radial_gradient(shape, gd->gradient);
 }
-#endif
 
 static Eo *
 _efl_canvas_vg_gradient_radial_efl_object_constructor(Eo *obj, Efl_Canvas_Vg_Gradient_Radial_Data *pd)
 {
-   Efl_Canvas_Vg_Node_Data *nd;
+   Efl_Canvas_Vg_Node_Data *nd = NULL;
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+
    obj = efl_constructor(efl_super(obj, MY_CLASS));
+   if (!obj) return NULL;
+
    nd = efl_data_scope_get(obj, EFL_CANVAS_VG_NODE_CLASS);
-#ifndef HAVE_THORVG
-   nd->render_pre = _efl_canvas_vg_gradient_radial_render_pre;
-#else
-   Efl_Canvas_Vg_Gradient_Data *gd;
+   if (!nd) return NULL;
+
    gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+   if (!gd) return NULL;
+
    gd->gradient_render_pre_tvg = _gradient_radial_render_pre_tvg;
    gd->spread = EFL_GFX_GRADIENT_SPREAD_PAD;
    gd->gradient = tvg_radial_gradient_new();
-#endif
    nd->data = pd;
 
    return obj;
@@ -158,24 +109,25 @@ _efl_canvas_vg_gradient_radial_efl_object_destructor(Eo *obj,
 }
 
 static void
-_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_gradient_radial_efl_gfx_path_bounds_get(const Eo *obj,
+                                           Efl_Canvas_Vg_Gradient_Radial_Data *pd EINA_UNUSED, 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;
+   Efl_Canvas_Vg_Node_Data *nd = NULL;
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
    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 (!obj) return;
+
+   nd = efl_data_scope_get(obj, EFL_CANVAS_VG_NODE_CLASS);
+   if (!nd) return;
+
+   gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+   if (!gd || !gd->gradient)
+
    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
@@ -184,9 +136,10 @@ _efl_canvas_vg_gradient_radial_efl_gfx_path_interpolate(Eo *obj,
                                                 const Efl_VG *from, const Efl_VG *to,
                                                 double pos_map)
 {
-   Efl_Canvas_Vg_Gradient_Radial_Data *fromd, *tod;
-   double from_map;
-   Eina_Bool r;
+   Efl_Canvas_Vg_Gradient_Radial_Data *fromd = NULL, *tod = NULL;
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+   double from_map = 0.0f;
+   Eina_Bool r = EINA_FALSE;
 
    r = efl_gfx_path_interpolate(efl_super(obj, EFL_CANVAS_VG_GRADIENT_RADIAL_CLASS), from, to, pos_map);
 
@@ -194,8 +147,14 @@ _efl_canvas_vg_gradient_radial_efl_gfx_path_interpolate(Eo *obj,
 
    fromd = efl_data_scope_get(from, EFL_CANVAS_VG_GRADIENT_RADIAL_CLASS);
    tod = efl_data_scope_get(to, EFL_CANVAS_VG_GRADIENT_RADIAL_CLASS);
+
+   gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+   if (!gd) return EINA_FALSE;
+
    from_map = 1.0 - pos_map;
 
+   if (!fromd || !tod || !pd) return EINA_FALSE;
+
 #define INTP(Pd, From, To, Member, From_Map, Pos_Map)   \
    Pd->Member = From->Member * From_Map + To->Member * Pos_Map
 
@@ -207,11 +166,7 @@ _efl_canvas_vg_gradient_radial_efl_gfx_path_interpolate(Eo *obj,
 
 #undef INTP
 
-#ifdef HAVE_THORVG
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
    tvg_radial_gradient_set(gd->gradient, pd->center.x, pd->center.y, pd->radius);
-#endif
-
    return EINA_TRUE;
 }
 
@@ -223,23 +178,25 @@ _efl_canvas_vg_gradient_radial_efl_duplicate_duplicate(const Eo *obj, Efl_Canvas
    Efl_VG *cn = NULL;
 
    cn = efl_duplicate(efl_super(obj, MY_CLASS));
-   efl_gfx_gradient_radial_focal_set(cn, pd->focal.x, pd->focal.y);
-   efl_gfx_gradient_radial_center_set(cn, pd->center.x, pd->center.y);
-   efl_gfx_gradient_radial_radius_set(cn, pd->radius);
+   evas_vg_gradient_radial_focal_set(cn, pd->focal.x, pd->focal.y);
+   evas_vg_gradient_radial_center_set(cn, pd->center.x, pd->center.y);
+   evas_vg_gradient_radial_radius_set(cn, pd->radius);
    return cn;
 }
 
 EAPI void
 evas_vg_gradient_radial_center_set(Evas_Vg_Gradient_Radial *obj, double x, double y)
 {
-#ifdef HAVE_THORVG
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+   Efl_Canvas_Vg_Gradient_Radial_Data *rgd = NULL;
+
+   float r = 0.0f;
    if (!obj) return;
 
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
-   Efl_Canvas_Vg_Gradient_Radial_Data *rgd = efl_data_scope_get(obj, MY_CLASS);
+   gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+   rgd = efl_data_scope_get(obj, MY_CLASS);
    if (!gd || !rgd) return;
 
-   float r = 0.0f;
    tvg_radial_gradient_get(gd->gradient, NULL, NULL, &r);
    tvg_radial_gradient_set(gd->gradient, x, y, r);
 
@@ -247,66 +204,56 @@ evas_vg_gradient_radial_center_set(Evas_Vg_Gradient_Radial *obj, double x, doubl
    rgd->center.y = y;
 
    if (gd->shape) efl_canvas_vg_node_change(gd->shape);
-#else
-   efl_gfx_gradient_radial_center_set(obj, x, y);
-#endif
 }
 
 EAPI void
 evas_vg_gradient_radial_center_get(Evas_Vg_Gradient_Radial *obj, double *x, double *y)
 {
-#ifdef HAVE_THORVG
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+   float tx = 0.0f, ty = 0.0f;
    if (!obj) return;
 
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
-   if (!gd) return;
+   gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+   if (!gd || !gd->gradient) return;
 
-   float tx = 0.f, ty = 0.f;
    tvg_radial_gradient_get(gd->gradient, &tx, &ty, NULL);
 
    if (x) *x = tx;
    if (y) *y = ty;
-#else
-   efl_gfx_gradient_radial_center_get(obj, x, y);
-#endif
 }
 
 EAPI void
 evas_vg_gradient_radial_radius_set(Evas_Vg_Gradient_Radial *obj, double r)
 {
-#ifdef HAVE_THORVG
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+   Efl_Canvas_Vg_Gradient_Radial_Data *rgd = NULL;
+   float x = 0.0f, y = 0.0f;
    if (!obj) return;
 
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
-   Efl_Canvas_Vg_Gradient_Radial_Data *rgd = efl_data_scope_get(obj, MY_CLASS);
+   gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+   rgd = efl_data_scope_get(obj, MY_CLASS);
    if (!gd || !rgd) return;
 
-   float x = 0.0f, y = 0.0f;
    tvg_radial_gradient_get(gd->gradient, &x, &y, NULL);
    tvg_radial_gradient_set(gd->gradient, x, y, r);
    rgd->radius = r;
 
    if (gd->shape) efl_canvas_vg_node_change(gd->shape);
-#else
-   efl_gfx_gradient_radial_radius_set(obj, r);
-#endif
 }
 
 EAPI double
 evas_vg_gradient_radial_radius_get(Evas_Vg_Gradient_Radial *obj)
 {
-#ifdef HAVE_THORVG
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+   float r = 0.0f;
+
    if (!obj) return 0.0;
 
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
-   if (!gd) return 0.0;
+   gd = efl_data_scope_get(obj, EFL_CANVAS_VG_GRADIENT_CLASS);
+   if (!gd || !gd->gradient) return 0.0;
 
-   float r = 0.0f;
    tvg_radial_gradient_get(gd->gradient, NULL, NULL, &r);
    return r;
-#else
-   return efl_gfx_gradient_radial_radius_get(obj);
-#endif
 }
 
 EAPI void