evas vg: Removed redundant code. 83/258083/3
authorMichal Szczecinski <m.szczecinsk@partner.samsung.com>
Mon, 10 May 2021 08:34:55 +0000 (10:34 +0200)
committerHermet Park <chuneon.park@samsung.com>
Wed, 12 May 2021 02:45:15 +0000 (02:45 +0000)
This commit removes code used in ector mode now switched off by default.

Change-Id: I6cf1c7b2cf0a36703de9b74e2ac948c0c00ee398

src/lib/evas/canvas/efl_canvas_vg_gradient.c
src/lib/evas/canvas/efl_canvas_vg_gradient.eo
src/lib/evas/canvas/evas_vg_private.h

index 41d112b..cbf4518 100644 (file)
 
 #define MY_CLASS EFL_CANVAS_VG_GRADIENT_CLASS
 
-#ifdef HAVE_THORVG
-
-static void
-_gradient_stop_set(Evas_Vg_Gradient *obj, const Efl_Gfx_Gradient_Stop *colors, unsigned int length)
-{
-   if (!obj) return;
-
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, MY_CLASS);
-   if (!gd) return;
-
-   Tvg_Color_Stop *color_stops = malloc(sizeof(Tvg_Color_Stop) * length);
-   if (!color_stops) return;
-
-   unsigned int i = 0;
-   for (i = 0; i < length; ++i)
-     {
-        color_stops[i].offset = colors[i].offset;
-
-        int r, g, b, a;
-        r = colors[i].r;
-        g = colors[i].g;
-        b = colors[i].b;
-        a = colors[i].a;
-        evas_color_argb_unpremul(a, &r, &g, &b);
-        color_stops[i].r = (uint8_t)r;
-        color_stops[i].g = (uint8_t)g;
-        color_stops[i].b = (uint8_t)b;
-        color_stops[i].a = (uint8_t)a;
-     }
-
-   tvg_gradient_set_color_stops(gd->gradient, color_stops, length);
-   free(color_stops);
-
-   if (gd->shape) efl_canvas_vg_node_change(gd->shape);
-}
-
-static void
-_gradient_stop_get(Evas_Vg_Gradient *obj, Efl_Gfx_Gradient_Stop **colors, unsigned int *length)
-{
-   if (!obj || !colors || !length) return;
-
-   const Tvg_Color_Stop *stop = NULL;
-   uint32_t len = 0;
-   unsigned int i = 0;
-
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, MY_CLASS);
-   if (!gd) return;
-
-   tvg_gradient_get_color_stops(gd->gradient, &stop, &len);
-   *length = len;
-
-   *colors = malloc(sizeof(Efl_Gfx_Gradient_Stop) * len);
-   if (!*colors) return;
-
-   for (i = 0; i < len; ++i)
-     {
-        (*colors)[i].offset = stop[i].offset;
-        (*colors)[i].a = stop[i].a;
-        (*colors)[i].r = stop[i].r;
-        (*colors)[i].g = stop[i].g;
-        (*colors)[i].b = stop[i].b;
-        evas_color_argb_premul((*colors)[i].a, &(*colors)[i].r, &(*colors)[i].g, &(*colors)[i].b);
-     }
-}
-#endif
-
-static void
-_efl_canvas_vg_gradient_efl_gfx_gradient_stop_set(Eo *obj EINA_UNUSED,
-                                                Efl_Canvas_Vg_Gradient_Data *pd,
-                                                const Efl_Gfx_Gradient_Stop *colors,
-                                                unsigned int length)
-{
-   pd->colors = realloc(pd->colors, length * sizeof(Efl_Gfx_Gradient_Stop));
-   if (!pd->colors)
-     {
-        pd->colors_count = 0;
-        return ;
-     }
-
-   memcpy(pd->colors, colors, length * sizeof(Efl_Gfx_Gradient_Stop));
-   pd->colors_count = length;
-
-   efl_canvas_vg_node_change(obj);
-}
-
-static void
-_efl_canvas_vg_gradient_efl_gfx_gradient_stop_get(const Eo *obj EINA_UNUSED,
-                                                Efl_Canvas_Vg_Gradient_Data *pd,
-                                                const Efl_Gfx_Gradient_Stop **colors,
-                                                unsigned int *length)
-{
-   if (colors) *colors = pd->colors;
-   if (length) *length = pd->colors_count;
-}
-
-static void
-_efl_canvas_vg_gradient_efl_gfx_gradient_spread_set(Eo *obj EINA_UNUSED,
-                                                  Efl_Canvas_Vg_Gradient_Data *pd,
-                                                  Efl_Gfx_Gradient_Spread spread)
-{
-   pd->spread = spread;
-
-   efl_canvas_vg_node_change(obj);
-}
-
-static Efl_Gfx_Gradient_Spread
-_efl_canvas_vg_gradient_efl_gfx_gradient_spread_get(const Eo *obj EINA_UNUSED,
-                                                  Efl_Canvas_Vg_Gradient_Data *pd)
-{
-   return pd->spread;
-}
-
 static Eina_Bool
 _efl_canvas_vg_gradient_efl_gfx_path_interpolate(Eo *obj,
                                          Efl_Canvas_Vg_Gradient_Data *pd EINA_UNUSED,
                                          const Efl_VG *from, const Efl_VG *to,
                                          double pos_map)
 {
-   Efl_Canvas_Vg_Gradient_Data *fromd, *tod;
-   Efl_Gfx_Gradient_Stop *colors;
-   unsigned int i;
-   double from_map;
-   Eina_Bool r;
+   Efl_Canvas_Vg_Gradient_Data *fromd = NULL, *tod = NULL;
+   Eina_Bool ret = EINA_FALSE;
 
-   r = efl_gfx_path_interpolate(efl_super(obj, EFL_CANVAS_VG_GRADIENT_CLASS), from, to, pos_map);
+   unsigned int i = 0;
+   double from_map = 0.0;
+
+   ret = efl_gfx_path_interpolate(efl_super(obj, EFL_CANVAS_VG_GRADIENT_CLASS), from, to, pos_map);
+   if (!ret) return EINA_FALSE;
 
    fromd = efl_data_scope_get(from, EFL_CANVAS_VG_GRADIENT_CLASS);
    tod = efl_data_scope_get(to, EFL_CANVAS_VG_GRADIENT_CLASS);
-   from_map = 1.0 - pos_map;
 
-   if (!r) return EINA_FALSE;
-   if (fromd->colors_count != tod->colors_count) return EINA_FALSE;
+   if (!fromd || !tod) return EINA_FALSE;
 
-#ifndef HAVE_THORVG
-   colors = realloc(pd->colors, sizeof (Efl_Gfx_Gradient_Stop) * tod->colors_count);
-   if (!colors) return EINA_FALSE;
-   pd->colors = colors;
+   from_map = 1.0 - pos_map;
+   if (fromd->colors_count != tod->colors_count) return EINA_FALSE;
 
-#define INTP(Pd, From, To, I, Member, From_Map, Pos_Map)                \
-   Pd->colors[I].Member = From->colors[I].Member * From_Map + To->colors[I].Member * Pos_Map
+#define INTP(destination, f, t, I, Member, From_Map, Pos_Map)                \
+   destination->colors[I].Member = f->colors[I].Member * From_Map + t->colors[I].Member * Pos_Map
 
-   for (i = 0; i < fromd->colors_count; i++)
+   for (i = 0; i < pd->colors_count; i++)
      {
         INTP(pd, fromd, tod, i, offset, from_map, pos_map);
         INTP(pd, fromd, tod, i, r, from_map, pos_map);
@@ -159,101 +44,134 @@ _efl_canvas_vg_gradient_efl_gfx_path_interpolate(Eo *obj,
 
 #undef INTP
 
-#else
-   unsigned len = 0, from_len = 0, to_len = 0;
-
-   Efl_Gfx_Gradient_Stop *fcolors, *tcolors;
-
-   _gradient_stop_get(obj, &colors, &len);
-   _gradient_stop_get((Efl_VG*) from, &fcolors, &from_len);
-   _gradient_stop_get((Efl_VG*) to, &tcolors, &to_len);
-
-   if (from_len != to_len) return EINA_FALSE;
-
-#define INTP(destination, f, t, I, Member, From_Map, Pos_Map)                \
-   destination[I].Member = f[I].Member * From_Map + t[I].Member * Pos_Map
-
-   for (i = 0; i < len; i++)
-     {
-        INTP(colors, fcolors, tcolors, i, offset, from_map, pos_map);
-        INTP(colors, fcolors, tcolors, i, r, from_map, pos_map);
-        INTP(colors, fcolors, tcolors, i, g, from_map, pos_map);
-        INTP(colors, fcolors, tcolors, i, b, from_map, pos_map);
-        INTP(colors, fcolors, tcolors, i, a, from_map, pos_map);
-     }
-
-#undef INTP
-
-   _gradient_stop_set(obj, colors, len);
-#endif
+   evas_vg_gradient_stop_set(obj, pd->colors, pd->colors_count);
    return EINA_TRUE;
 }
 
 static void
 _efl_canvas_vg_gradient_efl_object_destructor(Eo *obj, Efl_Canvas_Vg_Gradient_Data *pd)
 {
-   if (pd->colors) free(pd->colors);
+   if (pd->colors)
+     {
+        free(pd->colors);
+        pd->colors = NULL;
+     }
+
    efl_destructor(efl_super(obj, MY_CLASS));
 }
 
 
 EOLIAN static Efl_VG *
 _efl_canvas_vg_gradient_efl_duplicate_duplicate(const Eo *obj, Efl_Canvas_Vg_Gradient_Data *pd)
-
 {
    Efl_VG *cn = efl_duplicate(efl_super(obj, MY_CLASS));
-   efl_gfx_gradient_stop_set(cn, pd->colors, pd->colors_count);
-   efl_gfx_gradient_spread_set(cn, pd->spread);
+   evas_vg_gradient_stop_set(cn, pd->colors, pd->colors_count);
+   evas_vg_gradient_spread_set(cn, pd->spread);
    return cn;
 }
 
 EAPI void
 evas_vg_gradient_stop_set(Evas_Vg_Gradient *obj, const Evas_Vg_Gradient_Stop *colors, unsigned int length)
 {
-#ifdef HAVE_THORVG
-   _gradient_stop_set(obj, (const Efl_Gfx_Gradient_Stop *)colors, length);
-#else
-   efl_gfx_gradient_stop_set(obj, (const Efl_Gfx_Gradient_Stop *)colors, length);
-#endif
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+   Tvg_Color_Stop *color_stops = NULL;
+
+   if (!obj || length == 0) return;
+
+   gd = efl_data_scope_get(obj, MY_CLASS);
+   if (!gd) return;
+
+   color_stops = malloc(sizeof(Tvg_Color_Stop) * length);
+   if (!color_stops) return;
+
+   gd->colors = malloc(sizeof(Evas_Vg_Gradient_Stop) * length);
+   if (!gd->colors) return;
+
+   unsigned int i = 0;
+   for (i = 0; i < length; ++i)
+     {
+        color_stops[i].offset = colors[i].offset;
+
+        int r, g, b, a;
+        r = colors[i].r;
+        g = colors[i].g;
+        b = colors[i].b;
+        a = colors[i].a;
+        evas_color_argb_unpremul(a, &r, &g, &b);
+        color_stops[i].r = (uint8_t)r;
+        color_stops[i].g = (uint8_t)g;
+        color_stops[i].b = (uint8_t)b;
+        color_stops[i].a = (uint8_t)a;
+     }
+
+   tvg_gradient_set_color_stops(gd->gradient, color_stops, length);
+   free(color_stops);
+
+   memcpy(gd->colors, colors, sizeof(Evas_Vg_Gradient_Stop) * length);
+   gd->colors_count = length;
+
+   if (gd->shape) efl_canvas_vg_node_change(gd->shape);
 }
 
 EAPI void
 evas_vg_gradient_stop_get(Evas_Vg_Gradient *obj, const Evas_Vg_Gradient_Stop **colors, unsigned int *length)
 {
-#ifdef HAVE_THORVG
-   _gradient_stop_get(obj, (Efl_Gfx_Gradient_Stop **)colors, length);
-#else
-   efl_gfx_gradient_stop_get(obj, (const Efl_Gfx_Gradient_Stop **)colors, length);
-#endif
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+   Evas_Vg_Gradient_Stop **destination = NULL;
+   const Tvg_Color_Stop *stop = NULL;
+   uint32_t len = 0;
+   unsigned int i = 0;
+
+   if (!obj || !colors) return;
+
+   gd = efl_data_scope_get(obj, MY_CLASS);
+   if (!gd || gd->gradient) return;
+
+   tvg_gradient_get_color_stops(gd->gradient, &stop, &len);
+   if (length) *length = len;
+
+   *colors = malloc(sizeof(Evas_Vg_Gradient_Stop) * len);
+   if (!*colors) return;
+   destination = (Evas_Vg_Gradient_Stop**)colors;
+
+   for (i = 0; i < len; ++i)
+     {
+        (*destination)[i].offset = stop[i].offset;
+        (*destination)[i].a = stop[i].a;
+        (*destination)[i].r = stop[i].r;
+        (*destination)[i].g = stop[i].g;
+        (*destination)[i].b = stop[i].b;
+        evas_color_argb_premul((*destination)[i].a, &(*destination)[i].r, &(*destination)[i].g, &(*destination)[i].b);
+     }
 }
 
 EAPI void
 evas_vg_gradient_spread_set(Evas_Vg_Gradient *obj, Evas_Vg_Gradient_Spread s)
 {
-#ifdef HAVE_THORVG
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+
    if (!obj) return;
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, MY_CLASS);
+   gd = efl_data_scope_get(obj, MY_CLASS);
+
+   if (!gd || !gd->gradient) return;
+   gd->spread = s;
+
    tvg_gradient_set_spread(gd->gradient, (Tvg_Stroke_Fill)s);
-#else
-   efl_gfx_gradient_spread_set(obj, (Efl_Gfx_Gradient_Spread)s);
-#endif
 }
 
 EAPI Evas_Vg_Gradient_Spread
 evas_vg_gradient_spread_get(Evas_Vg_Gradient *obj)
 {
-#ifdef HAVE_THORVG
+   Efl_Canvas_Vg_Gradient_Data *gd = NULL;
+   Tvg_Stroke_Fill fill = TVG_STROKE_FILL_PAD;
+
    if (!obj) return EVAS_VG_GRADIENT_SPREAD_LAST;
 
-   Efl_Canvas_Vg_Gradient_Data *gd = efl_data_scope_get(obj, MY_CLASS);
+   gd = efl_data_scope_get(obj, MY_CLASS);
    if (!gd || !gd->gradient) return EVAS_VG_GRADIENT_SPREAD_LAST;
 
-   Tvg_Stroke_Fill fill = TVG_STROKE_FILL_PAD;
    tvg_gradient_get_spread(gd->gradient, &fill);
    return (Evas_Vg_Gradient_Spread)fill;
-#else
-   return (Evas_Vg_Gradient_Spread)efl_gfx_gradient_spread_get(obj);
-#endif
 }
 
 #include "efl_canvas_vg_gradient.eo.c"
index 08731dc..30c355a 100644 (file)
@@ -2,8 +2,6 @@ abstract @beta Efl.Canvas.Vg.Gradient extends Efl.Canvas.Vg.Node implements Efl.
 {
    [[Efl vectopr graphics gradient abstract class]]
    implements {
-      Efl.Gfx.Gradient.stop { get; set; }
-      Efl.Gfx.Gradient.spread { get; set; }
       Efl.Gfx.Path.interpolate;
       Efl.Duplicate.duplicate;
       Efl.Object.destructor;
index 7785ad7..ba475ad 100644 (file)
@@ -128,7 +128,7 @@ struct _Efl_Canvas_Vg_Container_Data
 struct _Efl_Canvas_Vg_Gradient_Data
 {
    // FIXME: Later on we should deduplicate it somehow (Using Ector ?).
-   Efl_Gfx_Gradient_Stop *colors;
+   Evas_Vg_Gradient_Stop *colors;
    unsigned int colors_count;
    Efl_Gfx_Gradient_Spread spread;