* evas: remove gradient and gradient2.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 16 Aug 2010 15:14:49 +0000 (15:14 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 16 Aug 2010 15:14:49 +0000 (15:14 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@51219 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

55 files changed:
src/lib/Evas.h
src/lib/canvas/Makefile.am
src/lib/canvas/evas_object_gradient.c [deleted file]
src/lib/canvas/evas_object_gradient2.c [deleted file]
src/lib/canvas/evas_object_gradient2_linear.c [deleted file]
src/lib/canvas/evas_object_gradient2_radial.c [deleted file]
src/lib/engines/common/Makefile.am
src/lib/engines/common/evas_draw_main.c
src/lib/engines/common/evas_gradient.h [deleted file]
src/lib/engines/common/evas_gradient2_linear.c [deleted file]
src/lib/engines/common/evas_gradient2_main.c [deleted file]
src/lib/engines/common/evas_gradient2_radial.c [deleted file]
src/lib/engines/common/evas_gradient_angular.c [deleted file]
src/lib/engines/common/evas_gradient_linear.c [deleted file]
src/lib/engines/common/evas_gradient_main.c [deleted file]
src/lib/engines/common/evas_gradient_private.h [deleted file]
src/lib/engines/common/evas_gradient_radial.c [deleted file]
src/lib/engines/common/evas_gradient_rectangular.c [deleted file]
src/lib/engines/common/evas_gradient_sinusoidal.c [deleted file]
src/lib/engines/common/evas_pipe.c
src/lib/engines/common/evas_pipe.h
src/lib/include/evas_cairo_common.h
src/lib/include/evas_common.h
src/lib/include/evas_private.h
src/lib/main.c
src/modules/engines/buffer/evas_engine.c
src/modules/engines/cairo_x11/evas_engine.c
src/modules/engines/direct3d/evas_engine.c
src/modules/engines/directfb/evas_engine.c
src/modules/engines/fb/evas_engine.c
src/modules/engines/gl_common/evas_gl_common.h
src/modules/engines/gl_glew/evas_engine.c
src/modules/engines/gl_sdl/evas_engine.c
src/modules/engines/gl_x11/evas_engine.c
src/modules/engines/quartz/evas_engine.c
src/modules/engines/quartz/evas_engine.h [deleted file]
src/modules/engines/quartz/evas_quartz_private.h
src/modules/engines/software_16/evas_engine.c
src/modules/engines/software_16_ddraw/evas_engine.c
src/modules/engines/software_16_sdl/evas_engine.c
src/modules/engines/software_16_wince/evas_engine.c
src/modules/engines/software_16_x11/evas_engine.c
src/modules/engines/software_8/evas_engine.c
src/modules/engines/software_8_x11/evas_engine.c
src/modules/engines/software_ddraw/evas_engine.c
src/modules/engines/software_gdi/evas_engine.c
src/modules/engines/software_generic/evas_engine.c
src/modules/engines/software_qtopia/evas_engine.c
src/modules/engines/software_sdl/evas_engine.c
src/modules/engines/software_x11/evas_engine.c
src/modules/engines/xrender_x11/Makefile.am
src/modules/engines/xrender_x11/evas_engine.c
src/modules/engines/xrender_x11/evas_engine.h
src/modules/engines/xrender_x11/evas_engine_xcb_gradient.c [deleted file]
src/modules/engines/xrender_x11/evas_engine_xlib_gradient.c [deleted file]

index 5821fe4..d45d3f6 100644 (file)
@@ -342,7 +342,7 @@ struct _Evas_Native_Surface
 #define EVAS_COLOR_SPACE_ARGB                      0 /**< ARGB color space */
 #define EVAS_COLOR_SPACE_AHSV                      1 /**< AHSV color space */
 
-#define EVAS_TEXTURE_REFLECT            0 /**< Gradient and image fill tiling mode - tiling reflects */
+#define EVAS_TEXTURE_REFLECT            0 /**< image fill tiling mode - tiling reflects */
 #define EVAS_TEXTURE_REPEAT             1 /**< tiling repeats */
 #define EVAS_TEXTURE_RESTRICT           2 /**< tiling clamps - range offset ignored */
 #define EVAS_TEXTURE_RESTRICT_REFLECT   3 /**< tiling clamps and any range offset reflects */
@@ -1441,58 +1441,6 @@ typedef void      (*Evas_Object_Event_Cb) (void *data, Evas *e, Evas_Object *obj
    EAPI void              evas_object_polygon_points_clear  (Evas_Object *obj) EINA_ARG_NONNULL(1);
 
 /**
- * @defgroup Evas_Object_Gradient_Group Gradient Object Functions
- *
- * Functions that work on evas gradient objects.
- *
- * @ingroup Evas_Object_Specific
- */
-   EINA_DEPRECATED EAPI Evas_Object      *evas_object_gradient_add            (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
-   EINA_DEPRECATED EAPI void              evas_object_gradient_color_stop_add (Evas_Object *obj, int r, int g, int b, int a, int delta) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_alpha_stop_add (Evas_Object *obj, int a, int delta) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_color_data_set (Evas_Object *obj, void *color_data, int len, Eina_Bool has_alpha) EINA_ARG_NONNULL(1, 2);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_alpha_data_set (Evas_Object *obj, void *alpha_data, int len) EINA_ARG_NONNULL(1, 2);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_clear          (Evas_Object *obj) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_type_set       (Evas_Object *obj, const char *type, const char *instance_params) EINA_ARG_NONNULL(1, 2);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_type_get       (const Evas_Object *obj, char **type, char **instance_params) EINA_ARG_NONNULL(1, 2);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_fill_set       (Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_fill_get       (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient_fill_angle_set (Evas_Object *obj, Evas_Angle angle) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI Evas_Angle        evas_object_gradient_fill_angle_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   EINA_DEPRECATED EAPI void              evas_object_gradient_fill_spread_set(Evas_Object *obj, int tile_mode) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI int               evas_object_gradient_fill_spread_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   EINA_DEPRECATED EAPI void              evas_object_gradient_angle_set      (Evas_Object *obj, Evas_Angle angle) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI Evas_Angle        evas_object_gradient_angle_get      (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   EINA_DEPRECATED EAPI void              evas_object_gradient_direction_set  (Evas_Object *obj, int direction) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI int               evas_object_gradient_direction_get  (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   EINA_DEPRECATED EAPI void              evas_object_gradient_offset_set     (Evas_Object *obj, float offset) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI float             evas_object_gradient_offset_get     (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-
-/**
- * @defgroup Evas_Object_Gradient2_Group Gradient2 Object Functions
- *
- * Functions that work on evas gradient2 objects.
- *
- * @ingroup Evas_Object_Specific
- */
-   EINA_DEPRECATED EAPI void              evas_object_gradient2_color_np_stop_insert (Evas_Object *obj, int r, int g, int b, int a, float pos) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient2_fill_spread_set      (Evas_Object *obj, int tile_mode) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI int               evas_object_gradient2_fill_spread_get      (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
-   EINA_DEPRECATED EAPI void              evas_object_gradient2_fill_transform_set   (Evas_Object *obj, Evas_Transform *t) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient2_fill_transform_get   (const Evas_Object *obj, Evas_Transform *t) EINA_ARG_NONNULL(1);
-
-/* linear gradient2 objects */
-   EINA_DEPRECATED EAPI Evas_Object      *evas_object_gradient2_linear_add      (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
-   EINA_DEPRECATED EAPI void              evas_object_gradient2_linear_fill_set (Evas_Object *obj, float x0, float y0, float x1, float y1) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient2_linear_fill_get (const Evas_Object *obj, float *x0, float *y0, float *x1, float *y1) EINA_ARG_NONNULL(1);
-
-/* radial gradient2 objects */
-   EINA_DEPRECATED EAPI Evas_Object      *evas_object_gradient2_radial_add      (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC;
-   EINA_DEPRECATED EAPI void              evas_object_gradient2_radial_fill_set (Evas_Object *obj, float cx, float cy, float rx, float ry) EINA_ARG_NONNULL(1);
-   EINA_DEPRECATED EAPI void              evas_object_gradient2_radial_fill_get (const Evas_Object *obj, float *cx, float *cy, float *rx, float *ry) EINA_ARG_NONNULL(1);
-
-
-/**
  * @defgroup Evas_Smart_Group Smart Functions
  *
  * Functions that deal with Evas_Smart's, creating definition
index 1bb051d..d5959fa 100644 (file)
@@ -27,8 +27,6 @@ evas_key_grab.c \
 evas_layer.c \
 evas_main.c \
 evas_name.c \
-evas_object_gradient.c \
-evas_object_gradient2.c \
 evas_object_image.c \
 evas_object_main.c \
 evas_object_inform.c \
@@ -54,6 +52,3 @@ evas_map.c
 
 libevas_canvas_la_LIBADD = @EVIL_LIBS@
 
-EXTRA_DIST = \
-evas_object_gradient2_linear.c \
-evas_object_gradient2_radial.c
diff --git a/src/lib/canvas/evas_object_gradient.c b/src/lib/canvas/evas_object_gradient.c
deleted file mode 100644 (file)
index d48e620..0000000
+++ /dev/null
@@ -1,1179 +0,0 @@
-#include "evas_common.h"
-#include "evas_private.h"
-#include "../engines/common/evas_convert_color.h"
-
-/* private magic number for gradient objects */
-static const char o_type[] = "gradient";
-
-/* private struct for gradient object internal data */
-typedef struct _Evas_Object_Gradient      Evas_Object_Gradient;
-
-struct _Evas_Object_Gradient
-{
-   DATA32            magic;
-
-   struct {
-      struct {
-      Evas_Angle     angle;
-      float          offset;
-      int            direction;
-      } map;
-      struct {
-         Evas_Coord  x, y, w, h;
-         Evas_Angle  angle;
-         int         spread;
-      } fill;
-      struct {
-         char       *name;
-         char       *params;
-      } type;
-      unsigned char    gradient_opaque : 1;
-   } cur, prev;
-
-   void             *engine_data;
-
-   unsigned char     changed : 1;
-   unsigned char     gradient_changed : 1;
-   unsigned char     type_changed : 1;
-};
-
-/* private methods for gradient objects */
-static void evas_object_gradient_init(Evas_Object *obj);
-static void *evas_object_gradient_new(void);
-static void evas_object_gradient_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
-static void evas_object_gradient_free(Evas_Object *obj);
-static void evas_object_gradient_render_pre(Evas_Object *obj);
-static void evas_object_gradient_render_post(Evas_Object *obj);
-
-static unsigned int evas_object_gradient_id_get(Evas_Object *obj);
-static unsigned int evas_object_gradient_visual_id_get(Evas_Object *obj);
-static void *evas_object_gradient_engine_data_get(Evas_Object *obj);
-
-static int evas_object_gradient_is_opaque(Evas_Object *obj);
-static int evas_object_gradient_was_opaque(Evas_Object *obj);
-
-static const Evas_Object_Func object_func =
-{
-   /* methods (compulsory) */
-   evas_object_gradient_free,
-     evas_object_gradient_render,
-     evas_object_gradient_render_pre,
-     evas_object_gradient_render_post,
-     evas_object_gradient_id_get,
-     evas_object_gradient_visual_id_get,
-     evas_object_gradient_engine_data_get,
-   /* these are optional. NULL = nothing */
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     evas_object_gradient_is_opaque,
-     evas_object_gradient_was_opaque,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL
-};
-
-/* the actual api call to add a gradient */
-
-/**
- * @addtogroup Evas_Object_Gradient_Group
- * @{
- */
-
-/**
- * Adds a gradient object to the given evas.
- * @param   e The given evas.
- * @return  A new evas gradient object if successful.  Otherwise, @c NULL.
- * @ingroup Evas_Object_Gradient_Group
- */
-EAPI Evas_Object *
-evas_object_gradient_add(Evas *e)
-{
-   Evas_Object *obj;
-
-   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
-   return NULL;
-   MAGIC_CHECK_END();
-   obj = evas_object_new(e);
-   evas_object_gradient_init(obj);
-   evas_object_inject(obj, e);
-   if (obj->object_data)
-     {
-       Evas_Object_Gradient *o = (Evas_Object_Gradient *)(obj->object_data);
-
-       o->engine_data = e->engine.func->gradient_new(e->engine.data.output);
-     }
-   evas_object_change(obj);
-   return obj;
-}
-
-/**
- * Adds a color stop to the given evas gradient object.
- *
- * The @p delta parameter determines the proportion of the gradient
- * object that is to be set to the color.  For instance, if red is
- * added with @p delta set to 2, and green is added with @p
- * delta set to 1, two-thirds will be red or reddish and one-third
- * will be green or greenish.
- *
- * Colors are added from the top downwards.
- *
- * @param   obj      The given evas gradient object.
- * @param   r        Red component of the given color.
- * @param   g        Green component of the given color.
- * @param   b        Blue component of the given color.
- * @param   a        Alpha component of the given color.
- * @param   delta    Proportion of the gradient object that is this color.
- */
-EAPI void
-evas_object_gradient_color_stop_add(Evas_Object *obj, int r, int g, int b, int a, int delta)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (o->engine_data)
-     {
-#ifdef EVAS_FRAME_QUEUING
-        evas_common_pipe_op_grad_flush(o->engine_data);
-#endif
-
-        obj->layer->evas->engine.func->gradient_color_stop_add(obj->layer->evas->engine.data.output,
-                           o->engine_data,
-                           r, g, b, a, delta);
-     }
-   o->gradient_changed = 1;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Adds an alpha stop to the given evas gradient object.
- *
- * The @p delta parameter determines the proportion of the gradient
- * object that is to be set to the alpha value.
- *
- * Alphas are added from the top downwards.
- *
- * @param   obj      The given evas gradient object.
- * @param   a        Alpha value.
- * @param   delta    Proportion of the gradient object that is this alpha.
- */
-EAPI void
-evas_object_gradient_alpha_stop_add(Evas_Object *obj, int a, int delta)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (o->engine_data)
-     {
-#ifdef EVAS_FRAME_QUEUING
-        evas_common_pipe_op_grad_flush(o->engine_data);
-#endif
-        obj->layer->evas->engine.func->gradient_alpha_stop_add(obj->layer->evas->engine.data.output,
-                     o->engine_data, a, delta);
-     }
-   o->gradient_changed = 1;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Deletes all stops set for the given evas gradient object or any set data.
- * @param   obj The given evas gradient object.
- */
-EAPI void
-evas_object_gradient_clear(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (o->engine_data)
-     {
-#ifdef EVAS_FRAME_QUEUING
-        evas_common_pipe_op_grad_flush(o->engine_data);
-#endif
-        obj->layer->evas->engine.func->gradient_clear(obj->layer->evas->engine.data.output,
-                        o->engine_data);
-     }
-   o->gradient_changed = 1;
-   o->changed = 1;
-   o->cur.gradient_opaque = 0;
-   evas_object_change(obj);
-}
-
-/**
- * Sets color data for the given evas gradient object.
- *
- * If data is so set, any existing gradient stops will be deleted,
- * The data is not copied, so if it was allocated, do not free it while it's set.
- *
- * @param   obj       The given evas gradient object.
- * @param   data      The color data to be set. Should be in argb32 pixel format.
- * @param   len       The length of the data pointer - multiple of the pixel size.
- * @param   has_alpha A flag indicating if the data has alpha or not.
- */
-EAPI void
-evas_object_gradient_color_data_set(Evas_Object *obj, void *data, int len, Eina_Bool has_alpha)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (o->engine_data)
-     {
-#ifdef EVAS_FRAME_QUEUING
-        evas_common_pipe_op_grad_flush(o->engine_data);
-#endif
-        obj->layer->evas->engine.func->gradient_color_data_set(obj->layer->evas->engine.data.output,
-                        o->engine_data,
-                        data, len, has_alpha);
-     }
-   o->gradient_changed = 1;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Sets alpha data for the given evas gradient object.
- *
- * If alpha data is so set, any existing gradient stops will be cleared,
- * The data is not copied, so if it was allocated, do not free it while it's set.
- *
- * @param   obj       The given evas gradient object.
- * @param   data      The alpha data to be set, in a8 format.
- * @param   len       The length of the data pointer - multiple of the pixel size.
- */
-EAPI void
-evas_object_gradient_alpha_data_set(Evas_Object *obj, void *data, int len)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (o->engine_data)
-     {
-#ifdef EVAS_FRAME_QUEUING
-        evas_common_pipe_op_grad_flush(o->engine_data);
-#endif
-        obj->layer->evas->engine.func->gradient_alpha_data_set(obj->layer->evas->engine.data.output,
-                        o->engine_data,
-                        data, len);
-     }
-   o->gradient_changed = 1;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Sets the rectangle on the gradient object that the gradient will be
- * drawn to.
- *
- * Note that the gradient may be tiled around this one rectangle,
- * according to its spread value - restrict, repeat, or reflect.  To have
- * only one 'cycle' of the gradient drawn, the spread value must be set
- * to restrict, or @p x and @p y must be 0 and @p w and @p h need to be
- * the width and height of the gradient object respectively.
- *
- * The default values for the fill parameters is @p x = 0, @p y = 0,
- * @p w = 32 and @p h = 32.
- *
- * @param   obj The given evas gradient object.
- * @param   x   The X coordinate for the top left corner of the rect.
- * @param   y   The Y coordinate for the top left corner of the rect.
- * @param   w   The width of the rect.
- * @param   h   The height of the rect.
- */
-EAPI void
-evas_object_gradient_fill_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
-{
-   Evas_Object_Gradient *o;
-
-   if (w < 0) w = -w;
-   if (h < 0) h = -h;
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if ((o->cur.fill.x == x) &&
-       (o->cur.fill.y == y) &&
-       (o->cur.fill.w == w) &&
-       (o->cur.fill.h == h)) return;
-   o->cur.fill.x = x;
-   o->cur.fill.y = y;
-   o->cur.fill.w = w;
-   o->cur.fill.h = h;
-   o->gradient_changed = 1;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Retrieves the dimensions of the rectangle on the gradient object that
- * the gradient will use as its fill rect.
- *
- * See @ref evas_object_gradient_fill_set for more details.
- *
- * @param   obj The given evas gradient object.
- * @param   x   Pointer to an Evas_Coord to store the X coordinate in.
- * @param   y   Pointer to an Evas_Coord to store the Y coordinate in.
- * @param   w   Pointer to an Evas_Coord to store the width in.
- * @param   h   Pointer to an Evas_Coord to store the height in.
- */
-EAPI void
-evas_object_gradient_fill_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   if (x) *x = 0;
-   if (y) *y = 0;
-   if (w) *w = 0;
-   if (h) *h = 0;
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   if (x) *x = 0;
-   if (y) *y = 0;
-   if (w) *w = 0;
-   if (h) *h = 0;
-   return;
-   MAGIC_CHECK_END();
-   if (x) *x = o->cur.fill.x;
-   if (y) *y = o->cur.fill.y;
-   if (w) *w = o->cur.fill.w;
-   if (h) *h = o->cur.fill.h;
-   return;
-}
-
-/**
- * Sets the angle at which the given evas gradient object's fill sits clockwise
- * from vertical.
- * @param   obj   The given evas gradient object.
- * @param   angle Angle in degrees.  Can be negative.
- */
-EAPI void
-evas_object_gradient_fill_angle_set(Evas_Object *obj, Evas_Angle angle)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (angle == o->cur.fill.angle) return;
-   o->cur.fill.angle = angle;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Retrieves the angle at which the given evas gradient object's fill sits
- * clockwise from the vertical.
- * @param   obj The given evas gradient object.
- * @return  The current angle if successful. @c 0.0 otherwise.
- */
-EAPI Evas_Angle
-evas_object_gradient_fill_angle_get(const Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return 0;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return 0;
-   MAGIC_CHECK_END();
-   return o->cur.fill.angle;
-}
-
-/**
- * Sets the tiling mode for the given evas gradient object's fill.
- * @param   obj   The given evas gradient object.
- * @param   spread One of EVAS_TEXTURE_REFLECT, EVAS_TEXTURE_REPEAT,
- * EVAS_TEXTURE_RESTRICT, EVAS_TEXTURE_RESTRICT_REFLECT, EVAS_TEXTURE_RESTRICT_REPEAT,
- * or EVAS_TEXTURE_PAD.
- */
-EAPI void
-evas_object_gradient_fill_spread_set(Evas_Object *obj, int spread)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (spread == o->cur.fill.spread) return;
-   o->cur.fill.spread = spread;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Retrieves the spread (tiling mode) for the given gradient object's fill.
- * @param   obj The given evas gradient object.
- * @return  The current spread mode of the gradient object.
- */
-EAPI int
-evas_object_gradient_fill_spread_get(const Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return EVAS_TEXTURE_REFLECT;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return EVAS_TEXTURE_REFLECT;
-   MAGIC_CHECK_END();
-   return o->cur.fill.spread;
-}
-
-/**
- * Sets the angle at which the given evas gradient sits,
- * relative to whatever intrinsic orientation of the grad type.
- * Used mostly by 'linear' kinds of gradients.
- * @param   obj   The given evas gradient object.
- * @param   angle Angle in degrees.  Can be negative.
- */
-EAPI void
-evas_object_gradient_angle_set(Evas_Object *obj, Evas_Angle angle)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (angle == o->cur.map.angle) return;
-   o->cur.map.angle = angle;
-   o->gradient_changed = 1;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Retrieves the angle at which the given evas gradient object sits
- * rel to its intrinsic orientation.
- * @param   obj The given evas gradient object.
- * @return  The current angle if successful. @c 0.0 otherwise.
- */
-EAPI Evas_Angle
-evas_object_gradient_angle_get(const Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return 0;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return 0;
-   MAGIC_CHECK_END();
-   return o->cur.map.angle;
-}
-
-/**
- * Sets the offset of the given evas gradient object's spectrum.
- * @param   obj   The given evas gradient object.
- * @param   offset Values can be negative.
- */
-EAPI void
-evas_object_gradient_offset_set(Evas_Object *obj, float offset)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (offset == o->cur.map.offset) return;
-   o->cur.map.offset = offset;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Retrieves the spectrum's offset
- * @param   obj The given evas gradient object.
- * @return  The current gradient offset if successful. @c 0.0 otherwise.
- */
-EAPI float
-evas_object_gradient_offset_get(const Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return 0.0;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return 0.0;
-   MAGIC_CHECK_END();
-   return o->cur.map.offset;
-}
-
-/**
- * Sets the direction of the given evas gradient object's spectrum.
- * @param   obj   The given evas gradient object.
- * @param   direction Values are either 1 (the default) or -1.
- */
-EAPI void
-evas_object_gradient_direction_set(Evas_Object *obj, int direction)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (direction == o->cur.map.direction) return;
-   o->cur.map.direction = direction;
-   o->changed = 1;
-   o->gradient_changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Retrieves the evas gradient object's spectrum direction
- * @param   obj The given evas gradient object.
- * @return  The current gradient direction if successful. @c 1 otherwise.
- */
-EAPI int
-evas_object_gradient_direction_get(const Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return 0;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return 0;
-   MAGIC_CHECK_END();
-   return o->cur.map.direction;
-}
-
-/**
- * Sets the geometric type displayed by the given gradient object.
- * @param   obj  The given gradient object.
- * @param   name Name of the geometric type that the gradient is to be drawn as.
- * @param   params List of allowable params that the given gradient type allows.
- * Can be NULL.
- */
-EAPI void
-evas_object_gradient_type_set(Evas_Object *obj, const char *name, const char *params)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (!name || !*name)
-     {
-       name = "linear";
-       params = NULL;
-     }
-   if (params && !*params)
-       params = NULL;
-   if ((o->cur.type.name) && (!strcmp(o->cur.type.name, name)))
-     {
-       if ((!o->cur.type.params) && (!params))
-         return;
-       if ((o->cur.type.params) && (params) && (!strcmp(o->cur.type.params, params)))
-         return;
-       if (o->cur.type.params)
-         {
-           if (o->prev.type.params == o->cur.type.params)
-               o->prev.type.params = strdup(o->cur.type.params);
-           free(o->cur.type.params);
-           o->cur.type.params = NULL;
-         }
-       if (params)
-         o->cur.type.params = strdup(params);
-       o->changed = 1;
-       o->gradient_changed = 1;
-       o->type_changed = 1;
-       evas_object_change(obj);
-       return;
-     }
-
-   if (o->cur.type.name)
-     {
-       if (o->prev.type.name == o->cur.type.name)
-         o->prev.type.name = strdup(o->cur.type.name);
-       free(o->cur.type.name);
-       o->cur.type.name = NULL;
-     }
-   o->cur.type.name = strdup(name);
-
-   if (o->cur.type.params)
-     {
-       if (o->prev.type.params == o->cur.type.params)
-         o->prev.type.params = strdup(o->cur.type.params);
-       free(o->cur.type.params);
-       o->cur.type.params = NULL;
-     }
-   if (params)
-       o->cur.type.params = strdup(params);
-   o->changed = 1;
-   o->gradient_changed = 1;
-   o->type_changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Retrieves the type name and params of the given gradient object.
- * @param   obj  The given gradient object.
- * @param   name Pointer to a character pointer to store the pointer to the type
- *               name in.
- * @param   params  Pointer to a character pointer to store the pointer to the type
- *               params string in.
- */
-EAPI void
-evas_object_gradient_type_get(const Evas_Object *obj, char **name, char **params)
-{
-   Evas_Object_Gradient *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   if (name) *name = NULL;
-   if (params) *params = NULL;
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   if (name) *name = NULL;
-   if (params) *params = NULL;
-   return;
-   MAGIC_CHECK_END();
-   if (name) *name = o->cur.type.name;
-   if (params) *params = o->cur.type.params;
-}
-
-
-
-/**
- * @}
- */
-
-/*
-  these two functions don't really belong here as they can apply to other
-  objs as well, but for now..
-*/
-
-/**
- * Convert a given color from HSV to RGB format.
- *
- * @param h The Hue component of the color.
- * @param s The Saturation component of the color.
- * @param v The Value component of the color.
- * @param r The Red component of the color.
- * @param g The Green component of the color.
- * @param b The Blue component of the color.
- *
- * This function converts a given color in HSV color format to RGB
- * color format.
- *
- * @ingroup Evas_Utils
- **/
-EAPI void
-evas_color_hsv_to_rgb(float h, float s, float v, int *r, int *g, int *b)
-{
-   evas_common_convert_color_hsv_to_rgb(h, s, v, r, g, b);
-}
-
-/**
- * Convert a given color from RGB to HSV format.
- *
- * @param r The Red component of the color.
- * @param g The Green component of the color.
- * @param b The Blue component of the color.
- * @param h The Hue component of the color.
- * @param s The Saturation component of the color.
- * @param v The Value component of the color.
- *
- * This function converts a given color in RGB color format to HSV
- * color format.
- *
- * @ingroup Evas_Utils
- **/
-EAPI void
-evas_color_rgb_to_hsv(int r, int g, int b, float *h, float *s, float *v)
-{
-   evas_common_convert_color_rgb_to_hsv(r, g, b, h, s, v);
-}
-
-/**
- * Pre-multiplies a rgb triplet by an alpha factor.
- *
- * @param a The alpha factor.
- * @param r The Red component of the color.
- * @param g The Green component of the color.
- * @param b The Blue component of the color.
- *
- * This function pre-multiplies a given rbg triplet by an alpha
- * factor. Alpha factor is used to define transparency.
- *
- * @ingroup Evas_Utils
- **/
-EAPI void
-evas_color_argb_premul(int a, int *r, int *g, int *b)
-{
-   evas_common_convert_color_argb_premul(a, r, g, b);
-}
-
-/**
- * Undo pre-multiplication of a rgb triplet by an alpha factor.
- *
- * @param a The alpha factor.
- * @param r The Red component of the color.
- * @param g The Green component of the color.
- * @param b The Blue component of the color.
- *
- * This function undoes pre-multiplication a given rbg triplet by an
- * alpha factor. Alpha factor is used to define transparency.
- *
- * @see evas_color_argb_premul().
- *
- * @ingroup Evas_Utils
- **/
-EAPI void
-evas_color_argb_unpremul(int a, int *r, int *g, int *b)
-{
-   evas_common_convert_color_argb_unpremul(a, r, g, b);
-}
-
-/**
- * Pre-multiplies data by an alpha factor.
- *
- * @param data The data value.
- * @param len  The lenght value.
- *
- * This function pre-multiplies a given data by an alpha
- * factor. Alpha factor is used to define transparency.
- *
- * @ingroup Evas_Utils
- **/
-EAPI void
-evas_data_argb_premul(unsigned int *data, unsigned int len)
-{
-   if (!data || (len < 1)) return;
-   evas_common_convert_argb_premul(data, len);
-}
-
-/**
- * Undo pre-multiplication data by an alpha factor.
- *
- * @param data The data value.
- * @param len  The lenght value.
- *
- * This function undoes pre-multiplication of a given data by an alpha
- * factor. Alpha factor is used to define transparency.
- *
- * @ingroup Evas_Utils
- **/
-EAPI void
-evas_data_argb_unpremul(unsigned int *data, unsigned int len)
-{
-   if (!data || (len < 1)) return;
-   evas_common_convert_argb_unpremul(data, len);
-}
-
-
-
-/* all nice and private */
-static void
-evas_object_gradient_init(Evas_Object *obj)
-{
-   /* alloc grad ob, setup methods and default values */
-   obj->object_data = evas_object_gradient_new();
-   /* set up default settings for this kind of object */
-   obj->cur.color.r = 255;
-   obj->cur.color.g = 255;
-   obj->cur.color.b = 255;
-   obj->cur.color.a = 255;
-   obj->cur.geometry.x = 0;
-   obj->cur.geometry.y = 0;
-   obj->cur.geometry.w = 0;
-   obj->cur.geometry.h = 0;
-   obj->cur.layer = 0;
-   obj->cur.anti_alias = 1;
-   obj->cur.interpolation_color_space = EVAS_COLOR_SPACE_ARGB;
-   obj->cur.render_op = EVAS_RENDER_BLEND;
-   /* set up object-specific settings */
-   obj->prev = obj->cur;
-   /* set up methods (compulsory) */
-   obj->func = &object_func;
-   obj->type = o_type;
-}
-
-static void *
-evas_object_gradient_new(void)
-{
-   Evas_Object_Gradient *o;
-
-   /* alloc obj private data */
-   o = calloc(1, sizeof(Evas_Object_Gradient));
-   if (!o) return NULL;
-   o->magic = MAGIC_OBJ_GRADIENT;
-   o->cur.map.angle = 0;
-   o->cur.map.offset = 0.0;
-   o->cur.map.direction = 1;
-   o->cur.fill.x = 0;
-   o->cur.fill.y = 0;
-   o->cur.fill.w = 1;
-   o->cur.fill.h = 1;
-   o->cur.fill.angle = 0;
-   o->cur.fill.spread = EVAS_TEXTURE_REFLECT;
-   o->cur.type.name = strdup("linear");
-   o->cur.type.params = NULL;
-   o->cur.gradient_opaque = 0;
-   o->prev = o->cur;
-   o->changed = 1;
-   o->gradient_changed = 1;
-   o->type_changed = 1;
-   return o;
-}
-
-static void
-evas_object_gradient_free(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   /* frees private object data. very simple here */
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   /* free obj */
-   if (o->prev.type.name && (o->prev.type.name != o->cur.type.name))
-       free(o->prev.type.name);
-   if (o->prev.type.params && (o->prev.type.params != o->cur.type.params))
-       free(o->prev.type.params);
-   if (o->cur.type.name)
-       free(o->cur.type.name);
-   if (o->cur.type.params)
-       free(o->cur.type.params);
-   if (o->engine_data)
-      obj->layer->evas->engine.func->gradient_free(obj->layer->evas->engine.data.output,
-                                                  o->engine_data);
-   free(o);
-   obj->object_data = NULL;
-}
-
-
-static void
-evas_object_grad_get_fill_coords(Evas_Object *obj, Evas_Coord fx, Evas_Coord fy, Evas_Coord fw, Evas_Coord fh, Evas_Coord *fx_ret, Evas_Coord *fy_ret, Evas_Coord *fw_ret,
-Evas_Coord *fh_ret)
-{
-   Evas_Coord  x, y, w, h;
-
-   x = ((fx * obj->layer->evas->output.w) /
-           (Evas_Coord)obj->layer->evas->viewport.w);
-   w = ((fw * obj->layer->evas->output.w) /
-       (Evas_Coord)obj->layer->evas->viewport.w);
-   y = ((fy * obj->layer->evas->output.h) /
-           (Evas_Coord)obj->layer->evas->viewport.h);
-   h = ((fh * obj->layer->evas->output.h) /
-       (Evas_Coord)obj->layer->evas->viewport.h);
-
-   if (w < 1) w = 1;
-   if (h < 1) h = 1;
-
-   *fx_ret = x;  *fw_ret = w;
-   *fy_ret = y;  *fh_ret = h;
-}
-
-
-
-static void
-evas_object_gradient_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
-{
-   Evas_Object_Gradient *o;
-
-   /* render object to surface with context, and offxet by x,y */
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   obj->layer->evas->engine.func->context_multiplier_unset(output, context);
-   obj->layer->evas->engine.func->context_anti_alias_set(output, context, obj->cur.anti_alias);
-   obj->layer->evas->engine.func->context_render_op_set(output, context, obj->cur.render_op);
-   if (o->engine_data)
-     {
-       obj->layer->evas->engine.func->gradient_draw(output, context, surface,
-                                                    o->engine_data,
-                                                    obj->cur.geometry.x + x,
-                                                    obj->cur.geometry.y + y,
-                                                    obj->cur.geometry.w,
-                                                    obj->cur.geometry.h);
-////                                                obj->cur.cache.geometry.x + x,
-////                                                obj->cur.cache.geometry.y + y,
-////                                                obj->cur.cache.geometry.w,
-////                                                obj->cur.cache.geometry.h);
-     }
-}
-
-static void
-evas_object_gradient_render_pre(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-   int is_v, was_v;
-
-   /* dont pre-render the obj twice! */
-   if (obj->pre_render_done) return;
-   obj->pre_render_done = 1;
-   /* pre-render phase. this does anything an object needs to do just before */
-   /* rendering. this could mean loading the image data, retrieving it from */
-   /* elsewhere, decoding video etc. */
-   /* then when this is done the object needs to figure if it changed and */
-   /* if so what and where and add the appropriate redraw rectangles */
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   /* if someone is clipping this obj - go calculate the clipper */
-   if (obj->cur.clipper)
-     {
-       if (obj->cur.cache.clip.dirty)
-         evas_object_clip_recalc(obj->cur.clipper);
-       obj->cur.clipper->func->render_pre(obj->cur.clipper);
-     }
-   /* if it changed color */
-   if ((obj->cur.color.r != obj->prev.color.r) ||
-       (obj->cur.color.g != obj->prev.color.g) ||
-       (obj->cur.color.b != obj->prev.color.b) ||
-       (obj->cur.color.a != obj->prev.color.a))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if ((!o->gradient_changed) && ((obj->cur.cache.clip.r != obj->prev.cache.clip.r) ||
-       (obj->cur.cache.clip.g != obj->prev.cache.clip.g) ||
-       (obj->cur.cache.clip.b != obj->prev.cache.clip.b) ||
-       (obj->cur.cache.clip.a != obj->prev.cache.clip.a)))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if (!o->gradient_changed && (obj->cur.interpolation_color_space != obj->prev.interpolation_color_space))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if (!o->changed && (obj->cur.render_op != obj->prev.render_op))
-       o->changed = 1;
-   if (!o->changed && (obj->cur.anti_alias != obj->prev.anti_alias))
-       o->changed = 1;
-   if (o->changed && o->engine_data)
-     {
-       Evas_Coord  fx, fy, fw, fh;
-
-       evas_object_grad_get_fill_coords(obj, o->cur.fill.x, o->cur.fill.y,
-                                        o->cur.fill.w, o->cur.fill.h,
-                                        &fx, &fy, &fw, &fh);
-       obj->layer->evas->engine.func->gradient_fill_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                        fx, fy, fw, fh);
-       obj->layer->evas->engine.func->gradient_fill_angle_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                               o->cur.fill.angle);
-       obj->layer->evas->engine.func->gradient_fill_spread_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                               o->cur.fill.spread);
-       obj->layer->evas->engine.func->gradient_angle_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                         o->cur.map.angle);
-       obj->layer->evas->engine.func->gradient_direction_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                             o->cur.map.direction);
-       obj->layer->evas->engine.func->gradient_offset_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                          o->cur.map.offset);
-       if (o->type_changed)
-           obj->layer->evas->engine.func->gradient_type_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                             o->cur.type.name, o->cur.type.params);
-
-       obj->layer->evas->engine.func->context_anti_alias_set(obj->layer->evas->engine.data.output,
-                                                               obj->layer->evas->engine.data.context,
-                                                               obj->cur.anti_alias);
-       obj->layer->evas->engine.func->context_render_op_set(obj->layer->evas->engine.data.output,
-                                                            obj->layer->evas->engine.data.context, obj->cur.render_op);
-       obj->layer->evas->engine.func->context_multiplier_set(obj->layer->evas->engine.data.output,
-                                                               obj->layer->evas->engine.data.context,
-                                                               obj->cur.cache.clip.r, obj->cur.cache.clip.g,
-                                                               obj->cur.cache.clip.b, obj->cur.cache.clip.a);
-       obj->layer->evas->engine.func->context_color_interpolation_set(obj->layer->evas->engine.data.output,
-                                                                       obj->layer->evas->engine.data.context,
-                                                                       obj->cur.interpolation_color_space);
-       if (o->gradient_changed)
-           obj->layer->evas->engine.func->gradient_render_pre(obj->layer->evas->engine.data.output,
-                                                               obj->layer->evas->engine.data.context,
-                                                               o->engine_data);
-       o->cur.gradient_opaque = obj->layer->evas->engine.func->gradient_is_opaque(obj->layer->evas->engine.data.output,
-                                                                                  obj->layer->evas->engine.data.context,
-                                                                                  o->engine_data,
-                                                                                  obj->cur.cache.clip.x, obj->cur.cache.clip.y,
-                                                                                  obj->cur.cache.clip.w, obj->cur.cache.clip.h);
-
-       if (obj->cur.cache.clip.a != 255)
-           o->cur.gradient_opaque = 0;
-    }
-   /* now figure what changed and add draw rects */
-   /* if it just became visible or invisible */
-   is_v = evas_object_is_visible(obj);
-   was_v = evas_object_was_visible(obj);
-   if (is_v != was_v)
-     {
-       evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
-       goto done;
-     }
-   if (obj->cur.map != obj->prev.map)
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-        goto done;
-     }
-   /* its not visible - we accounted for it appearing or not so just abort */
-   if (!is_v) goto done;
-   /* clipper changed this is in addition to anything else for obj */
-   evas_object_render_pre_clipper_change(&obj->layer->evas->clip_changes, obj);
-   /* gradient changed */
-   if (o->changed || obj->restack)
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-       goto done;
-     }
-   /* if it changed geometry */
-   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
-       (obj->cur.geometry.y != obj->prev.geometry.y) ||
-       (obj->cur.geometry.w != obj->prev.geometry.w) ||
-       (obj->cur.geometry.h != obj->prev.geometry.h))
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-       goto done;
-     }
-   /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
-   /* area so if there were updates for it they get wiped. don't do it if we */
-   /* arent fully opaque and we are visible */
-
-   if (evas_object_is_visible(obj) &&
-       evas_object_is_opaque(obj))
-     obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
-                                                           obj->cur.cache.clip.x,
-                                                           obj->cur.cache.clip.y,
-                                                           obj->cur.cache.clip.w,
-                                                           obj->cur.cache.clip.h);
-
-   done:
-   evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, obj, is_v, was_v);
-}
-
-static void
-evas_object_gradient_render_post(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   /* this moves the current data to the previous state parts of the object */
-   /* in whatever way is safest for the object. also if we don't need object */
-   /* data anymore we can free it if the object deems this is a good idea */
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   /* remove those pesky changes */
-   evas_object_clip_changes_clean(obj);
-   /* move cur to prev safely for object data */
-   obj->prev = obj->cur;
-   if (o->prev.type.name && (o->prev.type.name != o->cur.type.name))
-       free(o->prev.type.name);
-   if (o->prev.type.params && (o->prev.type.params != o->cur.type.params))
-       free(o->prev.type.params);
-   o->prev = o->cur;
-   o->changed = 0;
-   o->gradient_changed = 0;
-   o->type_changed = 0;
-}
-
-static unsigned int evas_object_gradient_id_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   if (!o) return 0;
-   return MAGIC_OBJ_GRADIENT;
-}
-
-static unsigned int evas_object_gradient_visual_id_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   if (!o) return 0;
-   return MAGIC_OBJ_GRADIENT;
-}
-
-static void *evas_object_gradient_engine_data_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   if (!o) return NULL;
-   return o->engine_data;
-}
-
-static int
-evas_object_gradient_is_opaque(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   /* this returns 1 if the internal object data implies that the object is */
-   /* currently fully opaque over the entire region it occupies */
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   if (!o->engine_data) return 0;
-   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
-   return o->cur.gradient_opaque;
-}
-
-static int
-evas_object_gradient_was_opaque(Evas_Object *obj)
-{
-   Evas_Object_Gradient *o;
-
-   /* this returns 1 if the internal object data implies that the object was */
-   /* currently fully opaque over the entire region it occupies */
-   o = (Evas_Object_Gradient *)(obj->object_data);
-   if (!o->engine_data) return 0;
-   return o->prev.gradient_opaque;
-}
diff --git a/src/lib/canvas/evas_object_gradient2.c b/src/lib/canvas/evas_object_gradient2.c
deleted file mode 100644 (file)
index 6511aa5..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-#include "evas_common.h"
-#include "evas_private.h"
-
-typedef struct _Evas_Object_Gradient2      Evas_Object_Gradient2;
-
-struct _Evas_Object_Gradient2
-{
-   DATA32            magic;
-
-   struct {
-      struct {
-         Evas_Common_Transform  transform;
-         int         spread;
-      } fill;
-      unsigned char    gradient_opaque : 1;
-   } cur, prev;
-
-   unsigned char     gradient_changed : 1;
-};
-
-
-/**
- * @addtogroup Evas_Object_Gradient2_Group
- * @{
- */
-
-/**
- * Inserts a color stop to the given evas gradient object.
- *
- * The @p pos parameter determines where along the unit interval
- * [0,1] the color is to be inserted. The r,g,b,a data are assumed
- * input as being NON-PREMULTIPLIED.
- *
- * @param   obj      The given evas gradient object.
- * @param   r        Red component of the given color.
- * @param   g        Green component of the given color.
- * @param   b        Blue component of the given color.
- * @param   a        Alpha component of the given color.
- * @param   pos      The pos in [0,1] of this stop.
- */
-EAPI void
-evas_object_gradient2_color_np_stop_insert(Evas_Object *obj, int r, int g, int b, int a, float pos)
-{
-   Evas_Object_Gradient2 *og;
-   void *engine_data;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   og = (Evas_Object_Gradient2 *)(obj->object_data);
-   MAGIC_CHECK(og, Evas_Object_Gradient2, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   engine_data = obj->func->engine_data_get(obj);
-   if (engine_data)
-     {
-#ifdef EVAS_FRAME_QUEUING
-        evas_common_pipe_op_grad2_flush(engine_data);
-#endif
-
-        obj->layer->evas->engine.func->gradient2_color_np_stop_insert(obj->layer->evas->engine.data.output,
-                           engine_data,
-                           r, g, b, a, pos);
-     }
-   og->gradient_changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Deletes all stops set for the given evas gradient object or any set data.
- * @param   obj The given evas gradient object.
- */
-EAPI void
-evas_object_gradient2_clear(Evas_Object *obj)
-{
-   Evas_Object_Gradient2 *og;
-   void *engine_data;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   og = (Evas_Object_Gradient2 *)(obj->object_data);
-   MAGIC_CHECK(og, Evas_Object_Gradient2, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   engine_data = obj->func->engine_data_get(obj);
-   if (engine_data)
-     {
-#ifdef EVAS_FRAME_QUEUING
-        evas_common_pipe_op_grad2_flush(engine_data);
-#endif
-        obj->layer->evas->engine.func->gradient2_clear(obj->layer->evas->engine.data.output,
-                        engine_data);
-     }
-   og->gradient_changed = 1;
-   og->cur.gradient_opaque = 0;
-   evas_object_change(obj);
-}
-
-
-/**
- * Sets the tiling mode for the given evas gradient object's fill.
- * @param   obj   The given evas gradient object.
- * @param   spread One of EVAS_TEXTURE_REFLECT, EVAS_TEXTURE_REPEAT,
- * EVAS_TEXTURE_RESTRICT, or EVAS_TEXTURE_PAD.
- */
-EAPI void
-evas_object_gradient2_fill_spread_set(Evas_Object *obj, int spread)
-{
-   Evas_Object_Gradient2 *og;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   og = (Evas_Object_Gradient2 *)(obj->object_data);
-   MAGIC_CHECK(og, Evas_Object_Gradient2, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (spread == og->cur.fill.spread) return;
-   og->cur.fill.spread = spread;
-   og->gradient_changed = 1;
-   evas_object_change(obj);
-}
-
-/**
- * Retrieves the spread (tiling mode) for the given gradient object's fill.
- * @param   obj The given evas gradient object.
- * @return  The current spread mode of the gradient object.
- */
-EAPI int
-evas_object_gradient2_fill_spread_get(const Evas_Object *obj)
-{
-   Evas_Object_Gradient2 *og;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return EVAS_TEXTURE_REPEAT;
-   MAGIC_CHECK_END();
-   og = (Evas_Object_Gradient2 *)(obj->object_data);
-   MAGIC_CHECK(og, Evas_Object_Gradient2, MAGIC_OBJ_GRADIENT);
-   return EVAS_TEXTURE_REPEAT;
-   MAGIC_CHECK_END();
-   return og->cur.fill.spread;
-}
-
-/* FIXME: To be documented*/
-EAPI void
-evas_object_gradient2_fill_transform_set (Evas_Object *obj, Evas_Transform *t)
-{
-   Evas_Object_Gradient2 *og;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   og = (Evas_Object_Gradient2 *)(obj->object_data);
-   MAGIC_CHECK(og, Evas_Object_Gradient2, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (!t)
-     {
-       og->cur.fill.transform.mxx = 1;
-       og->cur.fill.transform.mxy = 0;
-       og->cur.fill.transform.mxz = 0;
-       og->cur.fill.transform.myx = 0;
-       og->cur.fill.transform.myy = 1;
-       og->cur.fill.transform.myz = 0;
-       og->cur.fill.transform.mzx = 0;
-       og->cur.fill.transform.mzy = 0;
-       og->cur.fill.transform.mzz = 1;
-
-       og->gradient_changed = 1;
-       evas_object_change(obj);
-       return;
-     }
-   if ( (og->cur.fill.transform.mxx == t->mxx) ||
-        (og->cur.fill.transform.mxy == t->mxy) ||
-        (og->cur.fill.transform.mxy == t->mxy) ||
-        (og->cur.fill.transform.mxy == t->mxy) ||
-        (og->cur.fill.transform.mxy == t->mxy) ||
-        (og->cur.fill.transform.mxy == t->mxy) ||
-        (og->cur.fill.transform.mxy == t->mxy) ||
-        (og->cur.fill.transform.mxy == t->mxy) ||
-        (og->cur.fill.transform.mxy == t->mxy) )
-           return;
-
-   og->cur.fill.transform.mxx = t->mxx;
-   og->cur.fill.transform.mxy = t->mxy;
-   og->cur.fill.transform.mxz = t->mxz;
-   og->cur.fill.transform.myx = t->myx;
-   og->cur.fill.transform.myy = t->myy;
-   og->cur.fill.transform.myz = t->myz;
-   og->cur.fill.transform.mzx = t->mzx;
-   og->cur.fill.transform.mzy = t->mzy;
-   og->cur.fill.transform.mzz = t->mzz;
-
-   og->gradient_changed = 1;
-   evas_object_change(obj);
-}
-
-/* FIXME: To be documented*/
-EAPI void
-evas_object_gradient2_fill_transform_get (const Evas_Object *obj, Evas_Transform *t)
-{
-   Evas_Object_Gradient2 *og;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   og = (Evas_Object_Gradient2 *)(obj->object_data);
-   MAGIC_CHECK(og, Evas_Object_Gradient2, MAGIC_OBJ_GRADIENT);
-   return;
-   MAGIC_CHECK_END();
-   if (t)
-     {
-        t->mxx = og->cur.fill.transform.mxx;
-        t->mxy = og->cur.fill.transform.mxy;
-        t->mxz = og->cur.fill.transform.mxz;
-        t->myx = og->cur.fill.transform.myx;
-        t->myy = og->cur.fill.transform.myy;
-        t->myz = og->cur.fill.transform.myz;
-        t->mzx = og->cur.fill.transform.mzx;
-        t->mzy = og->cur.fill.transform.mzy;
-        t->mzz = og->cur.fill.transform.mzz;
-     }
-}
-
-
-
-/**
- * @}
- */
-
-#include "evas_object_gradient2_linear.c"
-#include "evas_object_gradient2_radial.c"
diff --git a/src/lib/canvas/evas_object_gradient2_linear.c b/src/lib/canvas/evas_object_gradient2_linear.c
deleted file mode 100644 (file)
index 4358463..0000000
+++ /dev/null
@@ -1,474 +0,0 @@
-#include "evas_common.h"
-#include "evas_private.h"
-
-/* private magic number for linear gradient objects */
-static const char lg_type[] = "linear_gradient";
-
-/* private struct for gradient object internal data */
-typedef struct _Evas_Object_Gradient2_Linear      Evas_Object_Gradient2_Linear;
-
-struct _Evas_Object_Gradient2_Linear
-{
-   Evas_Object_Gradient2 base;
-
-   DATA32            magic;
-
-   struct {
-      struct {
-          float  x0, y0, x1, y1;
-      } fill;
-   } cur, prev;
-
-   void             *engine_data;
-
-   unsigned char     gradient_changed : 1;
-   unsigned char     changed : 1;
-};
-
-/* private methods for linear gradient objects */
-static void evas_object_gradient2_linear_init(Evas_Object *obj);
-static void *evas_object_gradient2_linear_new(void);
-
-static void evas_object_gradient2_linear_free(Evas_Object *obj);
-static void evas_object_gradient2_linear_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
-static void evas_object_gradient2_linear_render_pre(Evas_Object *obj);
-static void evas_object_gradient2_linear_render_post(Evas_Object *obj);
-
-static unsigned int evas_object_gradient2_linear_id_get(Evas_Object *obj);
-static unsigned int evas_object_gradient2_linear_visual_id_get(Evas_Object *obj);
-static void *evas_object_gradient2_linear_engine_data_get(Evas_Object *obj);
-
-static int evas_object_gradient2_linear_is_opaque(Evas_Object *obj);
-static int evas_object_gradient2_linear_was_opaque(Evas_Object *obj);
-
-static const Evas_Object_Func object_func =
-{
-   /* methods (compulsory) */
-   evas_object_gradient2_linear_free,
-     evas_object_gradient2_linear_render,
-     evas_object_gradient2_linear_render_pre,
-     evas_object_gradient2_linear_render_post,
-     evas_object_gradient2_linear_id_get,
-     evas_object_gradient2_linear_visual_id_get,
-     evas_object_gradient2_linear_engine_data_get,
-   /* these are optional. NULL = nothing */
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     evas_object_gradient2_linear_is_opaque,
-     evas_object_gradient2_linear_was_opaque,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL
-};
-
-/* the actual api call to add a gradient */
-
-/**
- * @addtogroup Evas_Object_Gradient2_Group
- * @{
- * @ingroup Evas_Object_Specific
- */
-
-/**
- * Adds a gradient object to the given evas.
- * @param   e The given evas.
- * @return  A new evas gradient object if successful.  Otherwise, @c NULL.
- */
-EAPI Evas_Object *
-evas_object_gradient2_linear_add(Evas *e)
-{
-   Evas_Object *obj;
-
-   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
-   return NULL;
-   MAGIC_CHECK_END();
-   obj = evas_object_new(e);
-   evas_object_gradient2_linear_init(obj);
-   evas_object_inject(obj, e);
-   if (obj->object_data)
-     {
-       Evas_Object_Gradient2_Linear *o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-
-       o->engine_data = e->engine.func->gradient2_linear_new(e->engine.data.output);
-     }
-   return obj;
-}
-
-
-/**
- * Sets the start and end points of the linear gradient geometry for the object.
- *
- * Note that the gradient may extend beyond these,
- * according to its spread value - restrict, repeat, or reflect.  To have
- * only one 'cycle' of the gradient drawn, the spread value must be set
- * to restrict.
- * The default values for the fill parameters is @p x0 = 0, @p y0 = 0,
- * @p x1 = 0 and @p y1 = 0.
- *
- * @param   obj The given evas linear gradient object.
- * @param   x0   The X coordinate of the start point.
- * @param   y0   The Y coordinate of the start point.
- * @param   x1   The X coordinate of the end point.
- * @param   y1   The Y coordinate of the end point
- */
-EAPI void
-evas_object_gradient2_linear_fill_set(Evas_Object *obj, float x0, float y0, float x1, float y1)
-{
-   Evas_Object_Gradient2_Linear *o;
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient2_Linear, MAGIC_OBJ_GRADIENT_LINEAR);
-   return;
-   MAGIC_CHECK_END();
-   if ((o->cur.fill.x0 == x0) &&
-       (o->cur.fill.y0 == y0) &&
-       (o->cur.fill.x1 == x1) &&
-       (o->cur.fill.y1 == y1)) return;
-   o->cur.fill.x0 = x0;
-   o->cur.fill.y0 = y0;
-   o->cur.fill.x1 = x1;
-   o->cur.fill.y1 = y1;
-   o->gradient_changed = 1;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-/*FIXME: To be documented*/
-EAPI void
-evas_object_gradient2_linear_fill_get(const Evas_Object *obj, float *x0, float *y0, float *x1, float *y1)
-{
-   Evas_Object_Gradient2_Linear *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   if (x0) *x0 = 0;
-   if (y0) *y0 = 0;
-   if (x1) *x1 = 0;
-   if (y1) *y1 = 0;
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient2_Linear, MAGIC_OBJ_GRADIENT_LINEAR);
-   if (x0) *x0 = 0;
-   if (y0) *y0 = 0;
-   if (x1) *x1 = 0;
-   if (y1) *y1 = 0;
-   return;
-   MAGIC_CHECK_END();
-   if (x0) *x0 = o->cur.fill.x0;
-   if (y0) *y0 = o->cur.fill.y0;
-   if (x1) *x1 = o->cur.fill.x1;
-   if (y1) *y1 = o->cur.fill.y1;
-   return;
-}
-
-/**
- * @}
- */
-
-/* all nice and private */
-static void
-evas_object_gradient2_linear_init(Evas_Object *obj)
-{
-   /* alloc grad ob, setup methods and default values */
-   obj->object_data = evas_object_gradient2_linear_new();
-   /* set up default settings for this kind of object */
-   obj->cur.color.r = 255;
-   obj->cur.color.g = 255;
-   obj->cur.color.b = 255;
-   obj->cur.color.a = 255;
-   obj->cur.geometry.x = 0;
-   obj->cur.geometry.y = 0;
-   obj->cur.geometry.w = 0;
-   obj->cur.geometry.h = 0;
-   obj->cur.layer = 0;
-   obj->cur.anti_alias = 1;
-   obj->cur.interpolation_color_space = EVAS_COLOR_SPACE_ARGB;
-   obj->cur.render_op = EVAS_RENDER_BLEND;
-   /* set up object-specific settings */
-   obj->prev = obj->cur;
-   /* set up methods (compulsory) */
-   obj->func = &object_func;
-   obj->type = lg_type;
-   obj->changed = 1;
-}
-
-static void *
-evas_object_gradient2_linear_new(void)
-{
-   Evas_Object_Gradient2_Linear *o;
-   Evas_Object_Gradient2 *og;
-
-   /* alloc obj private data */
-   o = calloc(1, sizeof(Evas_Object_Gradient2_Linear));
-   if (!o) return NULL;
-   o->magic = MAGIC_OBJ_GRADIENT_LINEAR;
-   o->cur.fill.x0 = 0;
-   o->cur.fill.y0 = 0;
-   o->cur.fill.x1 = 1;
-   o->cur.fill.y1 = 1;
-   og = (Evas_Object_Gradient2 *)o;
-   og->magic = MAGIC_OBJ_GRADIENT;
-   og->cur.fill.transform.mxx = og->cur.fill.transform.myy = og->cur.fill.transform.mzz = 1;
-   og->cur.fill.spread = EVAS_TEXTURE_REPEAT;
-   og->cur.gradient_opaque = 0;
-   og->prev = og->cur;
-   og->gradient_changed = 1;
-   o->prev = o->cur;
-   o->changed = 1;
-   o->gradient_changed = 1;
-   return o;
-}
-
-static void
-evas_object_gradient2_linear_free(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Linear *o;
-
-   /* frees private object data. very simple here */
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient2_Linear, MAGIC_OBJ_GRADIENT_LINEAR);
-   return;
-   MAGIC_CHECK_END();
-   /* free obj */
-   if (o->engine_data)
-      obj->layer->evas->engine.func->gradient2_linear_free(obj->layer->evas->engine.data.output,
-                                                         o->engine_data);
-   free(o);
-   obj->object_data = NULL;
-}
-
-
-
-static void
-evas_object_gradient2_linear_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
-{
-   Evas_Object_Gradient2_Linear *o;
-
-   /* render object to surface with context, and offxet by x,y */
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   obj->layer->evas->engine.func->context_multiplier_unset(output, context);
-   obj->layer->evas->engine.func->context_anti_alias_set(output, context, obj->cur.anti_alias);
-   obj->layer->evas->engine.func->context_render_op_set(output, context, obj->cur.render_op);
-   if (o->engine_data)
-     {
-       obj->layer->evas->engine.func->gradient2_linear_draw(output, context, surface,
-                                                    o->engine_data,
-                                                    obj->cur.geometry.x + x,
-                                                    obj->cur.geometry.y + y,
-                                                    obj->cur.geometry.w,
-                                                    obj->cur.geometry.h);
-     }
-}
-
-static void
-evas_object_gradient2_linear_render_pre(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Linear *o;
-   Evas_Object_Gradient2 *og;
-   int is_v, was_v;
-
-   /* dont pre-render the obj twice! */
-   if (obj->pre_render_done) return;
-   obj->pre_render_done = 1;
-   /* pre-render phase. this does anything an object needs to do just before */
-   /* rendering. this could mean loading the image data, retrieving it from */
-   /* elsewhere, decoding video etc. */
-   /* then when this is done the object needs to figure if it changed and */
-   /* if so what and where and add the appropriate redraw rectangles */
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   og = (Evas_Object_Gradient2 *)(o);
-   /* if someone is clipping this obj - go calculate the clipper */
-   if (obj->cur.clipper)
-     {
-       if (obj->cur.cache.clip.dirty)
-         evas_object_clip_recalc(obj->cur.clipper);
-       obj->cur.clipper->func->render_pre(obj->cur.clipper);
-     }
-   /* if it changed color */
-   if ((obj->cur.color.r != obj->prev.color.r) ||
-       (obj->cur.color.g != obj->prev.color.g) ||
-       (obj->cur.color.b != obj->prev.color.b) ||
-       (obj->cur.color.a != obj->prev.color.a))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if ((!o->gradient_changed) && ((obj->cur.cache.clip.r != obj->prev.cache.clip.r) ||
-       (obj->cur.cache.clip.g != obj->prev.cache.clip.g) ||
-       (obj->cur.cache.clip.b != obj->prev.cache.clip.b) ||
-       (obj->cur.cache.clip.a != obj->prev.cache.clip.a)))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if (!o->gradient_changed && (obj->cur.interpolation_color_space != obj->prev.interpolation_color_space))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if (!o->changed && (obj->cur.render_op != obj->prev.render_op))
-       o->changed = 1;
-//   if (!o->changed && (obj->cur.anti_alias != obj->prev.anti_alias))
-//     o->changed = 1;
-   if (og->gradient_changed)
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if (o->changed && o->engine_data)
-     {
-       obj->layer->evas->engine.func->context_render_op_set(obj->layer->evas->engine.data.output,
-                                                            obj->layer->evas->engine.data.context, obj->cur.render_op);
-       obj->layer->evas->engine.func->context_multiplier_set(obj->layer->evas->engine.data.output,
-                                                               obj->layer->evas->engine.data.context,
-                                                               obj->cur.cache.clip.r, obj->cur.cache.clip.g,
-                                                               obj->cur.cache.clip.b, obj->cur.cache.clip.a);
-       obj->layer->evas->engine.func->context_color_interpolation_set(obj->layer->evas->engine.data.output,
-                                                                       obj->layer->evas->engine.data.context,
-                                                                       obj->cur.interpolation_color_space);
-       if (o->gradient_changed)
-         {
-           obj->layer->evas->engine.func->gradient2_linear_fill_set(obj->layer->evas->engine.data.output, o->engine_data, o->cur.fill.x0, o->cur.fill.y0, o->cur.fill.x1, o->cur.fill.y1);
-           obj->layer->evas->engine.func->gradient2_fill_transform_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                               &og->cur.fill.transform);
-           obj->layer->evas->engine.func->gradient2_fill_spread_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                               og->cur.fill.spread);
-           obj->layer->evas->engine.func->gradient2_linear_render_pre(obj->layer->evas->engine.data.output,
-                                                               obj->layer->evas->engine.data.context,
-                                                               o->engine_data);
-         }
-       og->cur.gradient_opaque = obj->layer->evas->engine.func->gradient2_linear_is_opaque(obj->layer->evas->engine.data.output,
-                                                                                  obj->layer->evas->engine.data.context,
-                                                                                  o->engine_data,
-                                                                                  obj->cur.cache.clip.x, obj->cur.cache.clip.y,
-                                                                                  obj->cur.cache.clip.w, obj->cur.cache.clip.h);
-
-       if (obj->cur.cache.clip.a != 255)
-           og->cur.gradient_opaque = 0;
-    }
-
-   /* now figure what changed and add draw rects */
-   /* if it just became visible or invisible */
-   is_v = evas_object_is_visible(obj);
-   was_v = evas_object_was_visible(obj);
-   if (is_v != was_v)
-     {
-       evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
-       goto done;
-     }
-   if ((obj->cur.map != obj->prev.map) ||
-       (obj->cur.usemap != obj->prev.usemap))
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-        goto done;
-     }
-   /* its not visible - we accounted for it appearing or not so just abort */
-   if (!is_v) goto done;
-   /* clipper changed this is in addition to anything else for obj */
-   evas_object_render_pre_clipper_change(&obj->layer->evas->clip_changes, obj);
-   /* gradient changed */
-   if (o->changed || obj->restack)
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-       goto done;
-     }
-   /* if it changed geometry */
-   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
-       (obj->cur.geometry.y != obj->prev.geometry.y) ||
-       (obj->cur.geometry.w != obj->prev.geometry.w) ||
-       (obj->cur.geometry.h != obj->prev.geometry.h))
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-       goto done;
-     }
-   /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
-   /* area so if there were updates for it they get wiped. don't do it if we */
-   /* arent fully opaque and we are visible */
-
-   if (evas_object_is_visible(obj) &&
-       evas_object_is_opaque(obj))
-     obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
-                                                           obj->cur.cache.clip.x,
-                                                           obj->cur.cache.clip.y,
-                                                           obj->cur.cache.clip.w,
-                                                           obj->cur.cache.clip.h);
-
-   done:
-   evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, obj, is_v, was_v);
-}
-
-static void
-evas_object_gradient2_linear_render_post(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Linear *o;
-   Evas_Object_Gradient2 *og;
-
-   /* this moves the current data to the previous state parts of the object */
-   /* in whatever way is safest for the object. also if we don't need object */
-   /* data anymore we can free it if the object deems this is a good idea */
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   og = (Evas_Object_Gradient2 *)(o);
-   /* remove those pesky changes */
-   evas_object_clip_changes_clean(obj);
-   /* move cur to prev safely for object data */
-   obj->prev = obj->cur;
-   obj->changed = 0;
-   o->prev = o->cur;
-   o->changed = 0;
-   o->gradient_changed = 0;
-   og->prev = og->cur;
-   og->gradient_changed = 0;
-}
-
-static unsigned int evas_object_gradient2_linear_id_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Linear *o;
-
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   if (!o) return 0;
-   return MAGIC_OBJ_GRADIENT_LINEAR;
-}
-
-static unsigned int evas_object_gradient2_linear_visual_id_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Linear *o;
-
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   if (!o) return 0;
-   return MAGIC_OBJ_GRADIENT;
-}
-
-static void *evas_object_gradient2_linear_engine_data_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Linear *o;
-
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   if (!o) return NULL;
-   return o->engine_data;
-}
-
-
-static int
-evas_object_gradient2_linear_is_opaque(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Linear *o;
-   Evas_Object_Gradient2 *og;
-
-   /* this returns 1 if the internal object data implies that the object is */
-   /* currently fully opaque over the entire region it occupies */
-   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   if (!o->engine_data) return 0;
-   og = (Evas_Object_Gradient2 *)(o);
-   return og->cur.gradient_opaque;
- }
-
-static int
-evas_object_gradient2_linear_was_opaque(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Linear *o;
-   Evas_Object_Gradient2 *og;
-
-   /* this returns 1 if the internal object data implies that the object was */
-   /* currently fully opaque over the entire region it occupies */
-   o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
-   if (!o->engine_data) return 0;
-   og = (Evas_Object_Gradient2 *)(o);
-   return og->prev.gradient_opaque;
-}
diff --git a/src/lib/canvas/evas_object_gradient2_radial.c b/src/lib/canvas/evas_object_gradient2_radial.c
deleted file mode 100644 (file)
index a0048be..0000000
+++ /dev/null
@@ -1,471 +0,0 @@
-#include "evas_common.h"
-#include "evas_private.h"
-
-/* private magic number for radial gradient objects */
-static const char rg_type[] = "radial_gradient";
-
-/* private struct for gradient object internal data */
-typedef struct _Evas_Object_Gradient2_Radial      Evas_Object_Gradient2_Radial;
-
-struct _Evas_Object_Gradient2_Radial
-{
-   Evas_Object_Gradient2 base;
-
-   DATA32            magic;
-
-   struct {
-      struct {
-         float  cx, cy, rx, ry;
-      } fill;
-   } cur, prev;
-
-   void             *engine_data;
-
-   unsigned char     gradient_changed : 1;
-   unsigned char     changed : 1;
-};
-
-/* private methods for radial gradient objects */
-static void evas_object_gradient2_radial_init(Evas_Object *obj);
-static void *evas_object_gradient2_radial_new(void);
-
-static void evas_object_gradient2_radial_free(Evas_Object *obj);
-static void evas_object_gradient2_radial_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
-static void evas_object_gradient2_radial_render_pre(Evas_Object *obj);
-static void evas_object_gradient2_radial_render_post(Evas_Object *obj);
-
-static unsigned int evas_object_gradient2_radial_id_get(Evas_Object *obj);
-static unsigned int evas_object_gradient2_radial_visual_id_get(Evas_Object *obj);
-static void *evas_object_gradient2_radial_engine_data_get(Evas_Object *obj);
-
-static int evas_object_gradient2_radial_is_opaque(Evas_Object *obj);
-static int evas_object_gradient2_radial_was_opaque(Evas_Object *obj);
-
-static const Evas_Object_Func rg_object_func =
-{
-   /* methods (compulsory) */
-   evas_object_gradient2_radial_free,
-     evas_object_gradient2_radial_render,
-     evas_object_gradient2_radial_render_pre,
-     evas_object_gradient2_radial_render_post,
-     evas_object_gradient2_radial_id_get,
-     evas_object_gradient2_radial_visual_id_get,
-     evas_object_gradient2_radial_engine_data_get,
-   /* these are optional. NULL = nothing */
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     evas_object_gradient2_radial_is_opaque,
-     evas_object_gradient2_radial_was_opaque,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL,
-     NULL
-};
-
-/* the actual api call to add a gradient */
-
-/**
- * @addtogroup Evas_Object_Gradient2_Group
- * @{
- * @ingroup Evas_Object_Specific
- */
-
-/**
- * Adds a gradient object to the given evas.
- * @param   e The given evas.
- * @return  A new evas gradient object if successful.  Otherwise, @c NULL.
- */
-EAPI Evas_Object *
-evas_object_gradient2_radial_add(Evas *e)
-{
-   Evas_Object *obj;
-
-   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
-   return NULL;
-   MAGIC_CHECK_END();
-   obj = evas_object_new(e);
-   evas_object_gradient2_radial_init(obj);
-   evas_object_inject(obj, e);
-   if (obj->object_data)
-     {
-       Evas_Object_Gradient2_Radial *o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-
-       o->engine_data = e->engine.func->gradient2_radial_new(e->engine.data.output);
-     }
-   return obj;
-}
-
-/**
- * Sets the center and radii of the radial gradient geometry for the object.
- *
- * Note that the gradient may extend beyond these,
- * according to its spread value - restrict, repeat, or reflect.  To have
- * only one 'cycle' of the gradient drawn, the spread value must be set
- * to restrict.
- * The default values for the fill parameters is @p cx = 0, @p cy = 0,
- * @p rx = 0 and @p ry = 0.
- *
- * @param   obj The given evas radial gradient object.
- * @param   cx   The X coordinate of the start point.
- * @param   cy   The Y coordinate of the start point.
- * @param   rx   The length of the x-cordinate radius.
- * @param   ry   The length of the y-coordinate radius.
- */
-EAPI void
-evas_object_gradient2_radial_fill_set(Evas_Object *obj, float cx, float cy, float rx, float ry)
-{
-   Evas_Object_Gradient2_Radial *o;
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient2_Radial, MAGIC_OBJ_GRADIENT_RADIAL);
-   return;
-   MAGIC_CHECK_END();
-   if ((o->cur.fill.cx == cx) &&
-       (o->cur.fill.cy == cy) &&
-       (o->cur.fill.rx == rx) &&
-       (o->cur.fill.ry == ry)) return;
-   o->cur.fill.cx = cx;
-   o->cur.fill.cy = cy;
-   o->cur.fill.rx = rx;
-   o->cur.fill.ry = ry;
-   o->gradient_changed = 1;
-   o->changed = 1;
-   evas_object_change(obj);
-}
-
-EAPI void
-evas_object_gradient2_radial_fill_get(const Evas_Object *obj, float *cx, float *cy, float *rx, float *ry)
-{
-   Evas_Object_Gradient2_Radial *o;
-
-   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
-   if (cx) *cx = 0;
-   if (cy) *cy = 0;
-   if (rx) *rx = 0;
-   if (ry) *ry = 0;
-   return;
-   MAGIC_CHECK_END();
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient2_Radial, MAGIC_OBJ_GRADIENT_RADIAL);
-   if (cx) *cx = 0;
-   if (cy) *cy = 0;
-   if (rx) *rx = 0;
-   if (ry) *ry = 0;
-   return;
-   MAGIC_CHECK_END();
-   if (cx) *cx = o->cur.fill.cx;
-   if (cy) *cy = o->cur.fill.cy;
-   if (rx) *rx = o->cur.fill.rx;
-   if (ry) *ry = o->cur.fill.ry;
-   return;
-}
-
-/**
- * @}
- */
-
-/* all nice and private */
-static void
-evas_object_gradient2_radial_init(Evas_Object *obj)
-{
-   /* alloc grad ob, setup methods and default values */
-   obj->object_data = evas_object_gradient2_radial_new();
-   /* set up default settings for this kind of object */
-   obj->cur.color.r = 255;
-   obj->cur.color.g = 255;
-   obj->cur.color.b = 255;
-   obj->cur.color.a = 255;
-   obj->cur.geometry.x = 0;
-   obj->cur.geometry.y = 0;
-   obj->cur.geometry.w = 0;
-   obj->cur.geometry.h = 0;
-   obj->cur.layer = 0;
-   obj->cur.anti_alias = 1;
-   obj->cur.interpolation_color_space = EVAS_COLOR_SPACE_ARGB;
-   obj->cur.render_op = EVAS_RENDER_BLEND;
-   /* set up object-specific settings */
-   obj->prev = obj->cur;
-   /* set up methods (compulsory) */
-   obj->func = &rg_object_func;
-   obj->type = rg_type;
-   obj->changed = 1;
-}
-
-static void *
-evas_object_gradient2_radial_new(void)
-{
-   Evas_Object_Gradient2_Radial *o;
-   Evas_Object_Gradient2 *og;
-
-   /* alloc obj private data */
-   o = calloc(1, sizeof(Evas_Object_Gradient2_Radial));
-   if (!o) return NULL;
-   o->magic = MAGIC_OBJ_GRADIENT_RADIAL;
-   o->cur.fill.cx = 0;
-   o->cur.fill.cy = 0;
-   o->cur.fill.rx = 1;
-   o->cur.fill.ry = 1;
-   og = (Evas_Object_Gradient2 *)o;
-   og->magic = MAGIC_OBJ_GRADIENT;
-   og->cur.fill.transform.mxx = og->cur.fill.transform.myy = og->cur.fill.transform.mzz = 1;
-   og->cur.fill.spread = EVAS_TEXTURE_REPEAT;
-   og->cur.gradient_opaque = 0;
-   og->prev = og->cur;
-   og->gradient_changed = 1;
-   o->prev = o->cur;
-   o->changed = 1;
-   o->gradient_changed = 1;
-   return o;
-}
-
-static void
-evas_object_gradient2_radial_free(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Radial *o;
-
-   /* frees private object data. very simple here */
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   MAGIC_CHECK(o, Evas_Object_Gradient2_Radial, MAGIC_OBJ_GRADIENT_RADIAL);
-   return;
-   MAGIC_CHECK_END();
-   /* free obj */
-   if (o->engine_data)
-      obj->layer->evas->engine.func->gradient2_radial_free(obj->layer->evas->engine.data.output,
-                                                         o->engine_data);
-   free(o);
-   obj->object_data = NULL;
-}
-
-
-
-static void
-evas_object_gradient2_radial_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
-{
-   Evas_Object_Gradient2_Radial *o;
-
-   /* render object to surface with context, and offxet by x,y */
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   obj->layer->evas->engine.func->context_multiplier_unset(output, context);
-   obj->layer->evas->engine.func->context_anti_alias_set(output, context, obj->cur.anti_alias);
-   obj->layer->evas->engine.func->context_render_op_set(output, context, obj->cur.render_op);
-   if (o->engine_data)
-     {
-       obj->layer->evas->engine.func->gradient2_radial_draw(output, context, surface,
-                                                    o->engine_data,
-                                                    obj->cur.geometry.x + x,
-                                                    obj->cur.geometry.y + y,
-                                                    obj->cur.geometry.w,
-                                                    obj->cur.geometry.h);
-     }
-}
-
-static void
-evas_object_gradient2_radial_render_pre(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Radial *o;
-   Evas_Object_Gradient2 *og;
-   int is_v, was_v;
-
-   /* dont pre-render the obj twice! */
-   if (obj->pre_render_done) return;
-   obj->pre_render_done = 1;
-   /* pre-render phase. this does anything an object needs to do just before */
-   /* rendering. this could mean loading the image data, retrieving it from */
-   /* elsewhere, decoding video etc. */
-   /* then when this is done the object needs to figure if it changed and */
-   /* if so what and where and add the appropriate redraw rectangles */
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   og = (Evas_Object_Gradient2 *)(o);
-   /* if someone is clipping this obj - go calculate the clipper */
-   if (obj->cur.clipper)
-     {
-       if (obj->cur.cache.clip.dirty)
-         evas_object_clip_recalc(obj->cur.clipper);
-       obj->cur.clipper->func->render_pre(obj->cur.clipper);
-     }
-   /* if it changed color */
-   if ((obj->cur.color.r != obj->prev.color.r) ||
-       (obj->cur.color.g != obj->prev.color.g) ||
-       (obj->cur.color.b != obj->prev.color.b) ||
-       (obj->cur.color.a != obj->prev.color.a))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if ((!o->gradient_changed) && ((obj->cur.cache.clip.r != obj->prev.cache.clip.r) ||
-       (obj->cur.cache.clip.g != obj->prev.cache.clip.g) ||
-       (obj->cur.cache.clip.b != obj->prev.cache.clip.b) ||
-       (obj->cur.cache.clip.a != obj->prev.cache.clip.a)))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if (!o->gradient_changed && (obj->cur.interpolation_color_space != obj->prev.interpolation_color_space))
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if (!o->changed && (obj->cur.render_op != obj->prev.render_op))
-       o->changed = 1;
-//   if (!o->changed && (obj->cur.anti_alias != obj->prev.anti_alias))
-//     o->changed = 1;
-   if (og->gradient_changed)
-     { o->gradient_changed = 1;  o->changed = 1; }
-   if (o->changed && o->engine_data)
-     {
-       obj->layer->evas->engine.func->context_render_op_set(obj->layer->evas->engine.data.output,
-                                                            obj->layer->evas->engine.data.context, obj->cur.render_op);
-       obj->layer->evas->engine.func->context_multiplier_set(obj->layer->evas->engine.data.output,
-                                                               obj->layer->evas->engine.data.context,
-                                                               obj->cur.cache.clip.r, obj->cur.cache.clip.g,
-                                                               obj->cur.cache.clip.b, obj->cur.cache.clip.a);
-       obj->layer->evas->engine.func->context_color_interpolation_set(obj->layer->evas->engine.data.output,
-                                                                       obj->layer->evas->engine.data.context,
-                                                                       obj->cur.interpolation_color_space);
-       if (o->gradient_changed)
-         {
-           obj->layer->evas->engine.func->gradient2_radial_fill_set(obj->layer->evas->engine.data.output, o->engine_data, o->cur.fill.cx, o->cur.fill.cy, o->cur.fill.rx, o->cur.fill.ry);
-           obj->layer->evas->engine.func->gradient2_fill_transform_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                               &og->cur.fill.transform);
-           obj->layer->evas->engine.func->gradient2_fill_spread_set(obj->layer->evas->engine.data.output, o->engine_data,
-                                                               og->cur.fill.spread);
-           obj->layer->evas->engine.func->gradient2_radial_render_pre(obj->layer->evas->engine.data.output,
-                                                               obj->layer->evas->engine.data.context,
-                                                               o->engine_data);
-         }
-       og->cur.gradient_opaque = obj->layer->evas->engine.func->gradient2_radial_is_opaque(obj->layer->evas->engine.data.output,
-                                                                                  obj->layer->evas->engine.data.context,
-                                                                                  o->engine_data,
-                                                                                  obj->cur.cache.clip.x, obj->cur.cache.clip.y,
-                                                                                  obj->cur.cache.clip.w, obj->cur.cache.clip.h);
-
-       if (obj->cur.cache.clip.a != 255)
-           og->cur.gradient_opaque = 0;
-    }
-   /* now figure what changed and add draw rects */
-   /* if it just became visible or invisible */
-   is_v = evas_object_is_visible(obj);
-   was_v = evas_object_was_visible(obj);
-   if (is_v != was_v)
-     {
-       evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
-       goto done;
-     }
-   if ((obj->cur.map != obj->prev.map) ||
-       (obj->cur.usemap != obj->prev.usemap))
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-        goto done;
-     }
-   /* its not visible - we accounted for it appearing or not so just abort */
-   if (!is_v) goto done;
-   /* clipper changed this is in addition to anything else for obj */
-   evas_object_render_pre_clipper_change(&obj->layer->evas->clip_changes, obj);
-   /* gradient changed */
-   if (o->changed || obj->restack)
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-       goto done;
-     }
-   /* if it changed geometry */
-   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
-       (obj->cur.geometry.y != obj->prev.geometry.y) ||
-       (obj->cur.geometry.w != obj->prev.geometry.w) ||
-       (obj->cur.geometry.h != obj->prev.geometry.h))
-     {
-       evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
-       goto done;
-     }
-   /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
-   /* area so if there were updates for it they get wiped. don't do it if we */
-   /* arent fully opaque and we are visible */
-
-   if (evas_object_is_visible(obj) &&
-       evas_object_is_opaque(obj))
-     obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
-                                                           obj->cur.cache.clip.x,
-                                                           obj->cur.cache.clip.y,
-                                                           obj->cur.cache.clip.w,
-                                                           obj->cur.cache.clip.h);
-
-   done:
-   evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, obj, is_v, was_v);
-}
-
-static void
-evas_object_gradient2_radial_render_post(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Radial *o;
-   Evas_Object_Gradient2 *og;
-
-   /* this moves the current data to the previous state parts of the object */
-   /* in whatever way is safest for the object. also if we don't need object */
-   /* data anymore we can free it if the object deems this is a good idea */
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   og = (Evas_Object_Gradient2 *)(o);
-   /* remove those pesky changes */
-   evas_object_clip_changes_clean(obj);
-   /* move cur to prev safely for object data */
-   obj->prev = obj->cur;
-   obj->changed = 0;
-   o->prev = o->cur;
-   o->changed = 0;
-   o->gradient_changed = 0;
-   og->prev = og->cur;
-   og->gradient_changed = 0;
-}
-
-static unsigned int evas_object_gradient2_radial_id_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Radial *o;
-
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   if (!o) return 0;
-   return MAGIC_OBJ_GRADIENT_RADIAL;
-}
-
-static unsigned int evas_object_gradient2_radial_visual_id_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Radial *o;
-
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   if (!o) return 0;
-   return MAGIC_OBJ_GRADIENT;
-}
-
-static void *evas_object_gradient2_radial_engine_data_get(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Radial *o;
-
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   if (!o) return NULL;
-   return o->engine_data;
-}
-
-
-static int
-evas_object_gradient2_radial_is_opaque(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Radial *o;
-   Evas_Object_Gradient2 *og;
-
-   /* this returns 1 if the internal object data implies that the object is */
-   /* currently fully opaque over the entire region it occupies */
-   if ((obj->cur.map) && (obj->cur.usemap)) return 0;
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   if (!o->engine_data) return 0;
-   og = (Evas_Object_Gradient2 *)(o);
-   return og->cur.gradient_opaque;
- }
-
-static int
-evas_object_gradient2_radial_was_opaque(Evas_Object *obj)
-{
-   Evas_Object_Gradient2_Radial *o;
-   Evas_Object_Gradient2 *og;
-
-   /* this returns 1 if the internal object data implies that the object was */
-   /* currently fully opaque over the entire region it occupies */
-   o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
-   if (!o->engine_data) return 0;
-   og = (Evas_Object_Gradient2 *)(o);
-   return og->prev.gradient_opaque;
-}
index e1d66bf..00fbb06 100644 (file)
@@ -44,15 +44,6 @@ evas_font_draw.c \
 evas_font_load.c \
 evas_font_main.c \
 evas_font_query.c \
-evas_gradient_main.c \
-evas_gradient_linear.c \
-evas_gradient_radial.c \
-evas_gradient_angular.c \
-evas_gradient_rectangular.c \
-evas_gradient_sinusoidal.c \
-evas_gradient2_main.c \
-evas_gradient2_linear.c \
-evas_gradient2_radial.c \
 evas_image_load.c \
 evas_image_save.c \
 evas_image_main.c \
@@ -91,8 +82,6 @@ evas_draw.h \
 evas_encoding.h \
 evas_font.h \
 evas_font_private.h \
-evas_gradient.h \
-evas_gradient_private.h \
 evas_image.h \
 evas_image_private.h \
 evas_line.h \
index 246b3fa..a2723e4 100644 (file)
@@ -42,7 +42,6 @@ evas_common_init(void)
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
diff --git a/src/lib/engines/common/evas_gradient.h b/src/lib/engines/common/evas_gradient.h
deleted file mode 100644 (file)
index acd4828..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#ifndef _EVAS_GRADIENT_H
-#define _EVAS_GRADIENT_H
-
-
-EAPI void           evas_common_gradient_init              (void);
-
-EAPI RGBA_Gradient *evas_common_gradient_new               (void);
-EAPI void           evas_common_gradient_free              (RGBA_Gradient *gr);
-EAPI void           evas_common_gradient_clear             (RGBA_Gradient *gr);
-EAPI void           evas_common_gradient_color_stop_add    (RGBA_Gradient *gr, int r, int g, int b, int a, int dist);
-EAPI void           evas_common_gradient_alpha_stop_add    (RGBA_Gradient *gr, int a, int dist);
-EAPI void           evas_common_gradient_color_data_set    (RGBA_Gradient *gr, DATA32 *data, int len, int alpha_flags);
-EAPI void           evas_common_gradient_alpha_data_set    (RGBA_Gradient *gr, DATA8 *adata, int len);
-EAPI void           evas_common_gradient_type_set          (RGBA_Gradient *gr, const char *name, char *params);
-EAPI void           evas_common_gradient_fill_set          (RGBA_Gradient *gr, int x, int y, int w, int h);
-EAPI void           evas_common_gradient_fill_angle_set    (RGBA_Gradient *gr, float angle);
-EAPI void           evas_common_gradient_fill_spread_set   (RGBA_Gradient *gr, int spread);
-EAPI void           evas_common_gradient_map_angle_set     (RGBA_Gradient *gr, float angle);
-EAPI void           evas_common_gradient_map_offset_set    (RGBA_Gradient *gr, float offset);
-EAPI void           evas_common_gradient_map_direction_set (RGBA_Gradient *gr, int direction);
-EAPI void           evas_common_gradient_map               (RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len);
-EAPI void           evas_common_gradient_draw              (RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h, RGBA_Gradient *gr);
-
-EAPI RGBA_Gradient_Type *evas_common_gradient_geometer_get (const char *name);
-
-
-
-EAPI void           evas_common_gradient2_free             (RGBA_Gradient2 *gr);
-EAPI RGBA_Gradient2 *evas_common_gradient2_linear_new              (void);
-EAPI void           evas_common_gradient2_linear_fill_set (RGBA_Gradient2 *gr, float x0, float y0, float x1, float y1);
-EAPI RGBA_Gradient2 *evas_common_gradient2_radial_new              (void);
-EAPI void           evas_common_gradient2_radial_fill_set (RGBA_Gradient2 *gr, float cx, float cy, float rx, float ry);
-EAPI void           evas_common_gradient2_clear            (RGBA_Gradient2 *gr);
-EAPI void           evas_common_gradient2_color_np_stop_insert   (RGBA_Gradient2 *gr, int r, int g, int b, int a, float pos);
-EAPI void           evas_common_gradient2_fill_spread_set  (RGBA_Gradient2 *gr, int spread);
-EAPI void           evas_common_gradient2_fill_transform_set (RGBA_Gradient2 *gr, Evas_Common_Transform *t);
-EAPI void           evas_common_gradient2_map              (RGBA_Draw_Context *dc, RGBA_Gradient2 *gr, int len);
-EAPI void           evas_common_gradient2_draw             (RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h, RGBA_Gradient2 *gr);
-
-EAPI RGBA_Gradient2_Type *evas_common_gradient2_type_linear_get      (void);
-EAPI RGBA_Gradient2_Type *evas_common_gradient2_type_radial_get      (void);
-//EAPI RGBA_Gradient2_Type *evas_common_gradient2_type_angular_get     (void);
-//EAPI RGBA_Gradient2_Type *evas_common_gradient2_type_rectangular_get (void);
-//EAPI RGBA_Gradient2_Type *evas_common_gradient2_type_sinusoidal_get  (void);
-
-#endif /* _EVAS_GRADIENT_H */
diff --git a/src/lib/engines/common/evas_gradient2_linear.c b/src/lib/engines/common/evas_gradient2_linear.c
deleted file mode 100644 (file)
index 7736851..0000000
+++ /dev/null
@@ -1,728 +0,0 @@
-#include "evas_common.h"
-#include "evas_private.h"
-#include <math.h>
-
-#define LINEAR_EPSILON 0.000030517578125
-#define LINEAR_INT_TOLERANCE 0.001953125
-// 1/512 = 0.001953125 <-- will use this one as our subpixel pos tolerance.
-// 1/256 = 0.00390625  <-- though this one would be ok too for our uses.
-
-typedef struct _Linear_Data   Linear_Data;
-
-struct _Linear_Data
-{
-   float    x0, y0, x1, y1;
-   float    fx0, fy0;
-   int      ayx, ayy;
-   int      len;
-   unsigned char int_axis_aligned : 1;
-};
-
-
-static void 
-linear_init(void);
-
-static void 
-linear_shutdown(void);
-
-static void 
-linear_init_geom(RGBA_Gradient2 *gr);
-
-static void
-linear_update_geom(RGBA_Gradient2 *gr);
-
-static void 
-linear_free_geom(void *gdata);
-
-static int
-linear_has_alpha(RGBA_Gradient2 *gr, int op);
-
-static int
-linear_has_mask(RGBA_Gradient2 *gr, int op);
-
-static int
-linear_get_map_len(RGBA_Gradient2 *gr);
-
-static Gfx_Func_Gradient2_Fill
-linear_get_fill_func(RGBA_Gradient2 *gr, int op);
-
-static RGBA_Gradient2_Type  linear = {"linear", linear_init, linear_shutdown,
-                                     linear_init_geom,
-                                     linear_update_geom, linear_free_geom,
-                                     linear_has_alpha, linear_has_mask,
-                                     linear_get_map_len, linear_get_fill_func};
-
-
-EAPI RGBA_Gradient2_Type  *
-evas_common_gradient2_type_linear_get(void)
-{
-    return &linear;
-}
-
-EAPI RGBA_Gradient2 *
-evas_common_gradient2_linear_new(void)
-{
-   RGBA_Gradient2 *gr;
-
-   gr = calloc(1, sizeof(RGBA_Gradient2));
-   if (!gr) return NULL;
-   gr->references = 1;
-   gr->type.id = MAGIC_OBJ_GRADIENT_LINEAR;
-   gr->type.geometer = &linear;
-   linear_init_geom(gr);
-   return gr;
-}
-
-EAPI void
-evas_common_gradient2_linear_fill_set(RGBA_Gradient2 *gr, float x0, float y0, float x1, float y1)
-{
-   Linear_Data *linear_data;
-
-   if (!gr) return;
-   if (gr->type.id != MAGIC_OBJ_GRADIENT_LINEAR) return;
-   if (gr->type.geometer != &linear) return;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data) return;
-   linear_data->x0 = x0;  linear_data->y0 = y0;
-   linear_data->x1 = x1;  linear_data->y1 = y1;
-}
-
-
-
-/** internal functions **/
-
-static void
-linear_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                  int x, int y, void *params_data);
-
-static void
-linear_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                 int x, int y, void *params_data);
-
-static void
-linear_restrict_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, void *params_data);
-
-static void
-linear_restrict_masked_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, void *params_data);
-
-static void
-linear_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-              int x, int y, void *params_data);
-
-
-
-static void 
-linear_init(void)
-{
-}
-
-static void 
-linear_shutdown(void)
-{
-}
-
-static void 
-linear_free_geom(void *gdata)
-{
-   Linear_Data *data = (Linear_Data *)gdata;
-   if (data) free(data);
-}
-
-static void
-linear_init_geom(RGBA_Gradient2 *gr)
-{
-   Linear_Data *linear_data;
-
-   if (!gr || (gr->type.geometer != &linear)) return;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data)
-     {
-       linear_data = calloc(1, sizeof(Linear_Data));
-       if (!linear_data)  return;
-       linear_data->ayy = 65536;  linear_data->ayx = 0;
-     }
-   gr->type.gdata = linear_data;
-}
-
-
-static void
-linear_update_geom(RGBA_Gradient2 *gr)
-{
-   Linear_Data *linear_data;
-   double f;
-   double fx0, fy0, fx1, fy1;
-   int len;
-
-   if (!gr || (gr->type.geometer != &linear)) return;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data) return;
-
-   linear_data->int_axis_aligned = 0;
-   linear_data->len = 0;
-   f = (gr->fill.transform.mxx * (double)gr->fill.transform.myy) - (gr->fill.transform.mxy * (double)gr->fill.transform.myx);
-   if (fabs(f) < LINEAR_EPSILON) return;
-
-   f = 1.0 / f;
-   fx0 = (((gr->fill.transform.myy * (double)linear_data->x0) - (gr->fill.transform.mxy * (double)linear_data->y0)) * f) - gr->fill.transform.mxz;
-   fy0 = ((-(gr->fill.transform.myx * (double)linear_data->x0) + (gr->fill.transform.mxx * (double)linear_data->y0)) * f) - gr->fill.transform.myz;
-
-   fx1 = (((gr->fill.transform.myy * (double)linear_data->x1) - (gr->fill.transform.mxy * (double)linear_data->y1)) * f) - gr->fill.transform.mxz;
-   fy1 = ((-(gr->fill.transform.myx * (double)linear_data->x1) + (gr->fill.transform.mxx * (double)linear_data->y1)) * f) - gr->fill.transform.myz;
-
-   f = hypot(fx1 - fx0, fy1 - fy0);
-   linear_data->len = len = f + 0.5;
-   if (!len) return;
-
-   linear_data->ayx = ((fx1 - fx0) / f) * 65536;
-   linear_data->ayy = ((fy1 - fy0) / f) * 65536;
-
-   if (fabs(fy0 - fy1) < LINEAR_INT_TOLERANCE)
-     {
-       if ( (fabs(((int)fy0) - fy0) < LINEAR_INT_TOLERANCE) &&
-           (fabs(((int)fy1) - fy1) < LINEAR_INT_TOLERANCE) )
-          { linear_data->int_axis_aligned = 1;  linear_data->ayy = 0; }
-     }
-   else if (fabs(fx0 - fx1) < LINEAR_INT_TOLERANCE)
-     {
-       if ( (fabs(((int)fx0) - fx0) < LINEAR_INT_TOLERANCE) &&
-           (fabs(((int)fx1) - fx1) < LINEAR_INT_TOLERANCE) )
-          { linear_data->int_axis_aligned = 1;  linear_data->ayx = 0; }
-     }
-   linear_data->fx0 = fx0;
-   linear_data->fy0 = fy0;
-}
-
-static int
-linear_has_alpha(RGBA_Gradient2 *gr, int op)
-{
-   if (!gr || (gr->type.geometer != &linear)) return 0;
-   if (gr->has_alpha | gr->map.has_alpha)
-       return 1;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) || 
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       return 0;
-   if (gr->fill.spread == _EVAS_TEXTURE_RESTRICT)
-       return 1;
-   return 0;
-}
-
-static int
-linear_has_mask(RGBA_Gradient2 *gr, int op)
-{
-   if (!gr || (gr->type.geometer != &linear)) return 0;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) || 
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-     {
-       if (gr->fill.spread == _EVAS_TEXTURE_RESTRICT)
-           return 1;
-     }
-   return 0;
-}
-
-static int
-linear_get_map_len(RGBA_Gradient2 *gr)
-{
-   Linear_Data   *linear_data;
-
-   if (!gr || (gr->type.geometer != &linear)) return 0;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data) return 0;
-   return linear_data->len;
-}
-
-static Gfx_Func_Gradient2_Fill
-linear_get_fill_func(RGBA_Gradient2 *gr, int op)
-{
-   Linear_Data   *linear_data;
-   Gfx_Func_Gradient2_Fill  sfunc = NULL;
-   int masked_op = 0;
-
-   if (!gr || (gr->type.geometer != &linear))
-       return sfunc;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data) return sfunc;
-
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) || 
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       masked_op = 1;
-
-   switch (gr->fill.spread)
-     {
-      case _EVAS_TEXTURE_REPEAT:
-       sfunc = linear_repeat_aa;
-      break;
-      case _EVAS_TEXTURE_REFLECT:
-       sfunc = linear_reflect_aa;
-      break;
-      case _EVAS_TEXTURE_RESTRICT:
-       if (masked_op)
-          sfunc = linear_restrict_masked_aa;
-       else
-          sfunc = linear_restrict_aa;
-      break;
-      case _EVAS_TEXTURE_PAD:
-       sfunc = linear_pad_aa;
-      break;
-      default:
-       sfunc = linear_repeat_aa;
-      break;
-     }
-   return sfunc;
-}
-
-
-/* the fill functions */
-
-#ifdef BUILD_MMX
-#define INTERP_256_P2R(a, s, mma, mms, mmd, mmz) \
-           MOV_A2R(a, mma) \
-           MOV_P2R(s, mms, mmz) \
-           INTERP_256_R2R(mma, mms, mmd, mm5)
-
-#define MUL_256_A2R(a, mma, mmd, mmz) \
-       MOV_A2R(a, mma) \
-       MUL4_256_R2R(mma, mmd)
-#endif
-
-static void
-linear_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                 int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   evas_common_cpu_end_opt();
-   yy = (gdata->ayx * (x - gdata->fx0 + 0.5)) + (gdata->ayy * (y - gdata->fy0 + 0.5)) - 32768;
-
-   if (gdata->int_axis_aligned && (gdata->ayx == 0))
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       y = y % src_len;
-       if (y < 0)
-          y += src_len;
-       c = src[y];
-       while (dst < dst_end)
-           *dst++ = c;
-       return;
-     }
-
-   if (gdata->int_axis_aligned && (gdata->ayy == 0))
-     {
-       Gfx_Func_Copy  func;
-       int  l;
-
-       x = (yy >> 16);
-       x = x % src_len;
-       if (x < 0)
-          x += src_len;
-       if (gdata->ayx < 0)
-         {
-           l = x + 1;  x = 0;
-         }
-       else
-           l = src_len - x;
-       if (l > dst_len) l = dst_len;
-       func = evas_common_draw_func_copy_get(1, (gdata->ayx < 0 ? -1 : 0));
-       func(src + x, dst, l);
-       if (l == dst_len) return;
-       dst += l;  dst_len -= l;
-       l = dst_len / src_len;
-       while (l--)
-         {
-           func(src, dst, src_len);
-           dst += src_len;
-         }
-       l = dst_len % src_len;
-       if (gdata->ayx < 0)
-          src += src_len - l;
-       func(src, dst, l);
-       return;
-     }
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-       int  a = 1 + ((yy & 0xffff) >> 8);
-
-       if ((l >= src_len) || (l < 0))
-          { l = l % src_len;  if (l < 0) l += src_len; }
-
-#ifdef BUILD_MMX
-       MOV_P2R(src[l], mm1, mm0)
-#else
-       *dst = src[l];
-#endif
-       if (l + 1 < src_len)
-         {
-#ifdef BUILD_MMX
-           INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
-#else
-           *dst = INTERP_256(a, src[l + 1], *dst);
-#endif
-         }
-       if (l == (src_len - 1))
-         {
-#ifdef BUILD_MMX
-           INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
-#else
-          *dst = INTERP_256(a, src[0], *dst);
-#endif
-         }
-#ifdef BUILD_MMX
-       MOV_R2P(mm1, *dst, mm0)
-#endif
-       dst++;  yy += gdata->ayx;
-     }
-}
-
-
-static void
-linear_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                  int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   evas_common_cpu_end_opt();
-   yy = (gdata->ayx * (x - gdata->fx0 + 0.5)) + (gdata->ayy * (y - gdata->fy0 + 0.5)) - 32768;
-
-   if (gdata->int_axis_aligned && (gdata->ayx == 0))
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       if (y < 0)  y = -y;
-       if (y >= src_len)
-         {
-           int  m = (y % (2 * src_len));
-
-           y = (y % src_len);
-           if (m >= src_len)
-               y = src_len - y - 1;
-         }
-       c = src[y];
-       while (dst < dst_end)
-           *dst++ = c;
-       return;
-     }
-
-   if (gdata->int_axis_aligned && (gdata->ayy == 0))
-     {
-       Gfx_Func_Copy  func, ofunc;
-       int  l, sgn;
-
-       x = (yy >> 16);
-       sgn = (gdata->ayx < 0 ? -1 : 1);
-       if (x < 0)
-         {
-           x = -x;  sgn *= -1;
-         }
-       if (x >= src_len)
-         {
-           int  m = (x % (2 * src_len));
-
-           x = (x % src_len);
-           if (m >= src_len)
-             { x = src_len - x - 1;  sgn *= -1; }
-         }
-
-       if (sgn < 0)
-         {
-           l = x + 1;  x = 0;
-         }
-       else
-           l = src_len - x;
-
-       if (l > dst_len) l = dst_len;
-       func = evas_common_draw_func_copy_get(1, 0);
-       ofunc = evas_common_draw_func_copy_get(1, -1);
-
-       if (sgn > 0)
-          func(src + x, dst, l);
-       else
-          ofunc(src + x, dst, l);
-       if (l == dst_len) return;
-
-       dst += l;  dst_len -= l;
-       l = dst_len / src_len;
-       sgn *= -1;
-       while (l--)
-         {
-           if (sgn > 0)
-              func(src, dst, src_len);
-           else
-              ofunc(src, dst, src_len);
-           sgn *= -1;
-           dst += src_len;
-         }
-       l = dst_len % src_len;
-       if (sgn < 0)
-         {
-           src += src_len - l;
-           ofunc(src, dst, l);
-         }
-       else
-          func(src, dst, l);
-       return;
-     }
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-       int  a = 1 + ((yy & 0xffff) >> 8);
-
-       if (l < 0) { l = -l;  a = 257 - a; }
-       if (l >= src_len)
-         {
-           int  m = (l % (2 * src_len));
-
-           l = (l % src_len);
-           if (m >= src_len)
-             { l = src_len - l - 1;  a = 257 - a; }
-         }
-#ifdef BUILD_MMX
-       MOV_P2R(src[l], mm1, mm0)
-#else
-       *dst = src[l];
-#endif
-       if (l + 1 < src_len)
-         {
-#ifdef BUILD_MMX
-           INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
-#else
-           *dst = INTERP_256(a, src[l + 1], *dst);
-#endif
-         }
-#ifdef BUILD_MMX
-       MOV_R2P(mm1, *dst, mm0)
-#endif
-       dst++;  yy += gdata->ayx;
-     }
-}
-
-
-static void
-linear_restrict_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                   int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   evas_common_cpu_end_opt();
-   yy = (gdata->ayx * (x - gdata->fx0 + 0.5)) + (gdata->ayy * (y - gdata->fy0 + 0.5)) - 32768;
-
-   if (gdata->int_axis_aligned && (gdata->ayx == 0))
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       if ((y < 0) || (y >= src_len))
-         {
-           memset(dst, 0, sizeof(DATA32) * dst_len);
-           return;
-         }
-       c = src[y];
-       while (dst < dst_end)
-           *dst++ = c;
-       return;
-     }
-
-   if (gdata->int_axis_aligned && (gdata->ayy == 0))
-     {
-       Gfx_Func_Copy  func;
-       int sgn;
-
-       x = yy >> 16;
-       sgn = (gdata->ayx < 0 ? -1 : 1);
-       if ((unsigned)x < src_len)
-         {
-           if ((sgn > 0) && ((src_len - x) >= dst_len))
-             {
-               func = evas_common_draw_func_copy_get(dst_len, 0);
-               func(src + x, dst, dst_len);
-               return;
-             }
-           if ((sgn < 0) && (x >= (dst_len - 1)))
-             {
-               func = evas_common_draw_func_copy_get(dst_len, -1);
-               func(src + x - (dst_len - 1), dst, dst_len);
-               return;
-             }
-         }
-       while (dst < dst_end)
-         {
-           *dst = 0;
-           if ((unsigned)x < src_len)
-               *dst = src[x];
-           dst++;  x += sgn;
-         }
-       return;
-     }
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       *dst = 0;
-       if ((unsigned)(l + 1) < (src_len + 1))
-         {
-           int  a = 1 + ((yy & 0xffff) >> 8);
-           int  lp = l;
-
-           if (l == -1) lp = 0;
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (l == -1)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a, *dst);
-#endif
-             }
-           if (l == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               a = 257 - a;
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(257 - a, *dst);
-#endif
-             }
-         }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-       dst++;  yy += gdata->ayx;
-     }
-}
-
-
-static void
-linear_restrict_masked_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   evas_common_cpu_end_opt();
-   yy = (gdata->ayx * (x - gdata->fx0 + 0.5)) + (gdata->ayy * (y - gdata->fy0 + 0.5)) - 32768;
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)(l + 1) < (src_len + 1))
-         {
-           int  a = 1 + ((yy & 0xffff) >> 8);
-           int  lp = l;
-
-           if (l == -1) lp = 0;
-
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];  *mask = 255;
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-           if (l == -1)
-               *mask = a - 1;
-           if (l == (src_len - 1))
-               *mask = 256 - a;
-         }
-       dst++;  mask++;  yy += gdata->ayx;
-     }
-}
-
-
-static void
-linear_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-              int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   evas_common_cpu_end_opt();
-   yy = (gdata->ayx * (x - gdata->fx0 + 0.5)) + (gdata->ayy * (y - gdata->fy0 + 0.5)) - 32768;
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       if (l < 0) *dst = src[0];
-       if (l >= src_len) *dst = src[src_len - 1];
-       if ((unsigned)l < src_len)
-         {
-           int  a = 1 + ((yy & 0xffff) >> 8);
-
-#ifdef BUILD_MMX
-           MOV_P2R(src[l], mm1, mm0)
-#else
-           *dst = src[l];
-#endif
-           if (l && (l + 1 < src_len))
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[l + 1], *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  yy += gdata->ayx;
-     }
-}
diff --git a/src/lib/engines/common/evas_gradient2_main.c b/src/lib/engines/common/evas_gradient2_main.c
deleted file mode 100644 (file)
index 5d3893e..0000000
+++ /dev/null
@@ -1,587 +0,0 @@
-#include "evas_common.h"
-#include "evas_blend_private.h"
-#include "evas_private.h"
-#include <math.h>
-
-static void _evas_common_gradient2_stops_free(RGBA_Gradient2 *gr);
-static void _evas_common_gradient2_stops_scale(RGBA_Gradient2 *gr);
-
-static void _evas_common_gradient2_map_argb(RGBA_Draw_Context *dc, RGBA_Gradient2 *gr, int len);
-static void _evas_common_gradient2_map_ahsv(RGBA_Draw_Context *dc, RGBA_Gradient2 *gr, int len);
-
-static  int grad_initialised = 0;
-
-EAPI void
-evas_common_gradient2_init(void)
-{
-   RGBA_Gradient2_Type  *geom;
-
-   if (grad_initialised)
-       return;
-   geom = evas_common_gradient2_type_linear_get();
-   if (geom)
-       geom->init();
-   geom = evas_common_gradient2_type_radial_get();
-   if (geom)
-       geom->init();
-   grad_initialised = 1;
-}
-
-void
-evas_common_gradient2_shutdown(void)
-{
-   RGBA_Gradient2_Type  *geom;
-
-   if (!grad_initialised)
-       return;
-   geom = evas_common_gradient2_type_linear_get();
-   if (geom)
-       geom->shutdown();
-   geom = evas_common_gradient2_type_radial_get();
-   if (geom)
-       geom->shutdown();
-   grad_initialised = 0;
-}
-
-static void
-_evas_common_gradient2_stops_free(RGBA_Gradient2 *gr)
-{
-   if (!gr) return;
-   if (gr->stops.stops)
-     {
-       Eina_Inlist *l;
-
-       while (gr->stops.stops)
-         {
-          l = gr->stops.stops;
-          gr->stops.stops = eina_inlist_remove(gr->stops.stops, gr->stops.stops);
-          free(l);
-         }
-       gr->stops.stops = NULL;
-       gr->stops.nstops = 0;
-     }
-}
-
-EAPI void
-evas_common_gradient2_free(RGBA_Gradient2 *gr)
-{
-   if (!gr) return;
-   gr->references--;
-   if (gr->references > 0) return;
-#ifdef EVAS_FRAME_QUEUING
-   LKL(gr->ref_fq_add);  LKL(gr->ref_fq_del);
-   if (gr->ref_fq[0] != gr->ref_fq[1])
-     {
-        LKU(gr->ref_fq_add); LKU(gr->ref_fq_del);
-        return;
-     }
-   LKU(gr->ref_fq_add); LKU(gr->ref_fq_del);
-#endif
-   evas_common_gradient2_clear(gr);
-   if (gr->stops.cdata) free(gr->stops.cdata);
-   if (gr->stops.adata) free(gr->stops.adata);
-   if (gr->type.geometer && gr->type.gdata)
-       gr->type.geometer->geom_free(gr->type.gdata);
-   if (gr->map.data) free(gr->map.data);
-   free(gr);
-}
-
-EAPI void
-evas_common_gradient2_clear(RGBA_Gradient2 *gr)
-{
-   if (!gr) return;
-
-   _evas_common_gradient2_stops_free(gr);
-   gr->has_alpha = 0;
-}
-
-EAPI void
-evas_common_gradient2_color_np_stop_insert(RGBA_Gradient2 *gr, int r, int g, int b, int a, float pos)
-{
-   RGBA_Gradient2_Color_Np_Stop *gc;
-   Eina_Inlist *l;
-
-   if (!gr) return;
-   if (!gr->stops.stops)
-     {
-       RGBA_Gradient2_Color_Np_Stop *gc1;
-
-       gc = malloc(sizeof(RGBA_Gradient2_Color_Np_Stop));
-       if (!gc) return;
-       gc1 = malloc(sizeof(RGBA_Gradient2_Color_Np_Stop));
-       if (!gc1) { free(gc);  return; }
-       gc->r = gc->g = gc->b = gc->a = 255;  gc->pos = 0.0;  gc->dist = 0;
-       gc1->r = gc1->g = gc1->b = gc1->a = 255;  gc1->pos = 1.0;  gc1->dist = 0;
-
-       gr->stops.stops = eina_inlist_append(gr->stops.stops, EINA_INLIST_GET(gc));
-       gr->stops.stops = eina_inlist_append(gr->stops.stops, EINA_INLIST_GET(gc1));
-       gr->stops.nstops = 2;
-       gr->stops.len = 0;
-     }
-
-   if (r < 0) r = 0;  if (r > 255) r = 255;
-   if (g < 0) g = 0;  if (g > 255) g = 255;
-   if (b < 0) b = 0;  if (b > 255) b = 255;
-   if (a < 0) a = 0;  if (a > 255) a = 255;
-   if (pos < 0.0) pos = 0.0;
-   if (pos > 1.0) pos = 1.0;
-
-   if (pos == 0.0)
-     {
-       gc = (RGBA_Gradient2_Color_Np_Stop *)gr->stops.stops;
-       gc->r = r;  gc->g = g;  gc->b = b;  gc->a = a;  gc->dist = 0;
-        if (a < 255) gr->has_alpha = 1;
-       return;
-     }
-   if (pos == 1.0)
-     {
-       gc = (RGBA_Gradient2_Color_Np_Stop *)(gr->stops.stops->last);
-       gc->r = r;  gc->g = g;  gc->b = b;  gc->a = a;  gc->dist = 0;
-       if (a < 255) gr->has_alpha = 1;
-       return;
-     }
-
-   l = gr->stops.stops->next;
-   while (l)
-     {
-       gc = (RGBA_Gradient2_Color_Np_Stop *)l;
-       if (pos <= gc->pos)
-         {
-           if (pos == gc->pos)
-             {
-               gc->r = r;  gc->g = g;  gc->b = b;  gc->a = a;  gc->dist = 0;
-               if (a < 255) gr->has_alpha = 1;
-               return;
-             }
-           break;
-         }
-       l = l->next;
-     }
-
-   gc = malloc(sizeof(RGBA_Gradient2_Color_Np_Stop));
-   if (!gc) return;
-   gc->r = r;
-   gc->g = g;
-   gc->b = b;
-   gc->a = a;
-   gc->pos = pos;
-   gc->dist = 0;
-
-   gr->stops.stops = eina_inlist_prepend_relative(gr->stops.stops, EINA_INLIST_GET(gc), l);
-   gr->stops.nstops++;
-   if (a < 255)
-       gr->has_alpha = 1;
-}
-
-EAPI void
-evas_common_gradient2_fill_transform_set(RGBA_Gradient2 *gr, Evas_Common_Transform *t)
-{
-   if (!gr) return;
-   if (!t)
-     {
-       gr->fill.transform.mxx = 1;  gr->fill.transform.mxy = 0;  gr->fill.transform.mxz = 0;
-       gr->fill.transform.myx = 0;  gr->fill.transform.myy = 1;  gr->fill.transform.myz = 0;
-       gr->fill.transform.mzx = 1;  gr->fill.transform.mzy = 0;  gr->fill.transform.mzz = 1;
-       return;
-     }
-   gr->fill.transform.mxx = t->mxx;  gr->fill.transform.mxy = t->mxy;  gr->fill.transform.mxz = t->mxz;
-   gr->fill.transform.myx = t->myx;  gr->fill.transform.myy = t->myy;  gr->fill.transform.myz = t->myz;
-   gr->fill.transform.mzx = t->mzx;  gr->fill.transform.mzy = t->mzy;  gr->fill.transform.mzz = t->mzz;
-}
-
-EAPI void
-evas_common_gradient2_fill_spread_set(RGBA_Gradient2 *gr, int spread)
-{
-   if (!gr) return;
-   gr->fill.spread = spread;
-}
-
-EAPI void
-evas_common_gradient2_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
-                          int x, int y, int w, int h, RGBA_Gradient2 *gr)
-{
-   Gfx_Func_Gradient2_Fill   gfunc;
-   RGBA_Gfx_Func            bfunc = NULL;
-   int             len;
-   int             xin, yin, xoff, yoff;
-   int             clx, cly, clw, clh;
-   DATA32          *pdst, *dst_end, *buf, *map;
-   RGBA_Image      *argb_buf = NULL, *alpha_buf = NULL;
-   DATA8           *mask = NULL;
-   void            *gdata;
-   int             direct_copy = 0, buf_step = 0;
-
-   if (!dst || !dc || !gr || !dst || !dst->image.data)
-       return;
-   if (!gr->map.data || !gr->type.geometer)
-       return;
-   if ((w < 1) || (h < 1))
-       return;
-   clx = 0;  cly = 0;  clw = dst->cache_entry.w;  clh = dst->cache_entry.h;
-   if ((clw < 1) || (clh < 1))  return;
-
-   if (dc->clip.use)
-     RECTS_CLIP_TO_RECT(clx,cly,clw,clh, dc->clip.x,dc->clip.y,dc->clip.w,dc->clip.h);
-   if ((clw < 1) || (clh < 1))  return;
-
-   xin = x;  yin = y;
-   RECTS_CLIP_TO_RECT(x,y,w,h, clx,cly,clw,clh);
-   if ((w < 1) || (h < 1))  return;
-
-   xoff = (x - xin);
-   yoff = (y - yin);
-
-   if (!gr->type.geometer->has_mask(gr, dc->render_op))
-     {
-       if ((dc->render_op == _EVAS_RENDER_FILL) ||
-             (dc->render_op == _EVAS_RENDER_COPY))
-         {
-            direct_copy = 1;  buf_step = dst->cache_entry.w;
-            if (gr->type.geometer->has_alpha(gr, dc->render_op))
-               dst->cache_entry.flags.alpha = 1;
-         }
-       else if ((dc->render_op == _EVAS_RENDER_BLEND) &&
-                 !gr->type.geometer->has_alpha(gr, dc->render_op))
-         {
-            direct_copy = 1;  buf_step = dst->cache_entry.w;
-         }
-     }
-   if (!direct_copy)
-     {
-       argb_buf = evas_common_image_line_buffer_obtain(w);
-       if (!argb_buf)
-          return;
-       argb_buf->cache_entry.flags.alpha = gr->type.geometer->has_alpha(gr, dc->render_op) ? 1 : 0;
-
-       if (gr->type.geometer->has_mask(gr, dc->render_op))
-         {
-           alpha_buf = evas_common_image_alpha_line_buffer_obtain(w);
-           if (!alpha_buf)
-             {
-               evas_common_image_line_buffer_release(argb_buf);
-               return;
-             }
-           bfunc = evas_common_gfx_func_composite_pixel_mask_span_get(argb_buf, dst, w, dc->render_op);
-         }
-       else
-          bfunc = evas_common_gfx_func_composite_pixel_span_get(argb_buf, dst, w, dc->render_op);
-     }
-
-   gfunc = gr->type.geometer->get_fill_func(gr, dc->render_op);
-   gdata = gr->type.gdata;
-   if (!gdata)
-     {
-       if (!direct_copy)
-         {
-           evas_common_image_line_buffer_release(argb_buf);
-           if (alpha_buf)
-               evas_common_image_alpha_line_buffer_release(alpha_buf);
-         }
-       return;
-     }
-
-   map = gr->map.data;
-   len = gr->map.len;
-   pdst = dst->image.data + (y * dst->cache_entry.w) + x;
-   dst_end = pdst + (h * dst->cache_entry.w);
-   if (!direct_copy)
-     {
-       buf = argb_buf->image.data;
-       if (alpha_buf)
-          mask = (DATA8 *)alpha_buf->image.data;
-     }
-   else
-       buf = pdst;
-
-   while (pdst < dst_end)
-     {
-#ifdef EVAS_SLI
-       if ((y % dc->sli.h) == dc->sli.y)
-#endif
-         {
-            gfunc(map, len, buf, mask, w, xoff, yoff, gdata);
-            if (!direct_copy)
-              bfunc(buf, mask, 0, pdst, w);
-         }
-       buf += buf_step;
-       pdst += dst->cache_entry.w;
-       yoff++;
-#ifdef EVAS_SLI
-       y++;
-#endif
-     }
-
-   if (!direct_copy)
-     {
-       evas_common_image_line_buffer_release(argb_buf);
-       if (alpha_buf)
-          evas_common_image_alpha_line_buffer_release(alpha_buf);
-     }
-   evas_common_cpu_end_opt();
-}
-
-static void
-_evas_common_gradient2_stops_scale(RGBA_Gradient2 *gr)
-{
-   Eina_Inlist  *l;
-   RGBA_Gradient2_Color_Np_Stop  *gc, *gc_next;
-   double  scale;
-   int  len;
-
-   if (!gr || !gr->stops.stops) return;
-
-   scale = 1.0;
-   gc = (RGBA_Gradient2_Color_Np_Stop *)gr->stops.stops;
-   l = gr->stops.stops->next;
-   while (l)
-     {
-       double dp;
-
-       gc_next = (RGBA_Gradient2_Color_Np_Stop *)l;
-       dp = gc_next->pos - gc->pos;
-       if (dp > 0.000030517)
-           scale = MIN(scale, dp);
-       gc = gc_next;
-       l = l->next;
-    }
-
-   scale = 2.0 / scale;
-   len = 1;
-   gc = (RGBA_Gradient2_Color_Np_Stop *)gr->stops.stops;
-   l = gr->stops.stops->next;
-   while (l)
-     {
-       int dist;
-
-       gc_next = (RGBA_Gradient2_Color_Np_Stop *)l;
-       dist = 0.5 + (scale * (gc_next->pos - gc->pos));
-       if (dist < 1)
-          dist = 1;
-       len += dist;
-       gc->dist = dist;
-       gc = gc_next;
-       l = l->next;
-     }
-
-   if (len > 65535)
-       len = 65535;
-   gr->stops.len = len;
-}
-
-static void
-_evas_common_gradient2_map_argb(RGBA_Draw_Context *dc, RGBA_Gradient2 *gr, int len)
-{
-   if (!gr || !dc)
-       return;
-   if ((len < 1) || (len > 65535))
-     {
-       if (gr->map.data)
-          free(gr->map.data);
-       gr->map.data = NULL;
-       gr->map.len = 0;
-       return;
-     }
-   if ((len != gr->map.len) || (!gr->map.data))
-       gr->map.data = realloc(gr->map.data, len * sizeof(DATA32));
-   if (!gr->map.data)
-     { gr->map.len = 0; return; }
-   gr->map.len = len;
-   gr->map.has_alpha = gr->has_alpha;
-
-   if (!gr->stops.stops) return;
-
-   _evas_common_gradient2_stops_scale(gr);
-
-     {
-       Eina_Inlist  *lc;
-       RGBA_Gradient2_Color_Np_Stop  *gc, *gc_next;
-       DATA32  *pmap, *map_end;
-       DATA8   *pamap = NULL;
-       int   i, dii;
-       int   r, g, b, a;
-       int   next_r, next_g, next_b, next_a;
-       int   rr, drr, gg, dgg, bb, dbb, aa, daa;
-
-       gr->stops.cdata = realloc(gr->stops.cdata, gr->stops.len * sizeof(DATA32));
-       if (!gr->stops.cdata)  return;
-       pmap = gr->stops.cdata;  map_end = pmap + gr->stops.len;
-
-       if (gr->has_alpha)
-         {
-           gr->stops.adata = realloc(gr->stops.adata, gr->stops.len * sizeof(DATA8));
-           if (!gr->stops.adata)
-             { free(gr->stops.cdata);  gr->stops.cdata = NULL;  return; }
-           pamap = gr->stops.adata;
-         }
-
-       gc = (RGBA_Gradient2_Color_Np_Stop *)gr->stops.stops;
-       r = gc->r;  g = gc->g;  b = gc->b;  a = gc->a;
-       lc = gr->stops.stops->next;
-
-       while (pmap < map_end)
-         {
-           if (lc)
-             {
-               i = gc->dist;
-               dii = 65536 / i;
-               gc_next = (RGBA_Gradient2_Color_Np_Stop *)lc;
-               next_r = gc_next->r;  next_g = gc_next->g;  next_b = gc_next->b;  next_a = gc_next->a;
-               rr = r << 16;  drr = ((next_r - r) * dii);
-               gg = g << 16;  dgg = ((next_g - g) * dii);
-               bb = b << 16;  dbb = ((next_b - b) * dii);
-               aa = a << 16;  daa = ((next_a - a) * dii);
-               while (i--)
-                 {
-                   r = rr >> 16;  r += (rr - (r << 16)) >> 15;
-                   g = gg >> 16;  g += (gg - (g << 16)) >> 15;
-                   b = bb >> 16;  b += (bb - (b << 16)) >> 15;
-                   *pmap++ = 0xff000000 + RGB_JOIN(r,g,b);
-                   if (pamap)
-                     {
-                       a = aa >> 16;  a += (aa - (a << 16)) >> 15;
-                       *pamap++ = a;
-                       aa += daa;
-                     }
-                   rr += drr;  gg += dgg;  bb += dbb;
-                 }
-               gc = gc_next;
-               r = next_r;  g = next_g;  b = next_b;  a = next_a;
-               lc = lc->next;
-              }
-           else
-             {
-               *pmap++ = 0xff000000 + RGB_JOIN(gc->r,gc->g,gc->b);
-               if (pamap) *pamap++ = gc->a;
-             }
-         }
-     }
-
-   if (gr->stops.cdata && gr->stops.adata)
-     {
-       evas_common_scale_rgba_a8_span(gr->stops.cdata, gr->stops.adata, gr->stops.len,
-                                       dc->mul.col, gr->map.data, gr->map.len, 1);
-       return;
-     }
-
-   evas_common_scale_rgba_span(gr->stops.cdata, NULL, gr->stops.len,
-                               dc->mul.col, gr->map.data, gr->map.len, 1);
-   gr->map.has_alpha |= (!!(255 - (dc->mul.col >> 24)));
-}
-
-static void
-_evas_common_gradient2_map_ahsv(RGBA_Draw_Context *dc, RGBA_Gradient2 *gr, int len)
-{
-   if (!gr || !dc)
-       return;
-   if ((len < 1) || (len > 65535))
-     {
-       if (gr->map.data)
-          free(gr->map.data);
-       gr->map.data = NULL;
-       gr->map.len = 0;
-       return;
-     }
-   if ((len != gr->map.len) || (!gr->map.data))
-       gr->map.data = realloc(gr->map.data, len * sizeof(DATA32));
-   if (!gr->map.data)
-     { gr->map.len = 0; return; }
-   gr->map.len = len;
-   gr->map.has_alpha = gr->has_alpha;
-
-   if (!gr->stops.stops) return;
-
-   _evas_common_gradient2_stops_scale(gr);
-
-     {
-       Eina_Inlist  *lc;
-       RGBA_Gradient2_Color_Np_Stop  *gc, *gc_next;
-       DATA32  *pmap, *map_end;
-       DATA8   *pamap = NULL;
-       int   i, dii;
-       int   h, s, v;
-       int   next_h, next_s, next_v;
-       int   hh, dhh, ss, dss, vv, dvv, aa, daa;
-       int   r, g, b, a;
-       int   next_r, next_g, next_b, next_a;
-
-       gr->stops.cdata = realloc(gr->stops.cdata, gr->stops.len * sizeof(DATA32));
-       if (!gr->stops.cdata)  return;
-       pmap = gr->stops.cdata;  map_end = pmap + gr->stops.len;
-
-       if (gr->has_alpha)
-         {
-           gr->stops.adata = realloc(gr->stops.adata, gr->stops.len * sizeof(DATA8));
-           if (!gr->stops.adata)
-             { free(gr->stops.cdata);  gr->stops.cdata = NULL;  return; }
-           pamap = gr->stops.adata;
-         }
-
-       gc = (RGBA_Gradient2_Color_Np_Stop *)gr->stops.stops;
-       r = gc->r;  g = gc->g;  b = gc->b;  a = gc->a;
-       evas_common_convert_color_rgb_to_hsv_int(r, g, b, &h, &s, &v);
-       lc = gr->stops.stops->next;
-
-       while (pmap < map_end)
-         {
-           if (lc)
-             {
-               i = gc->dist;
-               dii = 65536 / i;
-               gc_next = (RGBA_Gradient2_Color_Np_Stop *)lc;
-
-               next_r = gc_next->r;  next_g = gc_next->g;  next_b = gc_next->b;  next_a = gc_next->a;
-               evas_common_convert_color_rgb_to_hsv_int(next_r, next_g, next_b,
-                                                        &next_h, &next_s, &next_v);
-               hh = h << 16;  dhh = ((next_h - h) * dii);
-               ss = s << 16;  dss = ((next_s - s) * dii);
-               vv = v << 16;  dvv = ((next_v - v) * dii);
-               aa = a << 16;  daa = ((next_a - a) * dii);
-               while (i--)
-                 {
-                   h = hh >> 16;  h += (hh - (h << 16)) >> 15;
-                   s = ss >> 16;  s += (ss - (s << 16)) >> 15;
-                   v = vv >> 16;  v += (vv - (v << 16)) >> 15;
-                   evas_common_convert_color_hsv_to_rgb_int(h, s, v, &r, &g, &b);
-                   *pmap++ = 0xff000000 + RGB_JOIN(r,g,b);
-                   if (pamap)
-                     {
-                       a = aa >> 16;  a += (aa - (a << 16)) >> 15;
-                       *pamap++ = a;
-                       aa += daa;
-                     }
-                   hh += dhh;  ss += dss;  vv += dvv;
-                 }
-               gc = gc_next;
-               h = next_h;  s = next_s;  v = next_v;  a = next_a;
-               lc = lc->next;
-              }
-           else
-             {
-               *pmap++ = 0xff000000 + RGB_JOIN(gc->r,gc->g,gc->b);
-               if (pamap) *pamap++ = gc->a;
-             }
-         }
-     }
-
-   if (gr->stops.cdata && gr->stops.adata)
-     {
-       evas_common_scale_hsva_a8_span(gr->stops.cdata, gr->stops.adata, gr->stops.len,
-                                          dc->mul.col, gr->map.data, gr->map.len, 1);
-       return;
-     }
-   evas_common_scale_hsva_span(gr->stops.cdata, NULL, gr->stops.len,
-                               dc->mul.col, gr->map.data, gr->map.len, 1);
-   gr->map.has_alpha |= (!!(255 - (dc->mul.col >> 24)));
-}
-
-EAPI void
-evas_common_gradient2_map(RGBA_Draw_Context *dc, RGBA_Gradient2 *gr, int len)
-{
-   if (!gr || !dc) return;
-   if (dc->interpolation.color_space == _EVAS_COLOR_SPACE_AHSV)
-     {
-       _evas_common_gradient2_map_ahsv(dc, gr, len);
-       return;
-     }
-   _evas_common_gradient2_map_argb(dc, gr, len);
-}
diff --git a/src/lib/engines/common/evas_gradient2_radial.c b/src/lib/engines/common/evas_gradient2_radial.c
deleted file mode 100644 (file)
index 5ea8d6b..0000000
+++ /dev/null
@@ -1,456 +0,0 @@
-#include "evas_common.h"
-#include "evas_private.h"
-#include <math.h>
-
-#define RADIAL_EPSILON 0.000030517578125
-
-typedef struct _Radial_Data   Radial_Data;
-
-struct _Radial_Data
-{
-   int    axx, axy;
-   int    ayx, ayy;
-   float  cx, cy, rx, ry;
-   float  cx0, cy0;
-   int    len;
-};
-
-
-static void 
-radial_init(void);
-
-static void 
-radial_shutdown(void);
-
-static void 
-radial_init_geom(RGBA_Gradient2 *gr);
-
-static void 
-radial_update_geom(RGBA_Gradient2 *gr);
-
-static void 
-radial_free_geom(void *gdata);
-
-static int 
-radial_has_alpha(RGBA_Gradient2 *gr, int op);
-
-static int 
-radial_has_mask(RGBA_Gradient2 *gr, int op);
-
-static int 
-radial_get_map_len(RGBA_Gradient2 *gr);
-
-static Gfx_Func_Gradient2_Fill 
-radial_get_fill_func(RGBA_Gradient2 *gr, int op);
-
-static RGBA_Gradient2_Type  radial = {"radial", radial_init, radial_shutdown,
-                                     radial_init_geom,
-                                     radial_update_geom, radial_free_geom,
-                                     radial_has_alpha, radial_has_mask,
-                                     radial_get_map_len, radial_get_fill_func};
-
-
-EAPI RGBA_Gradient2_Type  *
-evas_common_gradient2_type_radial_get(void)
-{
-    return &radial;
-}
-
-EAPI RGBA_Gradient2 *
-evas_common_gradient2_radial_new(void)
-{
-   RGBA_Gradient2 *gr;
-
-   gr = calloc(1, sizeof(RGBA_Gradient2));
-   if (!gr) return NULL;
-   gr->references = 1;
-   gr->type.id = MAGIC_OBJ_GRADIENT_RADIAL;
-   gr->type.geometer = &radial;
-   radial_init_geom(gr);
-   return gr;
-}
-
-EAPI void
-evas_common_gradient2_radial_fill_set(RGBA_Gradient2 *gr, float cx, float cy, float rx, float ry)
-{
-   Radial_Data *radial_data;
-
-   if (!gr) return;
-   if (gr->type.id != MAGIC_OBJ_GRADIENT_RADIAL) return;
-   if (gr->type.geometer != &radial) return;
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return;
-   if (rx < 0) rx = -rx;  if (ry < 0) ry = -ry;
-   radial_data->cx = cx;  radial_data->cy = cy;
-   radial_data->rx = 1 + rx;  radial_data->ry = 1 + ry;
-}
-
-
-/** internal functions **/
-
-static void
-radial_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                  int x, int y, void *params_data);
-
-static void
-radial_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                 int x, int y, void *params_data);
-
-static void
-radial_restrict_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, void *params_data);
-
-static void
-radial_restrict_masked_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, void *params_data);
-
-static void
-radial_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-              int x, int y, void *params_data);
-
-
-static void 
-radial_init(void)
-{
-}
-
-static void 
-radial_shutdown(void)
-{
-}
-
-static void 
-radial_free_geom(void *gdata)
-{
-   Radial_Data *data = (Radial_Data *)gdata;
-   if (data) free(data);
-}
-
-static void
-radial_init_geom(RGBA_Gradient2 *gr)
-{
-   Radial_Data   *radial_data;
-
-   if (!gr || (gr->type.geometer != &radial)) return;
-
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data)
-     {
-       radial_data = calloc(1, sizeof(Radial_Data));
-       if (!radial_data)  return;
-       radial_data->cx = radial_data->cy = 0;
-       radial_data->rx = radial_data->ry = 0;
-       radial_data->axx = 65536;  radial_data->axy = 0;
-       radial_data->ayx = 0;  radial_data->ayy = 65536;
-       radial_data->len = 0;
-    }
-   gr->type.gdata = radial_data;
-}
-
-static void 
-radial_update_geom(RGBA_Gradient2 *gr)
-{
-   Radial_Data   *radial_data;
-   double f, flen;
-   double  fx1, fy1;
-   int len;
-
-   if (!gr || (gr->type.geometer != &radial)) return;
-
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return;
-
-   if ((radial_data->rx < RADIAL_EPSILON) || (radial_data->ry < RADIAL_EPSILON)) return;
-
-   radial_data->len = 0;
-   f = (gr->fill.transform.mxx * (double)gr->fill.transform.myy) - (gr->fill.transform.mxy * (double)gr->fill.transform.myx);
-   if (fabs(f) < RADIAL_EPSILON) return;
-
-   f = 1.0 / f;
-   radial_data->cx0 = (((gr->fill.transform.myy * (double)radial_data->cx) - (gr->fill.transform.mxy * (double)radial_data->cy)) * f) - gr->fill.transform.mxz;
-   radial_data->cy0 = ((-(gr->fill.transform.myx * (double)radial_data->cx) + (gr->fill.transform.mxx * (double)radial_data->cy)) * f) - gr->fill.transform.myz;
-
-   fx1 = (gr->fill.transform.myy * (double)radial_data->rx) * f;
-   fy1 = (gr->fill.transform.myx * (double)radial_data->rx) * f;
-
-   flen = hypot(fx1, fy1);
-
-   fx1 = (gr->fill.transform.mxy * (double)radial_data->ry) * f;
-   fy1 = (gr->fill.transform.mxx * (double)radial_data->ry) * f;
-
-   flen = sqrt(flen * hypot(fx1, fy1));
-
-   radial_data->len = len = flen + 0.5;
-   if (!len) return;
-
-   radial_data->axx = (((double)gr->fill.transform.mxx * 65536) * flen) / radial_data->rx;
-   radial_data->axy = (((double)gr->fill.transform.mxy * 65536) * flen) / radial_data->rx;
-
-   radial_data->ayx = (((double)gr->fill.transform.myx * 65536) * flen) / radial_data->ry;
-   radial_data->ayy = (((double)gr->fill.transform.myy * 65536) * flen) / radial_data->ry;
-}
-
-static int
-radial_has_alpha(RGBA_Gradient2 *gr, int op)
-{
-   Radial_Data   *radial_data;
-
-   if (!gr || (gr->type.geometer != &radial)) return 0;
-   if (gr->has_alpha | gr->map.has_alpha)
-       return 1;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) || 
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       return 0;
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return 0;
-   if (gr->fill.spread == _EVAS_TEXTURE_RESTRICT)
-       return 1;
-   return 0;
-}
-
-static int
-radial_has_mask(RGBA_Gradient2 *gr, int op)
-{
-   Radial_Data   *radial_data;
-
-   if (!gr || (gr->type.geometer != &radial)) return 0;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) || 
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-     {
-       radial_data = (Radial_Data *)gr->type.gdata;
-       if (!radial_data) return 0;
-       if (gr->fill.spread == _EVAS_TEXTURE_RESTRICT)
-           return 1;
-     }
-   return 0;
-}
-
-static int
-radial_get_map_len(RGBA_Gradient2 *gr)
-{
-   Radial_Data   *radial_data;
-
-   if (!gr || (gr->type.geometer != &radial)) return 0;
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return 0;
-   return radial_data->len;
-}
-
-static Gfx_Func_Gradient2_Fill
-radial_get_fill_func(RGBA_Gradient2 *gr, int op)
-{
-   Radial_Data   *radial_data;
-   Gfx_Func_Gradient2_Fill  sfunc = NULL;
-   int masked_op = 0;
-
-   if (!gr || (gr->type.geometer != &radial)) return sfunc;
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return sfunc;
-
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) || 
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       masked_op = 1;
-
-   switch (gr->fill.spread)
-     {
-      case _EVAS_TEXTURE_REPEAT:
-       sfunc = radial_repeat_aa;
-      break;
-      case _EVAS_TEXTURE_REFLECT:
-       sfunc = radial_reflect_aa;
-      break;
-      case _EVAS_TEXTURE_RESTRICT:
-       if (masked_op)
-          sfunc = radial_restrict_masked_aa;
-       else
-          sfunc = radial_restrict_aa;
-      break;
-      case _EVAS_TEXTURE_PAD:
-       sfunc = radial_pad_aa;
-      break;
-      default:
-       sfunc = radial_repeat_aa;
-      break;
-     }
-   return sfunc;
-}
-
-
-static void
-radial_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                 int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy;
-
-   evas_common_cpu_end_opt();
-   xx = (gdata->axx * (x - gdata->cx0 + 0.5)) + (gdata->axy * (y - gdata->cy0 + 0.5));
-   yy = (gdata->ayx * (x - gdata->cx0 + 0.5)) + (gdata->ayy * (y - gdata->cy0 + 0.5));
-
-   while (dst < dst_end)
-     {
-       unsigned int  ll = hypot(xx, yy);
-       unsigned int  l = (ll >> 16);
-       int  a = 1 + ((ll & 0xffff) >> 8);
-
-       if (l >= src_len)
-           l = l % src_len;
-       *dst = src[l];
-       if (l + 1 < src_len)
-         {
-           *dst = INTERP_256(a, src[l + 1], *dst);
-         }
-       if (l == (src_len - 1))
-         {
-           *dst = INTERP_256(a, src[0], *dst);
-         }
-       dst++;  xx += gdata->axx;  yy += gdata->ayx;
-     }
-}
-
-
-static void
-radial_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                  int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy;
-
-   evas_common_cpu_end_opt();
-   xx = (gdata->axx * (x - gdata->cx0 + 0.5)) + (gdata->axy * (y - gdata->cy0 + 0.5));
-   yy = (gdata->ayx * (x - gdata->cx0 + 0.5)) + (gdata->ayy * (y - gdata->cy0 + 0.5));
-
-   while (dst < dst_end)
-     {
-       unsigned int  ll = hypot(xx, yy);
-       unsigned int  l = (ll >> 16);
-       int  a = 1 + ((ll & 0xffff) >> 8);
-
-       if (l >= src_len)
-         {
-           int  m = (l % (2 * src_len));
-
-           l = (l % src_len);
-           if (m >= src_len)
-             { l = src_len - l - 1;  a = 257 - a; }
-         }
-       *dst = src[l];
-       if (l + 1 < src_len)
-           *dst = INTERP_256(a, src[l + 1], *dst);
-
-       dst++;  xx += gdata->axx;  yy += gdata->ayx;
-     }
-}
-
-
-static void
-radial_restrict_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                   int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy;
-
-   evas_common_cpu_end_opt();
-   xx = (gdata->axx * (x - gdata->cx0 + 0.5)) + (gdata->axy * (y - gdata->cy0 + 0.5));
-   yy = (gdata->ayx * (x - gdata->cx0 + 0.5)) + (gdata->ayy * (y - gdata->cy0 + 0.5));
-
-   while (dst < dst_end)
-     {
-       unsigned int  ll = hypot(xx, yy);
-       unsigned int  l = (ll >> 16);
-
-       *dst = 0;
-       if (l < src_len)
-         {
-           int a = 1 + ((ll & 0xffff) >> 8);
-
-           *dst = src[l];
-           if (l + 1 < src_len)
-               *dst = INTERP_256(a, src[l + 1], *dst);
-           if (l == (src_len - 1))
-             {
-               *dst = INTERP_256(a, src[0], *dst);
-               *dst = MUL_256(257 - a, *dst);
-             }
-         }
-       dst++;  xx += gdata->axx;  yy += gdata->ayx;
-     }
-}
-
-
-static void
-radial_restrict_masked_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy;
-
-   evas_common_cpu_end_opt();
-   xx = (gdata->axx * (x - gdata->cx0 + 0.5)) + (gdata->axy * (y - gdata->cy0 + 0.5));
-   yy = (gdata->ayx * (x - gdata->cx0 + 0.5)) + (gdata->ayy * (y - gdata->cy0 + 0.5));
-
-   while (dst < dst_end)
-     {
-       unsigned int  ll = hypot(xx, yy);
-       unsigned int  l = (ll >> 16);
-
-       *dst = 0;  *mask = 0;
-       if (l < src_len)
-         {
-           int a = 1 + ((ll & 0xffff) >> 8);
-
-           *dst = src[l];  *mask = 255;
-           if (l + 1 < src_len)
-               *dst = INTERP_256(a, src[l + 1], *dst);
-           if (l == (src_len - 1))
-             {
-               *dst = INTERP_256(a, src[0], *dst);
-               *mask = 256 - a;
-             }
-         }
-       dst++;  mask++;  xx += gdata->axx;  yy += gdata->ayx;
-     }
-}
-
-
-static void
-radial_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-              int x, int y, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy;
-
-   evas_common_cpu_end_opt();
-   xx = (gdata->axx * (x - gdata->cx0 + 0.5)) + (gdata->axy * (y - gdata->cy0 + 0.5));
-   yy = (gdata->ayx * (x - gdata->cx0 + 0.5)) + (gdata->ayy * (y - gdata->cy0 + 0.5));
-
-   while (dst < dst_end)
-     {
-       unsigned int  ll = hypot(xx, yy);
-       unsigned int  l = (ll >> 16);
-
-       *dst = 0;
-       if (l < src_len)
-         {
-           int a = 1 + ((ll & 0xffff) >> 8);
-
-           *dst = src[l];
-           if (l + 1 < src_len)
-               *dst = INTERP_256(a, src[l + 1], src[l]);
-         }
-        if (l == 0)
-          {
-            *dst = src[0];
-          }
-        if (l >= src_len)
-          {
-            *dst = src[src_len - 1];
-          }
-       dst++;  xx += gdata->axx;  yy += gdata->ayx;
-     }
-}
diff --git a/src/lib/engines/common/evas_gradient_angular.c b/src/lib/engines/common/evas_gradient_angular.c
deleted file mode 100644 (file)
index 628c6b3..0000000
+++ /dev/null
@@ -1,1896 +0,0 @@
-#include <math.h>
-
-#include "evas_common.h"
-#include "evas_gradient_private.h"
-
-typedef struct _Angular_Data   Angular_Data;
-struct _Angular_Data
-{
-   float  an, cy;
-
-   int    sx, sy, s;
-   float  off;
-   int    len;
-};
-
-static void
-angular_init(void);
-
-static void
-angular_shutdown(void);
-
-static void
-angular_init_geom(RGBA_Gradient *gr);
-
-static void
-angular_setup_geom(RGBA_Gradient *gr);
-
-static void
-angular_free_geom(void *gdata);
-
-static int
-angular_has_alpha(RGBA_Gradient *gr, int op);
-
-static int
-angular_has_mask(RGBA_Gradient *gr, int op);
-
-static int
-angular_get_map_len(RGBA_Gradient *gr);
-
-static Gfx_Func_Gradient_Fill
-angular_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
-
-static RGBA_Gradient_Type  angular = {"angular", angular_init, angular_shutdown,
-                                     angular_init_geom, angular_setup_geom, angular_free_geom,
-                                     angular_has_alpha, angular_has_mask,
-                                     angular_get_map_len, angular_get_fill_func};
-
-
-/** internal functions **/
-
-static void
-angular_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_reflect_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_reflect_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_reflect_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_reflect_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_repeat_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_repeat_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_repeat_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_repeat_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_reflect_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_reflect_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_reflect_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_reflect_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_repeat_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_repeat_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_repeat_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_restrict_repeat_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_pad_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_pad_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_pad_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-angular_pad_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-
-
-RGBA_Gradient_Type  *
-evas_common_gradient_angular_get(void)
-{
-    return &angular;
-}
-
-static void
-angular_init(void)
-{
-}
-
-static void
-angular_shutdown(void)
-{
-}
-
-static void
-angular_free_geom(void *gdata)
-{
-   Angular_Data *data = (Angular_Data *)gdata;
-   if (data) free(data);
-}
-
-static void
-angular_setup_geom(RGBA_Gradient *gr)
-{
-   Angular_Data   *angular_data;
-
-   if (!gr || (gr->type.geometer != &angular)) return;
-
-   angular_data = (Angular_Data *)gr->type.gdata;
-   if (!angular_data) return;
-   angular_data->sx = gr->fill.w;
-   angular_data->sy = gr->fill.h;
-   angular_data->s = angular_data->sx;
-   if (angular_data->sy > angular_data->sx)
-       angular_data->s = angular_data->sy;
-   angular_data->off = gr->map.offset;
-   angular_data->len = (2 * M_PI) * angular_data->s * angular_data->cy;
-}
-
-static void
-angular_init_geom(RGBA_Gradient *gr)
-{
-   Angular_Data   *angular_data;
-   int    err = 1;
-   char   *s, *p, key[256];
-   float  val, an, cy;
-
-   if (!gr || (gr->type.geometer != &angular)) return;
-
-   angular_data = (Angular_Data *)gr->type.gdata;
-   if (!angular_data)
-     {
-       angular_data = calloc(1, sizeof(Angular_Data));
-       if (!angular_data)  return;
-       angular_data->an = -1.0;
-       angular_data->cy = 1.0;
-       angular_data->sx = 32;
-       angular_data->sy = 32;
-       angular_data->s = 32;
-       angular_data->off = 0.0;
-       angular_data->len = (2 * M_PI) * 32;
-     }
-   gr->type.gdata = angular_data;
-   if (!gr->type.params || !*(gr->type.params))
-       return;
-
-   s = strdup(gr->type.params);
-   if (!s) return;
-
-   an = angular_data->an;
-   cy = angular_data->cy;
-   p = s;
-   while ((p = evas_common_gradient_get_key_fval(p, key, &val)))
-     {
-       if (!strcmp(key, "annulus"))
-         {
-           err = 0;
-           an = val;
-         }
-       else if (!strcmp(key, "wrap"))
-         {
-           err = 0;
-           cy = val;
-         }
-       else
-         {
-           err = 1;
-           break;
-         }
-     }
-   if (!err)
-     {
-       if (an < 0.0) an = 0.0;
-       if (an > 1.0) an = 1.0;
-       angular_data->an = an;
-       if (cy < 0.0) cy = 0.0;
-       if (cy > 1.0) cy = 1.0;
-       angular_data->cy = cy;
-     }
-   free(s);
-}
-
-
-static int
-angular_has_alpha(RGBA_Gradient *gr, int op)
-{
-   Angular_Data   *angular_data;
-
-   if (!gr || (gr->type.geometer != &angular)) return 0;
-
-   if (gr->has_alpha | gr->map.has_alpha)
-       return 1;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       return 0;
-   angular_data = (Angular_Data *)gr->type.gdata;
-   if (!angular_data)  return 0;
-   if ((int)angular_data->an >= 0)
-       return 1;
-   if ( ((gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT))
-        && (angular_data->cy < 1.0) )
-       return 1;
-   return 0;
-}
-
-static int
-angular_has_mask(RGBA_Gradient *gr, int op)
-{
-   Angular_Data   *angular_data;
-
-   if (!gr || (gr->type.geometer != &angular)) return 0;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-     {
-       angular_data = (Angular_Data *)gr->type.gdata;
-       if (!angular_data)  return 0;
-       if ((int)angular_data->an >= 0)
-           return 1;
-       if ( ((gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT))
-             && (angular_data->cy < 1.0) )
-           return 1;
-     }
-   return 0;
-}
-
-static int
-angular_get_map_len(RGBA_Gradient *gr)
-{
-   Angular_Data   *angular_data;
-
-   if (!gr || (gr->type.geometer != &angular)) return 0;
-   angular_data = (Angular_Data *)gr->type.gdata;
-   if (!angular_data)  return 0;
-   return angular_data->len;
-}
-
-static Gfx_Func_Gradient_Fill
-angular_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
-{
-   Gfx_Func_Gradient_Fill  sfunc = NULL;
-   int masked_op = 0;
-   Angular_Data   *angular_data;
-
-   if (!gr || (gr->type.geometer != &angular)) return sfunc;
-   angular_data = (Angular_Data *)gr->type.gdata;
-   if (!angular_data)  return sfunc;
-
-   angular_data->off = gr->map.offset;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       masked_op = 1;
-
-   switch (gr->fill.spread)
-     {
-      case _EVAS_TEXTURE_REFLECT:
-       {
-        if (aa)
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_reflect_aa_masked_annulus;
-               else
-                  sfunc = angular_reflect_aa_annulus;
-             }
-           else
-              sfunc = angular_reflect_aa;
-          }
-        else
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_reflect_masked_annulus;
-               else
-                  sfunc = angular_reflect_annulus;
-             }
-           else
-              sfunc = angular_reflect;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_REPEAT:
-       {
-        if (aa)
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_repeat_aa_masked_annulus;
-               else
-                  sfunc = angular_repeat_aa_annulus;
-             }
-           else
-              sfunc = angular_repeat_aa;
-          }
-        else
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_repeat_masked_annulus;
-               else
-                  sfunc = angular_repeat_annulus;
-             }
-           else
-              sfunc = angular_repeat;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT:
-        angular_data->off = 0;
-      case _EVAS_TEXTURE_RESTRICT_REFLECT:
-       {
-        if (aa)
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_restrict_reflect_aa_masked_annulus;
-               else
-                  sfunc = angular_restrict_reflect_aa_annulus;
-             }
-           else if (angular_data->cy < 1.0)
-             {
-               if (masked_op)
-                  sfunc = angular_restrict_reflect_aa_masked;
-               else
-                  sfunc = angular_restrict_reflect_aa;
-             }
-           else
-              sfunc = angular_restrict_reflect_aa;
-          }
-        else
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_restrict_reflect_masked_annulus;
-               else
-                  sfunc = angular_restrict_reflect_annulus;
-             }
-           else if (angular_data->cy < 1.0)
-             {
-               if (masked_op)
-                  sfunc = angular_restrict_reflect_masked;
-               else
-                  sfunc = angular_restrict_reflect;
-             }
-           else
-              sfunc = angular_restrict_reflect;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT_REPEAT:
-       {
-        if (aa)
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_restrict_repeat_aa_masked_annulus;
-               else
-                  sfunc = angular_restrict_repeat_aa_annulus;
-             }
-           else if (angular_data->cy < 1.0)
-             {
-               if (masked_op)
-                  sfunc = angular_restrict_repeat_aa_masked;
-               else
-                  sfunc = angular_restrict_repeat_aa;
-             }
-           else
-              sfunc = angular_restrict_repeat_aa;
-          }
-        else
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_restrict_repeat_masked_annulus;
-               else
-                  sfunc = angular_restrict_repeat_annulus;
-             }
-           else if (angular_data->cy < 1.0)
-             {
-               if (masked_op)
-                  sfunc = angular_restrict_repeat_masked;
-               else
-                  sfunc = angular_restrict_repeat;
-             }
-           else
-              sfunc = angular_restrict_repeat;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_PAD:
-       {
-        if (aa)
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_pad_aa_masked_annulus;
-               else
-                  sfunc = angular_pad_aa_annulus;
-             }
-           else
-              sfunc = angular_pad_aa;
-          }
-        else
-          {
-           if ((int)angular_data->an >= 0)
-             {
-               if (masked_op)
-                  sfunc = angular_pad_masked_annulus;
-               else
-                  sfunc = angular_pad_annulus;
-             }
-           else
-              sfunc = angular_pad;
-          }
-       }
-        break;
-      default:
-       sfunc = angular_reflect_aa;
-      break;
-     }
-   return sfunc;
-}
-
-#define SETUP_ANGULAR_FILL \
-   if (gdata->sx != gdata->s) \
-     { \
-       axx = (gdata->s * axx) / gdata->sx; \
-       axy = (gdata->s * axy) / gdata->sx; \
-     } \
-   if (gdata->sy != gdata->s) \
-     { \
-       ayy = (gdata->s * ayy) / gdata->sy; \
-       ayx = (gdata->s * ayx) / gdata->sy; \
-     } \
-   xx = (axx * x) + (axy * y); \
-   yy = (ayx * x) + (ayy * y);
-
-
-static void
-angular_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx));
-       int  l = (ll >> 16);
-
-       l += ((ll - (l << 16)) >> 15) + off;
-       if (l < 0) l = -l;
-       if (l >= src_len)
-         {
-           int  m = (l % (2 * src_len));
-
-           l = (l % src_len);
-           if (m >= src_len)
-               l = src_len - l - 1;
-         }
-       *dst = src[l];
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx));
-       int  l = (ll >> 16), lp;
-       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-       lp = l + off;
-       if (lp < 0) { lp = -lp;  a = 257 - a; }
-       if (lp >= src_len)
-         {
-           int  m = (lp % (2 * src_len));
-
-           lp = (lp % src_len);
-           if (m >= src_len)
-               { lp = src_len - lp - 1;  a = 257 - a; }
-         }
-       *dst = src[lp];
-       if (lp + 1 < src_len)
-          *dst = INTERP_256(a, src[lp + 1], *dst);
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_reflect_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ((r >= r0) && (r <= r1))
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = (ll >> 16);
-
-           l += ((ll - (l << 16)) >> 15) + off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                   l = src_len - l - 1;
-             }
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_reflect_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ((r >= r0) && (r <= r1))
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = (ll >> 16), lp;
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (r == r0)
-             {
-               a = 1 + ((rr - rr0) >> 8);
-               *dst = MUL_256(a, *dst);
-             }
-           if (r == r1)
-             {
-               a = 256 - ((rr - rr1) >> 8);
-               *dst = MUL_256(a, *dst);
-             }
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_reflect_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ((r >= r0) && (r <= r1))
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx)), l = ll >> 16;
-
-           l += ((ll - (l << 16)) >> 15) + off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                   l = src_len - l - 1;
-             }
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_reflect_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ((r >= r0) && (r <= r1))
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = (ll >> 16), lp;
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (r == r0)
-               *mask = ((rr - rr0) >> 8);
-           if (r == r1)
-               *mask = 255 - ((rr - rr1) >> 8);
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx));
-       int  l = ll >> 16;
-
-       l += ((ll - (l << 16)) >> 15) + off;
-       l = l % src_len;
-       if (l < 0)
-          l += src_len;
-       *dst = src[l];
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx));
-       int  l = (ll >> 16), lp;
-       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-       lp = l + off;
-       lp = lp % src_len;
-       if (lp < 0)
-          lp += src_len;
-       *dst = src[lp];
-       if (lp + 1 < src_len)
-          *dst = INTERP_256(a, src[lp + 1], *dst);
-       if (lp == (src_len - 1))
-          *dst = INTERP_256(a, src[0], *dst);
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_repeat_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ((r >= r0) && (r <= r1))
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16;
-
-           l += ((ll - (l << 16)) >> 15) + off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-          *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_repeat_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ((r >= r0) && (r <= r1))
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16, lp;
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == (src_len - 1))
-               *dst = INTERP_256(a, src[0], *dst);
-           if (r == r0)
-             {
-               a = 1 + ((rr - rr0) >> 8);
-               *dst = MUL_256(a, *dst);
-             }
-           if (r == r1)
-             {
-               a = 256 - ((rr - rr1) >> 8);
-               *dst = MUL_256(a, *dst);
-             }
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_repeat_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ((r >= r0) && (r <= r1))
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16;
-
-           l += ((ll - (l << 16)) >> 15) + off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_repeat_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ((r >= r0) && (r <= r1))
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16, lp;
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == (src_len - 1))
-               *dst = INTERP_256(a, src[0], *dst);
-           if (r == r0)
-               *mask = ((rr - rr0) >> 8);
-           if (r == r1)
-               *mask = 255 - ((rr - rr1) >> 8);
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx));
-       int  l = ll >> 16;
-
-       *dst = 0;
-       l += ((ll - (l << 16)) >> 15);
-       if (l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx));
-       int  l = ll >> 16, lp;
-
-       *dst = 0;
-       if (l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (l == (src_len - 1))
-               *dst = MUL_256(257 - a0, *dst);
-           if (l == 0)
-               *dst = MUL_256(a0, *dst);
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx)), l = ll >> 16;
-
-       *dst = 0;  *mask = 0;
-       l += (ll - (l << 16)) >> 15;
-       if (l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI +  atan2(yy, xx));
-       int  l = ll >> 16, lp;
-
-       *dst = 0;  *mask = 0;
-       if (l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (l == (src_len - 1))
-               *mask = 255 - a0;
-           if (l == 0)
-               *mask = a0;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_reflect_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI +  atan2(yy, xx));
-           int  l = ll >> 16;
-
-           l += (ll - (l << 16)) >> 15;
-           if (l < src_len)
-             {
-               l += off;
-               if (l < 0) l = -l;
-               if (l >= src_len)
-                 {
-                   int  m = (l % (2 * src_len));
-
-                   l = (l % src_len);
-                   if (m >= src_len)
-                       l = src_len - l - 1;
-                 }
-               *dst = src[l];
-             }
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_reflect_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-          int  ll = ss * (M_PI + atan2(yy, xx));
-          int  l = ll >> 16, lp;
-
-          if (l < src_len)
-            {
-               DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
-
-               lp = l + off;
-               if (lp < 0) { lp = -lp;  a = 257 - a; }
-               if (lp >= src_len)
-                 {
-                   int  m = (lp % (2 * src_len));
-
-                   lp = (lp % src_len);
-                   if (m >= src_len)
-                       { lp = src_len - lp - 1;  a = 257 - a; }
-                 }
-              *dst = src[lp];
-              if (lp + 1 < src_len)
-                 *dst = INTERP_256(a, src[lp + 1], *dst);
-              if (l == (src_len - 1))
-                  *dst = MUL_256(257 - a0, *dst);
-              if (l == 0)
-                  *dst = MUL_256(a0, *dst);
-              if (r == r0)
-                {
-                  a = 1 + ((rr - rr0) >> 8);
-                  *dst = MUL_256(a, *dst);
-                }
-              if (r == r1)
-                {
-                  a = 256 - ((rr - rr1) >> 8);
-                  *dst = MUL_256(a, *dst);
-                }
-            }
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_reflect_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16;
-
-           l += (ll - (l << 16)) >> 15;
-           if (l < src_len)
-             {
-               l += off;
-               if (l < 0) l = -l;
-               if (l >= src_len)
-                 {
-                   int  m = (l % (2 * src_len));
-
-                   l = (l % src_len);
-                   if (m >= src_len)
-                       l = src_len - l - 1;
-                 }
-               *dst = src[l];  *mask = 255;
-             }
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_reflect_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-          int  ll = ss * (M_PI + atan2(yy, xx));
-          int  l = ll >> 16, lp;
-
-          if (l < src_len)
-            {
-               DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
-
-               lp = l + off;
-               if (lp < 0) { lp = -lp;  a = 257 - a; }
-               if (lp >= src_len)
-                 {
-                   int  m = (lp % (2 * src_len));
-
-                   lp = (lp % src_len);
-                   if (m >= src_len)
-                       { lp = src_len - lp - 1;  a = 257 - a; }
-                 }
-              *dst = src[lp];  *mask = 255;
-              if (lp + 1 < src_len)
-                 *dst = INTERP_256(a, src[lp + 1], *dst);
-              if (l == (src_len - 1))
-                  *mask = 255 - a0;
-              if (l == 0)
-                  *mask = a0;
-              if (r == r0)
-                  *mask = ((rr - rr0) >> 8);
-              if (r == r1)
-                  *mask = 255 - ((rr - rr1) >> 8);
-            }
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx));
-       int  l = ll >> 16;
-
-       *dst = 0;
-       l += ((ll - (l << 16)) >> 15);
-       if (l < src_len)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx));
-       int  l = ll >> 16, lp;
-
-       *dst = 0;
-       if (l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
-
-           lp = l + off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == (src_len - 1))
-               *dst = INTERP_256(a, src[0], *dst);
-           if (l == (src_len - 1))
-               *dst = MUL_256(257 - a0, *dst);
-           if (l == 0)
-               *dst = MUL_256(a0, *dst);
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI + atan2(yy, xx)), l = ll >> 16;
-
-       *dst = 0;  *mask = 0;
-       l += (ll - (l << 16)) >> 15;
-       if (l < src_len)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI +  atan2(yy, xx));
-       int  l = ll >> 16, lp;
-
-       *dst = 0;  *mask = 0;
-       if (l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
-
-           lp = l + off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == (src_len - 1))
-               *dst = INTERP_256(a, src[0], *dst);
-           if (l == (src_len - 1))
-               *mask = 255 - a0;
-           if (l == 0)
-               *mask = a0;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_repeat_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI +  atan2(yy, xx));
-           int  l = ll >> 16;
-
-           l += (ll - (l << 16)) >> 15;
-           if (l < src_len)
-             {
-               l += off;
-               l = l % src_len;
-               if (l < 0)
-                  l += src_len;
-               *dst = src[l];
-             }
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_repeat_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16, lp;
-
-           if (l < src_len)
-             {
-               DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
-
-               lp = l + off;
-               lp = lp % src_len;
-               if (lp < 0)
-                  lp += src_len;
-               *dst = src[lp];
-               if (lp + 1 < src_len)
-                  *dst = INTERP_256(a, src[lp + 1], *dst);
-               if (lp == (src_len - 1))
-                  *dst = INTERP_256(a, src[0], *dst);
-               if (l == (src_len - 1))
-                  *dst = MUL_256(257 - a0, *dst);
-               if (l == 0)
-                  *dst = MUL_256(a0, *dst);
-               if (r == r0)
-                 {
-                   a = 1 + ((rr - rr0) >> 8);
-                   *dst = MUL_256(a, *dst);
-                 }
-               if (r == r1)
-                 {
-                   a = 256 - ((rr - rr1) >> 8);
-                   *dst = MUL_256(a, *dst);
-                 }
-             }
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_repeat_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16;
-
-           l += (ll - (l << 16)) >> 15;
-           if (l < src_len)
-             {
-               l += off;
-               l = l % src_len;
-               if (l < 0)
-                  l += src_len;
-               *dst = src[l];  *mask = 255;
-             }
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_restrict_repeat_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-   float   off = gdata->off * (src_len - 1);
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16, lp;
-
-           if (l < src_len)
-             {
-               DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
-
-               lp = l + off;
-               lp = lp % src_len;
-               if (lp < 0)
-                  lp += src_len;
-               *dst = src[lp];  *mask = 255;
-               if (lp + 1 < src_len)
-                  *dst = INTERP_256(a, src[lp + 1], *dst);
-               if (lp == (src_len - 1))
-                  *dst = INTERP_256(a, src[0], *dst);
-               if (l == (src_len - 1))
-                  *mask = 255 - a0;
-               if (l == 0)
-                  *mask = a0;
-               if (r == r0)
-                  *mask = ((rr - rr0) >> 8);
-               if (r == r1)
-                  *mask = 255 - ((rr - rr1) >> 8);
-             }
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI +  atan2(yy, xx));
-       int  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       if (l >= src_len)
-           l = src_len - 1;
-       *dst++ = src[l];  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = ss * (M_PI +  atan2(yy, xx));
-       int  l = ll >> 16;
-       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-       if (l + 1 < src_len)
-          *dst = INTERP_256(a, src[l + 1], src[l]);
-       else
-          *dst = src[src_len - 1];
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_pad_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16;
-
-           l += (ll - (l << 16)) >> 15;
-           if (l >= src_len)
-               l = src_len - 1;
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_pad_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16;
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           if (l + 1 < src_len)
-               *dst = INTERP_256(a, src[l + 1], src[l]);
-           else
-               *dst = src[src_len - 1];
-           if (r == r0)
-             {
-               a = 1 + ((rr - rr0) >> 8);
-               *dst = MUL_256(a, *dst);
-             }
-           if (r == r1)
-             {
-               a = 256 - ((rr - rr1) >> 8);
-               *dst = MUL_256(a, *dst);
-             }
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_pad_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16;
-
-           l += (ll - (l << 16)) >> 15;
-           if (l >= src_len)
-               l = src_len - 1;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-angular_pad_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Angular_Data  *gdata = (Angular_Data *)params_data;
-   int     xx, yy;
-   int     ss = (gdata->s) << 16;
-   int     r1 = gdata->s, r0 = gdata->an * r1;
-   int     rr0 = r0 << 16, rr1 = r1 << 16;
-
-   SETUP_ANGULAR_FILL
-
-   while (dst < dst_end)
-     {
-       int rr = hypot(xx, yy), r = (rr >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ( (r >= r0) && (r <= r1) )
-         {
-           int  ll = ss * (M_PI + atan2(yy, xx));
-           int  l = ll >> 16;
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           if (l + 1 < src_len)
-               *dst = INTERP_256(a, src[l + 1], src[l]);
-           else
-               *dst = src[src_len - 1];
-
-           *mask = 255;
-           if (r == r0)
-               *mask = ((rr - rr0) >> 8);
-           if (r == r1)
-               *mask = 255 - ((rr - rr1) >> 8);
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
diff --git a/src/lib/engines/common/evas_gradient_linear.c b/src/lib/engines/common/evas_gradient_linear.c
deleted file mode 100644 (file)
index 750aeff..0000000
+++ /dev/null
@@ -1,1506 +0,0 @@
-#include <math.h>
-
-#include "evas_common.h"
-#include "evas_gradient_private.h"
-
-#define GRAD_LINEAR_DIAG 1
-#define GRAD_LINEAR_CODIAG 2
-
-typedef struct _Linear_Data   Linear_Data;
-struct _Linear_Data
-{
-   int    type;
-
-   int    yy0;
-   float  ca, sa;
-   float  off;
-   int    len;
-
-   unsigned char at_angle : 1;
-};
-
-static void
-linear_init(void);
-
-static void
-linear_shutdown(void);
-
-static void
-linear_init_geom(RGBA_Gradient *gr);
-
-static void
-linear_setup_geom(RGBA_Gradient *gr);
-
-static void
-linear_free_geom(void *gdata);
-
-static int
-linear_has_alpha(RGBA_Gradient *gr, int op);
-
-static int
-linear_has_mask(RGBA_Gradient *gr, int op);
-
-static int
-linear_get_map_len(RGBA_Gradient *gr);
-
-static Gfx_Func_Gradient_Fill
-linear_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
-
-static RGBA_Gradient_Type  linear = {"linear", linear_init, linear_shutdown,
-                                    linear_init_geom, linear_setup_geom, linear_free_geom,
-                                    linear_has_alpha, linear_has_mask,
-                                    linear_get_map_len, linear_get_fill_func};
-
-
-
-/** internal functions **/
-static void
-linear_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-linear_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-
-
-RGBA_Gradient_Type  *
-evas_common_gradient_linear_get(void)
-{
-    return &linear;
-}
-
-static void
-linear_init(void)
-{
-}
-
-static void
-linear_shutdown(void)
-{
-}
-
-static void
-linear_free_geom(void *gdata)
-{
-   Linear_Data *data = (Linear_Data *)gdata;
-   if (data) free(data);
-}
-
-static void
-linear_init_geom(RGBA_Gradient *gr)
-{
-   Linear_Data *linear_data;
-
-   if (!gr || (gr->type.geometer != &linear)) return;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data)
-     {
-       linear_data = calloc(1, sizeof(Linear_Data));
-       if (!linear_data)  return;
-       linear_data->type = 0;
-       linear_data->yy0 = 0;
-       linear_data->ca = 1.0;
-       linear_data->sa = 0.0;
-       linear_data->off = 0.0;
-       linear_data->len = 32;
-       linear_data->at_angle = 0;
-       gr->type.gdata = linear_data;
-     }
-
-   linear_data->type = 0;
-   if (gr->type.name && !strcmp(gr->type.name, "linear.diag"))
-       linear_data->type = GRAD_LINEAR_DIAG;
-   else if (gr->type.name && !strcmp(gr->type.name, "linear.codiag"))
-       linear_data->type = GRAD_LINEAR_CODIAG;
-}
-
-static void
-linear_setup_geom(RGBA_Gradient *gr)
-{
-   Linear_Data *linear_data;
-   float  angle, a, ca, sa;
-   int    xoff = 0, yoff = 0;
-
-   if (!gr || (gr->type.geometer != &linear)) return;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data) return;
-
-   angle = gr->map.angle;
-   if (linear_data->type == GRAD_LINEAR_DIAG)
-       angle += ((atan2(gr->fill.h - 1, gr->fill.w - 1) * 180.0) / M_PI) - 90.0;
-   else if (linear_data->type == GRAD_LINEAR_CODIAG)
-       angle -= ((atan2(gr->fill.h - 1, gr->fill.w - 1) * 180.0) / M_PI) - 90.0;
-   a = ((angle + 90.0) * M_PI) / 180.0;
-   ca = cos(a);
-   sa = sin(a);
-   if ((sa >= 0) && (ca <= 0))
-     {
-       ca = -ca;
-       xoff = -(gr->fill.w - 1);
-     }
-   else if ((sa <= 0) && (ca <= 0))
-     {
-       ca = -ca;  sa = -sa;
-       xoff = -(gr->fill.w - 1);
-       yoff = -(gr->fill.h - 1);
-     }
-   else if ((sa <= 0) && (ca >= 0))
-     {
-       sa = -sa;
-       yoff = -(gr->fill.h - 1);
-     }
-   linear_data->len = 0.9961 + (ca * gr->fill.w) + (sa * gr->fill.h);
-
-   a = (angle * M_PI) / 180.0;
-   linear_data->ca = cos(a);
-   linear_data->sa = sin(a);
-
-   linear_data->yy0 = (linear_data->ca * (yoff << 16)) - (linear_data->sa * (xoff << 16));
-   linear_data->off = gr->map.offset;
-
-   if ((linear_data->ca != 1.0) || (linear_data->sa != 0.0))
-       linear_data->at_angle = 1;
-}
-
-static int
-linear_has_alpha(RGBA_Gradient *gr, int op)
-{
-   if (!gr || (gr->type.geometer != &linear)) return 0;
-   if (gr->has_alpha | gr->map.has_alpha)
-       return 1;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       return 0;
-   if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
-       return 1;
-   return 0;
-}
-
-static int
-linear_has_mask(RGBA_Gradient *gr, int op)
-{
-   if (!gr || (gr->type.geometer != &linear)) return 0;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-     {
-       if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
-           return 1;
-     }
-   return 0;
-}
-
-static int
-linear_get_map_len(RGBA_Gradient *gr)
-{
-   Linear_Data   *linear_data;
-
-   if (!gr || (gr->type.geometer != &linear)) return 0;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data) return 0;
-   return linear_data->len;
-}
-
-static Gfx_Func_Gradient_Fill
-linear_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
-{
-   Linear_Data   *linear_data;
-   Gfx_Func_Gradient_Fill  sfunc = NULL;
-   int masked_op = 0;
-
-   if (!gr || (gr->type.geometer != &linear))
-       return sfunc;
-   linear_data = (Linear_Data *)gr->type.gdata;
-   if (!linear_data) return sfunc;
-
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       masked_op = 1;
-
-   switch (gr->fill.spread)
-     {
-      case _EVAS_TEXTURE_REFLECT:
-       {
-        if (aa)
-              sfunc = linear_reflect_aa;
-        else
-              sfunc = linear_reflect;
-       }
-      break;
-      case _EVAS_TEXTURE_REPEAT:
-       {
-        if (aa)
-           sfunc = linear_repeat_aa;
-        else
-           sfunc = linear_repeat;
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT:
-       {
-        if (aa)
-          {
-            if (masked_op)
-               sfunc = linear_restrict_aa_masked;
-            else
-               sfunc = linear_restrict_aa;
-          }
-        else
-          {
-            if (masked_op)
-               sfunc = linear_restrict_masked;
-            else
-               sfunc = linear_restrict;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT_REFLECT:
-       {
-        if (aa)
-          {
-            if (masked_op)
-               sfunc = linear_restrict_reflect_aa_masked;
-            else
-               sfunc = linear_restrict_reflect_aa;
-          }
-        else
-          {
-            if (masked_op)
-               sfunc = linear_restrict_reflect_masked;
-            else
-               sfunc = linear_restrict_reflect;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT_REPEAT:
-       {
-        if (aa)
-          {
-            if (masked_op)
-               sfunc = linear_restrict_repeat_aa_masked;
-            else
-               sfunc = linear_restrict_repeat_aa;
-          }
-        else
-          {
-            if (masked_op)
-               sfunc = linear_restrict_repeat_masked;
-            else
-               sfunc = linear_restrict_repeat;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_PAD:
-       {
-        if (aa)
-              sfunc = linear_pad_aa;
-        else
-              sfunc = linear_pad;
-       }
-      break;
-      default:
-       sfunc = linear_reflect_aa;
-      break;
-     }
-   return sfunc;
-}
-
-/* the fill functions */
-
-#ifdef BUILD_MMX
-#define INTERP_256_P2R(a, s, mma, mms, mmd, mmz) \
-           MOV_A2R(a, mma) \
-           MOV_P2R(s, mms, mmz) \
-           INTERP_256_R2R(mma, mms, mmd, mm5)
-
-#define MUL_256_A2R(a, mma, mmd, mmz) \
-       MOV_A2R(a, mma) \
-       MUL4_256_R2R(mma, mmd)
-#endif
-
-#define AXIS_ALIGNED \
-   ( ((ayy == 0) || (ayx == 0)) && ((gdata->ca == 0.0) || (gdata->sa == 0.0)) )
-
-#define SETUP_LINEAR_FILL \
-   if (gdata->at_angle) \
-     { \
-       ayx = (-gdata->sa * axx) + (gdata->ca * ayx); \
-       ayy = (-gdata->sa * axy) + (gdata->ca * ayy); \
-     } \
-   yy = (ayx * x) + (ayy * y) + gdata->yy0;
-
-
-static void
-linear_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   if (ayx == 0)
-     {
-       DATA32  c;
-
-       y = (yy >> 16) + off;
-       if (y < 0)  y = -y;
-       if (y >= src_len)
-         {
-           int  m = (y % (2 * src_len));
-
-           y = (y % src_len);
-           if (m >= src_len)
-               y = src_len - y - 1;
-         }
-       c = src[y];
-       while (dst < dst_end)
-           *dst++ = c;
-       return;
-     }
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += ((yy - (l << 16)) >> 15) + off;
-       if (l < 0)  l = -l;
-       if (l >= src_len)
-         {
-           int  m = (l % (2 * src_len));
-
-           l = (l % src_len);
-           if (m >= src_len)
-               l = src_len - l - 1;
-         }
-       *dst++ = src[l];  yy += ayx;
-     }
-}
-
-static void
-linear_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_reflect(src, src_len, dst, mask, dst_len, x, y,
-                      axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-       int  a = 1 + ((yy - (l << 16)) >> 8);
-
-       l += off;
-       if (l < 0) { l = -l;  a = 257 - a; }
-       if (l >= src_len)
-         {
-           int  m = (l % (2 * src_len));
-
-           l = (l % src_len);
-           if (m >= src_len)
-             { l = src_len - l - 1;  a = 257 - a; }
-         }
-#ifdef BUILD_MMX
-       MOV_P2R(src[l], mm1, mm0)
-#else
-       *dst = src[l];
-#endif
-       if (l + 1 < src_len)
-         {
-#ifdef BUILD_MMX
-           INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
-#else
-           *dst = INTERP_256(a, src[l + 1], *dst);
-#endif
-         }
-#ifdef BUILD_MMX
-       MOV_R2P(mm1, *dst, mm0)
-#endif
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   if (ayx == 0)
-     {
-       DATA32  c;
-
-       y = (yy >> 16) + off;
-       y = y % src_len;
-       if (y < 0)
-          y += src_len;
-       c = src[y];
-       while (dst < dst_end)
-           *dst++ = c;
-       return;
-     }
-
-   if (ayy == 0)
-     {
-       Gfx_Func_Copy  func;
-       int  l;
-
-       x = (yy >> 16) + off;
-       x = x % src_len;
-       if (x < 0)
-          x += src_len;
-       if (ayx < 0)
-         {
-           l = x + 1;  x = 0;
-         }
-       else
-           l = src_len - x;
-       if (l > dst_len) l = dst_len;
-       func = evas_common_draw_func_copy_get(1, (ayx < 0 ? -1 : 0));
-       func(src + x, dst, l);
-       if (l == dst_len) return;
-       dst += l;  dst_len -= l;
-       l = dst_len / src_len;
-       while (l--)
-         {
-           func(src, dst, src_len);
-           dst += src_len;
-         }
-       l = dst_len % src_len;
-       if (ayx < 0)
-          src += src_len - l;
-       func(src, dst, l);
-       return;
-     }
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += ((yy - (l << 16)) >> 15) + off;
-       l = l % src_len;
-       if (l < 0)
-          l += src_len;
-       *dst++ = src[l];  yy += ayx;
-     }
-}
-
-static void
-linear_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_repeat(src, src_len, dst, mask, dst_len, x, y,
-                     axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-       int  a = 1 + ((yy - (l << 16)) >> 8);
-
-       l += off;
-       l = l % src_len;
-       if (l < 0)
-          l += src_len;
-#ifdef BUILD_MMX
-       MOV_P2R(src[l], mm1, mm0)
-#else
-       *dst = src[l];
-#endif
-       if (l + 1 < src_len)
-         {
-#ifdef BUILD_MMX
-           INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
-#else
-           *dst = INTERP_256(a, src[l + 1], *dst);
-#endif
-         }
-       if (l == (src_len - 1))
-         {
-#ifdef BUILD_MMX
-           INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
-#else
-          *dst = INTERP_256(a, src[0], *dst);
-#endif
-         }
-#ifdef BUILD_MMX
-       MOV_R2P(mm1, *dst, mm0)
-#endif
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   if (ayx == 0)
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       if ((y < 0) || (y >= src_len))
-         {
-           memset(dst, 0, sizeof(DATA32) * dst_len);
-           return;
-         }
-       c = src[y];
-       while (dst < dst_end)
-           *dst++ = c;
-       return;
-     }
-
-   if (ayy == 0)
-     {
-       Gfx_Func_Copy  func;
-
-       x = yy >> 16;
-       ayx = (ayx < 0 ? -1 : 1);
-       if ((unsigned)x < src_len)
-         {
-           if ((ayx > 0) && ((src_len - x) >= dst_len))
-             {
-               func = evas_common_draw_func_copy_get(dst_len, 0);
-               func(src + x, dst, dst_len);
-               return;
-             }
-           if ((ayx < 0) && (x >= (dst_len - 1)))
-             {
-               func = evas_common_draw_func_copy_get(dst_len, -1);
-               func(src + x - (dst_len - 1), dst, dst_len);
-               return;
-             }
-         }
-       while (dst < dst_end)
-         {
-           *dst = 0;
-           if ((unsigned)x < src_len)
-               *dst = src[x];
-           dst++;  x += ayx;
-         }
-       return;
-     }
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += (yy - (l << 16)) >> 15;
-       *dst = 0;
-       if ((unsigned)l < src_len)
-           *dst = src[l];
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_restrict(src, src_len, dst, mask, dst_len, x, y,
-                       axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       *dst = 0;
-       if ((unsigned)(l + 1) < (src_len + 1))
-         {
-           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
-           int    lp = l;
-
-           if (l == -1) lp = 0;
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (l == -1)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a, *dst);
-#endif
-             }
-           if (l == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               a = 257 - a;
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(257 - a, *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   if (ayx == 0)
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       if ((y < 0) || (y >= src_len))
-         {
-           memset(dst, 0, sizeof(DATA32) * dst_len);
-           memset(mask, 0, sizeof(DATA8) * dst_len);
-           return;
-         }
-       c = src[y];
-       while (dst < dst_end)
-         {
-           *dst++ = c;  *mask++ = 255;
-         }
-       return;
-     }
-
-   if (ayy == 0)
-     {
-       Gfx_Func_Copy  func;
-
-       x = yy >> 16;
-       ayx = (ayx < 0 ? -1 : 1);
-       if ((unsigned)x < src_len)
-         {
-           if ((ayx > 0) && ((src_len - x) >= dst_len))
-             {
-               func = evas_common_draw_func_copy_get(dst_len, 0);
-               func(src + x, dst, dst_len);
-               memset(mask, 255, sizeof(DATA8) * dst_len);
-               return;
-             }
-           if ((ayx < 0) && (x >= (dst_len - 1)))
-             {
-               func = evas_common_draw_func_copy_get(dst_len, -1);
-               func(src + x - (dst_len - 1), dst, dst_len);
-               memset(mask, 255, sizeof(DATA8) * dst_len);
-               return;
-             }
-         }
-       while (dst < dst_end)
-         {
-           *dst = 0;  *mask = 0;
-           if ((unsigned)x < src_len)
-             {
-               *dst = src[x];  *mask = 255;
-             }
-           dst++;  mask++;  x += ayx;
-         }
-       return;
-     }
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += (yy - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_restrict_masked(src, src_len, dst, mask, dst_len, x, y,
-                              axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)(l + 1) < (src_len + 1))
-         {
-           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
-           int    lp = l;
-
-           if (l == -1) lp = 0;
-
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];  *mask = 255;
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (l == -1)
-               *mask = a - 1;
-           if (l == (src_len - 1))
-               *mask = 256 - a;
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  mask++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   if (ayx == 0)
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       if ((y < 0) || (y >= src_len))
-         {
-           memset(dst, 0, sizeof(DATA32) * dst_len);
-           return;
-         }
-       y += off;
-       if (y < 0) y = -y;
-       if (y >= src_len)
-         {
-           int  m = (y % (2 * src_len));
-
-           y = (y % src_len);
-           if (m >= src_len)
-               y = src_len - y - 1;
-         }
-       c = src[y];
-       while (dst < dst_end)
-           *dst++ = c;
-       return;
-     }
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += (yy - (l << 16)) >> 15;
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];
-         }
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_restrict_reflect(src, src_len, dst, mask, dst_len, x, y,
-                               axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       *dst = 0;
-       if ((unsigned)(l + 1) < (src_len + 1))
-         {
-           DATA32 a = 1 + ((yy - (l << 16)) >> 8), a0 = a;
-           int    lp = l + off;
-
-           if (l == -1) lp = off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (l == -1)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a0, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a0, *dst);
-#endif
-             }
-           if (l == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               a0 = 257 - a0;
-               MUL_256_A2R(a0, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(257 - a0, *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   if (ayx == 0)
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       if ((y < 0) || (y >= src_len))
-         {
-           memset(dst, 0, sizeof(DATA32) * dst_len);
-           memset(mask, 0, sizeof(DATA8) * dst_len);
-           return;
-         }
-       y += off;
-       if (y < 0) y = -y;
-       if (y >= src_len)
-         {
-           int  m = (y % (2 * src_len));
-
-           y = (y % src_len);
-           if (m >= src_len)
-               y = src_len - y - 1;
-         }
-       c = src[y];
-       while (dst < dst_end)
-         { *dst++ = c;  *mask++ = 255; }
-       return;
-     }
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += ((yy - (l << 16)) >> 15);
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_restrict_reflect_masked(src, src_len, dst, mask, dst_len, x, y,
-                                      axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)(l + 1) < (src_len + 1))
-         {
-           DATA32 a = 1 + ((yy - (l << 16)) >> 8), a0 = a - 1;
-           int    lp = l + off;
-
-           if (l == -1) lp = off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                  { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           *mask = 255;
-
-           if (lp + 1 < src_len)
-            {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-            }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-           if (l == -1)
-               *mask = a0;
-           if (l == (src_len - 1))
-               *mask = 255 - a0;
-         }
-       dst++;  mask++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   if (ayx == 0)
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       if ((y < 0) || (y >= src_len))
-         {
-           memset(dst, 0, sizeof(DATA32) * dst_len);
-           return;
-         }
-       y += off;
-       y = y % src_len;
-       if (y < 0)
-          y += src_len;
-       c = src[y];
-       while (dst < dst_end)
-           *dst++ = c;
-       return;
-     }
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += (yy - (l << 16)) >> 15;
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];
-         }
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_restrict_repeat(src, src_len, dst, mask, dst_len, x, y,
-                              axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       *dst = 0;
-       if ((unsigned)(l + 1) < (src_len + 1))
-         {
-           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
-           int    lp = l + off;
-
-           if (l == -1) lp = off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (lp == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[0], *dst);
-#endif
-             }
-           if (l == -1)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a, *dst);
-#endif
-             }
-           if (l == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               a = 257 - a;
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(257 - a, *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   if (ayx == 0)
-     {
-       DATA32  c;
-
-       y = (yy >> 16);
-       if ((y < 0) || (y >= src_len))
-         {
-           memset(dst, 0, sizeof(DATA32) * dst_len);
-           memset(mask, 0, sizeof(DATA8) * dst_len);
-           return;
-         }
-       y += off;
-       y = y % src_len;
-       if (y < 0)
-          y += src_len;
-       c = src[y];
-       while (dst < dst_end)
-         { *dst++ = c;  *mask++ = 255; }
-       return;
-     }
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += ((yy - (l << 16)) >> 15);
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  yy += ayx;
-     }
-}
-
-static void
-linear_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      off = gdata->off * (src_len - 1);
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_restrict_repeat_masked(src, src_len, dst, mask, dst_len, x, y,
-                                     axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)(l + 1) < (src_len + 1))
-         {
-           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
-           int    lp = l + off;
-
-           if (l == -1) lp = off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           *mask = 255;
-
-           if (lp + 1 < src_len)
-            {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-            }
-           if (lp == (src_len - 1))
-            {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[0], *dst);
-#endif
-            }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-           if (l == -1)
-               *mask = a - 1;
-           if (l == (src_len - 1))
-               *mask = 256 - a;
-         }
-       dst++;  mask++;  yy += ayx;
-     }
-}
-
-static void
-linear_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   SETUP_LINEAR_FILL
-
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       l += (yy - (l << 16)) >> 15;
-       if (l < 0) l = 0;
-       if (l >= src_len) l = src_len - 1;
-       *dst = src[l];
-       dst++;  yy += ayx;
-     }
-}
-
-static void
-linear_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Linear_Data  *gdata = (Linear_Data *)params_data;
-   int      yy;
-
-   if (AXIS_ALIGNED)
-     {
-       linear_pad(src, src_len, dst, mask, dst_len, x, y,
-                  axx, axy, ayx, ayy, params_data);
-       return;
-     }
-
-   SETUP_LINEAR_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  l = (yy >> 16);
-
-       if (l < 0) *dst = src[0];
-       if (l >= src_len) *dst = src[src_len - 1];
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
-
-#ifdef BUILD_MMX
-           MOV_P2R(src[l], mm1, mm0)
-#else
-           *dst = src[l];
-#endif
-           if (l && (l + 1 < src_len))
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[l + 1], *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  yy += ayx;
-     }
-}
diff --git a/src/lib/engines/common/evas_gradient_main.c b/src/lib/engines/common/evas_gradient_main.c
deleted file mode 100644 (file)
index 7f7d01e..0000000
+++ /dev/null
@@ -1,929 +0,0 @@
-#include <math.h>
-
-#include "evas_common.h"
-#include "evas_blend_private.h"
-#include "evas_gradient_private.h"
-
-
-static void _get_word(char *in, char *key);
-static void evas_common_gradient_map_argb(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len);
-static void evas_common_gradient_map_ahsv(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len);
-
-static  int grad_initialised = 0;
-
-static void
-_get_word(char *in, char *key)
-{
-   char  *p, *pp;
-   int    l;
-
-   if (!key) return;
-   *key = 0;
-   if (!in || !*in) return;
-
-   p = in;
-   while (*p && isspace(*p))
-       p++;
-   if (!*p) return;
-   pp = p;
-   while (*pp && !isspace(*pp))
-       pp++;
-   l = pp - p;
-   if (l >= 255) return;
-   *(p + l) = 0;
-   strncpy(key, p, l + 1);
-}
-
-static void
-_evas_common_gradient_stops_free(RGBA_Gradient *gr)
-{
-   if (!gr) return;
-   if (gr->color.stops)
-     {
-       Eina_Inlist *l;
-
-       while (gr->color.stops)
-         {
-          l = gr->color.stops;
-          gr->color.stops = eina_inlist_remove(gr->color.stops, gr->color.stops);
-          free(l);
-         }
-       gr->color.stops = NULL;
-       gr->color.nstops = 0;
-     }
-   if (gr->alpha.stops)
-     {
-       Eina_Inlist *l;
-
-       while (gr->alpha.stops)
-         {
-          l = gr->alpha.stops;
-          gr->alpha.stops = eina_inlist_remove(gr->alpha.stops, gr->alpha.stops);
-          free(l);
-         }
-       gr->alpha.stops = NULL;
-       gr->alpha.nstops = 0;
-     }
-}
-
-
-char *
-evas_common_gradient_get_key_fval(char *in, char *key, float *val)
-{
-   char   *p, *pp, sval[256];
-
-   if (!key || !val) return NULL;
-   *key = 0;
-   if (!in || !*in) return NULL;
-   p = strchr(in, '=');
-   if (!p || !*p)  return NULL;
-   *p = 0;  p++;
-   if (!*p)  return NULL;
-   pp = strchr(p, ';');
-   if (!pp || !*pp)  return NULL;
-   _get_word(in, key);
-   if (!*key)  return NULL;
-   *pp = 0;
-   _get_word(p, sval);
-   if (!sval[0])  return NULL;
-   *val = atof(sval);
-   return (pp + 1);
-}
-
-EAPI void
-evas_common_gradient_init(void)
-{
-   RGBA_Gradient_Type  *geom;
-
-   if (grad_initialised)
-       return;
-   geom = evas_common_gradient_geometer_get("linear");
-   if (geom)
-       geom->init();
-   geom = evas_common_gradient_geometer_get("radial");
-   if (geom)
-       geom->init();
-   geom = evas_common_gradient_geometer_get("rectangular");
-   if (geom)
-       geom->init();
-   geom = evas_common_gradient_geometer_get("angular");
-   if (geom)
-       geom->init();
-   geom = evas_common_gradient_geometer_get("sinusoidal");
-   if (geom)
-       geom->init();
-   grad_initialised = 1;
-}
-
-void
-evas_common_gradient_shutdown(void)
-{
-   RGBA_Gradient_Type  *geom;
-
-   if (!grad_initialised)
-       return;
-   geom = evas_common_gradient_geometer_get("linear");
-   if (geom)
-       geom->shutdown();
-   geom = evas_common_gradient_geometer_get("radial");
-   if (geom)
-       geom->shutdown();
-   geom = evas_common_gradient_geometer_get("rectangular");
-   if (geom)
-       geom->shutdown();
-   geom = evas_common_gradient_geometer_get("angular");
-   if (geom)
-       geom->shutdown();
-   geom = evas_common_gradient_geometer_get("sinusoidal");
-   if (geom)
-       geom->shutdown();
-   grad_initialised = 0;
-}
-
-EAPI RGBA_Gradient *
-evas_common_gradient_new(void)
-{
-   RGBA_Gradient *gr;
-
-   gr = calloc(1, sizeof(RGBA_Gradient));
-   gr->references = 1;
-   return gr;
-}
-
-EAPI void
-evas_common_gradient_free(RGBA_Gradient *gr)
-{
-   if (!gr) return;
-   gr->references--;
-   if (gr->references > 0) return;
-#ifdef EVAS_FRAME_QUEUING
-        LKL(gr->ref_fq_add);  LKL(gr->ref_fq_del);
-        if (gr->ref_fq[0] != gr->ref_fq[1])
-          {
-             LKU(gr->ref_fq_add); LKU(gr->ref_fq_del);
-             return;
-          }
-       LKU(gr->ref_fq_add); LKU(gr->ref_fq_del);
-#endif
-   evas_common_gradient_clear(gr);
-   if (gr->type.name) free(gr->type.name);
-   if (gr->type.params) free(gr->type.params);
-   if (gr->type.geometer && gr->type.gdata)
-       gr->type.geometer->geom_free(gr->type.gdata);
-   if (gr->map.data) free(gr->map.data);
-   free(gr);
-}
-
-EAPI void
-evas_common_gradient_clear(RGBA_Gradient *gr)
-{
-   if (!gr) return;
-
-   _evas_common_gradient_stops_free(gr);
-
-   if (gr->color.data && !gr->imported_data)
-       free(gr->color.data);
-   gr->color.data = NULL;
-   gr->color.len = 0;
-   if (gr->alpha.data && !gr->imported_data)
-       free(gr->alpha.data);
-   gr->alpha.data = NULL;
-   gr->alpha.len = 0;
-
-   gr->imported_data = 0;
-   gr->has_alpha = 0;
-}
-
-EAPI void
-evas_common_gradient_color_stop_add(RGBA_Gradient *gr, int r, int g, int b, int a, int dist)
-{
-   RGBA_Gradient_Color_Stop *gc, *gcm, *gc_last;
-
-   if (!gr) return;
-   if (gr->imported_data)
-     {
-       gr->color.data = NULL;
-       gr->color.len = 0;
-       gr->alpha.data = NULL;
-       gr->alpha.len = 0;
-       gr->imported_data = 0;
-       gr->has_alpha = 0;
-     }
-   gc = malloc(sizeof(RGBA_Gradient_Color_Stop));
-   if (!gc) return;
-   if (dist < 1) dist = 1;
-   if (dist > 32768) dist = 32768;
-   if (r < 0) r = 0;  if (r > 255) r = 255;
-   if (g < 0) g = 0;  if (g > 255) g = 255;
-   if (b < 0) b = 0;  if (b > 255) b = 255;
-   if (a < 0) a = 0;  if (a > 255) a = 255;
-   gc->r = r;
-   gc->g = g;
-   gc->b = b;
-   gc->a = a;
-   gc->dist = dist;
-
-   if (!gr->color.stops)
-     {
-       gr->color.stops = eina_inlist_append(gr->color.stops, EINA_INLIST_GET(gc));
-       gr->color.nstops = 1;
-       gr->color.len = 1;
-       if (a < 255)
-          gr->has_alpha = 1;
-       return;
-     }
-   gcm = malloc(sizeof(RGBA_Gradient_Color_Stop));
-   if (!gcm) { free(gc); return; }
-   gc_last = (RGBA_Gradient_Color_Stop *)(gr->color.stops->last);
-   if ((dist + gc_last->dist + gr->color.len) > 65535)
-       { free(gc); free(gcm); return; }
-   gcm->r = (gc_last->r + r) / 2;
-   gcm->g = (gc_last->g + g) / 2;
-   gcm->b = (gc_last->b + b) / 2;
-   gcm->a = (gc_last->a + a) / 2;
-   gcm->dist = dist;
-   gr->color.stops = eina_inlist_append(gr->color.stops, EINA_INLIST_GET(gcm));
-   gr->color.len += gc_last->dist;
-   gr->color.stops = eina_inlist_append(gr->color.stops, EINA_INLIST_GET(gc));
-   gr->color.len += dist;
-   gr->color.nstops += 2;
-   if (a < 255)
-       gr->has_alpha = 1;
-}
-
-EAPI void
-evas_common_gradient_alpha_stop_add(RGBA_Gradient *gr, int a, int dist)
-{
-   RGBA_Gradient_Alpha_Stop *ga, *gam, *ga_last;
-
-   if (!gr) return;
-   if (gr->imported_data)
-     {
-       gr->color.data = NULL;
-       gr->color.len = 0;
-       gr->alpha.data = NULL;
-       gr->alpha.len = 0;
-       gr->imported_data = 0;
-       gr->has_alpha = 0;
-     }
-   ga = malloc(sizeof(RGBA_Gradient_Alpha_Stop));
-   if (!ga) return;
-   if (dist < 1) dist = 1;
-   if (dist > 32768) dist = 32768;
-   if (a < 0) a = 0;  if (a > 255) a = 255;
-   ga->a = a;
-   ga->dist = dist;
-
-   if (!gr->alpha.stops)
-     {
-        gr->alpha.stops = eina_inlist_append(gr->alpha.stops, EINA_INLIST_GET(ga));
-       gr->alpha.nstops = 1;
-       gr->alpha.len = 1;
-       if (a < 255)
-          gr->has_alpha = 1;
-       return;
-     }
-   gam = malloc(sizeof(RGBA_Gradient_Alpha_Stop));
-   if (!gam) { free(ga); return; }
-   ga_last = (RGBA_Gradient_Alpha_Stop *)(gr->alpha.stops->last);
-   if ((dist + ga_last->dist + gr->alpha.len) > 65535)
-       { free(ga); free(gam); return; }
-   gam->a = (ga_last->a + a) / 2;
-   gam->dist = dist;
-   gr->alpha.stops = eina_inlist_append(gr->alpha.stops, EINA_INLIST_GET(gam));
-   gr->alpha.len += ga_last->dist;
-   gr->alpha.stops = eina_inlist_append(gr->alpha.stops, EINA_INLIST_GET(ga));
-   gr->alpha.len += dist;
-   gr->alpha.nstops += 2;
-   if (a < 255)
-       gr->has_alpha = 1;
-}
-
-EAPI void
-evas_common_gradient_color_data_set(RGBA_Gradient *gr, DATA32 *data, int len, int alpha_flags)
-{
-   if (!gr) return;
-   if (!gr->imported_data)
-       evas_common_gradient_clear(gr);
-   if (len < 1) data = NULL;
-   if (!data) len = 0;
-   gr->color.data = data;
-   gr->color.len = len;
-   gr->has_alpha = !!alpha_flags;
-   gr->imported_data = 1;
-}
-
-EAPI void
-evas_common_gradient_alpha_data_set(RGBA_Gradient *gr, DATA8 *data, int len)
-{
-   if (!gr) return;
-   if (!gr->imported_data)
-       evas_common_gradient_clear(gr);
-   if (len < 1) data = NULL;
-   if (!data) len = 0;
-   gr->alpha.data = data;
-   gr->alpha.len = len;
-   gr->has_alpha = 1;
-   gr->imported_data = 1;
-}
-
-EAPI void
-evas_common_gradient_type_set(RGBA_Gradient *gr, const char *name, char *params)
-{
-   RGBA_Gradient_Type   *geometer;
-
-   if (!gr) return;
-   if (!name || !*name)
-       name = "linear";
-
-   geometer = evas_common_gradient_geometer_get(name);
-   if (!geometer) return;
-   if (gr->type.gdata && (geometer != gr->type.geometer))
-     {
-       if (gr->type.geometer)
-          gr->type.geometer->geom_free(gr->type.gdata);
-       gr->type.gdata = NULL;
-     }
-   gr->type.geometer = geometer;
-
-   if (gr->type.name) free(gr->type.name);
-   gr->type.name = strdup(name);
-
-   if (params && !*params) 
-       params = NULL;
-   if (gr->type.params) free(gr->type.params);
-   gr->type.params = NULL;
-   if (params) gr->type.params = strdup(params);
-
-   gr->type.geometer->geom_init(gr);
-}
-
-EAPI void
-evas_common_gradient_fill_set(RGBA_Gradient *gr, int x, int y, int w, int h)
-{
-   if (!gr) return;
-   gr->fill.x = x;
-   gr->fill.y = y;
-   if ((w < 1) && (h < 1))
-     { w = h = 1; }
-   gr->fill.w = w;
-   gr->fill.h = h;
-}
-
-EAPI void
-evas_common_gradient_fill_angle_set(RGBA_Gradient *gr, float angle)
-{
-   if (!gr) return;
-   gr->fill.angle = angle;
-}
-
-EAPI void
-evas_common_gradient_fill_spread_set(RGBA_Gradient *gr, int spread)
-{
-   if (!gr) return;
-   gr->fill.spread = spread;
-}
-
-EAPI void
-evas_common_gradient_map_offset_set(RGBA_Gradient *gr, float offset)
-{
-   if (!gr) return;
-   gr->map.offset = offset;
-}
-
-EAPI void
-evas_common_gradient_map_direction_set(RGBA_Gradient *gr, int direction)
-{
-   if (!gr) return;
-   gr->map.direction = (direction >= 0 ? 1 : -1);
-}
-
-EAPI void
-evas_common_gradient_map_angle_set(RGBA_Gradient *gr, float angle)
-{
-   if (!gr) return;
-   gr->map.angle = angle;
-}
-
-EAPI RGBA_Gradient_Type  *
-evas_common_gradient_geometer_get(const char *name)
-{
-   RGBA_Gradient_Type  *geom = NULL;
-
-   if (!name || !*name)
-       name = "linear";
-   if (!strcmp(name,"linear") || !strcmp(name,"linear.diag") || !strcmp(name,"linear.codiag"))
-       geom = evas_common_gradient_linear_get();
-   else if (!strcmp(name,"radial"))
-       geom = evas_common_gradient_radial_get();
-   else if (!strcmp(name,"angular"))
-       geom = evas_common_gradient_angular_get();
-   else if (!strcmp(name,"sinusoidal"))
-       geom = evas_common_gradient_sinusoidal_get();
-   else if (!strcmp(name,"rectangular"))
-       geom = evas_common_gradient_rectangular_get();
-   if (!geom)
-       geom = evas_common_gradient_linear_get();
-   return geom;
-}
-
-EAPI void
-evas_common_gradient_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
-                         int x, int y, int w, int h, RGBA_Gradient *gr)
-{
-   Gfx_Func_Gradient_Fill   gfunc;
-   RGBA_Gfx_Func            bfunc = NULL;
-   int             len;
-   int             xin, yin, xoff, yoff;
-   int             clx, cly, clw, clh;
-   int             axx, axy, ayx, ayy;
-   DATA32          *pdst, *dst_end, *buf, *map;
-   RGBA_Image      *argb_buf = NULL, *alpha_buf = NULL;
-   DATA8           *mask = NULL;
-   void            *gdata;
-   float           angle;
-   int             direct_copy = 0, buf_step = 0;
-
-   if (!dst || !dc || !gr || !dst || !dst->image.data)
-     return;
-   if (!gr->map.data || !gr->type.geometer)
-     return;
-   if ((gr->fill.w < 1) || (gr->fill.h < 1))
-     return;
-   if ((w < 1) || (h < 1))
-     return;
-   clx = 0;  cly = 0;  clw = dst->cache_entry.w;  clh = dst->cache_entry.h;
-   if ((clw < 1) || (clh < 1))  return;
-
-   if (dc->clip.use)
-     RECTS_CLIP_TO_RECT(clx,cly,clw,clh, dc->clip.x,dc->clip.y,dc->clip.w,dc->clip.h);
-   if ((clw < 1) || (clh < 1))  return;
-
-   xin = x;  yin = y;
-   RECTS_CLIP_TO_RECT(x,y,w,h, clx,cly,clw,clh);
-   if ((w < 1) || (h < 1))  return;
-
-   xoff = (x - xin) - gr->fill.x;
-   yoff = (y - yin) - gr->fill.y;
-
-   if (!gr->type.geometer->has_mask(gr, dc->render_op))
-     {
-       if ((dc->render_op == _EVAS_RENDER_FILL) ||
-           (dc->render_op == _EVAS_RENDER_COPY))
-         {
-            direct_copy = 1;  buf_step = dst->cache_entry.w;
-            if (gr->type.geometer->has_alpha(gr, dc->render_op))
-               dst->cache_entry.flags.alpha = 1;
-         }
-       else if ((dc->render_op == _EVAS_RENDER_BLEND) &&
-                !gr->type.geometer->has_alpha(gr, dc->render_op))
-         {
-            direct_copy = 1;  buf_step = dst->cache_entry.w;
-         }
-     }
-
-   if (!direct_copy)
-     {
-       argb_buf = evas_common_image_line_buffer_obtain(w);
-       if (!argb_buf)
-          return;
-       argb_buf->cache_entry.flags.alpha = gr->type.geometer->has_alpha(gr, dc->render_op) ? 1 : 0;
-
-       if (gr->type.geometer->has_mask(gr, dc->render_op))
-         {
-            alpha_buf = evas_common_image_alpha_line_buffer_obtain(w);
-            if (!alpha_buf)
-              {
-                 evas_common_image_line_buffer_release(argb_buf);
-                 return;
-              }
-            bfunc = evas_common_gfx_func_composite_pixel_mask_span_get(argb_buf, dst, w, dc->render_op);
-         }
-       else
-         bfunc = evas_common_gfx_func_composite_pixel_span_get(argb_buf, dst, w, dc->render_op);
-     }
-
-   gfunc = gr->type.geometer->get_fill_func(gr, dc->render_op, dc->anti_alias);
-   gdata = gr->type.gdata;
-   if (!gdata)
-     {
-       if (!direct_copy)
-         {
-           evas_common_image_line_buffer_release(argb_buf);
-           if (alpha_buf)
-               evas_common_image_alpha_line_buffer_release(alpha_buf);
-         }
-       return;
-     }
-
-   /* I TOLD YOU! this here STOPS the gradeint bugs. it's a missing
-    * emms() before doing floating point operations! the thread pipe code
-    * just brought it out reliably. i swear i had seen this long before i
-    * ever added the thread/pipe code.
-    * 
-    * now here is why it happens. NO drawing function... EXCEPT
-    * evas_common_polygon_draw() and evas_common_gradient_draw() use floating
-    * point for drawing (the poly stuff should really lose it actually), but
-    * nicely nestled in the poly draw code is a evas_common_cpu_end_opt()
-    * before it does any operations that would use floating point. the fact
-    * is the gradient code was LUCKY before without the thread pipes to almost
-    * all the time have another func do a evas_common_cpu_end_opt() before it
-    * was called. that was no longer the case with the thread renderer and
-    * it suffered. that is why on amd systems it seemed to work as i beileve
-    * on amd cpu's the amms done by evas_common_cpu_end_opt() is not needed
-    * to do floatingpoint ops again.
-    * 
-    * after a lot of futzing about - this was the culprit (well axx and axy
-    * were garbage values eventually i found after much debugging and i traced
-    * their garbageness back to here).
-    */
-   evas_common_cpu_end_opt();
-   
-   angle = (gr->fill.angle * M_PI) / 180.0;
-   axx = (cos(angle) * 65536.0);
-   ayy = axx;
-   axy = (sin(angle) * 65536.0);
-   ayx = -axy;
-
-   map = gr->map.data;
-   len = gr->map.len;
-   pdst = dst->image.data + (y * dst->cache_entry.w) + x;
-   dst_end = pdst + (h * dst->cache_entry.w);
-   if (!direct_copy)
-     {
-       buf = argb_buf->image.data;
-       if (alpha_buf)
-         mask = (DATA8 *)alpha_buf->image.data;
-     }
-   else
-     buf = pdst;
-   while (pdst < dst_end)
-     {
-#ifdef EVAS_SLI
-       if (((yoff + y) % dc->sli.h) == dc->sli.y)
-#endif
-         {
-            gfunc(map, len, buf, mask, w, xoff, yoff, axx, axy, ayx, ayy, gdata);
-            evas_common_cpu_end_opt();
-            if (!direct_copy)
-              bfunc(buf, mask, 0, pdst, w);
-            evas_common_cpu_end_opt();
-         }
-       buf += buf_step;
-       pdst += dst->cache_entry.w;
-       yoff++;
-     }
-   
-   if (!direct_copy)
-     {
-       evas_common_image_line_buffer_release(argb_buf);
-       if (alpha_buf)
-          evas_common_image_alpha_line_buffer_release(alpha_buf);
-     }
-}
-
-static void
-evas_common_gradient_map_argb(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len)
-{
-   DATA32   color;
-   int      mul_use;
-
-   if (!gr || !dc)
-       return;
-   if (len < 1)
-     {
-       if (gr->map.data)
-          free(gr->map.data);
-       gr->map.data = NULL;
-       gr->map.len = 0;
-       return;
-     }
-   if ((len != gr->map.len) || (!gr->map.data))
-       gr->map.data = realloc(gr->map.data, len * sizeof(DATA32));
-   if (!gr->map.data)
-     { gr->map.len = 0; return; }
-   gr->map.len = len;
-   gr->map.has_alpha = gr->has_alpha;
-
-   color = dc->mul.col;
-   mul_use = dc->mul.use;
-   if (dc->mul.col == 0xffffffff)
-       mul_use = 0;
-
-   if ((!gr->imported_data) && (!gr->color.stops) && (!gr->alpha.stops))
-     {
-       static DATA32  p = 0xffffffff;
-
-       gr->color.data = &p;
-       gr->color.len = 1;
-       gr->imported_data = 1;
-       gr->has_alpha = 0;
-     }
-
-   if (gr->color.stops)
-     {
-       Eina_Inlist  *lc;
-       RGBA_Gradient_Color_Stop  *gc, *gc_next;
-       DATA32  *pmap, *map_end;
-       int   i, dii;
-       int   r, g, b, a;
-       int   next_r, next_g, next_b, next_a;
-       int   rr, drr, gg, dgg, bb, dbb, aa, daa;
-       int   mr = 256, mg = 256, mb = 256, ma = 256;
-
-       gr->color.data = realloc(gr->color.data, gr->color.len * sizeof(DATA32));
-       if (!gr->color.data)  return;
-
-       gc = (RGBA_Gradient_Color_Stop *)gr->color.stops;
-       r = gc->r;  g = gc->g;  b = gc->b;  a = gc->a;
-       if (mul_use)
-         {
-           mr = 1 + ((color >> 16) & 0xff);  mg = 1 + ((color >> 8) & 0xff);
-           mb = 1 + ((color) & 0xff);  ma = 1 + (color >> 24);
-           if (ma < 256)
-              gr->map.has_alpha = 1;
-           r = (r * mr) >> 8;  g = (g * mg) >> 8;
-           b = (b * mb) >> 8;  a = (a * ma) >> 8;
-          }
-       lc = gr->color.stops->next;
-       pmap = gr->color.data;  map_end = pmap + gr->color.len;
-
-       while (pmap < map_end)
-         {
-           if (lc)
-             {
-               i = gc->dist;
-               dii = 65536 / i;
-               gc_next = (RGBA_Gradient_Color_Stop *)lc;
-               next_r = gc_next->r;  next_g = gc_next->g;
-               next_b = gc_next->b;  next_a = gc_next->a;
-               if (mul_use)
-                 {
-                   next_r = (next_r * mr) >> 8;  next_g = (next_g * mg) >> 8;
-                   next_b = (next_b * mb) >> 8;  next_a = (next_a * ma) >> 8;
-                 }
-               rr = r << 16;  drr = ((next_r - r) * dii);
-               gg = g << 16;  dgg = ((next_g - g) * dii);
-               bb = b << 16;  dbb = ((next_b - b) * dii);
-               aa = a << 16;  daa = ((next_a - a) * dii);
-               while (i--)
-                 {
-                   r = rr >> 16;  r += (rr - (r << 16)) >> 15;
-                   g = gg >> 16;  g += (gg - (g << 16)) >> 15;
-                   b = bb >> 16;  b += (bb - (b << 16)) >> 15;
-                   a = aa >> 16;  a += (aa - (a << 16)) >> 15;
-                   *pmap++ = ARGB_JOIN(a,r,g,b);
-                   rr += drr;  gg += dgg;  bb += dbb;  aa += daa;
-                 }
-               gc = gc_next;
-               r = next_r; g = next_g; b = next_b; a = next_a;
-               lc = lc->next;
-              }
-           else
-               *pmap++ = ARGB_JOIN(a,r,g,b);
-         }
-     }
-
-   if (gr->alpha.stops)
-     {
-       Eina_Inlist  *lc;
-       RGBA_Gradient_Alpha_Stop  *ga, *ga_next;
-       DATA8  *pamap, *amap_end;
-       int   i, dii;
-       int   a, next_a;
-       int   aa, daa;
-
-       gr->alpha.data = realloc(gr->alpha.data, gr->alpha.len * sizeof(DATA8));
-       if (!gr->alpha.data)  return;
-
-       ga = (RGBA_Gradient_Alpha_Stop *)gr->alpha.stops;
-       a = ga->a;
-       lc = gr->alpha.stops->next;
-       pamap = gr->alpha.data;  amap_end = pamap + gr->alpha.len;
-
-       while (pamap < amap_end)
-         {
-           if (lc)
-             {
-               i = ga->dist;
-               dii = 65536 / i;
-               ga_next = (RGBA_Gradient_Alpha_Stop *)lc;
-               next_a = ga_next->a;
-               aa = a << 16;  daa = ((next_a - a) * dii);
-               while (i--)
-                 {
-                   a = aa >> 16;  a += (aa - (a << 16)) >> 15;
-                   *pamap++ = a;
-                   aa += daa;
-                 }
-               ga = ga_next;
-               a = next_a;
-               lc = lc->next;
-              }
-           else
-               *pamap++ = a;
-         }
-     }
-
-   if (gr->color.data && gr->alpha.data)
-     {
-       if (!gr->imported_data)
-          color = 0xffffffff;
-       if (gr->color.len == gr->alpha.len)
-         {
-           evas_common_scale_rgba_a8_span(gr->color.data, gr->alpha.data, gr->color.len,
-                                          color, gr->map.data, gr->map.len, gr->map.direction);
-           return;
-         }
-       evas_common_scale_rgba_span(gr->color.data, NULL, gr->color.len,
-                                   color, gr->map.data, gr->map.len, gr->map.direction);
-       evas_common_scale_clip_a8_span(NULL, gr->alpha.data, gr->alpha.len,
-                                       0xffffffff, gr->map.data, gr->map.len, gr->map.direction);
-       return;
-     }
-
-   if (gr->color.data)
-     {
-       if (!gr->imported_data)
-          color = 0xffffffff;
-       evas_common_scale_rgba_span(gr->color.data, NULL, gr->color.len,
-                                   color, gr->map.data, gr->map.len, gr->map.direction);
-       gr->map.has_alpha |= (!!(255 - (color >> 24)));
-       return;
-     }
-       
-   evas_common_scale_a8_span(NULL, gr->alpha.data, gr->alpha.len,
-                            color, gr->map.data, gr->map.len, gr->map.direction);
-}
-
-static void
-evas_common_gradient_map_ahsv(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len)
-{
-   DATA32   color;
-
-   if (!gr || !dc)
-       return;
-   if (len < 1)
-     {
-       if (gr->map.data)
-          free(gr->map.data);
-       gr->map.data = NULL;
-       gr->map.len = 0;
-       return;
-     }
-   if ((len != gr->map.len) || (!gr->map.data))
-       gr->map.data = realloc(gr->map.data, len * sizeof(DATA32));
-   if (!gr->map.data)
-     { gr->map.len = 0; return; }
-   gr->map.len = len;
-   gr->map.has_alpha = gr->has_alpha;
-
-   color = dc->mul.col;
-   if (!dc->mul.use)
-       color = 0xffffffff;
-
-   if ((!gr->imported_data) && (!gr->color.stops) && (!gr->alpha.stops))
-     {
-       static DATA32  p = 0xffffffff;
-
-       gr->color.data = &p;
-       gr->color.len = 1;
-       gr->imported_data = 1;
-       gr->has_alpha = 0;
-     }
-
-   if (gr->color.stops)
-     {
-       Eina_Inlist  *lc;
-       RGBA_Gradient_Color_Stop  *gc, *gc_next;
-       DATA32  *pmap, *map_end;
-       int   i, dii;
-       int   h, s, v;
-       int   next_h, next_s, next_v;
-       int   hh, dhh, ss, dss, vv, dvv, aa, daa;
-       int   r, g, b, a;
-       int   next_r, next_g, next_b, next_a;
-
-       gr->color.data = realloc(gr->color.data, gr->color.len * sizeof(DATA32));
-       if (!gr->color.data)  return;
-
-       gc = (RGBA_Gradient_Color_Stop *)gr->color.stops;
-       r = gc->r;  g = gc->g;  b = gc->b;  a = gc->a;
-       evas_common_convert_color_rgb_to_hsv_int(r, g, b, &h, &s, &v);
-
-       lc = gr->color.stops->next;
-       pmap = gr->color.data;  map_end = pmap + gr->color.len;
-
-       while (pmap < map_end)
-         {
-           if (lc)
-             {
-               i = gc->dist;
-               dii = 65536 / i;
-               gc_next = (RGBA_Gradient_Color_Stop *)lc;
-
-               next_r = gc_next->r;  next_g = gc_next->g;
-               next_b = gc_next->b;  next_a = gc_next->a;
-               evas_common_convert_color_rgb_to_hsv_int(next_r, next_g, next_b,
-                                                        &next_h, &next_s, &next_v);
-               hh = h << 16;  dhh = ((next_h - h) * dii);
-               ss = s << 16;  dss = ((next_s - s) * dii);
-               vv = v << 16;  dvv = ((next_v - v) * dii);
-               aa = a << 16;  daa = ((next_a - a) * dii);
-               while (i--)
-                 {
-                   h = hh >> 16;  h += (hh - (h << 16)) >> 15;
-                   s = ss >> 16;  s += (ss - (s << 16)) >> 15;
-                   v = vv >> 16;  v += (vv - (v << 16)) >> 15;
-                   a = aa >> 16;  a += (aa - (a << 16)) >> 15;
-                   evas_common_convert_color_hsv_to_rgb_int(h, s, v, &r, &g, &b);
-                   *pmap++ = ARGB_JOIN(a,r,g,b);
-                   hh += dhh;  ss += dss;  vv += dvv;  aa += daa;
-                 }
-               gc = gc_next;
-               h = next_h; s = next_s; v = next_v; a = next_a;
-               lc = lc->next;
-              }
-           else
-               *pmap++ = ARGB_JOIN(gc->a,gc->r,gc->g,gc->b);
-         }
-     }
-
-   if (gr->alpha.stops)
-     {
-       Eina_Inlist  *lc;
-       RGBA_Gradient_Alpha_Stop  *ga, *ga_next;
-       DATA8  *pamap, *amap_end;
-       int   i, dii;
-       int   a, next_a;
-       int   aa, daa;
-
-       gr->alpha.data = realloc(gr->alpha.data, gr->alpha.len * sizeof(DATA8));
-       if (!gr->alpha.data)  return;
-
-       ga = (RGBA_Gradient_Alpha_Stop *)gr->alpha.stops;
-       a = ga->a;
-       lc = gr->alpha.stops->next;
-       pamap = gr->alpha.data;  amap_end = pamap + gr->alpha.len;
-
-       while (pamap < amap_end)
-         {
-           if (lc)
-             {
-               i = ga->dist;
-               dii = 65536 / i;
-               ga_next = (RGBA_Gradient_Alpha_Stop *)lc;
-               next_a = ga_next->a;
-               aa = a << 16;  daa = ((next_a - a) * dii);
-               while (i--)
-                 {
-                   a = aa >> 16;  a += (aa - (a << 16)) >> 15;
-                   *pamap++ = a;
-                   aa += daa;
-                 }
-               ga = ga_next;
-               a = next_a;
-               lc = lc->next;
-              }
-           else
-               *pamap++ = a;
-         }
-     }
-
-   if (gr->color.data && gr->alpha.data)
-     {
-       if (gr->color.len == gr->alpha.len)
-         {
-           evas_common_scale_hsva_a8_span(gr->color.data, gr->alpha.data, gr->color.len,
-                                          color, gr->map.data, gr->map.len, gr->map.direction);
-           return;
-         }
-       evas_common_scale_hsva_span(gr->color.data, NULL, gr->color.len,
-                                   color, gr->map.data, gr->map.len, gr->map.direction);
-       evas_common_scale_clip_a8_span(NULL, gr->alpha.data, gr->alpha.len,
-                                       0xffffffff, gr->map.data, gr->map.len, gr->map.direction);
-       return;
-     }
-   if (gr->color.data)
-     {
-       evas_common_scale_hsva_span(gr->color.data, NULL, gr->color.len,
-                                   color, gr->map.data, gr->map.len, gr->map.direction);
-       gr->map.has_alpha |= (!!(255 - (color >> 24)));
-       return;
-     }
-       
-   evas_common_scale_a8_span(NULL, gr->alpha.data, gr->alpha.len,
-                            color, gr->map.data, gr->map.len, gr->map.direction);
-}
-
-EAPI void
-evas_common_gradient_map(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len)
-{
-   if (!gr || !dc) return;
-   if (dc->interpolation.color_space == _EVAS_COLOR_SPACE_AHSV)
-     {
-       evas_common_gradient_map_ahsv(dc, gr, len);
-       return;
-     }
-   evas_common_gradient_map_argb(dc, gr, len);
-}
diff --git a/src/lib/engines/common/evas_gradient_private.h b/src/lib/engines/common/evas_gradient_private.h
deleted file mode 100644 (file)
index 932ec1a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef _EVAS_GRADIENT_PRIVATE_H
-#define _EVAS_GRADIENT_PRIVATE_H
-
-
-RGBA_Gradient_Type *evas_common_gradient_linear_get        (void);
-RGBA_Gradient_Type *evas_common_gradient_radial_get        (void);
-RGBA_Gradient_Type *evas_common_gradient_angular_get       (void);
-RGBA_Gradient_Type *evas_common_gradient_rectangular_get   (void);
-RGBA_Gradient_Type *evas_common_gradient_sinusoidal_get    (void);
-char               *evas_common_gradient_get_key_fval      (char *in, char *key, float *val);
-
-
-#endif /* _EVAS_GRADIENT_PRIVATE_H */
diff --git a/src/lib/engines/common/evas_gradient_radial.c b/src/lib/engines/common/evas_gradient_radial.c
deleted file mode 100644 (file)
index 179827e..0000000
+++ /dev/null
@@ -1,1143 +0,0 @@
-#include <math.h>
-
-#include "evas_common.h"
-#include "evas_gradient_private.h"
-
-
-typedef struct _Radial_Data   Radial_Data;
-struct _Radial_Data
-{
-   float  r0;
-
-   int    sx, sy, s;
-   float  off;
-   int    len;
-};
-
-static void
-radial_init(void);
-
-static void
-radial_shutdown(void);
-
-static void
-radial_init_geom(RGBA_Gradient *gr);
-
-static void
-radial_setup_geom(RGBA_Gradient *gr);
-
-static void
-radial_free_geom(void *gdata);
-
-static int
-radial_has_alpha(RGBA_Gradient *gr, int op);
-
-static int
-radial_has_mask(RGBA_Gradient *gr, int op);
-
-static int
-radial_get_map_len(RGBA_Gradient *gr);
-
-static Gfx_Func_Gradient_Fill
-radial_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
-
-static RGBA_Gradient_Type  radial = {"radial", radial_init, radial_shutdown,
-                                    radial_init_geom, radial_setup_geom, radial_free_geom,
-                                    radial_has_alpha, radial_has_mask,
-                                    radial_get_map_len, radial_get_fill_func};
-
-
-/** internal functions **/
-
-static void
-radial_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-static void
-radial_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_pad_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-radial_pad_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-
-RGBA_Gradient_Type  *
-evas_common_gradient_radial_get(void)
-{
-    return &radial;
-}
-
-static void
-radial_init(void)
-{
-}
-
-static void
-radial_shutdown(void)
-{
-}
-
-static void
-radial_free_geom(void *gdata)
-{
-   Radial_Data *data = (Radial_Data *)gdata;
-   if (data) free(data);
-}
-
-static void
-radial_setup_geom(RGBA_Gradient *gr)
-{
-   Radial_Data   *radial_data;
-
-   if (!gr || (gr->type.geometer != &radial)) return;
-
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return;
-   radial_data->sx = gr->fill.w;
-   radial_data->sy = gr->fill.h;
-   radial_data->s = radial_data->sx;
-   if (radial_data->sy > radial_data->sx)
-       radial_data->s = radial_data->sy;
-   radial_data->off = gr->map.offset;
-   radial_data->len = radial_data->s - (int)(radial_data->s * radial_data->r0);
-}
-
-static void
-radial_init_geom(RGBA_Gradient *gr)
-{
-   Radial_Data   *radial_data;
-   int    err = 1;
-   char   *s, *p, key[256];
-   float  r0;
-
-   if (!gr || (gr->type.geometer != &radial)) return;
-
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data)
-     {
-       radial_data = calloc(1, sizeof(Radial_Data));
-       if (!radial_data)  return;
-       radial_data->r0 = 0.0;
-       radial_data->sx = 32;
-       radial_data->sy = 32;
-       radial_data->s = 32;
-       radial_data->off = 0.0;
-       radial_data->len = 32;
-     }
-   gr->type.gdata = radial_data;
-
-   if (!gr->type.params || !*(gr->type.params))
-       return;
-
-   s = strdup(gr->type.params);
-   if (!s) return;
-
-   r0 = radial_data->r0;
-   p = s;
-   while ((p = evas_common_gradient_get_key_fval(p, key, &r0)))
-     {
-       if (!strcmp(key, "inner_radius"))
-           err = 0;
-       else
-         {
-           err = 1;
-           break;
-         }
-     }
-   if (!err)
-     {
-       if (r0 < 0.0) r0 = 0.0;
-       if (r0 > 1.0) r0 = 1.0;
-       radial_data->r0 = r0;
-     }
-   free(s);
-}
-
-
-static int
-radial_has_alpha(RGBA_Gradient *gr, int op)
-{
-   Radial_Data   *radial_data;
-
-   if (!gr || (gr->type.geometer != &radial)) return 0;
-   if (gr->has_alpha | gr->map.has_alpha)
-       return 1;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       return 0;
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return 0;
-   if (radial_data->r0 > 0)
-       return 1;
-   if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
-       return 1;
-   return 0;
-}
-
-static int
-radial_has_mask(RGBA_Gradient *gr, int op)
-{
-   Radial_Data   *radial_data;
-
-   if (!gr || (gr->type.geometer != &radial)) return 0;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-     {
-       radial_data = (Radial_Data *)gr->type.gdata;
-       if (!radial_data) return 0;
-       if (radial_data->r0 > 0)
-           return 1;
-       if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
-           return 1;
-     }
-   return 0;
-}
-
-static int
-radial_get_map_len(RGBA_Gradient *gr)
-{
-   Radial_Data   *radial_data;
-
-   if (!gr || (gr->type.geometer != &radial)) return 0;
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return 0;
-   return radial_data->len;
-}
-
-static Gfx_Func_Gradient_Fill
-radial_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
-{
-   Radial_Data   *radial_data;
-   Gfx_Func_Gradient_Fill  sfunc = NULL;
-   int masked_op = 0;
-
-   if (!gr || (gr->type.geometer != &radial)) return sfunc;
-   radial_data = (Radial_Data *)gr->type.gdata;
-   if (!radial_data) return sfunc;
-
-   radial_data->off = gr->map.offset;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       masked_op = 1;
-
-   switch (gr->fill.spread)
-     {
-      case _EVAS_TEXTURE_REFLECT:
-       {
-        if (aa)
-          {
-            if (radial_data->r0 > 0)
-              {
-               if (masked_op)
-                  sfunc = radial_reflect_aa_masked;
-               else
-                  sfunc = radial_reflect_aa;
-              }
-            else
-               sfunc = radial_reflect_aa;
-          }
-        else
-          {
-            if (radial_data->r0 > 0)
-              {
-               if (masked_op)
-                  sfunc = radial_reflect_masked;
-               else
-                  sfunc = radial_reflect;
-              }
-            else
-               sfunc = radial_reflect;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_REPEAT:
-       {
-        if (aa)
-          {
-            if (radial_data->r0 > 0)
-              {
-               if (masked_op)
-                  sfunc = radial_repeat_aa_masked;
-               else
-                  sfunc = radial_repeat_aa;
-              }
-            else
-               sfunc = radial_repeat_aa;
-          }
-        else
-          {
-            if (radial_data->r0 > 0)
-              {
-               if (masked_op)
-                  sfunc = radial_repeat_masked;
-               else
-                  sfunc = radial_repeat;
-              }
-            else
-               sfunc = radial_repeat;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT:
-        radial_data->off = 0;
-      case _EVAS_TEXTURE_RESTRICT_REFLECT:
-       {
-        if (aa)
-          {
-            if (masked_op)
-               sfunc = radial_restrict_reflect_aa_masked;
-            else
-               sfunc = radial_restrict_reflect_aa;
-          }
-        else
-          {
-            if (masked_op)
-               sfunc = radial_restrict_reflect_masked;
-            else
-               sfunc = radial_restrict_reflect;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT_REPEAT:
-       {
-        if (aa)
-          {
-            if (masked_op)
-               sfunc = radial_restrict_repeat_aa_masked;
-            else
-               sfunc = radial_restrict_repeat_aa;
-          }
-        else
-          {
-            if (masked_op)
-               sfunc = radial_restrict_repeat_masked;
-            else
-               sfunc = radial_restrict_repeat;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_PAD:
-       {
-        if (aa)
-          {
-            if (masked_op)
-               sfunc = radial_pad_aa_masked;
-            else
-               sfunc = radial_pad_aa;
-          }
-        else
-          {
-            if (masked_op)
-               sfunc = radial_pad_masked;
-            else
-               sfunc = radial_pad;
-          }
-       }
-      break;
-      default:
-       sfunc = radial_reflect_aa;
-      break;
-     }
-   return sfunc;
-}
-
-#define SETUP_RADIAL_FILL \
-   if (gdata->sx != gdata->s) \
-     { \
-       axx = (gdata->s * axx) / gdata->sx; \
-       axy = (gdata->s * axy) / gdata->sx; \
-     } \
-   if (gdata->sy != gdata->s) \
-     { \
-       ayy = (gdata->s * ayy) / gdata->sy; \
-       ayx = (gdata->s * ayx) / gdata->sy; \
-     } \
-   xx = (axx * x) + (axy * y); \
-   yy = (ayx * x) + (ayy * y); \
-   rr0 = gdata->r0 * gdata->s; \
-   rr0 <<= 16;
-
-
-static void
-radial_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if (l >= 0)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                   l = src_len - l - 1;
-             }
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;
-       if (l >= 0)
-         {
-           DATA32  a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if ((l == 0) && rr0)
-               *dst = MUL_256(a0, *dst);
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                   l = src_len - l - 1;
-             }
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if ((l == 0) && rr0)
-               *mask = a0;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if (l >= 0)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;
-       if (l >= 0)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == src_len - 1)
-               *dst = INTERP_256(a, src[0], *dst);
-           if ((l == 0) && rr0)
-               *dst = MUL_256(a, *dst);
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;
-       if (l >= 0)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == src_len - 1)
-               *dst = INTERP_256(a, src[0], *dst);
-           if ((l == 0) && rr0)
-               *mask = a - 1;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (l == (src_len - 1))
-               *dst = MUL_256(257 - a0, *dst);
-           if ((l == 0) && rr0)
-               *dst = MUL_256(a0, *dst);
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (l == (src_len - 1))
-               *mask = 255 - a0;
-           if ((l == 0) && rr0)
-               *mask = a0;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           l = (l % src_len);
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = (lp % src_len);
-           if (lp < 0)
-               lp += src_len;
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == (src_len - 1))
-               *dst = INTERP_256(a, src[0], *dst);
-           if (l == (src_len - 1))
-               *dst = MUL_256(257 - a, *dst);
-           if ((l == 0) && rr0)
-               *dst = MUL_256(a, *dst);
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           l = (l % src_len);
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = (lp % src_len);
-           if (lp < 0)
-               lp += src_len;
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == (src_len - 1))
-               *dst = INTERP_256(a, src[0], *dst);
-           if (l == (src_len - 1))
-               *mask = 256 - a;
-           if ((l == 0) && rr0)
-               *mask = a - 1;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if (l >= 0)
-         {
-           if (l >= src_len)
-               l = src_len - 1;
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           *dst = src[l];
-           if (l + 1 < src_len)
-               *dst = INTERP_256(a, src[l + 1], src[l]);
-         }
-        if (l == 0)
-          {
-            *dst = src[0];
-            if (rr0)
-               *dst = MUL_256(a, *dst);
-          }
-        if (l >= src_len)
-          {
-            *dst = src[src_len - 1];
-          }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_pad_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-           if (l >= src_len)
-               l = src_len - 1;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-radial_pad_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Radial_Data  *gdata = (Radial_Data *)params_data;
-   int  xx, yy, rr0;
-
-   SETUP_RADIAL_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           *dst = src[l];
-           if (l + 1 < src_len)
-               *dst = INTERP_256(a, src[l + 1], src[l]);
-         }
-       if (l == 0)
-         {
-           *dst = src[0];  *mask = 255;
-           if (rr0)
-               *mask = a - 1;
-         }
-       if (l >= src_len)
-         {
-           *dst = src[src_len - 1];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
diff --git a/src/lib/engines/common/evas_gradient_rectangular.c b/src/lib/engines/common/evas_gradient_rectangular.c
deleted file mode 100644 (file)
index d74214a..0000000
+++ /dev/null
@@ -1,1460 +0,0 @@
-#include <math.h>
-
-#include "evas_common.h"
-#include "evas_gradient_private.h"
-
-
-typedef struct _Rectangular_Data   Rectangular_Data;
-struct _Rectangular_Data
-{
-   float  r0;
-
-   int    sx, sy, s;
-   float  off;
-   int    len;
-};
-
-static void
-rectangular_init(void);
-
-static void
-rectangular_shutdown(void);
-
-static void
-rectangular_init_geom(RGBA_Gradient *gr);
-
-static void
-rectangular_setup_geom(RGBA_Gradient *gr);
-
-static void
-rectangular_free_geom(void *gdata);
-
-static int
-rectangular_has_alpha(RGBA_Gradient *gr, int op);
-
-static int
-rectangular_has_mask(RGBA_Gradient *gr, int op);
-
-static int
-rectangular_get_map_len(RGBA_Gradient *gr);
-
-static Gfx_Func_Gradient_Fill
-rectangular_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
-
-static RGBA_Gradient_Type  rectangular = {"rectangular", rectangular_init, rectangular_shutdown,
-                                         rectangular_init_geom, rectangular_setup_geom, rectangular_free_geom,
-                                         rectangular_has_alpha, rectangular_has_mask,
-                                         rectangular_get_map_len, rectangular_get_fill_func};
-
-
-/** internal functions **/
-
-static void
-rectangular_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_pad_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-rectangular_pad_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-RGBA_Gradient_Type  *
-evas_common_gradient_rectangular_get(void)
-{
-    return &rectangular;
-}
-
-static void
-rectangular_init(void)
-{
-}
-
-static void
-rectangular_shutdown(void)
-{
-}
-
-static void
-rectangular_free_geom(void *gdata)
-{
-   Rectangular_Data *data = (Rectangular_Data *)gdata;
-   if (data) free(data);
-}
-
-static void
-rectangular_setup_geom(RGBA_Gradient *gr)
-{
-   Rectangular_Data   *rectangular_data;
-
-   if (!gr || (gr->type.geometer != &rectangular)) return;
-
-   rectangular_data = (Rectangular_Data *)gr->type.gdata;
-   if (!rectangular_data) return;
-   rectangular_data->sx = gr->fill.w;
-   rectangular_data->sy = gr->fill.h;
-   rectangular_data->s = rectangular_data->sx;
-   if (rectangular_data->sy > rectangular_data->sx)
-       rectangular_data->s = rectangular_data->sy;
-   rectangular_data->off = gr->map.offset;
-   rectangular_data->len = rectangular_data->s - (int)(rectangular_data->s * rectangular_data->r0);
-}
-
-static void
-rectangular_init_geom(RGBA_Gradient *gr)
-{
-   Rectangular_Data   *rectangular_data;
-   int    err = 1;
-   char   *s, *p, key[256];
-   float  r0;
-
-   if (!gr || (gr->type.geometer != &rectangular)) return;
-
-   rectangular_data = (Rectangular_Data *)gr->type.gdata;
-   if (!rectangular_data)
-     {
-       rectangular_data = calloc(1, sizeof(Rectangular_Data));
-       if (!rectangular_data)  return;
-       rectangular_data->r0 = 0.0;
-       rectangular_data->sx = 32;
-       rectangular_data->sy = 32;
-       rectangular_data->s = 32;
-       rectangular_data->off = 0.0;
-       rectangular_data->len = 32;
-     }
-   gr->type.gdata = rectangular_data;
-
-   if (!gr->type.params || !*(gr->type.params)) 
-     return;
-
-   s = strdup(gr->type.params);
-   if (!s) return;
-
-   r0 = rectangular_data->r0;
-   p = s;
-   while ((p = evas_common_gradient_get_key_fval(p, key, &r0)))
-     {
-       if (!strcmp(key, "inner_radius"))
-           err = 0;
-       else
-         {
-           err = 1;
-           break;
-         }
-     }
-   if (!err)
-     {
-       if (r0 < 0.0) r0 = 0.0;
-       if (r0 > 1.0) r0 = 1.0;
-       rectangular_data->r0 = r0;
-     }
-   free(s);
-}
-
-
-static int
-rectangular_has_alpha(RGBA_Gradient *gr, int op)
-{
-   Rectangular_Data   *rectangular_data;
-
-   if (!gr || (gr->type.geometer != &rectangular)) return 0;
-   if (gr->has_alpha | gr->map.has_alpha)
-       return 1;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       return 0;
-   rectangular_data = (Rectangular_Data *)gr->type.gdata;
-   if (!rectangular_data) return 0;
-   if (rectangular_data->r0 > 0)
-       return 1;
-   if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
-       return 1;
-   return 0;
-}
-
-static int
-rectangular_has_mask(RGBA_Gradient *gr, int op)
-{
-   Rectangular_Data   *rectangular_data;
-
-   if (!gr || (gr->type.geometer != &rectangular)) return 0;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-     {
-       rectangular_data = (Rectangular_Data *)gr->type.gdata;
-       if (!rectangular_data) return 0;
-       if (rectangular_data->r0 > 0)
-           return 1;
-       if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
-           return 1;
-     }
-   return 0;
-}
-
-static int
-rectangular_get_map_len(RGBA_Gradient *gr)
-{
-   Rectangular_Data   *rectangular_data;
-
-   if (!gr || (gr->type.geometer != &rectangular)) return 0;
-   rectangular_data = (Rectangular_Data *)gr->type.gdata;
-   if (!rectangular_data) return 0;
-   return rectangular_data->len;
-}
-
-static Gfx_Func_Gradient_Fill
-rectangular_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
-{
-   Rectangular_Data   *rectangular_data;
-   Gfx_Func_Gradient_Fill  sfunc = NULL;
-   int masked_op = 0;
-
-   if (!gr || (gr->type.geometer != &rectangular))
-       return sfunc;
-   rectangular_data = (Rectangular_Data *)gr->type.gdata;
-   if (!rectangular_data) return sfunc;
-
-   rectangular_data->off = gr->map.offset;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       masked_op = 1;
-   switch (gr->fill.spread)
-     {
-      case _EVAS_TEXTURE_REFLECT:
-       {
-        if (aa)
-          {
-           if (rectangular_data->r0 > 0)
-             {
-               if (masked_op)
-                  sfunc = rectangular_reflect_aa_masked;
-               else
-                  sfunc = rectangular_reflect_aa;
-             }
-           else
-               sfunc = rectangular_reflect_aa;
-          }
-        else
-          {
-           if (rectangular_data->r0 > 0)
-             {
-               if (masked_op)
-                  sfunc = rectangular_reflect_masked;
-               else
-                  sfunc = rectangular_reflect;
-             }
-           else
-               sfunc = rectangular_reflect;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_REPEAT:
-       {
-        if (aa)
-          {
-           if (rectangular_data->r0 > 0)
-             {
-               if (masked_op)
-                  sfunc = rectangular_repeat_aa_masked;
-               else
-                  sfunc = rectangular_repeat_aa;
-             }
-           else
-               sfunc = rectangular_repeat_aa;
-          }
-        else
-          {
-           if (rectangular_data->r0 > 0)
-             {
-               if (masked_op)
-                  sfunc = rectangular_repeat_masked;
-               else
-                  sfunc = rectangular_repeat;
-             }
-           else
-               sfunc = rectangular_repeat;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT:
-        rectangular_data->off = 0;
-      case _EVAS_TEXTURE_RESTRICT_REFLECT:
-       {
-        if (aa)
-          {
-           if (masked_op)
-               sfunc = rectangular_restrict_reflect_aa_masked;
-           else
-               sfunc = rectangular_restrict_reflect_aa;
-          }
-        else
-          {
-           if (masked_op)
-               sfunc = rectangular_restrict_reflect_masked;
-           else
-               sfunc = rectangular_restrict_reflect;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT_REPEAT:
-       {
-        if (aa)
-          {
-           if (masked_op)
-               sfunc = rectangular_restrict_repeat_aa_masked;
-           else
-               sfunc = rectangular_restrict_repeat_aa;
-          }
-        else
-          {
-           if (masked_op)
-               sfunc = rectangular_restrict_repeat_masked;
-           else
-               sfunc = rectangular_restrict_repeat;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_PAD:
-       {
-        if (aa)
-          {
-           if (rectangular_data->r0 > 0)
-             {
-               if (masked_op)
-                  sfunc = rectangular_pad_aa_masked;
-               else
-                  sfunc = rectangular_pad_aa;
-             }
-           else
-               sfunc = rectangular_pad_aa;
-          }
-        else
-          {
-           if (rectangular_data->r0 > 0)
-             {
-               if (masked_op)
-                  sfunc = rectangular_pad_masked;
-               else
-                  sfunc = rectangular_pad;
-             }
-           else
-               sfunc = rectangular_pad;
-          }
-       }
-        break;
-      default:
-       sfunc = rectangular_reflect;
-      break;
-     }
-   return sfunc;
-}
-
-/* the fill functions */
-
-#ifdef BUILD_MMX
-#define INTERP_256_P2R(a, s, mma, mms, mmd, mmz) \
-           MOV_A2R(a, mma) \
-           MOV_P2R(s, mms, mmz) \
-           INTERP_256_R2R(mma, mms, mmd, mm5)
-
-#define MUL_256_A2R(a, mma, mmd, mmz) \
-       MOV_A2R(a, mma) \
-       MUL4_256_R2R(mma, mmd)
-#endif
-
-#define SETUP_RECT_FILL \
-   if (gdata->sx != gdata->s) \
-     { \
-       axx = (gdata->s * axx) / gdata->sx; \
-       axy = (gdata->s * axy) / gdata->sx; \
-     } \
-   if (gdata->sy != gdata->s) \
-     { \
-       ayy = (gdata->s * ayy) / gdata->sy; \
-       ayx = (gdata->s * ayx) / gdata->sy; \
-     } \
-   xx = (axx * x) + (axy * y); \
-   yy = (ayx * x) + (ayy * y); \
-   rr0 = gdata->r0 * gdata->s; \
-   rr0 <<= 16;
-
-static void
-rectangular_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if (l >= 0)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                   l = src_len - l - 1;
-             }
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy, lp;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       *dst = 0;
-       if (l >= 0)
-         {
-           DATA32  a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if ((l == 0) && rr0)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a0, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a0, *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                   l = src_len - l - 1;
-             }
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy, lp;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           *mask = 255;
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-           if ((l == 0) && rr0)
-               *mask = a0;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if (l >= 0)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-          *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy, lp;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       *dst = 0;
-       if (l >= 0)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (lp == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[0], *dst);
-#endif
-             }
-           if ((l == 0) && rr0)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a, *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy, lp;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = lp % src_len;
-           if (lp < 0)
-               lp += src_len;
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           *mask = 255;
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (lp == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[0], *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-           if ((l == 0) && rr0)
-               *mask = a - 1;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy, lp;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (l == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               a = 257 - a0;
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(257 - a0, *dst);
-#endif
-             }
-           if ((l == 0) && rr0)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a0, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a0, *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy, lp;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
-
-           lp = l + off;
-           if (lp < 0) { lp = -lp;  a = 257 - a; }
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           *mask = 255;
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-           if (l == (src_len - 1))
-               *mask = 255 - a0;
-           if ((l == 0) && rr0)
-               *mask = a0;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           l = (l % src_len);
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a1 = 257 - a;
-
-           lp = l + off;
-           lp = (lp % src_len);
-           if (lp < 0)
-               lp += src_len;
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (lp == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[0], *dst);
-#endif
-             }
-           if (l == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a1, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a1, *dst);
-#endif
-             }
-           if ((l == 0) && rr0)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a, *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16);
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           l = (l % src_len);
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-   int  off = gdata->off * (src_len - 1);
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = (hypot(xx, yy) - rr0);
-       int  l = (ll >> 16), lp;
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-           lp = l + off;
-           lp = (lp % src_len);
-           if (lp < 0)
-               lp += src_len;
-#ifdef BUILD_MMX
-           MOV_P2R(src[lp], mm1, mm0)
-#else
-           *dst = src[lp];
-#endif
-           *mask = 255;
-           if (lp + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-#endif
-             }
-           if (lp == (src_len - 1))
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[0], *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-           if (l == (src_len - 1))
-               *mask = 256 - a;
-           if ((l == 0) && rr0)
-               *mask = a - 1;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-
-static void
-rectangular_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;
-       if (l >= 0)
-         {
-          if (l >= src_len)
-              l = src_len - 1;
-          *dst = src[l];
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       *dst = 0;
-       if (l >= src_len) *dst = src[src_len - 1];
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-#ifdef BUILD_MMX
-           MOV_P2R(src[l], mm1, mm0)
-#else
-           *dst = src[l];
-#endif
-           if (l + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[l + 1], *dst);
-#endif
-             }
-           if ((l == 0) && rr0)
-             {
-#ifdef BUILD_MMX
-               MUL_256_A2R(a, mm3, mm1, mm0)
-#else
-               *dst = MUL_256(a, *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-         }
-       dst++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_pad_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-
-   SETUP_RECT_FILL
-
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       l += (ll - (l << 16)) >> 15;
-       *dst = 0;  *mask = 0;
-       if (l >= 0)
-         {
-          if (l >= src_len)
-              l = src_len - 1;
-          *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
-
-static void
-rectangular_pad_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
-   int  xx, yy, rr0;
-
-   SETUP_RECT_FILL
-
-#ifdef BUILD_MMX
-   pxor_r2r(mm0, mm0);
-   MOV_A2R(ALPHA_255, mm5)
-#endif
-   while (dst < dst_end)
-     {
-       int  ll = xx, l = yy;
-
-       if (ll < 0)  ll = -ll;
-       if (l < 0)  l = -l;
-       if (ll < l)  ll = l;
-       ll = ll - rr0;  l = ll >> 16;
-
-       *dst = 0;  *mask = 0;
-       if (l >= src_len) { *dst = src[src_len - 1];  *mask = 255; }
-       if ((unsigned)l < src_len)
-         {
-           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
-
-#ifdef BUILD_MMX
-           MOV_P2R(src[l], mm1, mm0)
-#else
-           *dst = src[l];
-#endif
-           *mask = 255;
-           if (l + 1 < src_len)
-             {
-#ifdef BUILD_MMX
-               INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
-#else
-               *dst = INTERP_256(a, src[l + 1], *dst);
-#endif
-             }
-#ifdef BUILD_MMX
-           MOV_R2P(mm1, *dst, mm0)
-#endif
-           if ((l == 0) && rr0)
-               *mask = a - 1;
-         }
-       dst++;  mask++;  xx += axx;  yy += ayx;
-     }
-}
diff --git a/src/lib/engines/common/evas_gradient_sinusoidal.c b/src/lib/engines/common/evas_gradient_sinusoidal.c
deleted file mode 100644 (file)
index fec754c..0000000
+++ /dev/null
@@ -1,834 +0,0 @@
-#include <math.h>
-
-#include "evas_common.h"
-#include "evas_gradient_private.h"
-
-typedef struct _Sinusoidal_Data   Sinusoidal_Data;
-struct _Sinusoidal_Data
-{
-   float  amp, per;
-
-   float  sa, sp;
-   float  off;
-   int    len;
-};
-
-static void
-sinusoidal_init(void);
-
-static void
-sinusoidal_shutdown(void);
-
-static void
-sinusoidal_init_geom(RGBA_Gradient *gr);
-
-static void
-sinusoidal_setup_geom(RGBA_Gradient *gr);
-
-static void
-sinusoidal_free_geom(void *gdata);
-
-static int
-sinusoidal_has_alpha(RGBA_Gradient *gr, int op);
-
-static int
-sinusoidal_has_mask(RGBA_Gradient *gr, int op);
-
-static int
-sinusoidal_get_map_len(RGBA_Gradient *gr);
-
-static Gfx_Func_Gradient_Fill
-sinusoidal_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
-
-static RGBA_Gradient_Type  sinusoidal = {"sinusoidal", sinusoidal_init, sinusoidal_shutdown,
-                                        sinusoidal_init_geom, sinusoidal_setup_geom, sinusoidal_free_geom,
-                                        sinusoidal_has_alpha, sinusoidal_has_mask,
-                                        sinusoidal_get_map_len, sinusoidal_get_fill_func};
-
-
-/** internal functions **/
-
-static void
-sinusoidal_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-static void
-sinusoidal_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
-
-
-RGBA_Gradient_Type  *
-evas_common_gradient_sinusoidal_get(void)
-{
-    return &sinusoidal;
-}
-
-static void
-sinusoidal_init(void)
-{
-}
-
-static void
-sinusoidal_shutdown(void)
-{
-}
-
-static void
-sinusoidal_free_geom(void *gdata)
-{
-   Sinusoidal_Data *data = (Sinusoidal_Data *)gdata;
-   if (data) free(data);
-}
-
-static void
-sinusoidal_setup_geom(RGBA_Gradient *gr)
-{
-   Sinusoidal_Data   *sinusoidal_data;
-
-   if (!gr || (gr->type.geometer != &sinusoidal)) return;
-
-   sinusoidal_data = (Sinusoidal_Data *)gr->type.gdata;
-   if (!sinusoidal_data) return;
-   sinusoidal_data->sa = sinusoidal_data->amp * gr->fill.h;
-   sinusoidal_data->sp = sinusoidal_data->per * (M_PI / gr->fill.w);
-   sinusoidal_data->off = gr->map.offset;
-   sinusoidal_data->len = gr->fill.h;
-}
-
-static void
-sinusoidal_init_geom(RGBA_Gradient *gr)
-{
-   Sinusoidal_Data   *sinusoidal_data;
-   int    err = 1;
-   char   *s, *p, key[256];
-   float  amp, per, val;
-
-   if (!gr || (gr->type.geometer != &sinusoidal)) return;
-
-   sinusoidal_data = (Sinusoidal_Data *)gr->type.gdata;
-   if (!sinusoidal_data)
-     {
-       sinusoidal_data = calloc(1, sizeof(Sinusoidal_Data));
-       if (!sinusoidal_data)  return;
-       sinusoidal_data->amp = 1.0;
-       sinusoidal_data->per = 1.0;
-       sinusoidal_data->sa = 32;
-       sinusoidal_data->sp = M_PI / 32;
-       sinusoidal_data->off = 0.0;
-       sinusoidal_data->len = 32;
-     }
-   gr->type.gdata = sinusoidal_data;
-
-   if (!gr->type.params || !*(gr->type.params))
-       return;
-
-   s = strdup(gr->type.params);
-   if (!s) return;
-
-   amp = sinusoidal_data->amp;
-   per = sinusoidal_data->per;
-   p = s;
-   while ((p = evas_common_gradient_get_key_fval(p, key, &val)))
-     {
-       if (!strcmp(key, "amplitude"))
-         {
-           err = 0;
-           amp = val;
-         }
-       else if (!strcmp(key, "period"))
-         {
-           err = 0;
-           per = val;
-         }
-       else
-         {
-           err = 1;
-           break;
-         }
-     }
-   if (!err)
-     {
-       sinusoidal_data->amp = amp;
-       if (per < 0.0) per = -per;
-       sinusoidal_data->per = per;
-     }
-   free(s);
-}
-
-
-static int
-sinusoidal_has_alpha(RGBA_Gradient *gr, int op)
-{
-   if (!gr || (gr->type.geometer != &sinusoidal)) return 0;
-
-   if (gr->has_alpha | gr->map.has_alpha)
-       return 1;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       return 0;
-   if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
-       return 1;
-   return 0;
-}
-
-static int
-sinusoidal_has_mask(RGBA_Gradient *gr, int op)
-{
-   if (!gr || (gr->type.geometer != &sinusoidal)) return 0;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-     {
-       if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
-             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
-           return 1;
-     }
-
-   return 0;
-}
-
-static int
-sinusoidal_get_map_len(RGBA_Gradient *gr)
-{
-   Sinusoidal_Data   *sinusoidal_data;
-
-   if (!gr || (gr->type.geometer != &sinusoidal)) return 0;
-   sinusoidal_data = (Sinusoidal_Data *)gr->type.gdata;
-   if (!sinusoidal_data) return 0;
-   return sinusoidal_data->len;
-}
-
-static Gfx_Func_Gradient_Fill
-sinusoidal_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
-{
-   Sinusoidal_Data   *sinusoidal_data;
-   Gfx_Func_Gradient_Fill  sfunc = NULL;
-   int masked_op = 0;
-
-   if (!gr || (gr->type.geometer != &sinusoidal))
-       return sfunc;
-   sinusoidal_data = (Sinusoidal_Data *)gr->type.gdata;
-   if (!sinusoidal_data) return sfunc;
-
-   sinusoidal_data->off = gr->map.offset;
-   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
-         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
-       masked_op = 1;
-
-   switch (gr->fill.spread)
-     {
-      case _EVAS_TEXTURE_REFLECT:
-       {
-        if (aa)
-           sfunc = sinusoidal_reflect_aa;
-        else
-           sfunc = sinusoidal_reflect;
-       }
-      break;
-      case _EVAS_TEXTURE_REPEAT:
-       {
-        if (aa)
-           sfunc = sinusoidal_repeat_aa;
-        else
-           sfunc = sinusoidal_repeat;
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT:
-        sinusoidal_data->off = 0;
-      case _EVAS_TEXTURE_RESTRICT_REFLECT:
-       {
-        if (aa)
-          {
-           if (masked_op)
-               sfunc = sinusoidal_restrict_reflect_aa_masked;
-           else
-               sfunc = sinusoidal_restrict_reflect_aa;
-          }
-        else
-          {
-           if (masked_op)
-               sfunc = sinusoidal_restrict_reflect_masked;
-           else
-               sfunc = sinusoidal_restrict_reflect;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_RESTRICT_REPEAT:
-       {
-        if (aa)
-          {
-           if (masked_op)
-               sfunc = sinusoidal_restrict_repeat_aa_masked;
-           else
-               sfunc = sinusoidal_restrict_repeat_aa;
-          }
-        else
-          {
-           if (masked_op)
-               sfunc = sinusoidal_restrict_repeat_masked;
-           else
-               sfunc = sinusoidal_restrict_repeat;
-          }
-       }
-      break;
-      case _EVAS_TEXTURE_PAD:
-       {
-        if (aa)
-           sfunc = sinusoidal_pad_aa;
-        else
-           sfunc = sinusoidal_pad;
-       }
-      break;
-      default:
-       sfunc = sinusoidal_reflect_aa;
-      break;
-     }
-   return sfunc;
-}
-
-#define SETUP_SINU_FILL \
-   a00 = gdata->sp * (axx / 65536.0f); \
-   a01 = gdata->sp * (axy / 65536.0f); \
-   a10 = ayx / 65536.0f; \
-   a11 = ayy / 65536.0f; \
-   xf = (a00 * x) + (a01 * y); \
-   yf = (a10 * x) + (a11 * y);
-
-static void
-sinusoidal_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       int  l = (yf - (sa * sin(xf))) + off;
-
-       if (l < 0)  l = -l;
-        if (l >= src_len)
-          {
-           int  m = (l % (2 * src_len));
-
-           l = (l % src_len);
-           if (m >= src_len)
-               l = src_len - l - 1;
-          }
-       *dst++ = src[l];  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       float  r = (yf - (sa * sin(xf))) + off;
-       int    l = r, a;
-
-       if (r < 0)  r = -r;
-       a = 1 + (int)(255 * (r - (int)r));
-
-       if (l < 0)  l = -l;
-       if (l >= src_len)
-         {
-           int  m = (l % (2 * src_len));
-
-           l = (l % src_len);
-           if (m >= src_len)
-               { l = src_len - l - 1;  a = 257 - a; }
-         }
-       *dst = src[l];
-       if (l + 1 < src_len)
-         *dst = INTERP_256(a, src[l + 1], *dst);
-
-       dst++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       int  l = (yf - (sa * sin(xf))) + off;
-
-       l = (l % src_len);
-       if (l < 0)
-           l += src_len;
-       *dst++ = src[l];  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       float  r = (yf - (sa * sin(xf))) + off;
-       int    l = r, a;
-
-       if (r < 0) r = -r;
-       a = 1 + (int)(255 * (r - (int)r));
-
-       l = l % src_len;
-       if (l < 0)
-         { l += src_len;  a = 257 - a; }
-
-       *dst = src[l];
-       if (l + 1 < src_len)
-          *dst = INTERP_256(a, src[l + 1], *dst);
-       if (l == (src_len - 1))
-          *dst = INTERP_256(a, src[0], *dst);
-       dst++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       int  l = (yf - (sa * sin(xf)));
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];
-         }
-       dst++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       float  r = (yf - (sa * sin(xf))) + off, s = r - off;
-       int    l = s;
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           int  a, lp = r;
-
-           if (r < 0)  r = -r;
-           a = 1 + (int)(255 * (r - (int)r));
-           if (lp < 0) lp = -lp;
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if ((l == 0) && (s < 0))
-             {
-               a = 256 + (255 * s);
-               *dst = MUL_256(a, *dst);
-             }
-           if (l == (src_len - 1))
-             {
-               a = 256 - (255 * (s - l));
-               *dst = MUL_256(a, *dst);
-             }
-         }
-       dst++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       int  l = (yf - (sa * sin(xf)));
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           if (l < 0) l = -l;
-           if (l >= src_len)
-             {
-               int  m = (l % (2 * src_len));
-
-               l = (l % src_len);
-               if (m >= src_len)
-                  l = src_len - l - 1;
-             }
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       float  r = (yf - (sa * sin(xf))) + off, s = r - off;
-       int    l = s;
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           int  a, lp = r;
-
-           if (r < 0)  r = -r;
-           a = 1 + (int)(255 * (r - (int)r));
-           if (lp < 0) lp = -lp;
-           if (lp >= src_len)
-             {
-               int  m = (lp % (2 * src_len));
-
-               lp = (lp % src_len);
-               if (m >= src_len)
-                 { lp = src_len - lp - 1;  a = 257 - a; }
-             }
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if ((l == 0) && (s < 0))
-               *mask = 255 + (255 * s);
-           if (l == (src_len - 1))
-               *mask = 255 - (255 * (s - l));
-         }
-       dst++;  mask++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       int  l = (yf - (sa * sin(xf)));
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];
-         }
-       dst++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       float  r = (yf - (sa * sin(xf))) + off, s = r - off;
-       int    l = s;
-
-       *dst = 0;
-       if ((unsigned)l < src_len)
-         {
-           int  a, lp = r;
-
-           if (r < 0)  r = -r;
-           a = 1 + (int)(255 * (r - (int)r));
-           lp = lp % src_len;
-           if (lp < 0)
-             { lp += src_len;  a = 257 - a; }
-           *dst = src[lp];
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == (src_len - 1))
-               *dst = INTERP_256(a, src[0], *dst);
-           if ((l == 0) && (s < 0))
-             {
-               a = 256 + (255 * s);
-               *dst = MUL_256(a, *dst);
-             }
-           if (l == (src_len - 1))
-             {
-               a = 256 - (255 * (s - l));
-               *dst = MUL_256(a, *dst);
-             }
-         }
-       dst++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       int  l = (yf - (sa * sin(xf)));
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           l += off;
-           l = l % src_len;
-           if (l < 0)
-               l += src_len;
-           *dst = src[l];  *mask = 255;
-         }
-       dst++;  mask++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
-                                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-   float  off = gdata->off * (src_len - 1);
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       float  r = (yf - (sa * sin(xf))) + off, s = r - off;
-       int    l = s;
-
-       *dst = 0;  *mask = 0;
-       if ((unsigned)l < src_len)
-         {
-           int  a, lp = r;
-
-           if (r < 0)  r = -r;
-           a = 1 + (int)(255 * (r - (int)r));
-           lp = lp % src_len;
-           if (lp < 0)
-             { lp += src_len;  a = 257 - a; }
-           *dst = src[lp];  *mask = 255;
-           if (lp + 1 < src_len)
-               *dst = INTERP_256(a, src[lp + 1], *dst);
-           if (lp == (src_len - 1))
-               *dst = INTERP_256(a, src[0], *dst);
-           if ((l == 0) && (s < 0))
-               *mask = 255 + (255 * s);
-           if (l == (src_len - 1))
-               *mask = 255 - (255 * (s - l));
-         }
-       dst++;  mask++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       int  l = (yf - (sa * sin(xf)));
-
-       if (l < 0)
-           l = 0;
-       if (l >= src_len)
-           l = src_len - 1;
-       *dst = src[l];
-       dst++;  xf += a00;  yf += a10;
-     }
-}
-
-static void
-sinusoidal_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask __UNUSED__, int dst_len,
-                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
-{
-   DATA32  *dst_end = dst + dst_len;
-   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
-   float  xf, yf, sa = gdata->sa;
-   float  a00, a01, a10, a11;
-
-   SETUP_SINU_FILL
-
-   while (dst < dst_end)
-     {
-       float  r = (yf - (sa * sin(xf)));
-       int    l = r;
-
-       *dst = 0;
-       if ((unsigned)l < (src_len - 1))
-         {
-           int  a;
-
-           if (r < 0) r = -r;
-           a = 1 + (int)(255 * (r - (int)r));
-           *dst = INTERP_256(a, src[l + 1], src[l]);
-         }
-       if (l < 0) *dst = src[0];
-       if (l >= src_len) *dst = src[src_len - 1];
-       dst++;  xf += a00;  yf += a10;
-     }
-}
index 1ff1e19..cf532a4 100644 (file)
@@ -1173,178 +1173,6 @@ evas_common_pipe_poly_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
    evas_common_pipe_draw_context_copy(dc, op);
 }
 
-/**************** GRAD ******************/
-static void
-evas_common_pipe_op_grad_free(RGBA_Pipe_Op *op)
-{
-#ifdef EVAS_FRAME_QUEUING
-   LKL(op->op.grad.grad->ref_fq_del);
-   op->op.grad.grad->ref_fq[1]++;
-   LKU(op->op.grad.grad->ref_fq_del);
-   pthread_cond_signal(&(op->op.grad.grad->cond_fq_del)); 
-#else
-   evas_common_gradient_free(op->op.grad.grad);
-#endif
-   evas_common_pipe_op_free(op);
-}
-
-#ifdef EVAS_FRAME_QUEUING
-EAPI void
-evas_common_pipe_op_grad_flush(RGBA_Gradient *gr)
-{
-   if (! evas_common_frameq_enabled())
-      return;
-
-   LKL(gr->ref_fq_add);
-   LKL(gr->ref_fq_del);
-
-   while (gr->ref_fq[0] != gr->ref_fq[1])
-      pthread_cond_wait(&(gr->cond_fq_del), &(gr->ref_fq_del));
-
-   LKU(gr->ref_fq_del);
-   LKU(gr->ref_fq_add);
-}
-#endif
-
-static void
-evas_common_pipe_grad_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
-{
-   if (info)
-     {
-        RGBA_Draw_Context context;
-
-        memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
-#ifdef EVAS_SLI
-        evas_common_draw_context_set_sli(&(context), info->y, info->h);
-#else
-        evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
-#endif
-        evas_common_gradient_draw(dst, &(context),
-                  op->op.grad.x, op->op.grad.y,
-                  op->op.grad.w, op->op.grad.h,
-                  op->op.grad.grad);
-     }
-   else
-     {
-        evas_common_gradient_draw(dst, &(op->context),
-                  op->op.grad.x, op->op.grad.y,
-                  op->op.grad.w, op->op.grad.h,
-                  op->op.grad.grad);
-     }
-}
-
-EAPI void
-evas_common_pipe_grad_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
-            int x, int y, int w, int h, RGBA_Gradient *gr)
-{
-   RGBA_Pipe_Op *op;
-
-   if (!gr) return;
-   dst->cache_entry.pipe = evas_common_pipe_add(dst->cache_entry.pipe, &op);
-   if (!dst->cache_entry.pipe) return;
-   op->op.grad.x = x;
-   op->op.grad.y = y;
-   op->op.grad.w = w;
-   op->op.grad.h = h;
-#ifdef EVAS_FRAME_QUEUING
-   LKL(gr->ref_fq_add);
-   gr->ref_fq[0]++;
-   LKU(gr->ref_fq_add);
-#else
-   gr->references++;
-#endif
-   op->op.grad.grad = gr;
-   op->op_func = evas_common_pipe_grad_draw_do;
-   op->free_func = evas_common_pipe_op_grad_free;
-   evas_common_pipe_draw_context_copy(dc, op);
-}
-
-/**************** GRAD2 ******************/
-static void
-evas_common_pipe_op_grad2_free(RGBA_Pipe_Op *op)
-{
-#ifdef EVAS_FRAME_QUEUING
-   LKL(op->op.grad2.grad->ref_fq_del);
-   op->op.grad2.grad->ref_fq[1]++;
-   LKU(op->op.grad2.grad->ref_fq_del);
-   pthread_cond_signal(&(op->op.grad2.grad->cond_fq_del)); 
-#else
-   evas_common_gradient2_free(op->op.grad2.grad);
-#endif
-   evas_common_pipe_op_free(op);
-}
-
-#ifdef EVAS_FRAME_QUEUING
-EAPI void
-evas_common_pipe_op_grad2_flush(RGBA_Gradient2 *gr)
-{
-   if (! evas_common_frameq_enabled())
-      return;
-
-   LKL(gr->ref_fq_add);
-   LKL(gr->ref_fq_del);
-
-   while (gr->ref_fq[0] != gr->ref_fq[1])
-      pthread_cond_wait(&(gr->cond_fq_del), &(gr->ref_fq_del));
-
-   LKU(gr->ref_fq_del);
-   LKU(gr->ref_fq_add);
-}
-#endif
-
-static void
-evas_common_pipe_grad2_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
-{
-   if (info)
-     {
-        RGBA_Draw_Context context;
-       
-        memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
-#ifdef EVAS_SLI
-        evas_common_draw_context_set_sli(&(context), info->y, info->h);
-#else  
-        evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
-#endif 
-        evas_common_gradient2_draw(dst, &(context),
-               op->op.grad2.x, op->op.grad2.y,
-               op->op.grad2.w, op->op.grad2.h,
-               op->op.grad2.grad);
-     }
-   else
-     {
-        evas_common_gradient2_draw(dst, &(op->context),
-               op->op.grad2.x, op->op.grad2.y,
-               op->op.grad2.w, op->op.grad2.h,
-               op->op.grad2.grad);
-     }
-}
-
-EAPI void
-evas_common_pipe_grad2_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
-            int x, int y, int w, int h, RGBA_Gradient2 *gr)
-{
-   RGBA_Pipe_Op *op;
-
-   if (!gr) return;
-   dst->cache_entry.pipe = evas_common_pipe_add(dst->cache_entry.pipe, &op);
-   if (!dst->cache_entry.pipe) return;
-   op->op.grad2.x = x;
-   op->op.grad2.y = y;
-   op->op.grad2.w = w;
-   op->op.grad2.h = h;
-#ifdef EVAS_FRAME_QUEUING
-   LKL(gr->ref_fq_add);
-   gr->ref_fq[0]++;
-   LKU(gr->ref_fq_add);
-#else
-   gr->references++;
-#endif
-   op->op.grad2.grad = gr;
-   op->op_func = evas_common_pipe_grad2_draw_do;
-   op->free_func = evas_common_pipe_op_grad2_free;
-   evas_common_pipe_draw_context_copy(dc, op);
-}
-
 /**************** TEXT ******************/
 static void
 evas_common_pipe_op_text_free(RGBA_Pipe_Op *op)
index 371d3de..c10b55d 100644 (file)
@@ -87,8 +87,6 @@ EAPI void evas_common_pipe_free(RGBA_Image *im);
 EAPI void evas_common_pipe_rectangle_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h);
 EAPI void evas_common_pipe_line_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1);
 EAPI void evas_common_pipe_poly_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points, int x, int y);
-EAPI void evas_common_pipe_grad_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h, RGBA_Gradient *gr);
-EAPI void evas_common_pipe_grad2_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h, RGBA_Gradient2 *gr);
 EAPI void evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props);
 EAPI void evas_common_pipe_image_load(RGBA_Image *im);
 EAPI void evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int smooth, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
@@ -98,8 +96,6 @@ EAPI void evas_common_pipe_map4_draw(RGBA_Image *src, RGBA_Image *dst,
 EAPI void evas_common_pipe_flush(RGBA_Image *im);
 
 #ifdef EVAS_FRAME_QUEUING
-EAPI void evas_common_pipe_op_grad_flush(RGBA_Gradient *gr);
-EAPI void evas_common_pipe_op_grad2_flush(RGBA_Gradient2 *gr);
 EAPI void evas_common_pipe_op_text_flush(RGBA_Font *fn);
 EAPI void evas_common_pipe_op_image_flush(RGBA_Image *im);
 #endif
index aad5161..cdc5e96 100644 (file)
@@ -23,7 +23,6 @@ typedef struct _Evas_Cairo_Context                   Evas_Cairo_Context;
 typedef struct _Evas_Cairo_Image                     Evas_Cairo_Image;
 typedef struct _Evas_Cairo_Polygon                   Evas_Cairo_Polygon;
 typedef struct _Evas_Cairo_Polygon_Point             Evas_Cairo_Polygon_Point;
-typedef struct _Evas_Cairo_Gradient                  Evas_Cairo_Gradient;
 
 struct _Evas_Cairo_Context
 {
@@ -114,11 +113,6 @@ struct _Evas_Cairo_Polygon_Point
 {
    int x, y;
 };
-
-struct _Evas_Cairo_Gradient
-{
-   RGBA_Gradient   *grad;
-};
 #endif
 
 /*
@@ -150,16 +144,12 @@ void              evas_gl_common_image_dirty(Evas_GL_Image *im);
 Evas_GL_Polygon  *evas_gl_common_poly_point_add(Evas_GL_Polygon *poly, int x, int y);
 Evas_GL_Polygon  *evas_gl_common_poly_points_clear(Evas_GL_Polygon *poly);
 
-Evas_GL_Gradient *evas_gl_common_gradient_color_add(Evas_GL_Gradient *gr, int r, int g, int b, int a, int distance);
-Evas_GL_Gradient *evas_gl_common_gradient_colors_clear(Evas_GL_Gradient *gr);
-
 void              evas_gl_common_swap_rect(Evas_GL_Context *gc, int x, int y, int w, int h);
 
 void              evas_gl_common_rect_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, int x, int y, int w, int h);
 void              evas_gl_common_image_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth);
 void              evas_gl_common_line_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, int x1, int y1, int x2, int y2);
 void              evas_gl_common_poly_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, Evas_GL_Polygon *poly);
-void              evas_gl_common_gradient_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, Evas_GL_Gradient *gr, int x, int y, int w, int h, double angle);
 
 Evas_GL_Font_Texture *evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg);
 void                  evas_gl_font_texture_free(Evas_GL_Font_Texture *ft);
index 8c2835d..b6fd5c1 100644 (file)
@@ -379,13 +379,6 @@ typedef struct _RGBA_Pipe_Thread_Info RGBA_Pipe_Thread_Info;
 typedef struct _RGBA_Image            RGBA_Image;
 typedef struct _RGBA_Image_Span       RGBA_Image_Span;
 typedef struct _RGBA_Draw_Context     RGBA_Draw_Context;
-typedef struct _RGBA_Gradient         RGBA_Gradient;
-typedef struct _RGBA_Gradient_Color_Stop   RGBA_Gradient_Color_Stop;
-typedef struct _RGBA_Gradient_Alpha_Stop   RGBA_Gradient_Alpha_Stop;
-typedef struct _RGBA_Gradient_Type    RGBA_Gradient_Type;
-typedef struct _RGBA_Gradient2         RGBA_Gradient2;
-typedef struct _RGBA_Gradient2_Type    RGBA_Gradient2_Type;
-typedef struct _RGBA_Gradient2_Color_Np_Stop   RGBA_Gradient2_Color_Np_Stop;
 typedef struct _RGBA_Polygon_Point    RGBA_Polygon_Point;
 typedef struct _RGBA_Map_Point        RGBA_Map_Point;
 typedef struct _RGBA_Font             RGBA_Font;
@@ -427,16 +420,6 @@ typedef void (*Gfx_Func_Copy)    (DATA32 *src, DATA32 *dst, int len);
 
 typedef void (*Gfx_Func_Convert) (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
 
-typedef void (*Gfx_Func_Gradient_Fill)(DATA32 *src, int src_len,
-                                         DATA32 *dst, DATA8 *mask, int len,
-                                         int x, int y, int axx, int axy, int ayx, int ayy,
-                                         void *geom_data);
-
-typedef void (*Gfx_Func_Gradient2_Fill)(DATA32 *src, int src_len,
-                                         DATA32 *dst, DATA8 *mask, int len,
-                                         int x, int y,
-                                         void *geom_data);
-
 #include "../cache/evas_cache.h"
 
 /*****************************************************************************/
@@ -689,14 +672,6 @@ struct _RGBA_Pipe_Op
         RGBA_Polygon_Point *points;
       } poly;
       struct {
-        RGBA_Gradient      *grad;
-        int                 x, y, w, h;
-      } grad;
-      struct {
-        RGBA_Gradient2      *grad;
-        int                 x, y, w, h;
-      } grad2;
-      struct {
         RGBA_Font          *font;
         int                 x, y;
         Eina_Unicode       *text;
@@ -776,150 +751,6 @@ struct _RGBA_Image
    } cache;
 };
 
-struct _RGBA_Gradient_Color_Stop
-{
-   EINA_INLIST;
-   int               r, g, b, a;
-   int               dist;
-};
-
-struct _RGBA_Gradient_Alpha_Stop
-{
-   EINA_INLIST;
-   int               a;
-   int               dist;
-};
-
-struct _RGBA_Gradient
-{
-   struct
-     {
-       DATA32        *data;
-       int            len;
-       float          angle;
-       int            direction;
-       float          offset;
-       Eina_Bool      has_alpha : 1;
-     } map;
-
-   struct {
-       Eina_Inlist *stops;
-       DATA32           *data;
-       int               nstops;
-       int               len;
-   }  color;
-   struct {
-       Eina_Inlist *stops;
-       DATA8            *data;
-       int               nstops;
-       int               len;
-   }  alpha;
-
-   struct
-     {
-       int            x, y, w, h;
-       int            spread;
-       float          angle;
-     } fill;
-   struct
-     {
-       char          *name;
-       char          *params;
-       RGBA_Gradient_Type *geometer;
-       void          *gdata;
-     } type;
-
-   int references;
-#ifdef EVAS_FRAME_QUEUING
-   LK(ref_fq_add);
-   LK(ref_fq_del);
-   pthread_cond_t cond_fq_del;
-   int ref_fq[2];      //ref_fq[0] is for addition,
-                         //ref_fq[1] is for deletion
-#endif
-
-   Eina_Bool imported_data : 1;
-   Eina_Bool has_alpha : 1;
-};
-
-struct _RGBA_Gradient_Type
-{
-   const char              *name;
-   void                    (*init)(void);
-   void                    (*shutdown)(void);
-   void                    (*geom_init)(RGBA_Gradient *gr);
-   void                    (*geom_set)(RGBA_Gradient *gr);
-   void                    (*geom_free)(void *gdata);
-   int                     (*has_alpha)(RGBA_Gradient *gr, int render_op);
-   int                     (*has_mask)(RGBA_Gradient *gr, int render_op);
-   int                     (*get_map_len)(RGBA_Gradient *gr);
-   Gfx_Func_Gradient_Fill  (*get_fill_func)(RGBA_Gradient *gr, int render_op, unsigned char aa);
-};
-
-struct _RGBA_Gradient2_Color_Np_Stop
-{
-   EINA_INLIST;
-   int               r, g, b, a;
-   float             pos;
-   int               dist;
-};
-
-struct _RGBA_Gradient2
-{
-   struct
-     {
-       DATA32        *data;
-       int            len;
-       Eina_Bool      has_alpha : 1;
-     } map;
-
-   struct {
-       Eina_Inlist *stops;
-       int               nstops;
-       DATA32           *cdata;
-       DATA8            *adata;
-       int               len;
-   }  stops;
-
-   struct
-     {
-       Evas_Common_Transform  transform;
-       int                    spread;
-     } fill;
-   struct
-     {
-        int                 id;
-       RGBA_Gradient2_Type *geometer;
-       void                *gdata;
-     } type;
-
-   int references;
-#ifdef EVAS_FRAME_QUEUING
-   LK(ref_fq_add);
-   LK(ref_fq_del);
-   pthread_cond_t cond_fq_del;
-   int ref_fq[2];      //ref_fq[0] is for addition,
-                         //ref_fq[1] is for deletion
-#endif
-
-   Eina_Bool has_alpha : 1;
-};
-
-struct _RGBA_Gradient2_Type
-{
-   const char              *name;
-   void                    (*init)(void);
-   void                    (*shutdown)(void);
-   void                    (*geom_init)(RGBA_Gradient2 *gr);
-   void                    (*geom_update)(RGBA_Gradient2 *gr);
-   void                    (*geom_free)(void *gdata);
-   int                     (*has_alpha)(RGBA_Gradient2 *gr, int render_op);
-   int                     (*has_mask)(RGBA_Gradient2 *gr, int render_op);
-   int                     (*get_map_len)(RGBA_Gradient2 *gr);
-   Gfx_Func_Gradient2_Fill  (*get_fill_func)(RGBA_Gradient2 *gr, int render_op);
-};
-
-
 struct _RGBA_Polygon_Point
 {
    EINA_INLIST;
@@ -1283,7 +1114,6 @@ EAPI void     evas_common_blit_init               (void);
 EAPI void     evas_common_blit_rectangle          (const RGBA_Image *src, RGBA_Image *dst, int src_x, int src_y, int w, int h, int dst_x, int dst_y);
 
 /****/
-#include "../engines/common/evas_gradient.h"
 #include "../engines/common/evas_font.h"
 
 /****/
index 64bcd06..99540a6 100644 (file)
@@ -57,15 +57,12 @@ typedef struct _Evas_Post_Callback          Evas_Post_Callback;
 #define MAGIC_OBJ                  0x71777770
 #define MAGIC_OBJ_RECTANGLE        0x71777771
 #define MAGIC_OBJ_LINE             0x71777772
-#define MAGIC_OBJ_GRADIENT         0x71777773
 #define MAGIC_OBJ_POLYGON          0x71777774
 #define MAGIC_OBJ_IMAGE            0x71777775
 #define MAGIC_OBJ_TEXT             0x71777776
 #define MAGIC_OBJ_SMART            0x71777777
 #define MAGIC_OBJ_TEXTBLOCK        0x71777778
 #define MAGIC_SMART                0x72777770
-#define MAGIC_OBJ_GRADIENT_LINEAR  0x72777771
-#define MAGIC_OBJ_GRADIENT_RADIAL  0x72777772
 #define MAGIC_OBJ_SHAPE            0x72777773
 #define MAGIC_OBJ_CONTAINER        0x72777774
 #define MAGIC_OBJ_CUSTOM           0x72777775
@@ -624,49 +621,6 @@ struct _Evas_Func
    void *(*polygon_points_clear)           (void *data, void *context, void *polygon);
    void (*polygon_draw)                    (void *data, void *context, void *surface, void *polygon, int x, int y);
 
-   void (*gradient2_color_np_stop_insert)   (void *data, void *gradient, int r, int g, int b, int a, float pos);
-   void (*gradient2_clear)                  (void *data, void *gradient);
-   void (*gradient2_fill_transform_set)     (void *data, void *gradient, void *transform);
-   void (*gradient2_fill_spread_set)        (void *data, void *gradient, int spread);
-
-   void *(*gradient2_linear_new)                   (void *data);
-   void (*gradient2_linear_free)                   (void *data, void *linear_gradient);
-   void (*gradient2_linear_fill_set)               (void *data, void *linear_gradient, float x0, float y0, float x1, float y1);
-   int  (*gradient2_linear_is_opaque)              (void *data, void *context, void *linear_gradient, int x, int y, int w, int h);
-   int  (*gradient2_linear_is_visible)             (void *data, void *context, void *linear_gradient, int x, int y, int w, int h);
-   void (*gradient2_linear_render_pre)             (void *data, void *context, void *linear_gradient);
-   void (*gradient2_linear_render_post)            (void *data, void *linear_gradient);
-   void (*gradient2_linear_draw)                   (void *data, void *context, void *surface, void *linear_gradient, int x, int y, int w, int h);
-
-   void *(*gradient2_radial_new)                   (void *data);
-   void (*gradient2_radial_free)                   (void *data, void *radial_gradient);
-   void (*gradient2_radial_fill_set)               (void *data, void *radial_gradient, float cx, float cy, float rx, float ry);
-   int  (*gradient2_radial_is_opaque)              (void *data, void *context, void *radial_gradient, int x, int y, int w, int h);
-   int  (*gradient2_radial_is_visible)             (void *data, void *context, void *radial_gradient, int x, int y, int w, int h);
-   void (*gradient2_radial_render_pre)             (void *data, void *context, void *radial_gradient);
-   void (*gradient2_radial_render_post)            (void *data, void *radial_gradient);
-   void (*gradient2_radial_draw)                   (void *data, void *context, void *surface, void *radial_gradient, int x, int y, int w, int h);
-
-   void *(*gradient_new)                   (void *data);
-   void (*gradient_free)                   (void *data, void *gradient);
-   void (*gradient_color_stop_add)         (void *data, void *gradient, int r, int g, int b, int a, int delta);
-   void (*gradient_alpha_stop_add)         (void *data, void *gradient, int a, int delta);
-   void (*gradient_color_data_set)         (void *data, void *gradient, void *map, int len, int alpha_flag);
-   void (*gradient_alpha_data_set)         (void *data, void *gradient, void *alpha_map, int len);
-   void (*gradient_clear)                  (void *data, void *gradient);
-   void (*gradient_fill_set)               (void *data, void *gradient, int x, int y, int w, int h);
-   void (*gradient_fill_angle_set)         (void *data, void *gradient, double fill_angle);
-   void (*gradient_fill_spread_set)        (void *data, void *gradient, int spread);
-   void (*gradient_angle_set)              (void *data, void *gradient, double angle);
-   void (*gradient_offset_set)             (void *data, void *gradient, float offset);
-   void (*gradient_direction_set)          (void *data, void *gradient, int direction);
-   void (*gradient_type_set)               (void *data, void *gradient, char *name, char *params);
-   int  (*gradient_is_opaque)              (void *data, void *context, void *gradient, int x, int y, int w, int h);
-   int  (*gradient_is_visible)             (void *data, void *context, void *gradient, int x, int y, int w, int h);
-   void (*gradient_render_pre)             (void *data, void *context, void *gradient);
-   void (*gradient_render_post)            (void *data, void *gradient);
-   void (*gradient_draw)                   (void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h);
-
    void *(*image_load)                     (void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo);
    void *(*image_new_from_data)            (void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
    void *(*image_new_from_copied_data)     (void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
index f2f369b..7e3383d 100644 (file)
@@ -186,9 +186,6 @@ evas_debug_magic_string_get(DATA32 magic)
       case MAGIC_OBJ_LINE:
        return "Evas_Object (Line)";
        break;
-      case MAGIC_OBJ_GRADIENT:
-       return "Evas_Object (Gradient)";
-       break;
       case MAGIC_OBJ_POLYGON:
        return "Evas_Object (Polygon)";
        break;
index 0add001..ec10c25 100644 (file)
@@ -74,7 +74,6 @@ _output_setup(int w,
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
index 08fbd81..3040473 100644 (file)
@@ -51,26 +51,6 @@ static void *eng_polygon_point_add(void *data, void *context, void *polygon, int
 static void *eng_polygon_points_clear(void *data, void *context, void *polygon);
 static void eng_polygon_draw(void *data, void *context, void *surface, void *polygon, int x, int y);
 
-static void *eng_gradient_new(void *data);
-static void eng_gradient_free(void *data, void *gradient);
-static void eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta);
-static void eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta);
-static void eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha);
-static void eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len);
-static void eng_gradient_clear(void *data, void *gradient);
-static void eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h);
-static void eng_gradient_fill_angle_set(void *data, void *gradient, double angle);
-static void eng_gradient_fill_spread_set(void *data, void *gradient, int spread);
-static void eng_gradient_angle_set(void *data, void *gradient, double angle);
-static void eng_gradient_offset_set(void *data, void *gradient, float offset);
-static void eng_gradient_direction_set(void *data, void *gradient, int direction);
-static void eng_gradient_type_set(void *data, void *gradient, char *name, char *params);
-static int eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h);
-static int eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h);
-static void eng_gradient_render_pre(void *data, void *context, void *gradient);
-static void eng_gradient_render_post(void *data, void *gradient);
-static void eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h);
-
 static void *eng_image_load(void *data, char *file, char *key, int *error, Evas_Image_Load_Opts *lo);
 static void *eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
 static void *eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
@@ -174,26 +154,6 @@ static Evas_Func eng_func =
      eng_polygon_point_add,
      eng_polygon_points_clear,
      eng_polygon_draw,
-     /* gradient draw funcs */
-     eng_gradient_new,
-     eng_gradient_free,
-     eng_gradient_color_stop_add,
-     eng_gradient_alpha_stop_add,
-     eng_gradient_color_data_set,
-     eng_gradient_alpha_data_set,
-     eng_gradient_clear,
-     eng_gradient_fill_set,
-     eng_gradient_fill_angle_set,
-     eng_gradient_fill_spread_set,
-     eng_gradient_angle_set,
-     eng_gradient_offset_set,
-     eng_gradient_direction_set,
-     eng_gradient_type_set,
-     eng_gradient_is_opaque,
-     eng_gradient_is_visible,
-     eng_gradient_render_pre,
-     eng_gradient_render_post,
-     eng_gradient_draw,
      /* image draw funcs */
      eng_image_load,
      eng_image_new_from_data,
@@ -328,7 +288,6 @@ eng_output_setup(int w, int h, Display *disp, Drawable draw, Visual *vis, Colorm
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
@@ -798,117 +757,6 @@ eng_polygon_draw(void *data, void *context, void *surface, void *polygon, int x,
 }
 
 static void *
-eng_gradient_new(void *data)
-{
-   return evas_common_gradient_new();
-}
-
-static void
-eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
-{
-   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
-{
-   evas_common_gradient_alpha_stop_add(gradient, a, delta);
-}
-
-static void
-eng_gradient_clear(void *data, void *gradient)
-{
-   evas_common_gradient_clear(gradient);
-}
-
-static void
-eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
-{
-   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
-}
-
-static void
-eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
-{
-   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
-}
-
-static void
-eng_gradient_free(void *data, void *gradient)
-{
-   evas_common_gradient_free(gradient);
-}
-
-static void
-eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
-{
-   evas_common_gradient_fill_set(gradient, x, y, w, h);
-}
-
-static void
-eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
-{
-   evas_common_gradient_fill_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
-{
-   evas_common_gradient_fill_spread_set(gradient, spread);
-}
-
-static void
-eng_gradient_angle_set(void *data, void *gradient, double angle)
-{
-   evas_common_gradient_map_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_offset_set(void *data, void *gradient, float offset)
-{
-   evas_common_gradient_map_offset_set(gradient, offset);
-}
-
-static void
-eng_gradient_direction_set(void *data, void *gradient, int direction)
-{
-   evas_common_gradient_map_direction_set(gradient, direction);
-}
-
-static void
-eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
-{
-   evas_common_gradient_type_set(gradient, name, params);
-}
-
-static int
-eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   return 0;
-}
-
-static int
-eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   return 0;
-}
-
-static void
-eng_gradient_render_pre(void *data, void *context, void *gradient)
-{
-}
-
-static void
-eng_gradient_render_post(void *data, void *gradient)
-{
-}
-
-static void
-eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
-{
-}
-
-static void *
 eng_image_load(void *data, char *file, char *key, int *error, Evas_Image_Load_Opts *lo)
 {
    Render_Engine *re;
index 201a275..6d6912d 100644 (file)
@@ -51,7 +51,6 @@ _output_setup(int width, int height, int rotation, HWND window, int depth, int f
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
@@ -415,119 +414,6 @@ eng_font_free(void *data, void *font)
    evas_direct3d_font_free(re->d3d, font);
 }
 
-
-
-//////////////////////////////////////////////////////////////////////////////
-// Gradients
-//
-
-static void
-eng_gradient2_color_np_stop_insert(void *data, void *gradient, int r, int g, int b, int a, float pos)
-{
-}
-
-static void
-eng_gradient2_clear(void *data, void *gradient)
-{
-}
-
-static void
-eng_gradient2_fill_transform_set(void *data, void *gradient, void *transform)
-{
-}
-
-static void
-eng_gradient2_fill_spread_set(void *data, void *gradient, int spread)
-{
-}
-
-static void *
-eng_gradient2_linear_new(void *data)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_linear_free(void *data, void *linear_gradient)
-{
-}
-
-static void
-eng_gradient2_linear_fill_set(void *data, void *linear_gradient, int x0, int y0, int x1, int y1)
-{
-}
-
-static int
-eng_gradient2_linear_is_opaque(void *data, void *context, void *linear_gradient, int x, int y, int w, int h)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_linear_is_visible(void *data, void *context, void *linear_gradient, int x, int y, int w, int h)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_linear_render_pre(void *data, void *context, void *linear_gradient)
-{
-}
-
-static void
-eng_gradient2_linear_render_post(void *data, void *linear_gradient)
-{
-}
-
-static void
-eng_gradient2_linear_draw(void *data, void *context, void *surface, void *linear_gradient, int x, int y, int w, int h)
-{
-}
-
-static void *
-eng_gradient2_radial_new(void *data)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_radial_free(void *data, void *radial_gradient)
-{
-}
-
-static void
-eng_gradient2_radial_fill_set(void *data, void *radial_gradient, float cx, float cy, float rx, float ry)
-{
-}
-
-static int
-eng_gradient2_radial_is_opaque(void *data, void *context, void *radial_gradient, int x, int y, int w, int h)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_radial_is_visible(void *data, void *context, void *radial_gradient, int x, int y, int w, int h)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_radial_render_pre(void *data, void *context, void *radial_gradient)
-{
-}
-
-static void
-eng_gradient2_radial_render_post(void *data, void *radial_gradient)
-{
-}
-
-static void
-eng_gradient2_radial_draw(void *data, void *context, void *surface, void *radial_gradient, int x, int y, int w, int h)
-{
-}
-
-
 /* module advertising code */
 static int
 module_open(Evas_Module *em)
@@ -586,28 +472,6 @@ module_open(Evas_Module *em)
 //   ORD(image_map_surface_new);
 //   ORD(image_map_surface_free);
 
-/*
-   ORD(gradient2_color_np_stop_insert);
-   ORD(gradient2_clear);
-   ORD(gradient2_fill_transform_set);
-   ORD(gradient2_fill_spread_set);
-   ORD(gradient2_linear_new);
-   ORD(gradient2_linear_free);
-   ORD(gradient2_linear_fill_set);
-   ORD(gradient2_linear_is_opaque);
-   ORD(gradient2_linear_is_visible);
-   ORD(gradient2_linear_render_pre);
-   ORD(gradient2_linear_render_post);
-   ORD(gradient2_linear_draw);
-   ORD(gradient2_radial_new);
-   ORD(gradient2_radial_free);
-   ORD(gradient2_radial_fill_set);
-   ORD(gradient2_radial_is_opaque);
-   ORD(gradient2_radial_is_visible);
-   ORD(gradient2_radial_render_pre);
-   ORD(gradient2_radial_render_post);
-   ORD(gradient2_radial_draw);
-*/
    /* now advertise out own api */
    em->functions = (void *)(&func);
    return 1;
index ce5c0c4..6c5a2c8 100644 (file)
@@ -738,7 +738,6 @@ _evas_common_init(void)
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
@@ -1168,29 +1167,6 @@ evas_engine_dfb_polygon_draw(void *data, void *context, void *surface, void *pol
 }
 #endif
 
-static void
-evas_engine_dfb_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
-{
-   DirectFB_Engine_Image_Entry *eim = surface;
-   IDirectFBSurface *screen;
-   Render_Engine *re = data;
-   RGBA_Image *dst, *src;
-
-   dst = (RGBA_Image *)eim->cache_entry.src;
-   screen = eim->surface;
-   if (!_dfb_lock_and_sync_image(screen, dst, DSLF_READ | DSLF_WRITE))
-     return;
-
-   evas_common_gradient_draw(dst, context, x, y, w, h, gradient);
-   evas_common_cpu_end_opt();
-
-   dst->image.data = NULL;
-
-   screen->Unlock(screen);
-
-   return;
-}
-
 /** Image Object *******************************************************/
 static void *
 evas_engine_dfb_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
@@ -1742,7 +1718,6 @@ module_open(Evas_Module *em)
    ORD(line_draw);
    ORD(rectangle_draw);
    ORD(polygon_draw);
-   ORD(gradient_draw);
    ORD(image_scale_hint_set);
    ORD(image_scale_hint_get);
 
index a0b5e3d..28821ce 100644 (file)
@@ -54,7 +54,6 @@ _output_setup(int w, int h, int rot, int vt, int dev, int refresh)
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
index adf1878..1b77a18 100644 (file)
@@ -111,9 +111,6 @@ typedef struct _Evas_GL_Image                        Evas_GL_Image;
 typedef struct _Evas_GL_Font_Texture                 Evas_GL_Font_Texture;
 typedef struct _Evas_GL_Polygon                      Evas_GL_Polygon;
 typedef struct _Evas_GL_Polygon_Point                Evas_GL_Polygon_Point;
-/*
-typedef struct _Evas_GL_Gradient                     Evas_GL_Gradient;
-*/
 
 struct _Evas_GL_Program
 {
@@ -331,16 +328,6 @@ struct _Evas_GL_Polygon_Point
    int x, y;
 };
 
-/*
-struct _Evas_GL_Gradient
-{
-   RGBA_Gradient   *grad;
-   Evas_GL_Texture *tex;
-   int              tw, th;
-   unsigned char    changed : 1;
-};
-*/
-
 extern Evas_GL_Program_Source shader_rect_frag_src;
 extern Evas_GL_Program_Source shader_rect_vert_src;
 extern Evas_GL_Program_Source shader_font_frag_src;
index def9a84..8d21d4d 100644 (file)
@@ -66,7 +66,6 @@ eng_setup(Evas *e, void *in)
        evas_common_convert_init();
        evas_common_scale_init();
        evas_common_rectangle_init();
-       evas_common_gradient_init();
        evas_common_polygon_init();
        evas_common_line_init();
        evas_common_font_init();
@@ -336,244 +335,6 @@ eng_polygon_draw(void *data, void *context, void *surface, void *polygon, int x,
 //--//   evas_gl_common_poly_draw(re->window->gl_context, polygon, x, y);
 }
 
-static void
-eng_gradient2_color_np_stop_insert(void *data __UNUSED__, void *gradient __UNUSED__, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__, float pos __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_clear(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_fill_transform_set(void *data __UNUSED__, void *gradient __UNUSED__, void *transform __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_fill_spread_set
-(void *data __UNUSED__, void *gradient __UNUSED__, int spread __UNUSED__)
-{
-}
-
-static void *
-eng_gradient2_linear_new(void *data __UNUSED__)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_linear_free(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_fill_set(void *data __UNUSED__, void *linear_gradient __UNUSED__, int x0 __UNUSED__, int y0 __UNUSED__, int x1 __UNUSED__, int y1 __UNUSED__)
-{
-}
-
-static int
-eng_gradient2_linear_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_linear_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_linear_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_render_post(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-}
-
-static void *
-eng_gradient2_radial_new(void *data __UNUSED__)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_radial_free(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_fill_set(void *data __UNUSED__, void *radial_gradient __UNUSED__, float cx __UNUSED__, float cy __UNUSED__, float rx __UNUSED__, float ry __UNUSED__)
-{
-}
-
-static int
-eng_gradient2_radial_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_radial_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_radial_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_render_post(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-}
-
-static void *
-eng_gradient_new(void *data __UNUSED__)
-{
-//--//      return evas_gl_common_gradient_new();
-   return NULL;
-}
-
-static void
-eng_gradient_color_stop_add(void *data __UNUSED__, void *gradient, int r, int g, int b, int a, int delta)
-{
-//--//      evas_gl_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data __UNUSED__, void *gradient, int a, int delta)
-{
-//--//      evas_gl_common_gradient_alpha_stop_add(gradient, a, delta);
-}
-
-static void
-eng_gradient_clear(void *data __UNUSED__, void *gradient)
-{
-//--//      evas_gl_common_gradient_clear(gradient);
-}
-
-static void
-eng_gradient_color_data_set(void *data __UNUSED__, void *gradient, void *map, int len, int has_alpha)
-{
-//--//      evas_gl_common_gradient_color_data_set(gradient, map, len, has_alpha);
-}
-
-static void
-eng_gradient_alpha_data_set(void *data __UNUSED__, void *gradient, void *alpha_map, int len)
-{
-//--//      evas_gl_common_gradient_alpha_data_set(gradient, alpha_map, len);
-}
-
-static void
-eng_gradient_free(void *data __UNUSED__, void *gradient)
-{
-//--//      evas_gl_common_gradient_free(gradient);
-}
-
-static void
-eng_gradient_fill_set(void *data __UNUSED__, void *gradient, int x, int y, int w, int h)
-{
-//--//      evas_gl_common_gradient_fill_set(gradient, x, y, w, h);
-}
-
-static void
-eng_gradient_fill_angle_set(void *data __UNUSED__, void *gradient, double angle)
-{
-//--//      evas_gl_common_gradient_fill_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_fill_spread_set(void *data __UNUSED__, void *gradient, int spread)
-{
-//--//      evas_gl_common_gradient_fill_spread_set(gradient, spread);
-}
-
-static void
-eng_gradient_angle_set(void *data __UNUSED__, void *gradient, double angle)
-{
-//--//      evas_gl_common_gradient_map_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_offset_set(void *data __UNUSED__, void *gradient, float offset)
-{
-//--//      evas_gl_common_gradient_map_offset_set(gradient, offset);
-}
-
-static void
-eng_gradient_direction_set(void *data __UNUSED__, void *gradient, int direction)
-{
-//--//      evas_gl_common_gradient_map_direction_set(gradient, direction);
-}
-
-static void
-eng_gradient_type_set(void *data __UNUSED__, void *gradient, char *name, char *params)
-{
-//--//      evas_gl_common_gradient_type_set(gradient, name, params);
-}
-
-static int
-eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->window->gl_context->dc = context;
-//--//      return evas_gl_common_gradient_is_opaque(re->window->gl_context, gradient, x, y, w, h);
-   return 0;
-}
-
-static int
-eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->window->gl_context->dc = context;
-//--//      return evas_gl_common_gradient_is_visible(re->window->gl_context, gradient, x, y, w, h);
-   return 0;
-}
-
-static void
-eng_gradient_render_pre(void *data, void *context, void *gradient)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->window->gl_context->dc = context;
-//--//      evas_gl_common_gradient_render_pre(re->window->gl_context, gradient);
-}
-
-static void
-eng_gradient_render_post(void *data __UNUSED__, void *gradient)
-{
-//--//      evas_gl_common_gradient_render_post(gradient);
-}
-
-static void
-eng_gradient_draw(void *data, void *context, void *surface __UNUSED__, void *gradient, int x, int y, int w, int h)
-{
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-   eng_window_use(re->window);
-   re->window->gl_context->dc = context;
-//--//      evas_gl_common_gradient_draw(re->window->gl_context, gradient, x, y, w, h);
-}
-
 static int
 eng_image_alpha_get(void *data, void *image)
 {
@@ -1062,47 +823,6 @@ module_open(Evas_Module *em)
    ORD(polygon_points_clear);
    ORD(polygon_draw);
 
-   ORD(gradient2_color_np_stop_insert);
-   ORD(gradient2_clear);
-   ORD(gradient2_fill_transform_set);
-   ORD(gradient2_fill_spread_set);
-   ORD(gradient2_linear_new);
-   ORD(gradient2_linear_free);
-   ORD(gradient2_linear_fill_set);
-   ORD(gradient2_linear_is_opaque);
-   ORD(gradient2_linear_is_visible);
-   ORD(gradient2_linear_render_pre);
-   ORD(gradient2_linear_render_post);
-   ORD(gradient2_linear_draw);
-   ORD(gradient2_radial_new);
-   ORD(gradient2_radial_free);
-   ORD(gradient2_radial_fill_set);
-   ORD(gradient2_radial_is_opaque);
-   ORD(gradient2_radial_is_visible);
-   ORD(gradient2_radial_render_pre);
-   ORD(gradient2_radial_render_post);
-   ORD(gradient2_radial_draw);
-
-   ORD(gradient_new);
-   ORD(gradient_free);
-   ORD(gradient_color_stop_add);
-   ORD(gradient_alpha_stop_add);
-   ORD(gradient_color_data_set);
-   ORD(gradient_alpha_data_set);
-   ORD(gradient_clear);
-   ORD(gradient_fill_set);
-   ORD(gradient_fill_angle_set);
-   ORD(gradient_fill_spread_set);
-   ORD(gradient_angle_set);
-   ORD(gradient_offset_set);
-   ORD(gradient_direction_set);
-   ORD(gradient_type_set);
-   ORD(gradient_is_opaque);
-   ORD(gradient_is_visible);
-   ORD(gradient_render_pre);
-   ORD(gradient_render_post);
-   ORD(gradient_draw);
-
    ORD(image_load);
    ORD(image_new_from_data);
    ORD(image_new_from_copied_data);
index fc0b1ff..6942e89 100644 (file)
@@ -341,363 +341,6 @@ eng_polygon_draw(void *data, void *context, void *surface, void *polygon, int x,
    evas_gl_common_poly_draw(re->gl_context, polygon, x, y);
 }
 
-static void
-eng_gradient2_color_np_stop_insert(void *data __UNUSED__, void *gradient __UNUSED__, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__, float pos __UNUSED__)
-{
-   evas_common_gradient2_color_np_stop_insert(gradient, r, g, b, a, pos);
-}
-
-static void
-eng_gradient2_clear(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-   evas_common_gradient2_clear(gradient);
-}
-
-static void
-eng_gradient2_fill_transform_set(void *data __UNUSED__, void *gradient __UNUSED__, void *transform __UNUSED__)
-{
-   evas_common_gradient2_fill_transform_set(gradient, transform);
-}
-
-static void
-eng_gradient2_fill_spread_set(void *data __UNUSED__, void *gradient __UNUSED__, int spread __UNUSED__)
-{
-   evas_common_gradient2_fill_spread_set(gradient, spread);
-}
-
-static void *
-eng_gradient2_linear_new(void *data __UNUSED__)
-{
-   return evas_common_gradient2_linear_new();
-}
-
-static void
-eng_gradient2_linear_free(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-   evas_common_gradient2_free(linear_gradient);
-}
-
-static void
-eng_gradient2_linear_fill_set(void *data __UNUSED__, void *linear_gradient __UNUSED__, float x0 __UNUSED__, float y0 __UNUSED__, float x1 __UNUSED__, float y1 __UNUSED__)
-{
-   evas_common_gradient2_linear_fill_set(linear_gradient, x0, y0, x1, y1);
-}
-
-static int
-eng_gradient2_linear_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)linear_gradient;
-
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-            gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient2_linear_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-
-   if (!dc || !linear_gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient2_linear_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)linear_gradient;
-   int  len;
-   
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_update(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient2_map(dc, gr, len);
-}
-
-static void
-eng_gradient2_linear_render_post(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-   re->gl_context->dc = context;
-     {
-        Evas_GL_Image *gim;
-        RGBA_Image *im;
-        RGBA_Draw_Context *dc = context;
-        int op = dc->render_op, cuse = dc->clip.use;
-        
-        im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
-        im = (RGBA_Image *)evas_cache_image_size_set(&im->cache_entry, w, h);
-        
-        dc->render_op = _EVAS_RENDER_FILL;
-        dc->clip.use = 0;
-        
-        // draw to buf, copy to tex, draw tex
-        evas_common_gradient2_draw(im, dc, 0, 0, w, h, linear_gradient);
-
-        gim = evas_gl_common_image_new_from_data(re->gl_context, w, h,
-                                                 im->image.data, 1,
-                                                 EVAS_COLORSPACE_ARGB8888);
-        dc->render_op = op;
-        dc->clip.use = cuse;
-        evas_gl_common_image_draw(re->gl_context, gim, 0, 0, w, h, x, y, w, h, 0);
-        evas_cache_image_drop(&im->cache_entry);
-        evas_gl_common_image_free(gim);
-     }
-}
-
-static void *
-eng_gradient2_radial_new(void *data __UNUSED__)
-{
-   return evas_common_gradient2_radial_new();
-}
-
-static void
-eng_gradient2_radial_free(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-   evas_common_gradient2_free(radial_gradient);
-}
-
-static void
-eng_gradient2_radial_fill_set(void *data __UNUSED__, void *radial_gradient __UNUSED__, float cx __UNUSED__, float cy __UNUSED__, float rx __UNUSED__, float ry __UNUSED__)
-{
-   evas_common_gradient2_radial_fill_set(radial_gradient, cx, cy, rx, ry);
-}
-
-static int
-eng_gradient2_radial_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)radial_gradient;
-   
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-            gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient2_radial_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   
-   if (!dc || !radial_gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient2_radial_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)radial_gradient;
-   int  len;
-   
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_update(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient2_map(dc, gr, len);
-}
-
-static void
-eng_gradient2_radial_render_post(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-   re->gl_context->dc = context;
-     {
-        Evas_GL_Image *gim;
-        RGBA_Image *im;
-        RGBA_Draw_Context *dc = context;
-        int op = dc->render_op, cuse = dc->clip.use;
-        
-        im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
-        im = (RGBA_Image *)evas_cache_image_size_set(&im->cache_entry, w, h);
-        
-        dc->render_op = _EVAS_RENDER_FILL;
-        dc->clip.use = 0;
-        
-        // draw to buf, copy to tex, draw tex
-        evas_common_gradient2_draw(im, dc, 0, 0, w, h, radial_gradient);
-
-        gim = evas_gl_common_image_new_from_data(re->gl_context, w, h,
-                                                 im->image.data, 1,
-                                                 EVAS_COLORSPACE_ARGB8888);
-        dc->render_op = op;
-        dc->clip.use = cuse;
-        evas_gl_common_image_draw(re->gl_context, gim, 0, 0, w, h, x, y, w, h, 0);
-        evas_cache_image_drop(&im->cache_entry);
-        evas_gl_common_image_free(gim);
-     }
-}
-
-static void *
-eng_gradient_new(void *data __UNUSED__)
-{
-   return evas_common_gradient_new();
-}
-
-static void
-eng_gradient_free(void *data __UNUSED__, void *gradient)
-{
-   evas_common_gradient_free(gradient);
-}
-
-static void
-eng_gradient_color_stop_add(void *data __UNUSED__, void *gradient, int r, int g, int b, int a, int delta)
-{
-   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data __UNUSED__, void *gradient, int a, int delta)
-{
-   evas_common_gradient_alpha_stop_add(gradient, a, delta);
-}
-
-static void
-eng_gradient_color_data_set(void *data __UNUSED__, void *gradient, void *map, int len, int has_alpha)
-{
-   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
-}
-
-static void
-eng_gradient_alpha_data_set(void *data __UNUSED__, void *gradient, void *alpha_map, int len)
-{
-   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
-}
-
-static void
-eng_gradient_clear(void *data __UNUSED__, void *gradient)
-{
-   evas_common_gradient_clear(gradient);
-}
-
-static void
-eng_gradient_fill_set(void *data __UNUSED__, void *gradient, int x, int y, int w, int h)
-{
-   evas_common_gradient_fill_set(gradient, x, y, w, h);
-}
-
-static void
-eng_gradient_fill_angle_set(void *data __UNUSED__, void *gradient, double angle)
-{
-   evas_common_gradient_fill_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_fill_spread_set(void *data __UNUSED__, void *gradient, int spread)
-{
-   evas_common_gradient_fill_spread_set(gradient, spread);
-}
-
-static void
-eng_gradient_angle_set(void *data __UNUSED__, void *gradient, double angle)
-{
-   evas_common_gradient_map_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_offset_set(void *data __UNUSED__, void *gradient, float offset)
-{
-   evas_common_gradient_map_offset_set(gradient, offset);
-}
-
-static void
-eng_gradient_direction_set(void *data __UNUSED__, void *gradient, int direction)
-{
-   evas_common_gradient_map_direction_set(gradient, direction);
-}
-
-static void
-eng_gradient_type_set(void *data __UNUSED__, void *gradient, char *name, char *params)
-{
-   evas_common_gradient_type_set(gradient, name, params);
-}
-
-static int
-eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-   
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-            gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   
-   if (!dc || !gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient_render_pre(void *data, void *context, void *gradient)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-   int  len;
-   
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_set(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient_map(dc, gr, len);
-}
-
-static void
-eng_gradient_render_post(void *data __UNUSED__, void *gradient)
-{
-}
-
-static void
-eng_gradient_draw(void *data, void *context, void *surface __UNUSED__, void *gradient, int x, int y, int w, int h)
-{
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-   re->gl_context->dc = context;
-     {
-        Evas_GL_Image *gim;
-        RGBA_Image *im;
-        RGBA_Draw_Context *dc = context;
-        int op = dc->render_op, cuse = dc->clip.use;
-        
-        im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
-        im = (RGBA_Image *)evas_cache_image_size_set(&im->cache_entry, w, h);
-        
-        dc->render_op = _EVAS_RENDER_FILL;
-        dc->clip.use = 0;
-        
-        // draw to buf, copy to tex, draw tex
-        evas_common_gradient_draw(im, dc, 0, 0, w, h, gradient);
-
-        gim = evas_gl_common_image_new_from_data(re->gl_context, w, h,
-                                                 im->image.data, 1,
-                                                 EVAS_COLORSPACE_ARGB8888);
-        dc->render_op = op;
-        dc->clip.use = cuse;
-        evas_gl_common_image_draw(re->gl_context, gim, 0, 0, w, h, x, y, w, h, 0);
-        evas_cache_image_drop(&im->cache_entry);
-        evas_gl_common_image_free(gim);
-     }
-}
-
 static int
 eng_image_alpha_get(void *data, void *image)
 {
@@ -1248,46 +891,6 @@ module_open(Evas_Module *em)
    ORD(polygon_points_clear);
    ORD(polygon_draw);
 
-   ORD(gradient2_color_np_stop_insert);
-   ORD(gradient2_clear);
-   ORD(gradient2_fill_transform_set);
-   ORD(gradient2_fill_spread_set);
-   ORD(gradient2_linear_new);
-   ORD(gradient2_linear_free);
-   ORD(gradient2_linear_fill_set);
-   ORD(gradient2_linear_is_opaque);
-   ORD(gradient2_linear_is_visible);
-   ORD(gradient2_linear_render_pre);
-   ORD(gradient2_linear_render_post);
-   ORD(gradient2_linear_draw);
-   ORD(gradient2_radial_new);
-   ORD(gradient2_radial_free);
-   ORD(gradient2_radial_fill_set);
-   ORD(gradient2_radial_is_opaque);
-   ORD(gradient2_radial_is_visible);
-   ORD(gradient2_radial_render_pre);
-   ORD(gradient2_radial_render_post);
-   ORD(gradient2_radial_draw);
-
-   ORD(gradient_new);
-   ORD(gradient_free);
-   ORD(gradient_color_stop_add);
-   ORD(gradient_alpha_stop_add);
-   ORD(gradient_color_data_set);
-   ORD(gradient_alpha_data_set);
-   ORD(gradient_clear);
-   ORD(gradient_fill_set);
-   ORD(gradient_fill_angle_set);
-   ORD(gradient_fill_spread_set);
-   ORD(gradient_angle_set);
-   ORD(gradient_offset_set);
-   ORD(gradient_direction_set);
-   ORD(gradient_type_set);
-   ORD(gradient_is_opaque);
-   ORD(gradient_is_visible);
-   ORD(gradient_render_pre);
-   ORD(gradient_render_post);
-   ORD(gradient_draw);
    ORD(image_load);
    ORD(image_new_from_data);
    ORD(image_new_from_copied_data);
@@ -1364,7 +967,6 @@ _sdl_output_setup          (int w, int h, int fullscreen, int noframe)
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
index 5b1c27d..15cd185 100644 (file)
@@ -305,7 +305,6 @@ eng_setup(Evas *e, void *in)
              evas_common_convert_init();
              evas_common_scale_init();
              evas_common_rectangle_init();
-             evas_common_gradient_init();
              evas_common_polygon_init();
              evas_common_line_init();
              evas_common_font_init();
@@ -751,366 +750,6 @@ eng_polygon_draw(void *data, void *context, void *surface __UNUSED__, void *poly
    evas_gl_common_poly_draw(re->win->gl_context, polygon, x, y);
 }
 
-static void
-eng_gradient2_color_np_stop_insert(void *data __UNUSED__, void *gradient __UNUSED__, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__, float pos __UNUSED__)
-{
-   evas_common_gradient2_color_np_stop_insert(gradient, r, g, b, a, pos);
-}
-
-static void
-eng_gradient2_clear(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-   evas_common_gradient2_clear(gradient);
-}
-
-static void
-eng_gradient2_fill_transform_set(void *data __UNUSED__, void *gradient __UNUSED__, void *transform __UNUSED__)
-{
-   evas_common_gradient2_fill_transform_set(gradient, transform);
-}
-
-static void
-eng_gradient2_fill_spread_set(void *data __UNUSED__, void *gradient __UNUSED__, int spread __UNUSED__)
-{
-   evas_common_gradient2_fill_spread_set(gradient, spread);
-}
-
-static void *
-eng_gradient2_linear_new(void *data __UNUSED__)
-{
-   return evas_common_gradient2_linear_new();
-}
-
-static void
-eng_gradient2_linear_free(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-   evas_common_gradient2_free(linear_gradient);
-}
-
-static void
-eng_gradient2_linear_fill_set(void *data __UNUSED__, void *linear_gradient __UNUSED__, float x0 __UNUSED__, float y0 __UNUSED__, float x1 __UNUSED__, float y1 __UNUSED__)
-{
-   evas_common_gradient2_linear_fill_set(linear_gradient, x0, y0, x1, y1);
-}
-
-static int
-eng_gradient2_linear_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)linear_gradient;
-
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-            gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient2_linear_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-
-   if (!dc || !linear_gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient2_linear_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)linear_gradient;
-   int  len;
-   
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_update(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient2_map(dc, gr, len);
-}
-
-static void
-eng_gradient2_linear_render_post(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-   eng_window_use(re->win);
-   re->win->gl_context->dc = context;
-     {
-        Evas_GL_Image *gim;
-        RGBA_Image *im;
-        RGBA_Draw_Context *dc = context;
-        int op = dc->render_op, cuse = dc->clip.use;
-        
-        im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
-        im = (RGBA_Image *)evas_cache_image_size_set(&im->cache_entry, w, h);
-        
-        dc->render_op = _EVAS_RENDER_FILL;
-        dc->clip.use = 0;
-        
-        // draw to buf, copy to tex, draw tex
-        evas_common_gradient2_draw(im, dc, 0, 0, w, h, linear_gradient);
-
-        gim = evas_gl_common_image_new_from_data(re->win->gl_context, w, h,
-                                                 im->image.data, 1,
-                                                 EVAS_COLORSPACE_ARGB8888);
-        dc->render_op = op;
-        dc->clip.use = cuse;
-        evas_gl_common_image_draw(re->win->gl_context, gim, 0, 0, w, h, x, y, w, h, 0);
-        evas_cache_image_drop(&im->cache_entry);
-        evas_gl_common_image_free(gim);
-     }
-}
-
-static void *
-eng_gradient2_radial_new(void *data __UNUSED__)
-{
-   return evas_common_gradient2_radial_new();
-}
-
-static void
-eng_gradient2_radial_free(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-   evas_common_gradient2_free(radial_gradient);
-}
-
-static void
-eng_gradient2_radial_fill_set(void *data __UNUSED__, void *radial_gradient __UNUSED__, float cx __UNUSED__, float cy __UNUSED__, float rx __UNUSED__, float ry __UNUSED__)
-{
-   evas_common_gradient2_radial_fill_set(radial_gradient, cx, cy, rx, ry);
-}
-
-static int
-eng_gradient2_radial_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)radial_gradient;
-   
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-            gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient2_radial_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   
-   if (!dc || !radial_gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient2_radial_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)radial_gradient;
-   int  len;
-   
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_update(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient2_map(dc, gr, len);
-}
-
-static void
-eng_gradient2_radial_render_post(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-   eng_window_use(re->win);
-   re->win->gl_context->dc = context;
-     {
-        Evas_GL_Image *gim;
-        RGBA_Image *im;
-        RGBA_Draw_Context *dc = context;
-        int op = dc->render_op, cuse = dc->clip.use;
-        
-        im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
-        im = (RGBA_Image *)evas_cache_image_size_set(&im->cache_entry, w, h);
-        
-        dc->render_op = _EVAS_RENDER_FILL;
-        dc->clip.use = 0;
-        
-        // draw to buf, copy to tex, draw tex
-        evas_common_gradient2_draw(im, dc, 0, 0, w, h, radial_gradient);
-
-        gim = evas_gl_common_image_new_from_data(re->win->gl_context, w, h,
-                                                 im->image.data, 1,
-                                                 EVAS_COLORSPACE_ARGB8888);
-        dc->render_op = op;
-        dc->clip.use = cuse;
-        evas_gl_common_image_draw(re->win->gl_context, gim, 0, 0, w, h, x, y, w, h, 0);
-        evas_cache_image_drop(&im->cache_entry);
-        evas_gl_common_image_free(gim);
-     }
-}
-
-static void *
-eng_gradient_new(void *data __UNUSED__)
-{
-   return evas_common_gradient_new();
-}
-
-static void
-eng_gradient_free(void *data __UNUSED__, void *gradient)
-{
-   evas_common_gradient_free(gradient);
-}
-
-static void
-eng_gradient_color_stop_add(void *data __UNUSED__, void *gradient, int r, int g, int b, int a, int delta)
-{
-   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data __UNUSED__, void *gradient, int a, int delta)
-{
-   evas_common_gradient_alpha_stop_add(gradient, a, delta);
-}
-
-static void
-eng_gradient_color_data_set(void *data __UNUSED__, void *gradient, void *map, int len, int has_alpha)
-{
-   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
-}
-
-static void
-eng_gradient_alpha_data_set(void *data __UNUSED__, void *gradient, void *alpha_map, int len)
-{
-   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
-}
-
-static void
-eng_gradient_clear(void *data __UNUSED__, void *gradient)
-{
-   evas_common_gradient_clear(gradient);
-}
-
-static void
-eng_gradient_fill_set(void *data __UNUSED__, void *gradient, int x, int y, int w, int h)
-{
-   evas_common_gradient_fill_set(gradient, x, y, w, h);
-}
-
-static void
-eng_gradient_fill_angle_set(void *data __UNUSED__, void *gradient, double angle)
-{
-   evas_common_gradient_fill_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_fill_spread_set(void *data __UNUSED__, void *gradient, int spread)
-{
-   evas_common_gradient_fill_spread_set(gradient, spread);
-}
-
-static void
-eng_gradient_angle_set(void *data __UNUSED__, void *gradient, double angle)
-{
-   evas_common_gradient_map_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_offset_set(void *data __UNUSED__, void *gradient, float offset)
-{
-   evas_common_gradient_map_offset_set(gradient, offset);
-}
-
-static void
-eng_gradient_direction_set(void *data __UNUSED__, void *gradient, int direction)
-{
-   evas_common_gradient_map_direction_set(gradient, direction);
-}
-
-static void
-eng_gradient_type_set(void *data __UNUSED__, void *gradient, char *name, char *params)
-{
-   evas_common_gradient_type_set(gradient, name, params);
-}
-
-static int
-eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-   
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-            gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   
-   if (!dc || !gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient_render_pre(void *data, void *context, void *gradient)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-   int  len;
-   
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_set(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient_map(dc, gr, len);
-}
-
-static void
-eng_gradient_render_post(void *data __UNUSED__, void *gradient)
-{
-}
-
-static void
-eng_gradient_draw(void *data, void *context, void *surface __UNUSED__, void *gradient, int x, int y, int w, int h)
-{
-   Render_Engine *re;
-
-   re = (Render_Engine *)data;
-   eng_window_use(re->win);
-   re->win->gl_context->dc = context;
-     {
-        Evas_GL_Image *gim;
-        RGBA_Image *im;
-        RGBA_Draw_Context *dc = context;
-        int op = dc->render_op, cuse = dc->clip.use;
-        
-        im = (RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
-        im = (RGBA_Image *)evas_cache_image_size_set(&im->cache_entry, w, h);
-        
-        dc->render_op = _EVAS_RENDER_FILL;
-        dc->clip.use = 0;
-        
-        // draw to buf, copy to tex, draw tex
-        evas_common_gradient_draw(im, dc, 0, 0, w, h, gradient);
-
-        gim = evas_gl_common_image_new_from_data(re->win->gl_context, w, h,
-                                                 im->image.data, 1,
-                                                 EVAS_COLORSPACE_ARGB8888);
-        dc->render_op = op;
-        dc->clip.use = cuse;
-        evas_gl_common_image_draw(re->win->gl_context, gim, 0, 0, w, h, x, y, w, h, 0);
-        evas_cache_image_drop(&im->cache_entry);
-        evas_gl_common_image_free(gim);
-     }
-}
-
 static int
 eng_image_alpha_get(void *data, void *image)
 {
@@ -2071,46 +1710,6 @@ module_open(Evas_Module *em)
    ORD(polygon_points_clear);
    ORD(polygon_draw);
 
-   ORD(gradient2_color_np_stop_insert);
-   ORD(gradient2_clear);
-   ORD(gradient2_fill_transform_set);
-   ORD(gradient2_fill_spread_set);
-   ORD(gradient2_linear_new);
-   ORD(gradient2_linear_free);
-   ORD(gradient2_linear_fill_set);
-   ORD(gradient2_linear_is_opaque);
-   ORD(gradient2_linear_is_visible);
-   ORD(gradient2_linear_render_pre);
-   ORD(gradient2_linear_render_post);
-   ORD(gradient2_linear_draw);
-   ORD(gradient2_radial_new);
-   ORD(gradient2_radial_free);
-   ORD(gradient2_radial_fill_set);
-   ORD(gradient2_radial_is_opaque);
-   ORD(gradient2_radial_is_visible);
-   ORD(gradient2_radial_render_pre);
-   ORD(gradient2_radial_render_post);
-   ORD(gradient2_radial_draw);
-
-   ORD(gradient_new);
-   ORD(gradient_free);
-   ORD(gradient_color_stop_add);
-   ORD(gradient_alpha_stop_add);
-   ORD(gradient_color_data_set);
-   ORD(gradient_alpha_data_set);
-   ORD(gradient_clear);
-   ORD(gradient_fill_set);
-   ORD(gradient_fill_angle_set);
-   ORD(gradient_fill_spread_set);
-   ORD(gradient_angle_set);
-   ORD(gradient_offset_set);
-   ORD(gradient_direction_set);
-   ORD(gradient_type_set);
-   ORD(gradient_is_opaque);
-   ORD(gradient_is_visible);
-   ORD(gradient_render_pre);
-   ORD(gradient_render_post);
-   ORD(gradient_draw);
    ORD(image_load);
    ORD(image_new_from_data);
    ORD(image_new_from_copied_data);
index 810b5dd..4c96754 100644 (file)
@@ -89,7 +89,6 @@ eng_output_setup(CGContextRef context, int w, int h)
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
@@ -494,231 +493,6 @@ eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
    CGContextFillPath(re->ctx);
 }
 
-#pragma mark Gradient Manipulation & Drawing
-
-static void *
-eng_gradient_new(void *data)
-{
-   Evas_Quartz_Gradient *gradient = calloc(1, sizeof(Evas_Quartz_Gradient));
-   if (!gradient) return NULL;
-
-   gradient->grad = evas_common_gradient_new();
-   if (!(gradient->grad))
-   {
-      free(gradient);
-      return NULL;
-   }
-
-   gradient->changed = 1;
-   gradient->buf = NULL;
-
-   return gradient;
-}
-
-static void
-eng_gradient_free(void *data, void *gradient)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   if (gr->grad) evas_common_gradient_free(gr->grad);
-   if (gr->im) eng_image_free(data, gr->im);
-   if (gr->buf) free(gr->buf);
-   free(gr);
-}
-
-static void
-eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_color_stop_add(gr->grad, r, g, b, a, delta);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_alpha_stop_add(gr->grad, a, delta);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_color_data_set(gr->grad, map, len, has_alpha);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_alpha_data_set(gr->grad, alpha_map, len);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_clear(void *data, void *gradient)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_clear(gr->grad);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_fill_set(gr->grad, x, y, w, h);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_fill_angle_set(gr->grad, angle);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_fill_spread_set(gr->grad, spread);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_angle_set(void *data, void *gradient, double angle)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_map_angle_set(gr->grad, angle);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_offset_set(void *data, void *gradient, float offset)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_map_offset_set(gr->grad, offset);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_direction_set(void *data, void *gradient, int direction)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_map_direction_set(gr->grad, direction);
-   gr->changed = 1;
-}
-
-static void
-eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
-{
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-   if (!gr) return;
-   evas_common_gradient_type_set(gr->grad, name, params);
-   gr->changed = 1;
-}
-
-static int
-eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient *grad;
-   if (!gradient) return 0;
-
-   grad = ((Evas_Quartz_Gradient *)gradient)->grad;
-
-   if (!grad || !grad->type.geometer) return 0;
-
-   return !(grad->type.geometer->has_alpha(grad, dc->render_op) |
-              grad->type.geometer->has_mask(grad, dc->render_op));
-}
-
-static int
-eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
-{
-   if (!gradient) return 0;
-   return 1;
-}
-
-static void
-eng_gradient_render_pre(void *data, void *context, void *gradient)
-{
-   int  len;
-   RGBA_Gradient *grad;
-
-   if (!context || !gradient) return;
-   grad = ((Evas_Quartz_Gradient *)gradient)->grad;
-   if (!grad || !grad->type.geometer) return;
-   grad->type.geometer->geom_set(grad);
-   len = grad->type.geometer->get_map_len(grad);
-   evas_common_gradient_map(context, grad, len);
-   ((Evas_Quartz_Gradient *)gradient)->changed = 1;
-}
-
-static void
-eng_gradient_render_post(void *data, void *gradient)
-{
-}
-
-static void
-eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   Evas_Quartz_Gradient *gr = (Evas_Quartz_Gradient *)gradient;
-
-   INF("#Gradient#");
-   INF("Fill: %i %i %i %i", gr->grad->fill.x, gr->grad->fill.y, gr->grad->fill.w, gr->grad->fill.h);
-   INF("Type: %s %s", gr->grad->type.name, gr->grad->type.params);
-   INF("XYWH: %i %i %i %i", x, y, w, h);
-   INF("Geom: %p %p", gr->grad->type.geometer, gr->grad->type.geometer->get_fill_func);
-   INF("Map: len: %d angle: %f direction: %d offset: %f", gr->grad->map.len, gr->grad->map.angle, gr->grad->map.direction, gr->grad->map.offset);
-   INF("Color: nstops: %d len: %d", gr->grad->color.nstops, gr->grad->color.len);
-   INF("Alpha: nstops: %d len: %d", gr->grad->alpha.nstops, gr->grad->alpha.len);
-   INF("");
-
-   if ((gr->sw != w) || (gr->sh != h))
-      gr->changed = 1;
-
-   if ((gr->changed) || (!gr->im))
-   {
-      if (gr->buf && ((gr->sw != w) || (gr->sh != h)))
-      {
-         free(gr->buf);
-         gr->buf = NULL;
-      }
-
-      if (!gr->buf)
-         gr->buf = calloc(w * h, 4);
-
-      eng_image_free(data, gr->im);
-      gr->im = eng_image_new_from_data(data, w, h, gr->buf, 1, EVAS_COLORSPACE_ARGB8888);
-      dc->render_op = _EVAS_RENDER_FILL;
-      evas_common_gradient_draw((RGBA_Image *) &gr->im->im->cache_entry, dc, 0, 0, w, h, gr->grad);
-      evas_common_cpu_end_opt();
-      gr->sw = w;
-      gr->sh = h;
-      gr->changed = 0;
-   }
-
-   eng_image_draw(data, context, NULL, gr->im, 0, 0, 0, 0, x, y, w, h, 0);
-}
-
 #pragma mark Image Manipulation & Drawing
 
 static void *
@@ -1476,25 +1250,6 @@ module_open(Evas_Module *em)
    ORD(font_memory_load);
    ORD(font_string_size_get);
    ORD(font_v_advance_get);
-   ORD(gradient_new);
-   ORD(gradient_free);
-   ORD(gradient_color_stop_add);
-   ORD(gradient_alpha_stop_add);
-   ORD(gradient_color_data_set);
-   ORD(gradient_alpha_data_set);
-   ORD(gradient_clear);
-   ORD(gradient_fill_set);
-   ORD(gradient_fill_angle_set);
-   ORD(gradient_fill_spread_set);
-   ORD(gradient_angle_set);
-   ORD(gradient_offset_set);
-   ORD(gradient_direction_set);
-   ORD(gradient_type_set);
-   ORD(gradient_is_opaque);
-   ORD(gradient_is_visible);
-   ORD(gradient_render_pre);
-   ORD(gradient_render_post);
-   ORD(gradient_draw);
    ORD(image_alpha_get);
    ORD(image_alpha_set);
    ORD(image_colorspace_get);
diff --git a/src/modules/engines/quartz/evas_engine.h b/src/modules/engines/quartz/evas_engine.h
deleted file mode 100644 (file)
index a32e232..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef EVAS_ENGINE_H
-#define EVAS_ENGINE_H
-
-#include <ApplicationServices/ApplicationServices.h>
-
-/* log domain variable declared in evas_engine.c */
-extern int _evas_engine_quartz_log_dom ;
-#ifdef ERR
-# undef ERR
-#endif
-#define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_quartz_log_dom, __VA_ARGS__)
-
-#ifdef DBG
-# undef DBG
-#endif
-#define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_quartz_log_dom, __VA_ARGS__)
-
-#ifdef INF
-# undef INF
-#endif
-#define INF(...) EINA_LOG_DOM_INFO(_evas_engine_quartz_log_dom, __VA_ARGS__)
-
-#ifdef WRN
-# undef WRN
-#endif
-#define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_quartz_log_dom, __VA_ARGS__)
-
-#ifdef CRIT
-# undef CRIT
-#endif
-#define CRIT(...) EINA_LOG_DOM_CRIT(_evas_engine_quartz_log_dom, __VA_ARGS__)
-
-typedef struct _Evas_Quartz_Context Evas_Quartz_Context;
-
-struct _Evas_Quartz_Context
-{
-   int         w, h;
-
-   struct
-   {
-      double   r, g, b, a;
-   } col;
-
-   struct
-   {
-      double   r, g, b, a;
-      int      set : 1;
-   } mul;
-
-   unsigned char aa, clipped;
-};
-
-typedef struct _Evas_Quartz_Polygon Evas_Quartz_Polygon;
-
-struct _Evas_Quartz_Polygon
-{
-   Eina_List *points;
-};
-
-typedef struct _Evas_Quartz_Polygon_Point Evas_Quartz_Polygon_Point;
-
-struct _Evas_Quartz_Polygon_Point
-{
-   int x, y;
-};
-
-typedef struct _Evas_Quartz_Image Evas_Quartz_Image;
-
-struct _Evas_Quartz_Image
-{
-   RGBA_Image  *im;
-   CGImageRef  cgim;
-
-   int         references;
-};
-
-typedef struct _Evas_Quartz_Font Evas_Quartz_Font;
-
-struct _Evas_Quartz_Font
-{
-   CTFontRef         font;
-   CFDictionaryRef   attr;
-   int               hint;
-   int               size;
-};
-
-typedef struct _Evas_Quartz_Gradient Evas_Quartz_Gradient;
-
-struct _Evas_Quartz_Gradient
-{
-   DATA32            *buf;
-   RGBA_Gradient     *grad;
-   Evas_Quartz_Image *im;
-   unsigned char     changed : 1;
-   int               sw, sh;
-};
-
-#endif
index 2d5e4d0..852e869 100644 (file)
@@ -46,25 +46,6 @@ static void *eng_polygon_point_add(void *data, void *context, void *polygon, int
 static void *eng_polygon_points_clear(void *data, void *context, void *polygon);
 static void eng_polygon_draw(void *data, void *context, void *surface, void *polygon);
 
-static void *eng_gradient_new(void *data);
-static void eng_gradient_free(void *data, void *gradient);
-static void eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta);
-static void eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta);
-static void eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha);
-static void eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len);
-static void eng_gradient_clear(void *data, void *gradient);
-static void eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h);
-static void eng_gradient_fill_angle_set(void *data, void *gradient, double angle);
-static void eng_gradient_fill_spread_set(void *data, void *gradient, int spread);
-static void eng_gradient_angle_set(void *data, void *gradient, double angle);
-static void eng_gradient_offset_set(void *data, void *gradient, float offset);
-static void eng_gradient_direction_set(void *data, void *gradient, int direction);
-static void eng_gradient_type_set(void *data, void *gradient, char *name, char *params);
-static int eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h);
-static int eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h);
-static void eng_gradient_render_pre(void *data, void *context, void *gradient);
-static void eng_gradient_render_post(void *data, void *gradient);
-static void eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h);
 static void *eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo);
 
 static void *eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
index 227859c..fa40b7f 100644 (file)
@@ -203,264 +203,6 @@ eng_polygon_draw(void *data __UNUSED__, void *context, void *surface, void *poly
    soft16_polygon_draw(surface, context, polygon, x, y);
 }
 
-
-static void
-eng_gradient2_color_np_stop_insert(void *data __UNUSED__, void *gradient __UNUSED__, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__, float pos __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_clear(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_fill_transform_set(void *data __UNUSED__, void *gradient __UNUSED__, void *transform __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_fill_spread_set(void *data __UNUSED__, void *gradient __UNUSED__, int spread __UNUSED__)
-{
-}
-
-static void *
-eng_gradient2_linear_new(void *data __UNUSED__)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_linear_free(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_fill_set(void *data __UNUSED__, void *linear_gradient __UNUSED__, float x0 __UNUSED__, float y0 __UNUSED__, float x1 __UNUSED__, float y1 __UNUSED__)
-{
-}
-
-static int
-eng_gradient2_linear_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_linear_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_linear_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_render_post(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-}
-
-static void *
-eng_gradient2_radial_new(void *data __UNUSED__)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_radial_free(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_fill_set(void *data __UNUSED__, void *radial_gradient __UNUSED__, float cx __UNUSED__, float cy __UNUSED__, float rx __UNUSED__, float ry __UNUSED__)
-{
-}
-
-static int
-eng_gradient2_radial_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_radial_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_radial_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_render_post(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-}
-
-static void *
-eng_gradient_new(void *data __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-   return NULL;
-//   return evas_common_gradient_new();
-}
-
-static void
-eng_gradient_free(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_free(gradient);
-}
-
-static void
-eng_gradient_color_stop_add(void *data __UNUSED__, void *gradient __UNUSED__, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__, int delta __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data __UNUSED__, void *gradient __UNUSED__, int a __UNUSED__, int delta __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_alpha_stop_add(gradient, a, delta);
-}
-
-static void
-eng_gradient_color_data_set(void *data __UNUSED__, void *gradient __UNUSED__, void *map __UNUSED__, int len __UNUSED__, int has_alpha __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
-}
-
-static void
-eng_gradient_alpha_data_set(void *data __UNUSED__, void *gradient __UNUSED__, void *alpha_map __UNUSED__, int len __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
-}
-
-static void
-eng_gradient_clear(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_clear(gradient);
-}
-
-static void
-eng_gradient_fill_set(void *data __UNUSED__, void *gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_fill_set(gradient, x, y, w, h);
-}
-
-static void
-eng_gradient_fill_angle_set(void *data __UNUSED__, void *gradient __UNUSED__, double angle __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_fill_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_fill_spread_set(void *data __UNUSED__, void *gradient __UNUSED__, int spread __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_fill_spread_set(gradient, spread);
-}
-
-static void
-eng_gradient_angle_set(void *data __UNUSED__, void *gradient __UNUSED__, double angle __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_map_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_offset_set(void *data __UNUSED__, void *gradient __UNUSED__, float offset __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_map_offset_set(gradient, offset);
-}
-
-static void
-eng_gradient_direction_set(void *data __UNUSED__, void *gradient __UNUSED__, int direction __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_map_direction_set(gradient, direction);
-}
-
-static void
-eng_gradient_type_set(void *data __UNUSED__, void *gradient __UNUSED__, char *name __UNUSED__, char *params __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_type_set(gradient, name, params);
-}
-
-static int
-eng_gradient_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-   return 0;
-//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-//   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-//
-//   if (!dc || !gr || !gr->type.geometer)  return 0;
-//   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-//              gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-   return 0;
-//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-//
-//   if (!dc || !gradient)  return 0;
-//   return 1;
-}
-
-static void
-eng_gradient_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *gradient __UNUSED__)
-{
-//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-//   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-//   int  len;
-//
-//   if (!dc || !gr || !gr->type.geometer)  return;
-//   gr->type.geometer->geom_set(gr);
-//   len = gr->type.geometer->get_map_len(gr);
-//   evas_common_gradient_map(dc, gr, len);
-   NOT_IMPLEMENTED();
-}
-
-static void
-eng_gradient_render_post(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-}
-
-static void
-eng_gradient_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-//   evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
-//   evas_common_cpu_end_opt();
-   NOT_IMPLEMENTED();
-}
-
 static int
 eng_image_alpha_get(void *data __UNUSED__, void *image)
 {
@@ -921,49 +663,6 @@ static Evas_Func func =
      eng_polygon_point_add,
      eng_polygon_points_clear,
      eng_polygon_draw,
-     /* gradient draw funcs */
-     eng_gradient2_color_np_stop_insert,
-     eng_gradient2_clear,
-     eng_gradient2_fill_transform_set,
-     eng_gradient2_fill_spread_set,
-     
-     eng_gradient2_linear_new,
-     eng_gradient2_linear_free,
-     eng_gradient2_linear_fill_set,
-     eng_gradient2_linear_is_opaque,
-     eng_gradient2_linear_is_visible,
-     eng_gradient2_linear_render_pre,
-     eng_gradient2_linear_render_post,
-     eng_gradient2_linear_draw,
-     
-     eng_gradient2_radial_new,
-     eng_gradient2_radial_free,
-     eng_gradient2_radial_fill_set,
-     eng_gradient2_radial_is_opaque,
-     eng_gradient2_radial_is_visible,
-     eng_gradient2_radial_render_pre,
-     eng_gradient2_radial_render_post,
-     eng_gradient2_radial_draw,
-     
-     eng_gradient_new,
-     eng_gradient_free,
-     eng_gradient_color_stop_add,
-     eng_gradient_alpha_stop_add,
-     eng_gradient_color_data_set,
-     eng_gradient_alpha_data_set,
-     eng_gradient_clear,
-     eng_gradient_fill_set,
-     eng_gradient_fill_angle_set,
-     eng_gradient_fill_spread_set,
-     eng_gradient_angle_set,
-     eng_gradient_offset_set,
-     eng_gradient_direction_set,
-     eng_gradient_type_set,
-     eng_gradient_is_opaque,
-     eng_gradient_is_visible,
-     eng_gradient_render_pre,
-     eng_gradient_render_post,
-     eng_gradient_draw,
      /* image draw funcs */
      eng_image_load,
      eng_image_new_from_data,
index 90f1162..247b5f4 100644 (file)
@@ -126,7 +126,6 @@ eng_setup(Evas *e, void *in)
        evas_common_convert_init();
        evas_common_scale_init();
        evas_common_rectangle_init();
-       evas_common_gradient_init();
        evas_common_polygon_init();
        evas_common_line_init();
        evas_common_font_init();
index e0ce570..f9bf9fe 100644 (file)
@@ -129,7 +129,6 @@ _sdl16_output_setup(int w, int h, int rotation, int fullscreen, int noframe, int
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
index b994a9a..4a29ff2 100644 (file)
@@ -160,7 +160,6 @@ eng_setup(Evas *e, void *in)
        evas_common_convert_init();
        evas_common_scale_init();
        evas_common_rectangle_init();
-       evas_common_gradient_init();
        evas_common_polygon_init();
        evas_common_line_init();
        evas_common_font_init();
index 7f753fc..425323a 100644 (file)
@@ -178,7 +178,6 @@ eng_setup(Evas *e, void *in)
        evas_common_convert_init();
        evas_common_scale_init();
        evas_common_rectangle_init();
-       evas_common_gradient_init();
        evas_common_polygon_init();
        evas_common_line_init();
        evas_common_font_init();
index 7564300..5efab4e 100644 (file)
@@ -216,322 +216,6 @@ eng_polygon_draw(void *data __UNUSED__, void *context, void *surface,
    soft8_polygon_draw(surface, context, polygon, x, y);
 }
 
-static void
-eng_gradient2_color_np_stop_insert(void *data __UNUSED__,
-                                   void *gradient __UNUSED__, int r __UNUSED__,
-                                   int g __UNUSED__, int b __UNUSED__,
-                                   int a __UNUSED__, float pos __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_clear(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_fill_transform_set(void *data __UNUSED__,
-                                 void *gradient __UNUSED__,
-                                 void *transform __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_fill_spread_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                              int spread __UNUSED__)
-{
-}
-
-static void *
-eng_gradient2_linear_new(void *data __UNUSED__)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_linear_free(void *data __UNUSED__,
-                          void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_fill_set(void *data __UNUSED__,
-                              void *linear_gradient __UNUSED__,
-                              float x0 __UNUSED__, float y0 __UNUSED__,
-                              float x1 __UNUSED__, float y1 __UNUSED__)
-{
-}
-
-static int
-eng_gradient2_linear_is_opaque(void *data __UNUSED__, void *context __UNUSED__,
-                               void *linear_gradient __UNUSED__,
-                               int x __UNUSED__, int y __UNUSED__,
-                               int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_linear_is_visible(void *data __UNUSED__, void *context __UNUSED__,
-                                void *linear_gradient __UNUSED__,
-                                int x __UNUSED__, int y __UNUSED__,
-                                int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_linear_render_pre(void *data __UNUSED__, void *context __UNUSED__,
-                                void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_render_post(void *data __UNUSED__,
-                                 void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_draw(void *data __UNUSED__, void *context __UNUSED__,
-                          void *surface __UNUSED__,
-                          void *linear_gradient __UNUSED__, int x __UNUSED__,
-                          int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-}
-
-static void *
-eng_gradient2_radial_new(void *data __UNUSED__)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_radial_free(void *data __UNUSED__,
-                          void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_fill_set(void *data __UNUSED__,
-                              void *radial_gradient __UNUSED__,
-                              float cx __UNUSED__, float cy __UNUSED__,
-                              float rx __UNUSED__, float ry __UNUSED__)
-{
-}
-
-static int
-eng_gradient2_radial_is_opaque(void *data __UNUSED__, void *context __UNUSED__,
-                               void *radial_gradient __UNUSED__,
-                               int x __UNUSED__, int y __UNUSED__,
-                               int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_radial_is_visible(void *data __UNUSED__, void *context __UNUSED__,
-                                void *radial_gradient __UNUSED__,
-                                int x __UNUSED__, int y __UNUSED__,
-                                int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_radial_render_pre(void *data __UNUSED__, void *context __UNUSED__,
-                                void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_render_post(void *data __UNUSED__,
-                                 void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_draw(void *data __UNUSED__, void *context __UNUSED__,
-                          void *surface __UNUSED__,
-                          void *radial_gradient __UNUSED__, int x __UNUSED__,
-                          int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-}
-
-static void *
-eng_gradient_new(void *data __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-   return NULL;
-//   return evas_common_gradient_new();
-}
-
-static void
-eng_gradient_free(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_free(gradient);
-}
-
-static void
-eng_gradient_color_stop_add(void *data __UNUSED__, void *gradient __UNUSED__,
-                            int r __UNUSED__, int g __UNUSED__,
-                            int b __UNUSED__, int a __UNUSED__,
-                            int delta __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data __UNUSED__, void *gradient __UNUSED__,
-                            int a __UNUSED__, int delta __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_alpha_stop_add(gradient, a, delta);
-}
-
-static void
-eng_gradient_color_data_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                            void *map __UNUSED__, int len __UNUSED__,
-                            int has_alpha __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
-}
-
-static void
-eng_gradient_alpha_data_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                            void *alpha_map __UNUSED__, int len __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
-}
-
-static void
-eng_gradient_clear(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_clear(gradient);
-}
-
-static void
-eng_gradient_fill_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                      int x __UNUSED__, int y __UNUSED__, int w __UNUSED__,
-                      int h __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_fill_set(gradient, x, y, w, h);
-}
-
-static void
-eng_gradient_fill_angle_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                            double angle __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_fill_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_fill_spread_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                             int spread __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_fill_spread_set(gradient, spread);
-}
-
-static void
-eng_gradient_angle_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                       double angle __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_map_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_offset_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                        float offset __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_map_offset_set(gradient, offset);
-}
-
-static void
-eng_gradient_direction_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                           int direction __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_map_direction_set(gradient, direction);
-}
-
-static void
-eng_gradient_type_set(void *data __UNUSED__, void *gradient __UNUSED__,
-                      char *name __UNUSED__, char *params __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-//   evas_common_gradient_type_set(gradient, name, params);
-}
-
-static int
-eng_gradient_is_opaque(void *data __UNUSED__, void *context __UNUSED__,
-                       void *gradient __UNUSED__, int x __UNUSED__,
-                       int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-   return 0;
-//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-//   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-//
-//   if (!dc || !gr || !gr->type.geometer)  return 0;
-//   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-//              gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient_is_visible(void *data __UNUSED__, void *context __UNUSED__,
-                        void *gradient __UNUSED__, int x __UNUSED__,
-                        int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-   return 0;
-//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-//
-//   if (!dc || !gradient)  return 0;
-//   return 1;
-}
-
-static void
-eng_gradient_render_pre(void *data __UNUSED__, void *context __UNUSED__,
-                        void *gradient __UNUSED__)
-{
-//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-//   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-//   int  len;
-//
-//   if (!dc || !gr || !gr->type.geometer)  return;
-//   gr->type.geometer->geom_set(gr);
-//   len = gr->type.geometer->get_map_len(gr);
-//   evas_common_gradient_map(dc, gr, len);
-   NOT_IMPLEMENTED();
-}
-
-static void
-eng_gradient_render_post(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-   NOT_IMPLEMENTED();
-}
-
-static void
-eng_gradient_draw(void *data __UNUSED__, void *context __UNUSED__,
-                  void *surface __UNUSED__, void *gradient __UNUSED__,
-                  int x __UNUSED__, int y __UNUSED__, int w __UNUSED__,
-                  int h __UNUSED__)
-{
-//   evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
-//   evas_common_cpu_end_opt();
-   NOT_IMPLEMENTED();
-}
-
 static int
 eng_image_alpha_get(void *data __UNUSED__, void *image)
 {
@@ -1023,49 +707,6 @@ static Evas_Func func = {
    eng_polygon_point_add,
    eng_polygon_points_clear,
    eng_polygon_draw,
-   /* gradient draw funcs */
-   eng_gradient2_color_np_stop_insert,
-   eng_gradient2_clear,
-   eng_gradient2_fill_transform_set,
-   eng_gradient2_fill_spread_set,
-
-   eng_gradient2_linear_new,
-   eng_gradient2_linear_free,
-   eng_gradient2_linear_fill_set,
-   eng_gradient2_linear_is_opaque,
-   eng_gradient2_linear_is_visible,
-   eng_gradient2_linear_render_pre,
-   eng_gradient2_linear_render_post,
-   eng_gradient2_linear_draw,
-
-   eng_gradient2_radial_new,
-   eng_gradient2_radial_free,
-   eng_gradient2_radial_fill_set,
-   eng_gradient2_radial_is_opaque,
-   eng_gradient2_radial_is_visible,
-   eng_gradient2_radial_render_pre,
-   eng_gradient2_radial_render_post,
-   eng_gradient2_radial_draw,
-
-   eng_gradient_new,
-   eng_gradient_free,
-   eng_gradient_color_stop_add,
-   eng_gradient_alpha_stop_add,
-   eng_gradient_color_data_set,
-   eng_gradient_alpha_data_set,
-   eng_gradient_clear,
-   eng_gradient_fill_set,
-   eng_gradient_fill_angle_set,
-   eng_gradient_fill_spread_set,
-   eng_gradient_angle_set,
-   eng_gradient_offset_set,
-   eng_gradient_direction_set,
-   eng_gradient_type_set,
-   eng_gradient_is_opaque,
-   eng_gradient_is_visible,
-   eng_gradient_render_pre,
-   eng_gradient_render_post,
-   eng_gradient_draw,
    /* image draw funcs */
    eng_image_load,
    eng_image_new_from_data,
index e235503..661db18 100644 (file)
@@ -158,7 +158,6 @@ eng_setup(Evas * e, void *in)
         evas_common_convert_init();
         evas_common_scale_init();
         evas_common_rectangle_init();
-        evas_common_gradient_init();
         evas_common_polygon_init();
         evas_common_line_init();
         evas_common_font_init();
index 114f586..8f77a35 100644 (file)
@@ -46,7 +46,6 @@ _output_setup(int  width,
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
index d635147..b30c0ed 100644 (file)
@@ -44,7 +44,6 @@ _output_setup(int          width,
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
index fd8bdb8..1d95cdb 100644 (file)
@@ -212,312 +212,6 @@ eng_polygon_draw(void *data __UNUSED__, void *context, void *surface, void *poly
      }
 }
 
-static void
-eng_gradient2_color_np_stop_insert(void *data __UNUSED__, void *gradient, int r, int g, int b, int a, float pos)
-{
-   evas_common_gradient2_color_np_stop_insert(gradient, r, g, b, a, pos);
-}
-
-static void
-eng_gradient2_clear(void *data __UNUSED__, void *gradient)
-{
-   evas_common_gradient2_clear(gradient);
-}
-
-static void
-eng_gradient2_fill_transform_set(void *data __UNUSED__, void *gradient, void *transform)
-{
-   evas_common_gradient2_fill_transform_set(gradient, transform);
-}
-
-static void
-eng_gradient2_fill_spread_set(void *data __UNUSED__, void *gradient, int spread)
-{
-   evas_common_gradient2_fill_spread_set(gradient, spread);
-}
-
-static void *
-eng_gradient2_linear_new(void *data __UNUSED__)
-{
-   return evas_common_gradient2_linear_new();
-}
-
-static void
-eng_gradient2_linear_free(void *data __UNUSED__, void *linear_gradient)
-{
-   evas_common_gradient2_free(linear_gradient);
-}
-
-static void
-eng_gradient2_linear_fill_set(void *data __UNUSED__, void *linear_gradient, float x0, float y0, float x1, float y1)
-{
-   evas_common_gradient2_linear_fill_set(linear_gradient, x0, y0, x1, y1);
-}
-
-static int
-eng_gradient2_linear_is_opaque(void *data __UNUSED__, void *context, void *linear_gradient, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)linear_gradient;
-
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-              gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient2_linear_is_visible(void *data __UNUSED__, void *context, void *linear_gradient, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-
-   if (!dc || !linear_gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient2_linear_render_pre(void *data __UNUSED__, void *context, void *linear_gradient)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)linear_gradient;
-   int  len;
-
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_update(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient2_map(dc, gr, len);
-}
-
-static void
-eng_gradient2_linear_render_post(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_draw(void *data __UNUSED__, void *context, void *surface, void *linear_gradient, int x, int y, int w, int h)
-{
-#ifdef BUILD_PIPE_RENDER
-   if ((cpunum > 1)
-#ifdef EVAS_FRAME_QUEUING
-        && evas_common_frameq_enabled()
-#endif
-        )
-     evas_common_pipe_grad2_draw(surface, context, x, y, w, h, linear_gradient);
-   else
-#endif
-     evas_common_gradient2_draw(surface, context, x, y, w, h, linear_gradient);
-}
-
-static void *
-eng_gradient2_radial_new(void *data __UNUSED__)
-{
-   return evas_common_gradient2_radial_new();
-}
-
-static void
-eng_gradient2_radial_free(void *data __UNUSED__, void *radial_gradient)
-{
-   evas_common_gradient2_free(radial_gradient);
-}
-
-static void
-eng_gradient2_radial_fill_set(void *data __UNUSED__, void *radial_gradient, float cx, float cy, float rx, float ry)
-{
-   evas_common_gradient2_radial_fill_set(radial_gradient, cx, cy, rx, ry);
-}
-
-static int
-eng_gradient2_radial_is_opaque(void *data __UNUSED__, void *context, void *radial_gradient, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)radial_gradient;
-
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-              gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient2_radial_is_visible(void *data __UNUSED__, void *context, void *radial_gradient, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-
-   if (!dc || !radial_gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient2_radial_render_pre(void *data __UNUSED__, void *context, void *radial_gradient)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient2 *gr = (RGBA_Gradient2 *)radial_gradient;
-   int  len;
-
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_update(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient2_map(dc, gr, len);
-}
-
-static void
-eng_gradient2_radial_render_post(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_draw(void *data __UNUSED__, void *context, void *surface, void *radial_gradient, int x, int y, int w, int h)
-{
-#ifdef BUILD_PIPE_RENDER
-   if ((cpunum > 1)
-#ifdef EVAS_FRAME_QUEUING
-        && evas_common_frameq_enabled()
-#endif
-        )
-     evas_common_pipe_grad2_draw(surface, context, x, y, w, h, radial_gradient);
-   else
-#endif
-     evas_common_gradient2_draw(surface, context, x, y, w, h, radial_gradient);
-}
-
-static void *
-eng_gradient_new(void *data __UNUSED__)
-{
-   return evas_common_gradient_new();
-}
-
-static void
-eng_gradient_free(void *data __UNUSED__, void *gradient)
-{
-   evas_common_gradient_free(gradient);
-}
-
-static void
-eng_gradient_color_stop_add(void *data __UNUSED__, void *gradient, int r, int g, int b, int a, int delta)
-{
-   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data __UNUSED__, void *gradient, int a, int delta)
-{
-   evas_common_gradient_alpha_stop_add(gradient, a, delta);
-}
-
-static void
-eng_gradient_color_data_set(void *data __UNUSED__, void *gradient, void *map, int len, int has_alpha)
-{
-   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
-}
-
-static void
-eng_gradient_alpha_data_set(void *data __UNUSED__, void *gradient, void *alpha_map, int len)
-{
-   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
-}
-
-static void
-eng_gradient_clear(void *data __UNUSED__, void *gradient)
-{
-   evas_common_gradient_clear(gradient);
-}
-
-static void
-eng_gradient_fill_set(void *data __UNUSED__, void *gradient, int x, int y, int w, int h)
-{
-   evas_common_gradient_fill_set(gradient, x, y, w, h);
-}
-
-static void
-eng_gradient_fill_angle_set(void *data __UNUSED__, void *gradient, double angle)
-{
-   evas_common_gradient_fill_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_fill_spread_set(void *data __UNUSED__, void *gradient, int spread)
-{
-   evas_common_gradient_fill_spread_set(gradient, spread);
-}
-
-static void
-eng_gradient_angle_set(void *data __UNUSED__, void *gradient, double angle)
-{
-   evas_common_gradient_map_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_offset_set(void *data __UNUSED__, void *gradient, float offset)
-{
-   evas_common_gradient_map_offset_set(gradient, offset);
-}
-
-static void
-eng_gradient_direction_set(void *data __UNUSED__, void *gradient, int direction)
-{
-   evas_common_gradient_map_direction_set(gradient, direction);
-}
-
-static void
-eng_gradient_type_set(void *data __UNUSED__, void *gradient, char *name, char *params)
-{
-   evas_common_gradient_type_set(gradient, name, params);
-}
-
-static int
-eng_gradient_is_opaque(void *data __UNUSED__, void *context, void *gradient, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-
-   if (!dc || !gr || !gr->type.geometer)  return 0;
-   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
-              gr->type.geometer->has_mask(gr, dc->render_op));
-}
-
-static int
-eng_gradient_is_visible(void *data __UNUSED__, void *context, void *gradient, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-
-   if (!dc || !gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient_render_pre(void *data __UNUSED__, void *context, void *gradient)
-{
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
-   int  len;
-
-   if (!dc || !gr || !gr->type.geometer)  return;
-   gr->type.geometer->geom_set(gr);
-   len = gr->type.geometer->get_map_len(gr);
-   evas_common_gradient_map(dc, gr, len);
-}
-
-static void
-eng_gradient_render_post(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient_draw(void *data __UNUSED__, void *context, void *surface, void *gradient, int x, int y, int w, int h)
-{
-#ifdef BUILD_PIPE_RENDER
-   if ((cpunum > 1)
-#ifdef EVAS_FRAME_QUEUING
-        && evas_common_frameq_enabled()
-#endif
-        )
-     evas_common_pipe_grad_draw(surface, context, x, y, w, h, gradient);
-   else
-#endif   
-     {
-       evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
-       evas_common_cpu_end_opt();
-     }
-}
-
 static int
 eng_image_alpha_get(void *data __UNUSED__, void *image)
 {
@@ -1138,49 +832,6 @@ static Evas_Func func =
      eng_polygon_point_add,
      eng_polygon_points_clear,
      eng_polygon_draw,
-     /* gradient draw funcs */
-     eng_gradient2_color_np_stop_insert,
-     eng_gradient2_clear,
-     eng_gradient2_fill_transform_set,
-     eng_gradient2_fill_spread_set,
-
-     eng_gradient2_linear_new,
-     eng_gradient2_linear_free,
-     eng_gradient2_linear_fill_set,
-     eng_gradient2_linear_is_opaque,
-     eng_gradient2_linear_is_visible,
-     eng_gradient2_linear_render_pre,
-     eng_gradient2_linear_render_post,
-     eng_gradient2_linear_draw,
-
-     eng_gradient2_radial_new,
-     eng_gradient2_radial_free,
-     eng_gradient2_radial_fill_set,
-     eng_gradient2_radial_is_opaque,
-     eng_gradient2_radial_is_visible,
-     eng_gradient2_radial_render_pre,
-     eng_gradient2_radial_render_post,
-     eng_gradient2_radial_draw,
-
-     eng_gradient_new,
-     eng_gradient_free,
-     eng_gradient_color_stop_add,
-     eng_gradient_alpha_stop_add,
-     eng_gradient_color_data_set,
-     eng_gradient_alpha_data_set,
-     eng_gradient_clear,
-     eng_gradient_fill_set,
-     eng_gradient_fill_angle_set,
-     eng_gradient_fill_spread_set,
-     eng_gradient_angle_set,
-     eng_gradient_offset_set,
-     eng_gradient_direction_set,
-     eng_gradient_type_set,
-     eng_gradient_is_opaque,
-     eng_gradient_is_visible,
-     eng_gradient_render_pre,
-     eng_gradient_render_post,
-     eng_gradient_draw,
      /* image draw funcs */
      eng_image_load,
      eng_image_new_from_data,
index bee5a80..a30cb7c 100644 (file)
@@ -53,7 +53,6 @@ _output_setup(int w, int h, int rot, QWidget *target)
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
index bc3577c..bcaa3c9 100644 (file)
@@ -857,26 +857,6 @@ evas_engine_sdl_polygon_draw(void *data __UNUSED__, void *context, void *surface
      SDL_UnlockSurface(eim->surface);
 }
 
-static void
-evas_engine_sdl_gradient_draw(void *data __UNUSED__, void *context, void *surface, void *gradient, int x, int y, int w, int h)
-{
-   SDL_Engine_Image_Entry       *eim = surface;
-   int                           mustlock_im = 0;
-
-   if (eim->surface && SDL_MUSTLOCK(eim->surface))
-     {
-        mustlock_im = 1;
-       SDL_LockSurface(eim->surface);
-       _SDL_UPDATE_PIXELS(eim);
-     }
-
-   evas_common_gradient_draw((RGBA_Image *) eim->cache_entry.src, context, x, y, w, h, gradient);
-   evas_common_cpu_end_opt();
-
-   if (mustlock_im)
-     SDL_UnlockSurface(eim->surface);
-}
-
 static int module_open(Evas_Module *em)
 {
    if (!em) return 0;
@@ -935,11 +915,10 @@ static int module_open(Evas_Module *em)
    ORD(line_draw);
    ORD(rectangle_draw);
    ORD(polygon_draw);
-   ORD(gradient_draw);
-   
+
    ORD(image_scale_hint_set);
    ORD(image_scale_hint_get);
-   
+
    /* now advertise out own api */
    em->functions = (void *)(&func);
    return 1;
@@ -982,7 +961,6 @@ _sdl_output_setup           (int w, int h, int fullscreen, int noframe, int alpha, int hw
    evas_common_convert_init();
    evas_common_scale_init();
    evas_common_rectangle_init();
-   evas_common_gradient_init();
    evas_common_polygon_init();
    evas_common_line_init();
    evas_common_font_init();
index 0812e4c..bc1d8ca 100644 (file)
@@ -475,7 +475,6 @@ eng_setup(Evas *e, void *in)
         evas_common_convert_init();
         evas_common_scale_init();
         evas_common_rectangle_init();
-        evas_common_gradient_init();
         evas_common_polygon_init();
         evas_common_line_init();
         evas_common_font_init();
index 54ba3c0..74df4bd 100644 (file)
@@ -15,7 +15,6 @@ if BUILD_ENGINE_XRENDER_X11
 
 XRENDER_X11_SOURCES = \
 evas_engine_xlib_font.c \
-evas_engine_xlib_gradient.c \
 evas_engine_xlib_image.c \
 evas_engine_xlib_render.c \
 evas_engine_xlib_ximage.c \
@@ -25,7 +24,6 @@ if BUILD_ENGINE_XRENDER_XCB
 
 XRENDER_X11_SOURCES += \
 evas_engine_xcb_font.c \
-evas_engine_xcb_gradient.c \
 evas_engine_xcb_image.c \
 evas_engine_xcb_render.c \
 evas_engine_xcb_ximage.c
index b24b394..697689b 100644 (file)
@@ -99,22 +99,6 @@ struct _Render_Engine
    void (*font_surface_free)(XR_Font_Surface *fs);
    void (*font_surface_draw)(Ximage_Info *xinf, RGBA_Image *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y);
 
-   XR_Gradient *(*gradient_new)(Ximage_Info *xinf);
-   void (*gradient_free)(XR_Gradient *gr);
-   void (*gradient_color_stop_add)(XR_Gradient *gr, int r, int g, int b, int a, int delta);
-   void (*gradient_alpha_stop_add)(XR_Gradient *gr, int a, int delta);
-   void (*gradient_color_data_set)(XR_Gradient *gr, void *map, int len, int has_alpha);
-   void (*gradient_alpha_data_set)(XR_Gradient *gr, void *alpha_map, int len);
-   void (*gradient_clear)(XR_Gradient *gr);
-   void (*gradient_fill_set)(XR_Gradient *gr, int x, int y, int w, int h);
-   void (*gradient_fill_angle_set)(XR_Gradient *gr, double angle);
-   void (*gradient_fill_spread_set)(XR_Gradient *gr, int spread);
-   void (*gradient_angle_set)(XR_Gradient *gr, double angle);
-   void (*gradient_offset_set)(XR_Gradient *gr, float offset);
-   void (*gradient_direction_set)(XR_Gradient *gr, int direction);
-   void (*gradient_type_set)(XR_Gradient *gr, char *name, char *params);
-   void (*gradient_draw)(Xrender_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h);
-
    XR_Image *(*image_load)(Ximage_Info *xinf, const char *file, const char *key, Evas_Image_Load_Opts *lo, int *error);
    XR_Image *(*image_new_from_data)(Ximage_Info *xinf, int w, int h, void *data, int alpha, int cspace);
    XR_Image *(*image_new_from_copied_data)(Ximage_Info *xinf, int w, int h, void *data, int alpha, int cspace);
@@ -213,22 +197,6 @@ _output_xlib_setup(int           width,
    re->font_surface_free = _xre_xlib_font_surface_free;
    re->font_surface_draw = _xre_xlib_font_surface_draw;
 
-   re->gradient_new = _xre_xlib_gradient_new;
-   re->gradient_free = _xre_xlib_gradient_free;
-   re->gradient_color_stop_add = _xre_xlib_gradient_color_stop_add;
-   re->gradient_alpha_stop_add = _xre_xlib_gradient_alpha_stop_add;
-   re->gradient_color_data_set = _xre_xlib_gradient_color_data_set;
-   re->gradient_alpha_data_set = _xre_xlib_gradient_alpha_data_set;
-   re->gradient_clear = _xre_xlib_gradient_clear;
-   re->gradient_fill_set = _xre_xlib_gradient_fill_set;
-   re->gradient_fill_angle_set = _xre_xlib_gradient_fill_angle_set;
-   re->gradient_fill_spread_set = _xre_xlib_gradient_fill_spread_set;
-   re->gradient_angle_set = _xre_xlib_gradient_angle_set;
-   re->gradient_offset_set = _xre_xlib_gradient_offset_set;
-   re->gradient_direction_set = _xre_xlib_gradient_direction_set;
-   re->gradient_type_set = _xre_xlib_gradient_type_set;
-   re->gradient_draw = _xre_xlib_gradient_draw;
-
    re->image_load = _xre_xlib_image_load;
    re->image_new_from_data = _xre_xlib_image_new_from_data;
    re->image_new_from_copied_data = _xre_xlib_image_new_from_copied_data;
@@ -391,22 +359,6 @@ _output_xcb_setup(int           width,
    re->font_surface_free = _xre_xcb_font_surface_free;
    re->font_surface_draw = _xre_xcb_font_surface_draw;
 
-   re->gradient_new = _xre_xcb_gradient_new;
-   re->gradient_free = _xre_xcb_gradient_free;
-   re->gradient_color_stop_add = _xre_xcb_gradient_color_stop_add;
-   re->gradient_alpha_stop_add = _xre_xcb_gradient_alpha_stop_add;
-   re->gradient_color_data_set = _xre_xcb_gradient_color_data_set;
-   re->gradient_alpha_data_set = _xre_xcb_gradient_alpha_data_set;
-   re->gradient_clear = _xre_xcb_gradient_clear;
-   re->gradient_fill_set = _xre_xcb_gradient_fill_set;
-   re->gradient_fill_angle_set = _xre_xcb_gradient_fill_angle_set;
-   re->gradient_fill_spread_set = _xre_xcb_gradient_fill_spread_set;
-   re->gradient_angle_set = _xre_xcb_gradient_angle_set;
-   re->gradient_offset_set = _xre_xcb_gradient_offset_set;
-   re->gradient_direction_set = _xre_xcb_gradient_direction_set;
-   re->gradient_type_set = _xre_xcb_gradient_type_set;
-   re->gradient_draw = _xre_xcb_gradient_draw;
-
    re->image_load = _xre_xcb_image_load;
    re->image_new_from_data = _xre_xcb_image_new_from_data;
    re->image_new_from_copied_data = _xre_xcb_image_new_from_copied_data;
@@ -490,7 +442,6 @@ eng_setup(Evas *e, void *in)
        evas_common_convert_init();
        evas_common_scale_init();
        evas_common_rectangle_init();
-       evas_common_gradient_init();
        evas_common_polygon_init();
        evas_common_line_init();
        evas_common_font_init();
@@ -789,272 +740,6 @@ eng_polygon_draw(void *data, void *context, void *surface, void *polygon, int x,
    re->render_surface_polygon_draw((Xrender_Surface *)surface, (RGBA_Draw_Context *)context, (RGBA_Polygon_Point *)polygon, x, y);
 }
 
-
-static void
-eng_gradient2_color_np_stop_insert(void *data __UNUSED__, void *gradient __UNUSED__, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__, float pos __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_clear(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_fill_transform_set(void *data __UNUSED__, void *gradient __UNUSED__, void *transform __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_fill_spread_set(void *data __UNUSED__, void *gradient __UNUSED__, int spread __UNUSED__)
-{
-}
-
-static void *
-eng_gradient2_linear_new(void *data __UNUSED__)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_linear_free(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_fill_set(void *data __UNUSED__, void *linear_gradient __UNUSED__, float x0 __UNUSED__, float y0 __UNUSED__, float x1 __UNUSED__, float y1 __UNUSED__)
-{
-}
-
-static int
-eng_gradient2_linear_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_linear_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_linear_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_render_post(void *data __UNUSED__, void *linear_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_linear_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *linear_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-}
-
-static void *
-eng_gradient2_radial_new(void *data __UNUSED__)
-{
-   return NULL;
-}
-
-static void
-eng_gradient2_radial_free(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_fill_set(void *data __UNUSED__, void *radial_gradient __UNUSED__, float cx __UNUSED__, float cy __UNUSED__, float rx __UNUSED__, float ry __UNUSED__)
-{
-}
-
-static int
-eng_gradient2_radial_is_opaque(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static int
-eng_gradient2_radial_is_visible(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   return 1;
-}
-
-static void
-eng_gradient2_radial_render_pre(void *data __UNUSED__, void *context __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_render_post(void *data __UNUSED__, void *radial_gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient2_radial_draw(void *data __UNUSED__, void *context __UNUSED__, void *surface __UNUSED__, void *radial_gradient __UNUSED__, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-}
-
-static void *
-eng_gradient_new(void *data)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   return re->gradient_new(re->xinf);
-}
-
-static void
-eng_gradient_free(void *data, void *gradient)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_free(gradient);
-}
-
-static void
-eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_color_stop_add(gradient, r, g, b, a, delta);
-}
-
-static void
-eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_alpha_stop_add(gradient, a, delta);
-}
-
-static void
-eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_color_data_set(gradient, map, len, has_alpha);
-}
-
-static void
-eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_alpha_data_set(gradient, alpha_map, len);
-}
-
-static void
-eng_gradient_clear(void *data, void *gradient)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_clear(gradient);
-}
-
-static void
-eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_fill_set(gradient, x, y, w, h);
-}
-
-static void
-eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_fill_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_fill_spread_set(gradient, spread);
-}
-
-static void
-eng_gradient_angle_set(void *data, void *gradient, double angle)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_angle_set(gradient, angle);
-}
-
-static void
-eng_gradient_offset_set(void *data, void *gradient, float offset)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_offset_set(gradient, offset);
-}
-
-static void
-eng_gradient_direction_set(void *data, void *gradient, int direction)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_direction_set(gradient, direction);
-}
-
-static void
-eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_type_set(gradient, name, params);
-}
-
-static int
-eng_gradient_is_opaque(void *data __UNUSED__, void *context, void *gradient, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   RGBA_Gradient  *grad;
-   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
-
-   if (!dc || !gradient) return 0;
-   grad = ((XR_Gradient *)gradient)->grad;
-   if(!grad || !grad->type.geometer)  return 0;
-   return !(grad->type.geometer->has_alpha(grad, dc->render_op) |
-              grad->type.geometer->has_mask(grad, dc->render_op));
-}
-
-static int
-eng_gradient_is_visible(void *data __UNUSED__, void *context, void *gradient, int x __UNUSED__, int y __UNUSED__, int w __UNUSED__, int h __UNUSED__)
-{
-   if (!context || !gradient)  return 0;
-   return 1;
-}
-
-static void
-eng_gradient_render_pre(void *data __UNUSED__, void *context, void *gradient)
-{
-   int  len;
-   RGBA_Gradient  *grad;
-
-   if (!context || !gradient) return;
-   grad = ((XR_Gradient *)gradient)->grad;
-   if(!grad || !grad->type.geometer)  return;
-   grad->type.geometer->geom_set(grad);
-   len = grad->type.geometer->get_map_len(grad);
-   evas_common_gradient_map(context, grad, len);
-}
-
-static void
-eng_gradient_render_post(void *data __UNUSED__, void *gradient __UNUSED__)
-{
-}
-
-static void
-eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
-{
-   Render_Engine *re = (Render_Engine *)data;
-
-   re->gradient_draw(surface, context, gradient, x, y, w, h);
-}
-
 static int
 eng_image_alpha_get(void *data, void *image)
 {
@@ -1572,46 +1257,6 @@ module_open(Evas_Module *em)
    ORD(line_draw);
    ORD(polygon_draw);
 
-   ORD(gradient2_color_np_stop_insert);
-   ORD(gradient2_clear);
-   ORD(gradient2_fill_transform_set);
-   ORD(gradient2_fill_spread_set);
-   ORD(gradient2_linear_new);
-   ORD(gradient2_linear_free);
-   ORD(gradient2_linear_fill_set);
-   ORD(gradient2_linear_is_opaque);
-   ORD(gradient2_linear_is_visible);
-   ORD(gradient2_linear_render_pre);
-   ORD(gradient2_linear_render_post);
-   ORD(gradient2_linear_draw);
-   ORD(gradient2_radial_new);
-   ORD(gradient2_radial_free);
-   ORD(gradient2_radial_fill_set);
-   ORD(gradient2_radial_is_opaque);
-   ORD(gradient2_radial_is_visible);
-   ORD(gradient2_radial_render_pre);
-   ORD(gradient2_radial_render_post);
-   ORD(gradient2_radial_draw);
-
-   ORD(gradient_new);
-   ORD(gradient_free);
-   ORD(gradient_color_stop_add);
-   ORD(gradient_alpha_stop_add);
-   ORD(gradient_color_data_set);
-   ORD(gradient_alpha_data_set);
-   ORD(gradient_clear);
-   ORD(gradient_fill_set);
-   ORD(gradient_fill_angle_set);
-   ORD(gradient_fill_spread_set);
-   ORD(gradient_angle_set);
-   ORD(gradient_offset_set);
-   ORD(gradient_direction_set);
-   ORD(gradient_type_set);
-   ORD(gradient_is_opaque);
-   ORD(gradient_is_visible);
-   ORD(gradient_render_pre);
-   ORD(gradient_render_post);
-   ORD(gradient_draw);
    ORD(image_load);
    ORD(image_new_from_data);
    ORD(image_new_from_copied_data);
index d5bea6e..d58e547 100644 (file)
@@ -261,49 +261,4 @@ void             _xre_xcb_font_surface_free(XR_Font_Surface *fs);
 void             _xre_xcb_font_surface_draw(Ximage_Info *xinf, RGBA_Image *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y);
 #endif
 
-typedef struct _XR_Gradient XR_Gradient;
-
-struct _XR_Gradient
-{
-   Ximage_Info     *xinf;
-   Xrender_Surface *surface;
-   RGBA_Gradient   *grad;
-   unsigned char    changed : 1;
-   int              sw, sh;
-};
-
-XR_Gradient *_xre_xlib_gradient_new(Ximage_Info *xinf);
-void         _xre_xlib_gradient_free(XR_Gradient *gr);
-void         _xre_xlib_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta);
-void         _xre_xlib_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta);
-void         _xre_xlib_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha);
-void         _xre_xlib_gradient_alpha_data_set(XR_Gradient *gr, void *alpha_map, int len);
-void         _xre_xlib_gradient_clear(XR_Gradient *gr);
-void         _xre_xlib_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h);
-void         _xre_xlib_gradient_fill_angle_set(XR_Gradient *gr, double angle);
-void         _xre_xlib_gradient_fill_spread_set(XR_Gradient *gr, int spread);
-void         _xre_xlib_gradient_angle_set(XR_Gradient *gr, double angle);
-void         _xre_xlib_gradient_offset_set(XR_Gradient *gr, float offset);
-void         _xre_xlib_gradient_direction_set(XR_Gradient *gr, int direction);
-void         _xre_xlib_gradient_type_set(XR_Gradient *gr, char *name, char *params);
-void         _xre_xlib_gradient_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h);
-
-#ifdef BUILD_ENGINE_XRENDER_XCB
-XR_Gradient *_xre_xcb_gradient_new(Ximage_Info *xinf);
-void         _xre_xcb_gradient_free(XR_Gradient *gr);
-void         _xre_xcb_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta);
-void         _xre_xcb_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta);
-void         _xre_xcb_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha);
-void         _xre_xcb_gradient_alpha_data_set(XR_Gradient *gr, void *alpha_map, int len);
-void         _xre_xcb_gradient_clear(XR_Gradient *gr);
-void         _xre_xcb_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h);
-void         _xre_xcb_gradient_fill_angle_set(XR_Gradient *gr, double angle);
-void         _xre_xcb_gradient_fill_spread_set(XR_Gradient *gr, int spread);
-void         _xre_xcb_gradient_angle_set(XR_Gradient *gr, double angle);
-void         _xre_xcb_gradient_offset_set(XR_Gradient *gr, float offset);
-void         _xre_xcb_gradient_direction_set(XR_Gradient *gr, int direction);
-void         _xre_xcb_gradient_type_set(XR_Gradient *gr, char *name, char *params);
-void         _xre_xcb_gradient_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h);
-#endif
-
 #endif
diff --git a/src/modules/engines/xrender_x11/evas_engine_xcb_gradient.c b/src/modules/engines/xrender_x11/evas_engine_xcb_gradient.c
deleted file mode 100644 (file)
index f9abe77..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-#include "evas_common.h"
-#include "evas_private.h"
-#include "evas_engine.h"
-#include "Evas_Engine_XRender_X11.h"
-#include <math.h>
-
-XR_Gradient *
-_xre_xcb_gradient_new(Ximage_Info *xinf)
-{
-   XR_Gradient  *gr;
-
-   if (!xinf) return NULL;
-   gr = calloc(1, sizeof(XR_Gradient));
-   if (!gr) return NULL;
-   gr->grad = evas_common_gradient_new();
-   if (!gr->grad)
-     {
-       free(gr);
-       return NULL;
-     }
-   gr->xinf = xinf;
-   gr->xinf->references++;
-   gr->changed = 1;
-   return gr;
-}
-
-void
-_xre_xcb_gradient_free(XR_Gradient *gr)
-{
-   if (!gr) return;
-   if (gr->grad)
-       evas_common_gradient_free(gr->grad);
-   if (gr->surface)
-       _xr_xcb_render_surface_free(gr->surface);
-   _xr_xcb_image_info_free(gr->xinf);
-   free(gr);
-}
-
-void
-_xre_xcb_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta)
-{
-   if (!gr) return;
-   evas_common_gradient_color_stop_add(gr->grad, r, g, b, a, delta);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta)
-{
-   if (!gr) return;
-   evas_common_gradient_alpha_stop_add(gr->grad, a, delta);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_clear(XR_Gradient *gr)
-{
-   if (!gr) return;
-   evas_common_gradient_clear(gr->grad);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha)
-{
-   evas_common_gradient_color_data_set(gr->grad, map, len, has_alpha);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_alpha_data_set(XR_Gradient *gr, void *amap, int len)
-{
-   evas_common_gradient_alpha_data_set(gr->grad, amap, len);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_set(gr->grad, x, y, w, h);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_fill_angle_set(XR_Gradient *gr, double angle)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_angle_set(gr->grad, angle);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_fill_spread_set(XR_Gradient *gr, int spread)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_spread_set(gr->grad, spread);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_angle_set(XR_Gradient *gr, double angle)
-{
-   if (!gr) return;
-   evas_common_gradient_map_angle_set(gr->grad, angle);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_offset_set(XR_Gradient *gr, float offset)
-{
-   if (!gr) return;
-   evas_common_gradient_map_offset_set(gr->grad, offset);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_direction_set(XR_Gradient *gr, int direction)
-{
-   if (!gr) return;
-   evas_common_gradient_map_direction_set(gr->grad, direction);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_type_set(XR_Gradient *gr, char *name, char *params)
-{
-   if (!gr) return;
-   evas_common_gradient_type_set(gr->grad, name, params);
-   gr->changed = 1;
-}
-
-void
-_xre_xcb_gradient_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h)
-{
-   int alpha = 0;
-
-   if ((w < 1) || (h < 1)) return;
-   if (!rs || !dc || !gr) return;
-   if (!gr->xinf || !gr->grad || !gr->grad->type.geometer) return;
-
-   if (gr->grad->type.geometer->has_alpha(gr->grad, dc->render_op) ||
-       gr->grad->type.geometer->has_mask(gr->grad, dc->render_op))
-       alpha = 1;
-   if (((gr->sw != w) || (gr->sh != h)) && gr->surface)
-     {
-       _xr_xcb_render_surface_free(gr->surface);
-       gr->surface = NULL;
-       gr->changed = 1;
-     }
-   if (!gr->surface)
-     {
-       gr->surface = _xr_xcb_render_surface_new(gr->xinf, w, h, gr->xinf->x11.fmt32, 1);
-       if (!gr->surface) return;
-       gr->changed = 1;
-     }
-   if (gr->changed)
-     {
-       int op = dc->render_op, cuse = dc->clip.use;
-       RGBA_Image  *im;
-       Ximage_Image  *xim;
-
-       xim = _xr_xcb_image_new(gr->xinf, w, h, gr->surface->depth);
-       if (!xim)
-         {
-           _xr_xcb_render_surface_free(gr->surface);
-           gr->surface = NULL;
-           return;
-         }
-
-        im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
-                                                  w, h,
-                                                  (DATA32 *)xim->data,
-                                                  1, EVAS_COLORSPACE_ARGB8888);
-       if (!im)
-         {
-           _xr_xcb_render_surface_free(gr->surface);
-           gr->surface = NULL;
-           return;
-         }
-
-       dc->render_op = _EVAS_RENDER_FILL;
-       dc->clip.use = 0;
-       evas_common_gradient_draw(im, dc, 0, 0, w, h, gr->grad);
-       if
-#ifdef WORDS_BIGENDIAN
-          (xim->x11.xcb.xim->byte_order == XCB_IMAGE_ORDER_LSB_FIRST)
-#else
-          (xim->x11.xcb.xim->byte_order == XCB_IMAGE_ORDER_MSB_FIRST)
-#endif
-         {
-            DATA32  *p = im->image.data, *pe = p + (w * h);
-            while (p < pe)
-              {
-                 *p = (*p << 24) + ((*p << 8) & 0xff0000) + ((*p >> 8) & 0xff00) + (*p >> 24);
-                 p++;
-              }
-         }
-       _xr_xcb_image_put(xim, gr->surface->x11.xcb.draw, 0, 0, w, h);
-        evas_cache_image_drop(&im->cache_entry);
-       dc->render_op = op;
-       dc->clip.use = cuse;
-     }
-   gr->surface->alpha = alpha;
-   _xr_xcb_render_surface_composite(gr->surface, rs, dc, 0, 0, gr->surface->width, gr->surface->height, x, y, w, h, 0);
-   gr->changed = 0;
-   gr->sw = w;  gr->sh = h;
-}
diff --git a/src/modules/engines/xrender_x11/evas_engine_xlib_gradient.c b/src/modules/engines/xrender_x11/evas_engine_xlib_gradient.c
deleted file mode 100644 (file)
index 5c7094c..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-#include "evas_common.h"
-#include "evas_private.h"
-#include "evas_engine.h"
-#include "Evas_Engine_XRender_X11.h"
-#include <math.h>
-
-XR_Gradient *
-_xre_xlib_gradient_new(Ximage_Info *xinf)
-{
-   XR_Gradient  *gr;
-
-   if (!xinf) return NULL;
-   gr = calloc(1, sizeof(XR_Gradient));
-   if (!gr) return NULL;
-   gr->grad = evas_common_gradient_new();
-   if (!gr->grad)
-     {
-       free(gr);
-       return NULL;
-     }
-   gr->xinf = xinf;
-   gr->xinf->references++;
-   gr->changed = 1;
-   return gr;
-}
-
-void
-_xre_xlib_gradient_free(XR_Gradient *gr)
-{
-   if (!gr) return;
-   if (gr->grad)
-       evas_common_gradient_free(gr->grad);
-   if (gr->surface)
-       _xr_xlib_render_surface_free(gr->surface);
-   _xr_xlib_image_info_free(gr->xinf);
-   free(gr);
-}
-
-void
-_xre_xlib_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta)
-{
-   if (!gr) return;
-   evas_common_gradient_color_stop_add(gr->grad, r, g, b, a, delta);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta)
-{
-   if (!gr) return;
-   evas_common_gradient_alpha_stop_add(gr->grad, a, delta);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_clear(XR_Gradient *gr)
-{
-   if (!gr) return;
-   evas_common_gradient_clear(gr->grad);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha)
-{
-   evas_common_gradient_color_data_set(gr->grad, map, len, has_alpha);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_alpha_data_set(XR_Gradient *gr, void *amap, int len)
-{
-   evas_common_gradient_alpha_data_set(gr->grad, amap, len);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_set(gr->grad, x, y, w, h);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_fill_angle_set(XR_Gradient *gr, double angle)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_angle_set(gr->grad, angle);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_fill_spread_set(XR_Gradient *gr, int spread)
-{
-   if (!gr) return;
-   evas_common_gradient_fill_spread_set(gr->grad, spread);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_angle_set(XR_Gradient *gr, double angle)
-{
-   if (!gr) return;
-   evas_common_gradient_map_angle_set(gr->grad, angle);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_offset_set(XR_Gradient *gr, float offset)
-{
-   if (!gr) return;
-   evas_common_gradient_map_offset_set(gr->grad, offset);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_direction_set(XR_Gradient *gr, int direction)
-{
-   if (!gr) return;
-   evas_common_gradient_map_direction_set(gr->grad, direction);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_type_set(XR_Gradient *gr, char *name, char *params)
-{
-   if (!gr) return;
-   evas_common_gradient_type_set(gr->grad, name, params);
-   gr->changed = 1;
-}
-
-void
-_xre_xlib_gradient_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h)
-{
-   int alpha = 0;
-
-   if ((w < 1) || (h < 1)) return;
-   if (!rs || !dc || !gr) return;
-   if (!gr->xinf || !gr->grad || !gr->grad->type.geometer) return;
-
-   if (gr->grad->type.geometer->has_alpha(gr->grad, dc->render_op) ||
-       gr->grad->type.geometer->has_mask(gr->grad, dc->render_op))
-       alpha = 1;
-   if (((gr->sw != w) || (gr->sh != h)) && gr->surface)
-     {
-       _xr_xlib_render_surface_free(gr->surface);
-       gr->surface = NULL;
-       gr->changed = 1;
-     }
-   if (!gr->surface)
-     {
-       gr->surface = _xr_xlib_render_surface_new(gr->xinf, w, h, gr->xinf->x11.fmt32, 1);
-       if (!gr->surface) return;
-       gr->changed = 1;
-     }
-   if (gr->changed)
-     {
-       int op = dc->render_op, cuse = dc->clip.use;
-       RGBA_Image    *im;
-       Ximage_Image  *xim;
-
-       xim = _xr_xlib_image_new(gr->xinf, w, h, gr->surface->depth);
-       if (!xim)
-         {
-           _xr_xlib_render_surface_free(gr->surface);
-           gr->surface = NULL;
-           return;
-         }
-
-        im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
-                                                  w, h,
-                                                  (DATA32 *)xim->data,
-                                                  1, EVAS_COLORSPACE_ARGB8888);
-       if (!im)
-         {
-             /* FIXME: xim is leaking. */
-           _xr_xlib_render_surface_free(gr->surface);
-           gr->surface = NULL;
-           return;
-         }
-
-       dc->render_op = _EVAS_RENDER_FILL;
-       dc->clip.use = 0;
-       evas_common_gradient_draw(im, dc, 0, 0, w, h, gr->grad);
-       if
-#ifdef WORDS_BIGENDIAN
-          (xim->x11.xlib.xim->byte_order == LSBFirst)
-#else
-          (xim->x11.xlib.xim->byte_order == MSBFirst)
-#endif
-         {
-            DATA32  *p = im->image.data, *pe = p + (w * h);
-            while (p < pe)
-              {
-                 *p = (*p << 24) + ((*p << 8) & 0xff0000) + ((*p >> 8) & 0xff00) + (*p >> 24);
-                 p++;
-              }
-         }
-       _xr_xlib_image_put(xim, gr->surface->x11.xlib.draw, 0, 0, w, h);
-       evas_cache_image_drop(&im->cache_entry);
-       dc->render_op = op;
-       dc->clip.use = cuse;
-     }
-   gr->surface->alpha = alpha;
-   _xr_xlib_render_surface_composite(gr->surface, rs, dc, 0, 0, gr->surface->width, gr->surface->height, x, y, w, h, 0);
-   gr->changed = 0;
-   gr->sw = w;  gr->sh = h;
-}