ector: removed cairo backend.
authorHermet Park <hermetpark@gmail.com>
Wed, 11 Sep 2019 04:12:08 +0000 (13:12 +0900)
committerYeongjong Lee <yj34.lee@samsung.com>
Mon, 16 Sep 2019 01:23:00 +0000 (10:23 +0900)
For reducing maintainability burden,
We drop supporting cairo backend.

The default backend is to software implementation from now.
It's well maintained so far and works good.x

22 files changed:
src/examples/evas/evas-vg-json.c
src/lib/ector/Ector.h
src/lib/ector/cairo/Ector_Cairo.h [deleted file]
src/lib/ector/cairo/ector_cairo_private.h [deleted file]
src/lib/ector/cairo/ector_cairo_software_surface.c [deleted file]
src/lib/ector/cairo/ector_cairo_software_surface.eo [deleted file]
src/lib/ector/cairo/ector_cairo_surface.c [deleted file]
src/lib/ector/cairo/ector_cairo_surface.eo [deleted file]
src/lib/ector/cairo/ector_renderer_cairo.c [deleted file]
src/lib/ector/cairo/ector_renderer_cairo.eo [deleted file]
src/lib/ector/cairo/ector_renderer_cairo_gradient_linear.c [deleted file]
src/lib/ector/cairo/ector_renderer_cairo_gradient_linear.eo [deleted file]
src/lib/ector/cairo/ector_renderer_cairo_gradient_radial.c [deleted file]
src/lib/ector/cairo/ector_renderer_cairo_gradient_radial.eo [deleted file]
src/lib/ector/cairo/ector_renderer_cairo_shape.c [deleted file]
src/lib/ector/cairo/ector_renderer_cairo_shape.eo [deleted file]
src/lib/ector/cairo/meson.build [deleted file]
src/lib/ector/gl/Ector_GL.h
src/lib/ector/meson.build
src/lib/ector/software/ector_software_buffer.c
src/modules/evas/engines/gl_generic/evas_engine.c
src/modules/evas/engines/software_generic/evas_engine.c

index a6c0969..7447373 100644 (file)
@@ -58,9 +58,6 @@ _on_delete(Ecore_Evas *ee EINA_UNUSED)
 int
 main(void)
 {
-   //Cairo backend is not supported.
-   putenv("ECTOR_BACKEND=default");
-
    if (!ecore_evas_init())
      return EXIT_FAILURE;
 
index 01a71d6..961a42c 100644 (file)
@@ -52,7 +52,7 @@ extern "C" {
  *
  * Ector is a retained mode drawing library designed to work
  * for and with a scenegraph such as Evas, which supports several
- * types of rendering surface including software, cairo, and gl.
+ * types of rendering surface including software and gl.
  *
  * @section ector_main_compiling How to compile the library
  *
diff --git a/src/lib/ector/cairo/Ector_Cairo.h b/src/lib/ector/cairo/Ector_Cairo.h
deleted file mode 100644 (file)
index 99eeafa..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef ECTOR_CAIRO_H_
-# define ECTOR_CAIRO_H_
-
-#include <Ector.h>
-
-#ifdef EAPI
-# undef EAPI
-#endif
-
-#ifdef _WIN32
-# ifdef EFL_BUILD
-#  ifdef DLL_EXPORT
-#   define EAPI __declspec(dllexport)
-#  else
-#   define EAPI
-#  endif
-# else
-#  define EAPI __declspec(dllimport)
-# endif
-#else
-# ifdef __GNUC__
-#  if __GNUC__ >= 4
-#   define EAPI __attribute__ ((visibility("default")))
-#  else
-#   define EAPI
-#  endif
-# else
-#  define EAPI
-# endif
-#endif
-
-#ifdef EFL_BETA_API_SUPPORT
-
-#ifndef _ECTOR_CAIRO_SURFACE_EO_CLASS_TYPE
-#define _ECTOR_CAIRO_SURFACE_EO_CLASS_TYPE
-
-typedef Eo Ector_Cairo_Surface;
-
-#endif
-
-typedef struct _cairo_t cairo_t;
-
-#include "cairo/ector_cairo_surface.eo.h"
-#include "cairo/ector_cairo_software_surface.eo.h"
-#include "cairo/ector_renderer_cairo.eo.h"
-#include "cairo/ector_renderer_cairo_shape.eo.h"
-#include "cairo/ector_renderer_cairo_gradient_linear.eo.h"
-#include "cairo/ector_renderer_cairo_gradient_radial.eo.h"
-
-#endif
-
-#undef EAPI
-#define EAPI
-
-#endif
diff --git a/src/lib/ector/cairo/ector_cairo_private.h b/src/lib/ector/cairo/ector_cairo_private.h
deleted file mode 100644 (file)
index a7a6d76..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#ifndef ECTOR_CAIRO_PRIVATE_H_
-# define ECTOR_CAIRO_PRIVATE_H_
-
-#include "draw.h"
-
-typedef void cairo_pattern_t;
-
-typedef struct {
-   double xx; double yx;
-   double xy; double yy;
-   double x0; double y0;
-} cairo_matrix_t;
-
-typedef struct _Ector_Cairo_Surface_Data Ector_Cairo_Surface_Data;
-typedef struct _Ector_Renderer_Cairo_Data Ector_Renderer_Cairo_Data;
-
-struct _Ector_Cairo_Surface_Data
-{
-   cairo_t *cairo;
-   struct {
-      double x, y;
-   } current;
-};
-
-struct _Ector_Renderer_Cairo_Data
-{
-   Ector_Cairo_Surface_Data *parent;
-   Ector_Renderer_Data *generic;
-
-   cairo_matrix_t *m;
-};
-
-typedef enum _cairo_extend {
-    CAIRO_EXTEND_NONE,
-    CAIRO_EXTEND_REPEAT,
-    CAIRO_EXTEND_REFLECT,
-    CAIRO_EXTEND_PAD
-} cairo_extend_t;
-
-static inline cairo_extend_t
-_ector_cairo_extent_get(Efl_Gfx_Gradient_Spread s)
-{
-   switch (s)
-     {
-       case EFL_GFX_GRADIENT_SPREAD_PAD:
-          return CAIRO_EXTEND_PAD;
-       case EFL_GFX_GRADIENT_SPREAD_REFLECT:
-          return CAIRO_EXTEND_REFLECT;
-       case EFL_GFX_GRADIENT_SPREAD_REPEAT:
-          return CAIRO_EXTEND_REPEAT;
-       default:
-          return CAIRO_EXTEND_NONE;
-     }
-}
-
-#define CHECK_CAIRO(Parent) (!(Parent && Parent->cairo))
-
-#define USE(Obj, Sym, Error)                            \
-  if (!Sym) Sym = _ector_cairo_symbol_get(Obj, #Sym);   \
-  if (!Sym) return Error;
-
-static inline void *
-_ector_cairo_symbol_get(Ector_Renderer_Data *base,
-                        const char *name)
-{
-   void *sym;
-
-   sym = ector_cairo_surface_symbol_get(base->surface, name);
-   return sym;
-}
-
-extern void (*cairo_pattern_add_color_stop_rgba)(cairo_pattern_t *pattern, double offset,
-                                                 double red, double green, double blue, double alpha);
-
-static inline void
-_ector_renderer_cairo_gradient_prepare(cairo_pattern_t *pat,
-                                       Ector_Renderer_Gradient_Data *src,
-                                       unsigned int mul_col)
-{
-   unsigned int i;
-
-   for (i = 0; i < src->colors_count; i++)
-     {
-        int r,g,b,a;
-
-        r = ((src->colors[i].r * R_VAL(&mul_col)) >> 8);
-        g = ((src->colors[i].g * G_VAL(&mul_col)) >> 8);
-        b = ((src->colors[i].b * B_VAL(&mul_col)) >> 8);
-        a = ((src->colors[i].a * A_VAL(&mul_col)) >> 8);
-        ector_color_argb_unpremul(a, &r, &g, &b);
-        cairo_pattern_add_color_stop_rgba(pat, src->colors[i].offset, r/255.0, g/255.0, b/255.0, a/255.0);
-     }
-}
-
-#endif
diff --git a/src/lib/ector/cairo/ector_cairo_software_surface.c b/src/lib/ector/cairo/ector_cairo_software_surface.c
deleted file mode 100644 (file)
index 96bf1c1..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"  /* so that EAPI in Evas.h is correctly defined */
-#endif
-
-#include "Ector_Cairo.h"
-#include "ector_private.h"
-#include <software/Ector_Software.h>
-#include "ector_cairo_software_surface.eo.h"
-
-#define MY_CLASS ECTOR_CAIRO_SOFTWARE_SURFACE_CLASS
-
-#define USE(Obj, Sym, Error)                            \
-  if (!Sym) Sym = _ector_cairo_symbol_get(Obj, #Sym);   \
-  if (!Sym) return Error;
-
-static inline void *
-_ector_cairo_symbol_get(Eo *ector_surface, const char *name)
-{
-   void *sym;
-
-   sym = ector_cairo_surface_symbol_get(ector_surface, name);
-   return sym;
-}
-
-typedef struct _cairo_surface_t cairo_surface_t;
-typedef enum {
-  CAIRO_FORMAT_INVALID   = -1,
-  CAIRO_FORMAT_ARGB32    = 0,
-  CAIRO_FORMAT_RGB24     = 1,
-  CAIRO_FORMAT_A8        = 2,
-  CAIRO_FORMAT_A1        = 3,
-  CAIRO_FORMAT_RGB16_565 = 4,
-  CAIRO_FORMAT_RGB30     = 5
-} cairo_format_t;
-
-static cairo_surface_t *(*cairo_image_surface_create_for_data)(unsigned char *data,
-                                                               cairo_format_t format,
-                                                               int width,
-                                                               int height,
-                                                               int stride) = NULL;
-static void (*cairo_surface_destroy)(cairo_surface_t *surface) = NULL;
-static cairo_t *(*cairo_create)(cairo_surface_t *target) = NULL;
-static void (*cairo_destroy)(cairo_t *cr) = NULL;
-
-typedef struct _Ector_Cairo_Software_Surface_Data Ector_Cairo_Software_Surface_Data;
-struct _Ector_Cairo_Software_Surface_Data
-{
-   cairo_surface_t *surface;
-   Ector_Software_Buffer_Base_Data *base;
-};
-
-EOLIAN static Eina_Bool
-_ector_cairo_software_surface_ector_buffer_pixels_set(Eo *obj, Ector_Cairo_Software_Surface_Data *pd,
-                                                      void *pixels, int width, int height, int stride,
-                                                      Efl_Gfx_Colorspace cspace, Eina_Bool writable)
-{
-   cairo_t *ctx = NULL;
-   Eina_Bool ok = EINA_FALSE;
-
-   if ((cspace != EFL_GFX_COLORSPACE_ARGB8888) || !writable)
-     {
-        ERR("Unsupported surface type!");
-        return EINA_FALSE;
-     }
-
-   USE(obj, cairo_image_surface_create_for_data, EINA_FALSE);
-   USE(obj, cairo_surface_destroy, EINA_FALSE);
-   USE(obj, cairo_create, EINA_FALSE);
-   USE(obj, cairo_destroy, EINA_FALSE);
-
-   if (pd->surface)
-     cairo_surface_destroy(pd->surface);
-   pd->surface = NULL;
-
-   ok = ector_buffer_pixels_set(efl_super(obj, MY_CLASS), pixels, width, height, stride, cspace, writable);
-
-   if (ok && pixels)
-     {
-        pd->surface = cairo_image_surface_create_for_data(pixels,
-                                                          CAIRO_FORMAT_ARGB32,
-                                                          width, height, pd->base->stride);
-        if (!pd->surface) goto end;
-
-        ctx = cairo_create(pd->surface);
-     }
-
- end:
-   /* evas_common_cpu_end_opt(); // do we need this? */
-   ector_cairo_surface_context_set(obj, ctx);
-   return ok;
-}
-
-void
-_ector_cairo_software_surface_surface_get(Eo *obj EINA_UNUSED, Ector_Cairo_Software_Surface_Data *pd, void **pixels, unsigned int *width, unsigned int *height)
-{
-   if (pixels) *pixels = pd->base->pixels.u8;
-   if (width) *width = pd->base->generic->w;
-   if (height) *height = pd->base->generic->h;
-}
-
-static Efl_Object *
-_ector_cairo_software_surface_efl_object_constructor(Eo *obj, Ector_Cairo_Software_Surface_Data *pd)
-{
-   obj = efl_constructor(efl_super(obj, MY_CLASS));
-
-   if (!obj) return NULL;
-   pd->base = efl_data_ref(obj, ECTOR_SOFTWARE_BUFFER_BASE_MIXIN);
-   pd->base->generic = efl_data_ref(obj, ECTOR_BUFFER_MIXIN);
-   pd->base->generic->eo = obj;
-   return obj;
-}
-
-EOLIAN static void
-_ector_cairo_software_surface_efl_object_destructor(Eo *obj, Ector_Cairo_Software_Surface_Data *pd)
-{
-   efl_data_unref(obj, pd->base);
-   efl_destructor(efl_super(obj, MY_CLASS));
-}
-
-#include "ector_cairo_software_surface.eo.c"
diff --git a/src/lib/ector/cairo/ector_cairo_software_surface.eo b/src/lib/ector/cairo/ector_cairo_software_surface.eo
deleted file mode 100644 (file)
index 9cd23e5..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-class @beta Ector.Cairo.Software.Surface extends Ector.Cairo.Surface implements Ector.Software.Buffer.Base
-{
-   [[Ector surface on a cairo software backend
-
-   Used to render ector content into a cairo software backend.
-   ]]
-   c_prefix: ector_cairo_software_surface;
-   methods {}
-   implements {
-      Ector.Buffer.pixels_set;
-      Efl.Object.constructor;
-      Efl.Object.destructor;
-   }
-}
diff --git a/src/lib/ector/cairo/ector_cairo_surface.c b/src/lib/ector/cairo/ector_cairo_surface.c
deleted file mode 100644 (file)
index 28d9044..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <Eina.h>
-#include <Ector.h>
-#include <cairo/Ector_Cairo.h>
-
-#include "ector_private.h"
-#include "ector_cairo_private.h"
-
-static unsigned int _cairo_count = 0;
-static Eina_Module *_cairo_so = NULL;
-
-static void *
-_ector_cairo_surface_symbol_get(Eo *obj EINA_UNUSED,
-                                Ector_Cairo_Surface_Data *pd EINA_UNUSED,
-                                const char *name)
-{
-   if (!_cairo_so)
-     {
-#define LOAD(x)                                 \
-        if (!_cairo_so)                         \
-          {                                     \
-             _cairo_so = eina_module_new(x);    \
-             if (_cairo_so &&                   \
-                 !eina_module_load(_cairo_so))  \
-               {                                \
-                  eina_module_free(_cairo_so);  \
-                  _cairo_so = NULL;             \
-               }                                \
-          }
-#if defined(_WIN32) || defined(__CYGWIN__)
-        LOAD("libcairo-2.dll");
-        LOAD("libcairo.dll");
-#elif defined(__APPLE__) && defined(__MACH__)
-        LOAD("libcairo.dylib");
-        LOAD("libcairo.so");
-#else
-        LOAD("libcairo.so");
-#endif
-
-#undef LOAD
-     }
-
-   if (!_cairo_so)
-     {
-        ERR("Couldn't find cairo library. Please make sure that your system can locate it.");
-        return NULL;
-     }
-
-   return eina_module_symbol_get(_cairo_so, name);
-}
-
-#undef USE
-#define USE(Obj, Sym, Error)                                            \
-  if (!Sym) Sym = _ector_cairo_surface_symbol_get(Obj, NULL, #Sym);     \
-  if (!Sym) return Error;
-
-static Ector_Renderer *
-_ector_cairo_surface_ector_surface_renderer_factory_new(Eo *obj,
-                                                                Ector_Cairo_Surface_Data *pd EINA_UNUSED,
-                                                                const Efl_Class *type)
-{
-   if (type == ECTOR_RENDERER_SHAPE_MIXIN)
-     return efl_add_ref(ECTOR_RENDERER_CAIRO_SHAPE_CLASS, NULL, ector_renderer_surface_set(efl_added, obj));
-   else if (type == ECTOR_RENDERER_GRADIENT_LINEAR_MIXIN)
-     return efl_add_ref(ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS, NULL, ector_renderer_surface_set(efl_added, obj));
-   else if (type == ECTOR_RENDERER_GRADIENT_RADIAL_MIXIN)
-     return efl_add_ref(ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS, NULL, ector_renderer_surface_set(efl_added, obj));
-
-   ERR("Couldn't find class for type: %s\n", efl_class_name_get(type));
-   return NULL;
-}
-
-typedef struct _cairo_surface_t cairo_surface_t;
-
-static void (*cairo_destroy)(cairo_t *cr) = NULL;
-static cairo_surface_t *(*cairo_image_surface_create)(int format,
-                                                      int width,
-                                                      int height) = NULL;
-static cairo_t *(*cairo_create)(cairo_surface_t *target) = NULL;
-
-static cairo_surface_t *internal = NULL;
-
-static void
-_ector_cairo_surface_context_set(Eo *obj EINA_UNUSED,
-                                 Ector_Cairo_Surface_Data *pd,
-                                 cairo_t *ctx)
-{
-   if (pd->cairo) cairo_destroy(pd->cairo);
-   if (!ctx)
-     {
-        if (!internal) internal = cairo_image_surface_create(0, 1, 1);
-        ctx = cairo_create(internal);
-     }
-   pd->current.x = pd->current.y = 0;
-   pd->cairo = ctx;
-}
-
-static cairo_t *
-_ector_cairo_surface_context_get(const Eo *obj EINA_UNUSED,
-                                 Ector_Cairo_Surface_Data *pd)
-{
-   return pd->cairo;
-}
-
-static void
-_ector_cairo_surface_ector_surface_reference_point_set(Eo *obj EINA_UNUSED,
-                                                               Ector_Cairo_Surface_Data *pd,
-                                                               int x, int y)
-{
-   pd->current.x = x;
-   pd->current.y = y;
-}
-
-static Eo *
-_ector_cairo_surface_efl_object_constructor(Eo *obj,
-                                         Ector_Cairo_Surface_Data *pd)
-{
-   USE(obj, cairo_destroy, NULL);
-   USE(obj, cairo_image_surface_create, NULL);
-   USE(obj, cairo_create, NULL);
-
-   obj = efl_constructor(efl_super(obj, ECTOR_CAIRO_SURFACE_CLASS));
-   if (!obj) return NULL;
-
-   _cairo_count++;
-
-   _ector_cairo_surface_context_set(obj, pd, NULL);
-
-   return obj;
-}
-
-static void
-_ector_cairo_surface_efl_object_destructor(Eo *obj EINA_UNUSED,
-                                        Ector_Cairo_Surface_Data *pd EINA_UNUSED)
-{
-   efl_destructor(efl_super(obj, ECTOR_CAIRO_SURFACE_CLASS));
-
-   if (--_cairo_count) return ;
-   if (_cairo_so) eina_module_free(_cairo_so);
-   _cairo_so = NULL;
-}
-
-#include "ector_cairo_surface.eo.c"
diff --git a/src/lib/ector/cairo/ector_cairo_surface.eo b/src/lib/ector/cairo/ector_cairo_surface.eo
deleted file mode 100644 (file)
index dabd214..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-struct @extern cairo_t; [[cairo_t type]]
-
-class @beta Ector.Cairo.Surface extends Efl.Object implements Ector.Surface
-{
-   [[Ector surface on a cairo backend
-
-   Used to render ector content into a cairo backend.
-   ]]
-   c_prefix: ector_cairo_surface;
-   methods {
-      @property context {
-         [[Cairo context]]
-         set {
-    }
-    get {
-    }
-    values {
-       ctx: ptr(cairo_t); [[Cairo context]]
-    }
-      }
-      symbol_get {
-   [[Lookup symbal name in cairo lib]]
-         return: void_ptr @no_unused; [[Pointer to cairo lib with this symbol]]
-         params {
-            @in name: string; [[Symbol name]]
-         }
-      }
-   }
-   implements {
-      Ector.Surface.renderer_factory_new;
-      Ector.Surface.reference_point { set; }
-      Efl.Object.destructor;
-      Efl.Object.constructor;
-   }
-}
diff --git a/src/lib/ector/cairo/ector_renderer_cairo.c b/src/lib/ector/cairo/ector_renderer_cairo.c
deleted file mode 100644 (file)
index ddcca41..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <math.h>
-#include <float.h>
-
-#include <Eina.h>
-#include <Ector.h>
-#include <cairo/Ector_Cairo.h>
-
-#include "ector_private.h"
-#include "ector_cairo_private.h"
-
-typedef enum {
-  CAIRO_OPERATOR_CLEAR,
-
-  CAIRO_OPERATOR_SOURCE,
-  CAIRO_OPERATOR_OVER,
-  CAIRO_OPERATOR_IN,
-  CAIRO_OPERATOR_OUT,
-  CAIRO_OPERATOR_ATOP,
-
-  CAIRO_OPERATOR_DEST,
-  CAIRO_OPERATOR_DEST_OVER,
-  CAIRO_OPERATOR_DEST_IN,
-  CAIRO_OPERATOR_DEST_OUT,
-  CAIRO_OPERATOR_DEST_ATOP,
-
-  CAIRO_OPERATOR_XOR,
-  CAIRO_OPERATOR_ADD,
-  CAIRO_OPERATOR_SATURATE,
-
-  CAIRO_OPERATOR_MULTIPLY,
-  CAIRO_OPERATOR_SCREEN,
-  CAIRO_OPERATOR_OVERLAY,
-  CAIRO_OPERATOR_DARKEN,
-  CAIRO_OPERATOR_LIGHTEN,
-  CAIRO_OPERATOR_COLOR_DODGE,
-  CAIRO_OPERATOR_COLOR_BURN,
-  CAIRO_OPERATOR_HARD_LIGHT,
-  CAIRO_OPERATOR_SOFT_LIGHT,
-  CAIRO_OPERATOR_DIFFERENCE,
-  CAIRO_OPERATOR_EXCLUSION,
-  CAIRO_OPERATOR_HSL_HUE,
-  CAIRO_OPERATOR_HSL_SATURATION,
-  CAIRO_OPERATOR_HSL_COLOR,
-  CAIRO_OPERATOR_HSL_LUMINOSITY
-} cairo_operator_t;
-
-static void (*cairo_translate)(cairo_t *cr, double tx, double ty) = NULL;
-static void (*cairo_matrix_init)(cairo_matrix_t *matrix,
-                                 double xx, double yx,
-                                 double xy, double yy,
-                                 double x0, double y0) = NULL;
-static void (*cairo_transform)(cairo_t *cr, const cairo_matrix_t *matrix) = NULL;
-static void (*cairo_set_source_rgba)(cairo_t *cr,
-                                     double red, double green, double blue,
-                                     double alpha) = NULL;
-static void (*cairo_set_operator)(cairo_t *cr, cairo_operator_t op) = NULL;
-static void (*cairo_matrix_init_identity)(cairo_matrix_t *matrix) = NULL;
-
-static void (*cairo_new_path)(cairo_t *cr) = NULL;
-static void (*cairo_rectangle)(cairo_t *cr, double x, double y, double width, double height) = NULL;
-static void (*cairo_clip)(cairo_t *cr) = NULL;
-static void (*cairo_device_to_user)(cairo_t *cr, double *x, double *y) = NULL;
-
-// This routine is shared for all gradient types to use
-void (*cairo_pattern_add_color_stop_rgba)(cairo_pattern_t *pattern, double offset,
-                                          double red, double green, double blue, double alpha) = NULL;
-
-static cairo_matrix_t identity;
-
-// Cairo needs unpremultiplied color, so force unpremul here
-void
-_ector_renderer_cairo_ector_renderer_color_set(Eo *obj EINA_UNUSED,
-                                                                 Ector_Renderer_Cairo_Data *pd,
-                                                                 int r, int g, int b, int a)
-{
-   pd->generic->color.r = r;
-   pd->generic->color.g = g;
-   pd->generic->color.b = b;
-   pd->generic->color.a = a;
-}
-
-void
-_ector_renderer_cairo_ector_renderer_color_get(const Eo *obj EINA_UNUSED,
-                                                                 Ector_Renderer_Cairo_Data *pd,
-                                                                 int *r, int *g, int *b, int *a)
-{
-   if (r) *r = pd->generic->color.r;
-   if (g) *g = pd->generic->color.g;
-   if (b) *b = pd->generic->color.b;
-   if (a) *a = pd->generic->color.a;
-}
-
-static Eina_Bool
-_ector_renderer_cairo_ector_renderer_prepare(Eo *obj, Ector_Renderer_Cairo_Data *pd)
-{
-   if (!pd->parent)
-     {
-        pd->parent = efl_data_xref(pd->generic->surface, ECTOR_CAIRO_SURFACE_CLASS, obj);
-     }
-   if (pd->generic->m)
-     {
-        if (!pd->m) pd->m = malloc(sizeof (cairo_matrix_t));
-        cairo_matrix_init(pd->m,
-                          pd->generic->m->xx, pd->generic->m->yx,
-                          pd->generic->m->xy, pd->generic->m->yy,
-                          pd->generic->m->xz, pd->generic->m->yz);
-     }
-   else
-     {
-        free(pd->m);
-        pd->m = NULL;
-     }
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_ector_renderer_cairo_ector_renderer_draw(Eo *obj EINA_UNUSED,
-                                                            Ector_Renderer_Cairo_Data *pd,
-                                                            Efl_Gfx_Render_Op op,
-                                                            Eina_Array *clips EINA_UNUSED,
-                                                            unsigned int mul_col)
-{
-   int r, g, b, a;
-   cairo_operator_t cop;
-   double cx, cy;
-
-   switch (op)
-     {
-      case EFL_GFX_RENDER_OP_BLEND:
-         cop = CAIRO_OPERATOR_OVER;
-         break;
-      case EFL_GFX_RENDER_OP_COPY:
-      default:
-         cop = CAIRO_OPERATOR_SOURCE;
-         break;
-     }
-
-   r = ((pd->generic->color.r * R_VAL(&mul_col)) >> 8);
-   g = ((pd->generic->color.g * G_VAL(&mul_col)) >> 8);
-   b = ((pd->generic->color.b * B_VAL(&mul_col)) >> 8);
-   a = ((pd->generic->color.a * A_VAL(&mul_col)) >> 8);
-   ector_color_argb_unpremul(a, &r, &g, &b);
-
-   cairo_set_operator(pd->parent->cairo, cop);
-
-   if (clips)
-     {
-        int clip_count =  eina_array_count(clips);
-        int i=0;
-        for (; i < clip_count ; i++)
-          {
-             Eina_Rectangle *clip = (Eina_Rectangle *)eina_array_data_get(clips, i);
-             double x = (double)clip->x;
-             double y = (double)clip->y;
-
-             cairo_new_path(pd->parent->cairo);
-             cairo_device_to_user(pd->parent->cairo, &x, &y);
-             cairo_rectangle(pd->parent->cairo, x, y, clip->w, clip->h);
-          }
-        cairo_clip(pd->parent->cairo);
-     }
-
-   cairo_transform(pd->parent->cairo, &identity);
-   cx = pd->generic->origin.x + pd->parent->current.x;
-   cy = pd->generic->origin.y + pd->parent->current.y;
-
-   cairo_translate(pd->parent->cairo, cx, cy);
-
-   if (pd->m) cairo_transform(pd->parent->cairo, pd->m);
-   else cairo_transform(pd->parent->cairo, &identity);
-
-   cairo_set_source_rgba(pd->parent->cairo, r/255.0, g/255.0, b/255.0, a/255.0);
-
-   return EINA_TRUE;
-}
-
-static Eo *
-_ector_renderer_cairo_efl_object_constructor(Eo *obj, Ector_Renderer_Cairo_Data *pd EINA_UNUSED)
-{
-   obj = efl_constructor(efl_super(obj, ECTOR_RENDERER_CAIRO_CLASS));
-   if (!obj) return NULL;
-
-   pd->generic = efl_data_xref(obj, ECTOR_RENDERER_CLASS, obj);
-
-   return obj;
-}
-
-static Efl_Object *
-_ector_renderer_cairo_efl_object_finalize(Eo *obj, Ector_Renderer_Cairo_Data *pd)
-{
-   obj = efl_finalize(efl_super(obj, ECTOR_RENDERER_CAIRO_CLASS));
-   if (!obj) return NULL;
-
-   USE(pd->generic, cairo_matrix_init, NULL);
-   USE(pd->generic, cairo_translate, NULL);
-   USE(pd->generic, cairo_set_source_rgba, NULL);
-   USE(pd->generic, cairo_transform, NULL);
-   USE(pd->generic, cairo_set_operator, NULL);
-   USE(pd->generic, cairo_new_path, NULL);
-   USE(pd->generic, cairo_rectangle, NULL);
-   USE(pd->generic, cairo_clip, NULL);
-   USE(pd->generic, cairo_device_to_user, NULL);
-   USE(pd->generic, cairo_matrix_init_identity, NULL);
-
-   cairo_matrix_init_identity(&identity);
-
-   return obj;
-}
-
-static void
-_ector_renderer_cairo_efl_object_destructor(Eo *obj, Ector_Renderer_Cairo_Data *pd)
-{
-   Ector_Renderer_Data *base;
-
-   base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-   efl_data_xunref(base->surface, pd->parent, obj);
-   efl_data_xunref(obj, pd->generic, obj);
-
-   free(pd->m);
-
-   efl_destructor(efl_super(obj, ECTOR_RENDERER_CAIRO_CLASS));
-}
-
-#include "ector_renderer_cairo.eo.c"
diff --git a/src/lib/ector/cairo/ector_renderer_cairo.eo b/src/lib/ector/cairo/ector_renderer_cairo.eo
deleted file mode 100644 (file)
index 3f100b1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-abstract @beta Ector.Renderer.Cairo extends Ector.Renderer
-{
-   [[Ector cairo renderer abstract class]]
-   methods {
-      op_fill @pure_virtual {
-          [[Fill operation]]
-         return: bool; [[$true on success, $false otherwise]]
-         params {
-            @in mul_col: uint; [[Premultiplied color]]
-         }
-      }
-   }
-   implements {
-      Ector.Renderer.prepare;
-      Ector.Renderer.draw;
-      Ector.Renderer.color { get; set; }
-      Efl.Object.constructor;
-      Efl.Object.finalize;
-      Efl.Object.destructor;
-   }
-}
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_gradient_linear.c b/src/lib/ector/cairo/ector_renderer_cairo_gradient_linear.c
deleted file mode 100644 (file)
index 598e625..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <Eina.h>
-#include <Ector.h>
-#include <cairo/Ector_Cairo.h>
-
-#include "ector_private.h"
-#include "ector_cairo_private.h"
-
-static cairo_pattern_t *(*cairo_pattern_create_linear)(double x0, double y0,
-                                                       double x1, double y1) = NULL;
-static void (*cairo_set_source)(cairo_t *cr, cairo_pattern_t *source) = NULL;
-static void (*cairo_fill)(cairo_t *cr) = NULL;
-static void (*cairo_rectangle)(cairo_t *cr,
-                               double x, double y,
-                               double width, double height) = NULL;
-static void (*cairo_pattern_destroy)(cairo_pattern_t *pattern) = NULL;
-
-static void (*cairo_pattern_set_extend)(cairo_pattern_t *pattern, cairo_extend_t extend) = NULL;
-
-typedef struct _Ector_Renderer_Cairo_Gradient_Linear_Data Ector_Renderer_Cairo_Gradient_Linear_Data;
-struct _Ector_Renderer_Cairo_Gradient_Linear_Data
-{
-   Ector_Cairo_Surface_Data *parent;
-};
-
-static cairo_pattern_t *
-_ector_renderer_cairo_gradient_linear_prepare(Eo *obj EINA_UNUSED,
-                                              Ector_Renderer_Gradient_Linear_Data *gld,
-                                              Ector_Renderer_Gradient_Data *gd,
-                                              unsigned int mul_col)
-{
-   cairo_pattern_t *pat;
-
-   pat = cairo_pattern_create_linear(gld->start.x, gld->start.y,
-                                     gld->end.x, gld->end.y);
-   if (!pat) return NULL;
-   _ector_renderer_cairo_gradient_prepare(pat, gd, mul_col);
-
-   cairo_pattern_set_extend(pat, _ector_cairo_extent_get(gd->s));
-
-   return pat;
-}
-
-static Eina_Bool
-_ector_renderer_cairo_gradient_linear_ector_renderer_prepare(Eo *obj,
-                                                                          Ector_Renderer_Cairo_Gradient_Linear_Data *pd)
-{
-   ector_renderer_prepare(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS));
-
-   if (!pd->parent)
-     {
-        Ector_Renderer_Data *base;
-
-        base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-        pd->parent = efl_data_xref(base->surface, ECTOR_CAIRO_SURFACE_CLASS, obj);
-     }
-
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_ector_renderer_cairo_gradient_linear_ector_renderer_draw(Eo *obj,
-                                                                       Ector_Renderer_Cairo_Gradient_Linear_Data *pd,
-                                                                       Efl_Gfx_Render_Op op, Eina_Array *clips, unsigned int mul_col)
-{
-   Ector_Renderer_Gradient_Linear_Data *gld;
-   Ector_Renderer_Gradient_Data *gd;
-   cairo_pattern_t *pat;
-
-   // FIXME: don't ignore clipping !
-   gld = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_LINEAR_MIXIN);
-   gd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_MIXIN);
-   if (!gd || !gld) return EINA_FALSE;
-
-   pat = _ector_renderer_cairo_gradient_linear_prepare(obj, gld, gd, mul_col);
-   if (!pat) return EINA_FALSE;
-
-   ector_renderer_draw(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS), op, clips, mul_col);
-
-   cairo_rectangle(pd->parent->cairo, gld->start.x, gld->start.y,
-                   gld->end.x - gld->start.x,
-                   gld->end.y - gld->start.y);
-   cairo_set_source(pd->parent->cairo, pat);
-   cairo_fill(pd->parent->cairo);
-   cairo_pattern_destroy(pat);
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_ector_renderer_cairo_gradient_linear_ector_renderer_cairo_op_fill(Eo *obj,
-                                                                     Ector_Renderer_Cairo_Gradient_Linear_Data *pd,
-                                                                     unsigned int mul_col)
-{
-   Ector_Renderer_Gradient_Linear_Data *gld;
-   Ector_Renderer_Gradient_Data *gd;
-   cairo_pattern_t *pat;
-
-   gld = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_LINEAR_MIXIN);
-   gd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_MIXIN);
-   if (!gd || !gld) return EINA_FALSE;
-
-   pat = _ector_renderer_cairo_gradient_linear_prepare(obj, gld, gd, mul_col);
-   if (!pat) return EINA_FALSE;
-
-   cairo_set_source(pd->parent->cairo, pat);
-   cairo_pattern_destroy(pat);
-
-   return EINA_TRUE;
-}
-
-static void
-_ector_renderer_cairo_gradient_linear_efl_gfx_path_bounds_get(const Eo *obj,
-                                                                Ector_Renderer_Cairo_Gradient_Linear_Data *pd EINA_UNUSED,
-                                                                Eina_Rect *r)
-{
-   Ector_Renderer_Gradient_Linear_Data *gld;
-   Ector_Renderer_Cairo_Data *bd;
-
-   gld = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_RADIAL_MIXIN);
-   bd = efl_data_scope_get(obj, ECTOR_RENDERER_CAIRO_CLASS);
-   EINA_RECTANGLE_SET(r,
-                      bd->generic->origin.x + gld->start.x,
-                      bd->generic->origin.y + gld->start.y,
-                      gld->end.x - gld->start.x,
-                      gld->end.y - gld->start.y);
-}
-
-static Efl_Object *
-_ector_renderer_cairo_gradient_linear_efl_object_finalize(Eo *obj, Ector_Renderer_Cairo_Gradient_Linear_Data *pd EINA_UNUSED)
-{
-   Ector_Renderer_Data *base;
-
-   obj = efl_finalize(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS));
-   if (!obj) return NULL;
-
-   base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-
-   USE(base, cairo_set_source, NULL);
-   USE(base, cairo_pattern_destroy, NULL);
-   USE(base, cairo_rectangle, NULL);
-   USE(base, cairo_fill, NULL);
-   USE(base, cairo_pattern_destroy, NULL);
-   USE(base, cairo_set_source, NULL);
-   USE(base, cairo_pattern_set_extend, NULL);
-   USE(base, cairo_pattern_create_linear, NULL);
-   USE(base, cairo_pattern_add_color_stop_rgba, NULL);
-
-   return obj;
-}
-
-static void
-_ector_renderer_cairo_gradient_linear_efl_object_destructor(Eo *obj,
-                                                         Ector_Renderer_Cairo_Gradient_Linear_Data *pd)
-{
-   Ector_Renderer_Data *base;
-
-   base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-   efl_data_xunref(base->surface, pd->parent, obj);
-
-   efl_destructor(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS));
-}
-
-static void
-_ector_renderer_cairo_gradient_linear_efl_gfx_gradient_stop_set(Eo *obj,
-                                                                     Ector_Renderer_Cairo_Gradient_Linear_Data *pd EINA_UNUSED,
-                                                                     const Efl_Gfx_Gradient_Stop *colors,
-                                                                     unsigned int length)
-{
-   efl_gfx_gradient_stop_set(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS), colors, length);
-}
-
-static unsigned int
-_ector_renderer_cairo_gradient_linear_ector_renderer_crc_get(const Eo *obj, Ector_Renderer_Cairo_Gradient_Linear_Data *pd EINA_UNUSED)
-{
-   Ector_Renderer_Gradient_Linear_Data *gld;
-   Ector_Renderer_Gradient_Data *gd;
-   unsigned int crc;
-
-   crc = ector_renderer_crc_get(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_LINEAR_CLASS));
-
-   gld = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_LINEAR_MIXIN);
-   gd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_MIXIN);
-   if (!gd || !gld) return crc;
-
-   crc = eina_crc((void*) gd->s, sizeof (Efl_Gfx_Gradient_Spread), crc, EINA_FALSE);
-   if (gd->colors_count)
-     crc = eina_crc((void*) gd->colors, sizeof (Efl_Gfx_Gradient_Stop) * gd->colors_count, crc, EINA_FALSE);
-   crc = eina_crc((void*) gld, sizeof (Ector_Renderer_Gradient_Linear_Data), crc, EINA_FALSE);
-
-   return crc;
-}
-
-#include "ector_renderer_cairo_gradient_linear.eo.c"
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_gradient_linear.eo b/src/lib/ector/cairo/ector_renderer_cairo_gradient_linear.eo
deleted file mode 100644 (file)
index c6f2c4f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-class @beta Ector.Renderer.Cairo.Gradient.Linear extends Ector.Renderer.Cairo implements Ector.Renderer.Gradient, Ector.Renderer.Gradient.Linear, Efl.Gfx.Path
-{
-   [[Ector cairo renderer gradient linear]]
-   c_prefix: ector_renderer_cairo_gradient_linear;
-   implements {
-      Ector.Renderer.prepare;
-      Ector.Renderer.draw;
-      Efl.Gfx.Path.bounds_get;
-      Ector.Renderer.crc { get; }
-      Ector.Renderer.Cairo.op_fill;
-      Efl.Object.finalize;
-      Efl.Object.destructor;
-      Efl.Gfx.Gradient.stop { set; }
-   }
-}
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_gradient_radial.c b/src/lib/ector/cairo/ector_renderer_cairo_gradient_radial.c
deleted file mode 100644 (file)
index bb5add0..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <Eina.h>
-#include <Ector.h>
-#include <cairo/Ector_Cairo.h>
-
-#include "ector_private.h"
-#include "ector_cairo_private.h"
-
-static cairo_pattern_t *(*cairo_pattern_create_radial)(double cx0, double cy0,
-                                                       double radius0,
-                                                       double cx1, double cy1,
-                                                       double radius1) = NULL;
-static void (*cairo_set_source)(cairo_t *cr, cairo_pattern_t *source) = NULL;
-static void (*cairo_fill)(cairo_t *cr) = NULL;
-static void (*cairo_arc)(cairo_t *cr,
-                         double xc, double yc,
-                         double radius,
-                         double angle1, double angle2) = NULL;
-static void (*cairo_pattern_destroy)(cairo_pattern_t *pattern) = NULL;
-
-static void (*cairo_pattern_set_extend)(cairo_pattern_t *pattern, cairo_extend_t extend) = NULL;
-static void (*cairo_pattern_set_matrix)(cairo_t *cr, cairo_matrix_t *matrix) = NULL;
-static void (*cairo_matrix_init)(cairo_matrix_t *matrix,
-                                 double xx, double yx,
-                                 double xy, double yy,
-                                 double x0, double y0) = NULL;
-
-// FIXME: as long as it is not possible to directly access the parent structure
-//  this will be duplicated from the linear gradient renderer
-typedef struct _Ector_Renderer_Cairo_Gradient_Radial_Data Ector_Renderer_Cairo_Gradient_Radial_Data;
-struct _Ector_Renderer_Cairo_Gradient_Radial_Data
-{
-   Ector_Cairo_Surface_Data *parent;
-};
-
-static Eina_Bool
-_ector_renderer_cairo_gradient_radial_ector_renderer_prepare(Eo *obj, Ector_Renderer_Cairo_Gradient_Radial_Data *pd)
-{
-   ector_renderer_prepare(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS));
-
-   if (!pd->parent)
-     {
-        Ector_Renderer_Data *base;
-
-        base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-        pd->parent = efl_data_xref(base->surface, ECTOR_CAIRO_SURFACE_CLASS, obj);
-     }
-
-   return EINA_FALSE;
-}
-
-static cairo_pattern_t *
-_ector_renderer_cairo_gradient_radial_prepare(Eo *obj,
-                                              Ector_Renderer_Gradient_Radial_Data *grd,
-                                              Ector_Renderer_Gradient_Data *gd,
-                                              unsigned int mul_col)
-{
-   Ector_Renderer_Data *pd = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-   cairo_pattern_t *pat;
-   cairo_matrix_t pd_m;
-
-   pat = cairo_pattern_create_radial(grd->focal.x, grd->focal.y, 0,
-                                     grd->radial.x, grd->radial.y, grd->radius);
-   if (!pat) return NULL;
-
-   _ector_renderer_cairo_gradient_prepare(pat, gd, mul_col);
-
-   cairo_pattern_set_extend(pat, _ector_cairo_extent_get(gd->s));
-
-   if (pd->m)
-     {
-        cairo_matrix_init(&pd_m,
-                          pd->m->xx, pd->m->yx,
-                          pd->m->xy, pd->m->yy,
-                          pd->m->xz, pd->m->yz);
-        cairo_pattern_set_matrix(pat, &pd_m);
-     }
-
-   return pat;
-}
-
-// Clearly duplicated and should be in a common place...
-static Eina_Bool
-_ector_renderer_cairo_gradient_radial_ector_renderer_draw(Eo *obj, Ector_Renderer_Cairo_Gradient_Radial_Data *pd, Efl_Gfx_Render_Op op, Eina_Array *clips, unsigned int mul_col)
-{
-   Ector_Renderer_Gradient_Radial_Data *grd;
-   Ector_Renderer_Gradient_Data *gd;
-   cairo_pattern_t *pat;
-
-   // FIXME: Handle clipping and generally make it work :-)
-   grd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_RADIAL_MIXIN);
-   gd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_MIXIN);
-   if (!grd || !gd) return EINA_FALSE;
-
-   pat = _ector_renderer_cairo_gradient_radial_prepare(obj, grd, gd, mul_col);
-   if (!pat) return EINA_FALSE;
-
-   ector_renderer_draw(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS), op, clips, mul_col);
-
-   cairo_arc(pd->parent->cairo,
-             grd->radial.x, grd->radial.y,
-             grd->radius,
-             0, 2 * M_PI);
-   cairo_set_source(pd->parent->cairo, pat);
-   cairo_fill(pd->parent->cairo);
-   cairo_pattern_destroy(pat);
-
-   return EINA_TRUE;
-}
-
-// Clearly duplicated and should be in a common place...
-static Eina_Bool
-_ector_renderer_cairo_gradient_radial_ector_renderer_cairo_op_fill(Eo *obj,
-                                                                     Ector_Renderer_Cairo_Gradient_Radial_Data *pd,
-                                                                     unsigned int mul_col)
-{
-   Ector_Renderer_Gradient_Radial_Data *grd;
-   Ector_Renderer_Gradient_Data *gd;
-   cairo_pattern_t *pat;
-
-   grd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_RADIAL_MIXIN);
-   gd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_MIXIN);
-   if (!grd || !gd) return EINA_FALSE;
-
-   pat = _ector_renderer_cairo_gradient_radial_prepare(obj, grd, gd, mul_col);
-   if (!pat) return EINA_FALSE;
-
-   cairo_set_source(pd->parent->cairo, pat);
-   cairo_pattern_destroy(pat);
-
-   return EINA_TRUE;
-}
-
-static void
-_ector_renderer_cairo_gradient_radial_efl_gfx_path_bounds_get(const Eo *obj EINA_UNUSED,
-                                                                Ector_Renderer_Cairo_Gradient_Radial_Data *pd EINA_UNUSED,
-                                                                Eina_Rect *r)
-{
-   Ector_Renderer_Gradient_Radial_Data *gld;
-   Ector_Renderer_Cairo_Data *bd;
-
-   gld = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_RADIAL_MIXIN);
-   bd = efl_data_scope_get(obj, ECTOR_RENDERER_CAIRO_CLASS);
-   EINA_RECTANGLE_SET(r,
-                      bd->generic->origin.x + gld->radial.x - gld->radius,
-                      bd->generic->origin.y + gld->radial.y - gld->radius,
-                      gld->radius * 2, gld->radius * 2);
-}
-
-static Efl_Object *
-_ector_renderer_cairo_gradient_radial_efl_object_finalize(Eo *obj, Ector_Renderer_Cairo_Gradient_Radial_Data *pd EINA_UNUSED)
-{
-   Ector_Renderer_Data *base;
-
-   obj = efl_finalize(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS));
-   if (!obj) return NULL;
-
-   base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-
-   USE(base, cairo_set_source, NULL);
-   USE(base, cairo_pattern_destroy, NULL);
-   USE(base, cairo_arc, NULL);
-   USE(base, cairo_fill, NULL);
-   USE(base, cairo_matrix_init, NULL);
-   USE(base, cairo_set_source, NULL);
-   USE(base, cairo_pattern_destroy, NULL);
-   USE(base, cairo_pattern_set_extend, NULL);
-   USE(base, cairo_pattern_set_matrix, NULL);
-   USE(base, cairo_pattern_create_radial, NULL);
-   USE(base, cairo_pattern_add_color_stop_rgba, NULL);
-
-   return obj;
-}
-
-static void
-_ector_renderer_cairo_gradient_radial_efl_object_destructor(Eo *obj,
-                                                         Ector_Renderer_Cairo_Gradient_Radial_Data *pd)
-{
-   Ector_Renderer_Data *base;
-
-   base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-   efl_data_xunref(base->surface, pd->parent, obj);
-
-   efl_destructor(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS));
-}
-
-static void
-_ector_renderer_cairo_gradient_radial_efl_gfx_gradient_stop_set(Eo *obj,
-                                                                     Ector_Renderer_Cairo_Gradient_Radial_Data *pd EINA_UNUSED,
-                                                                     const Efl_Gfx_Gradient_Stop *colors,
-                                                                     unsigned int length)
-{
-   efl_gfx_gradient_stop_set(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS), colors, length);
-}
-
-static unsigned int
-_ector_renderer_cairo_gradient_radial_ector_renderer_crc_get(const Eo *obj, Ector_Renderer_Cairo_Gradient_Radial_Data *pd EINA_UNUSED)
-{
-   Ector_Renderer_Gradient_Radial_Data *grd;
-   Ector_Renderer_Gradient_Data *gd;
-   unsigned int crc;
-
-   crc = ector_renderer_crc_get(efl_super(obj, ECTOR_RENDERER_CAIRO_GRADIENT_RADIAL_CLASS));
-
-   grd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_RADIAL_MIXIN);
-   gd = efl_data_scope_get(obj, ECTOR_RENDERER_GRADIENT_MIXIN);
-   if (!grd || !gd) return crc;
-
-   crc = eina_crc((void*) gd->s, sizeof (Efl_Gfx_Gradient_Spread), crc, EINA_FALSE);
-   if (gd->colors_count)
-     crc = eina_crc((void*) gd->colors, sizeof (Efl_Gfx_Gradient_Stop) * gd->colors_count, crc, EINA_FALSE);
-   crc = eina_crc((void*) grd, sizeof (Ector_Renderer_Gradient_Radial_Data), crc, EINA_FALSE);
-
-   return crc;
-}
-
-#include "ector_renderer_cairo_gradient_radial.eo.c"
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_gradient_radial.eo b/src/lib/ector/cairo/ector_renderer_cairo_gradient_radial.eo
deleted file mode 100644 (file)
index bdf0059..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-class @beta Ector.Renderer.Cairo.Gradient.Radial extends Ector.Renderer.Cairo implements Ector.Renderer.Gradient, Ector.Renderer.Gradient.Radial, Efl.Gfx.Path
-{
-   [[Ector cairo renderer gradient radial]]
-   c_prefix: ector_renderer_cairo_gradient_radial;
-   implements {
-      Ector.Renderer.prepare;
-      Ector.Renderer.draw;
-      Efl.Gfx.Path.bounds_get;
-      Ector.Renderer.crc { get; }
-      Ector.Renderer.Cairo.op_fill;
-      Efl.Object.destructor;
-      Efl.Object.finalize;
-      Efl.Gfx.Gradient.stop { set; }
-   }
-}
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_shape.c b/src/lib/ector/cairo/ector_renderer_cairo_shape.c
deleted file mode 100644 (file)
index 87fe2a0..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <math.h>
-#include <float.h>
-
-#include <Eina.h>
-#include <Ector.h>
-#include <cairo/Ector_Cairo.h>
-
-#include "ector_private.h"
-#include "ector_cairo_private.h"
-
-typedef struct _cairo_path_t cairo_path_t;
-
-typedef enum _cairo_line_cap {
-  CAIRO_LINE_CAP_BUTT,
-  CAIRO_LINE_CAP_ROUND,
-  CAIRO_LINE_CAP_SQUARE
-} cairo_line_cap_t;
-
-typedef enum _cairo_line_join {
-  CAIRO_LINE_JOIN_MITER,
-  CAIRO_LINE_JOIN_ROUND,
-  CAIRO_LINE_JOIN_BEVEL
-} cairo_line_join_t;
-
-typedef enum _cairo_fill_rule {
-  CAIRO_FILL_RULE_WINDING,
-  CAIRO_FILL_RULE_EVEN_ODD
-} cairo_fill_rule_t;
-
-static void (*cairo_move_to)(cairo_t *cr, double x, double y) = NULL;
-static void (*cairo_line_to)(cairo_t *cr, double x, double y) = NULL;
-static void (*cairo_curve_to)(cairo_t *cr,
-                              double x1, double y1,
-                              double x2, double y2,
-                              double x3, double y3) = NULL;
-static void (*cairo_close_path)(cairo_t *cr) = NULL;
-
-static void (*cairo_fill)(cairo_t *cr) = NULL;
-static void (*cairo_fill_preserve)(cairo_t *cr) = NULL;
-static void (*cairo_stroke)(cairo_t *cr) = NULL;
-
-static void (*cairo_set_source_rgba)(cairo_t *cr,
-                                     double red, double green,
-                                     double blue, double alpha) = NULL;
-
-
-static cairo_path_t *(*cairo_copy_path)(cairo_t *cr) = NULL;
-static void (*cairo_path_destroy)(cairo_path_t *path) = NULL;
-static void (*cairo_new_path)(cairo_t *cr) = NULL;
-static void (*cairo_append_path)(cairo_t *cr, const cairo_path_t *path) = NULL;
-
-static void (*cairo_set_line_width)(cairo_t *cr, double width) = NULL;
-static void (*cairo_set_line_cap)(cairo_t *cr, cairo_line_cap_t line_cap) = NULL;
-static void (*cairo_set_line_join)(cairo_t *cr, cairo_line_join_t line_join) = NULL;
-
-static void (*cairo_save)(cairo_t *cr) = NULL;
-static void (*cairo_restore)(cairo_t *cr) = NULL;
-
-static void (*cairo_set_dash) (cairo_t *cr, const double *dashes, int num_dashes, double offset) = NULL;
-static void (*cairo_set_fill_rule) (cairo_t *cr, cairo_fill_rule_t fill_rule);
-
-typedef struct _Ector_Renderer_Cairo_Shape_Data Ector_Renderer_Cairo_Shape_Data;
-struct _Ector_Renderer_Cairo_Shape_Data
-{
-   Efl_Gfx_Shape_Public *public_shape;
-
-   Ector_Cairo_Surface_Data *parent;
-   Ector_Renderer_Shape_Data *shape;
-   Ector_Renderer_Data *base;
-
-   cairo_path_t *path;
-};
-
-EOLIAN static void
-_ector_renderer_cairo_shape_efl_gfx_path_commit(Eo *obj EINA_UNUSED,
-                                                Ector_Renderer_Cairo_Shape_Data *pd)
-{
-   if (pd->path)
-     {
-        cairo_path_destroy(pd->path);
-        pd->path = NULL;
-     }
-}
-
-static Eina_Bool
-_ector_renderer_cairo_shape_ector_renderer_prepare(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
-{
-   const Efl_Gfx_Path_Command *cmds = NULL;
-   const double *pts = NULL;
-
-   ector_renderer_prepare(efl_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS));
-
-   // shouldn't this be moved to the cairo base object?
-   if (!pd->parent)
-     {
-        Ector_Renderer_Data *base;
-
-        base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-        pd->parent = efl_data_xref(base->surface, ECTOR_CAIRO_SURFACE_CLASS, obj);
-     }
-
-   efl_gfx_path_get(obj, &cmds, &pts);
-   if (!pd->path && cmds)
-     {
-        cairo_new_path(pd->parent->cairo);
-
-        for (; *cmds != EFL_GFX_PATH_COMMAND_TYPE_END; cmds++)
-          {
-             switch (*cmds)
-               {
-                case EFL_GFX_PATH_COMMAND_TYPE_MOVE_TO:
-                   cairo_move_to(pd->parent->cairo, pts[0], pts[1]);
-
-                   pts += 2;
-                   break;
-                case EFL_GFX_PATH_COMMAND_TYPE_LINE_TO:
-                   cairo_line_to(pd->parent->cairo, pts[0], pts[1]);
-
-                   pts += 2;
-                   break;
-                case EFL_GFX_PATH_COMMAND_TYPE_CUBIC_TO:
-
-                   cairo_curve_to(pd->parent->cairo,
-                                  pts[0], pts[1], pts[2], pts[3], // control points
-                                  pts[4], pts[5]); // destination point
-
-                   pts += 6;
-                   break;
-                case EFL_GFX_PATH_COMMAND_TYPE_CLOSE:
-                   cairo_close_path(pd->parent->cairo);
-                   break;
-                case EFL_GFX_PATH_COMMAND_TYPE_LAST:
-                case EFL_GFX_PATH_COMMAND_TYPE_END:
-                   break;
-               }
-          }
-
-        pd->path = cairo_copy_path(pd->parent->cairo);
-     }
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_ector_renderer_cairo_shape_ector_renderer_draw(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd, Efl_Gfx_Render_Op op, Eina_Array *clips, unsigned int mul_col)
-{
-   int r, g, b, a;
-   unsigned i;
-   Efl_Gfx_Fill_Rule fill_rule;
-
-   if (pd->path == NULL) return EINA_FALSE;
-
-   cairo_save(pd->parent->cairo);
-
-   ector_renderer_draw(efl_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS), op, clips, mul_col);
-
-   cairo_new_path(pd->parent->cairo);
-   cairo_append_path(pd->parent->cairo, pd->path);
-
-   fill_rule = efl_gfx_shape_fill_rule_get(obj);
-   if (fill_rule == EFL_GFX_FILL_RULE_ODD_EVEN)
-     cairo_set_fill_rule(pd->parent->cairo, CAIRO_FILL_RULE_EVEN_ODD);
-  else
-    cairo_set_fill_rule(pd->parent->cairo, CAIRO_FILL_RULE_WINDING);
-
-   if (pd->shape->fill)
-     ector_renderer_cairo_op_fill(pd->shape->fill, mul_col);
-
-   if (pd->shape->stroke.fill || pd->public_shape->stroke.color.a > 0)
-     {
-        cairo_fill_preserve(pd->parent->cairo);
-
-        if (pd->shape->stroke.fill)
-          ector_renderer_cairo_op_fill(pd->shape->stroke.fill, mul_col);
-       else
-         {
-            r = (((pd->public_shape->stroke.color.r * R_VAL(&mul_col)) + 0xff) >> 8);
-            g = (((pd->public_shape->stroke.color.g * G_VAL(&mul_col)) + 0xff) >> 8);
-            b = (((pd->public_shape->stroke.color.b * B_VAL(&mul_col)) + 0xff) >> 8);
-            a = (((pd->public_shape->stroke.color.a * A_VAL(&mul_col)) + 0xff) >> 8);
-            ector_color_argb_unpremul(a, &r, &g, &b);
-            cairo_set_source_rgba(pd->parent->cairo, r/255.0, g/255.0, b/255.0, a/255.0);
-            if (pd->public_shape->stroke.dash)
-              {
-                 double *dashinfo;
-
-                 dashinfo = (double *) malloc(2 * pd->public_shape->stroke.dash_length * sizeof(double));
-                 for (i = 0; i < pd->public_shape->stroke.dash_length; i++)
-                   {
-                      dashinfo[i*2] = pd->public_shape->stroke.dash[i].length;
-                      dashinfo[i*2 + 1] = pd->public_shape->stroke.dash[i].gap;
-                   }
-                 cairo_set_dash(pd->parent->cairo, dashinfo, pd->public_shape->stroke.dash_length * 2, 0);
-                 free(dashinfo);
-              }
-         }
-
-       // Set dash, cap and join
-       cairo_set_line_width(pd->parent->cairo, (pd->public_shape->stroke.width * pd->public_shape->stroke.scale));
-       cairo_set_line_cap(pd->parent->cairo, (cairo_line_cap_t) pd->public_shape->stroke.cap);
-       cairo_set_line_join(pd->parent->cairo, (cairo_line_join_t) pd->public_shape->stroke.join);
-       cairo_stroke(pd->parent->cairo);
-     }
-   else
-     {
-        cairo_fill(pd->parent->cairo);
-     }
-
-   cairo_restore(pd->parent->cairo);
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_ector_renderer_cairo_shape_ector_renderer_cairo_op_fill(Eo *obj EINA_UNUSED,
-                                                           Ector_Renderer_Cairo_Shape_Data *pd EINA_UNUSED,
-                                                           unsigned int mul_col EINA_UNUSED)
-{
-   // FIXME: let's find out how to fill a shape with a shape later.
-   // I need to read SVG specification and see how to map that with cairo.
-   ERR("fill with shape not implemented\n");
-   return EINA_FALSE;
-}
-
-static void
-_ector_renderer_cairo_shape_efl_gfx_path_bounds_get(const Eo *obj,
-                                                      Ector_Renderer_Cairo_Shape_Data *pd EINA_UNUSED,
-                                                      Eina_Rect *r)
-{
-   Ector_Renderer_Cairo_Data *bd;
-
-   // FIXME: It should be possible to ask cairo about this
-   efl_gfx_path_bounds_get(obj, r);
-
-   bd = efl_data_scope_get(obj, ECTOR_RENDERER_CAIRO_CLASS);
-   r->x += bd->generic->origin.x;
-   r->y += bd->generic->origin.y;
-}
-
-Eo *
-_ector_renderer_cairo_shape_efl_object_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
-{
-   obj = efl_constructor(efl_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS));
-
-   if (!obj) return NULL;
-
-   pd->public_shape = efl_data_xref(obj, EFL_GFX_SHAPE_MIXIN, obj);
-   pd->shape = efl_data_xref(obj, ECTOR_RENDERER_SHAPE_MIXIN, obj);
-   pd->base = efl_data_xref(obj, ECTOR_RENDERER_CLASS, obj);
-
-   return obj;
-}
-
-static Efl_Object *
-_ector_renderer_cairo_shape_efl_object_finalize(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
-{
-   obj = efl_finalize(efl_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS));
-   if (!obj) return NULL;
-
-   USE(pd->base, cairo_path_destroy, NULL);
-   USE(pd->base, cairo_restore, NULL);
-   USE(pd->base, cairo_fill, NULL);
-   USE(pd->base, cairo_set_dash, NULL);
-   USE(pd->base, cairo_fill_preserve, NULL);
-   USE(pd->base, cairo_set_source_rgba, NULL);
-   USE(pd->base, cairo_stroke, NULL);
-   USE(pd->base, cairo_set_line_width, NULL);
-   USE(pd->base, cairo_set_line_cap, NULL);
-   USE(pd->base, cairo_set_line_join, NULL);
-   USE(pd->base, cairo_new_path, NULL);
-   USE(pd->base, cairo_append_path, NULL);
-   USE(pd->base, cairo_save, NULL);
-   USE(pd->base, cairo_copy_path, NULL);
-   USE(pd->base, cairo_close_path, NULL);
-   USE(pd->base, cairo_curve_to, NULL);
-   USE(pd->base, cairo_line_to, NULL);
-   USE(pd->base, cairo_move_to, NULL);
-   USE(pd->base, cairo_set_fill_rule, NULL);
-
-   return obj;
-}
-
-void
-_ector_renderer_cairo_shape_efl_object_destructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
-{
-   Ector_Renderer_Data *base;
-
-   // FIXME: As base class destructor can't call destructor of mixin class.
-   // Call explicit API to free shape data.
-   efl_gfx_path_reset(obj);
-
-   base = efl_data_scope_get(obj, ECTOR_RENDERER_CLASS);
-   efl_data_xunref(base->surface, pd->parent, obj);
-
-   efl_data_xunref(obj, pd->shape, obj);
-   efl_data_xunref(obj, pd->base, obj);
-
-   efl_destructor(efl_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS));
-
-   if (pd->path) cairo_path_destroy(pd->path);
-}
-
-unsigned int
-_ector_renderer_cairo_shape_ector_renderer_crc_get(const Eo *obj,
-                                                                Ector_Renderer_Cairo_Shape_Data *pd)
-{
-   unsigned int crc;
-
-   crc = ector_renderer_crc_get(efl_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS));
-
-   crc = eina_crc((void*) &pd->shape->stroke.marker, sizeof (pd->shape->stroke.marker), crc, EINA_FALSE);
-   crc = eina_crc((void*) &pd->public_shape->stroke.scale, sizeof (pd->public_shape->stroke.scale) * 3, crc, EINA_FALSE); // scale, width, centered
-   crc = eina_crc((void*) &pd->public_shape->stroke.color, sizeof (pd->public_shape->stroke.color), crc, EINA_FALSE);
-   crc = eina_crc((void*) &pd->public_shape->stroke.cap, sizeof (pd->public_shape->stroke.cap), crc, EINA_FALSE);
-   crc = eina_crc((void*) &pd->public_shape->stroke.join, sizeof (pd->public_shape->stroke.join), crc, EINA_FALSE);
-
-   if (pd->shape->fill) crc = _renderer_crc_get(pd->shape->fill, crc);
-   if (pd->shape->stroke.fill) crc = _renderer_crc_get(pd->shape->stroke.fill, crc);
-   if (pd->shape->stroke.marker) crc = _renderer_crc_get(pd->shape->stroke.marker, crc);
-   if (pd->public_shape->stroke.dash_length)
-     {
-        crc = eina_crc((void*) pd->public_shape->stroke.dash, sizeof (Efl_Gfx_Dash) * pd->public_shape->stroke.dash_length, crc, EINA_FALSE);
-     }
-
-   return crc;
-}
-
-#include "ector_renderer_cairo_shape.eo.c"
diff --git a/src/lib/ector/cairo/ector_renderer_cairo_shape.eo b/src/lib/ector/cairo/ector_renderer_cairo_shape.eo
deleted file mode 100644 (file)
index b2d41c6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-class @beta Ector.Renderer.Cairo.Shape extends Ector.Renderer.Cairo implements Ector.Renderer.Shape, Efl.Gfx.Path
-{
-   [[Ector cairo renderer shape class]]
-   c_prefix: ector_renderer_cairo_shape;
-   implements {
-      Ector.Renderer.prepare;
-      Ector.Renderer.draw;
-      Efl.Gfx.Path.bounds_get;
-      Efl.Gfx.Path.commit;
-      Ector.Renderer.crc { get; }
-      Ector.Renderer.Cairo.op_fill;
-      Efl.Object.constructor;
-      Efl.Object.finalize;
-      Efl.Object.destructor;
-   }
-}
diff --git a/src/lib/ector/cairo/meson.build b/src/lib/ector/cairo/meson.build
deleted file mode 100644 (file)
index 094aedb..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-
-ector_src += files([
-  'ector_renderer_cairo_gradient_linear.c',
-  'ector_renderer_cairo_gradient_radial.c',
-  'ector_renderer_cairo_shape.c',
-  'ector_renderer_cairo.c',
-  'ector_cairo_software_surface.c',
-  'ector_cairo_surface.c'
-])
-
-pub_eo_files = [
-  'ector_cairo_surface.eo',
-  'ector_cairo_software_surface.eo',
-  'ector_renderer_cairo.eo',
-  'ector_renderer_cairo_shape.eo',
-  'ector_renderer_cairo_gradient_linear.eo',
-  'ector_renderer_cairo_gradient_radial.eo'
-]
-
-foreach eo_file : pub_eo_files
-  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
-    input : eo_file,
-    output : [eo_file + '.h'],
-    depfile : eo_file + '.d',
-    install : false,
-    install_dir : dir_package_include,
-    command : eolian_gen + [ '-I', meson.current_source_dir(), eolian_include_directories,
-                           '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'),
-                           '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'),
-                           '-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.d'),
-                           '-gchd', '@INPUT@'])
-endforeach
-
-
-if get_option('install-eo-files')
-  install_data(pub_eo_files,
-    install_dir: join_paths(eolian_include_dir, package_version_name)
-  )
-endif
index 131288a..88b6c6b 100644 (file)
@@ -34,8 +34,6 @@
 #ifndef _ECTOR_GL_SURFACE_EO_CLASS_TYPE
 #define _ECTOR_GL_SURFACE_EO_CLASS_TYPE
 
-typedef Eo Ector_Cairo_Surface;
-
 #endif
 
 typedef unsigned int GLuint;
index 5bedb7e..b0d33a1 100644 (file)
@@ -50,7 +50,6 @@ endforeach
 
 eolian_include_directories += ['-I', meson.current_source_dir()]
 
-subdir('cairo')
 subdir('gl')
 
 pub_eo_types_files = [
index 5a5c940..df7fc27 100644 (file)
@@ -45,7 +45,7 @@ _pixels_gry8_to_argb_convert(uint32_t *dst, const uint8_t *src, int len)
 }
 
 EOLIAN static void
-_ector_software_buffer_base_pixels_clear(Eo *obj, Ector_Software_Buffer_Base_Data *pd)
+_ector_software_buffer_base_pixels_clear(Eo *obj EINA_UNUSED, Ector_Software_Buffer_Base_Data *pd)
 {
    if (!pd->pixels.u8) return;
 
index eedf7be..1943d4c 100755 (executable)
@@ -2,7 +2,6 @@
 #include "evas_gl_core_private.h"
 
 #include "software/Ector_Software.h"
-#include "cairo/Ector_Cairo.h"
 #include "gl/Ector_GL.h"
 #include "evas_ector_gl.h"
 #include "filters/gl_engine_filter.h"
@@ -2804,7 +2803,6 @@ eng_texture_image_get(void *engine EINA_UNUSED, void *texture)
    return e3d_texture_get((E3D_Texture *)texture);
 }
 
-static Eina_Bool use_cairo = EINA_FALSE;
 static Eina_Bool use_gl = EINA_FALSE;
 
 static Ector_Surface *
@@ -2814,20 +2812,14 @@ eng_ector_create(void *engine EINA_UNUSED)
    const char *ector_backend;
    ector_backend = getenv("ECTOR_BACKEND");
    efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
-   if (ector_backend && !strcasecmp(ector_backend, "default"))
-     {
-        ector = efl_add_ref(ECTOR_SOFTWARE_SURFACE_CLASS, NULL);
-     }
-   else if (ector_backend && !strcasecmp(ector_backend, "experimental"))
+   if (ector_backend && !strcasecmp(ector_backend, "gl"))
      {
         ector = efl_add_ref(ECTOR_GL_SURFACE_CLASS, NULL);
         use_gl = EINA_TRUE;
      }
    else
-     {
-        ector = efl_add_ref(ECTOR_CAIRO_SOFTWARE_SURFACE_CLASS, NULL);
-        use_cairo = EINA_TRUE;
-     }
+     ector = efl_add_ref(ECTOR_SOFTWARE_SURFACE_CLASS, NULL);
+
    efl_domain_current_pop();
    return ector;
 }
@@ -2909,7 +2901,11 @@ eng_ector_renderer_draw(void *engine EINA_UNUSED, void *surface,
                         void *context EINA_UNUSED, Ector_Renderer *renderer,
                         Eina_Array *clips EINA_UNUSED, Eina_Bool do_async EINA_UNUSED)
 {
-   if (use_cairo || !use_gl)
+   if (use_gl)
+     {
+        //FIXME no implementation yet
+     }
+   else
      {
         int w, h;
         Eina_Rectangle *r;
@@ -2924,10 +2920,7 @@ eng_ector_renderer_draw(void *engine EINA_UNUSED, void *surface,
         while ((r = eina_array_pop(c)))
           eina_rectangle_free(r);
         eina_array_free(c);
-     }
-   else
-     {
-       //FIXME no implementation yet
+
      }
 }
 
@@ -2994,7 +2987,11 @@ eng_ector_begin(void *engine, void *surface,
                 void *context EINA_UNUSED, Ector_Surface *ector,
                 int x, int y, Eina_Bool clear, Eina_Bool do_async EINA_UNUSED)
 {
-   if (use_cairo|| !use_gl)
+   if (use_gl)
+     {
+        //FIXME: No implementation yet
+     }
+   else
      {
         int w, h, stride;
         Evas_GL_Image *glim = surface;
@@ -3010,10 +3007,7 @@ eng_ector_begin(void *engine, void *surface,
         // it just uses the software backend to draw for now
         ector_buffer_pixels_set(ector, pixels, w, h, stride, EFL_GFX_COLORSPACE_ARGB8888, EINA_TRUE);
         ector_surface_reference_point_set(ector, x, y);
-     }
-   else
-     {
-        //FIXME: No implementation yet
+
      }
 }
 
@@ -3024,7 +3018,11 @@ eng_ector_end(void *engine,
               Ector_Surface *ector,
               Eina_Bool do_async EINA_UNUSED)
 {
-   if (use_cairo || !use_gl)
+   if (use_gl)
+     {
+        //FIXME: No implementation yet
+     }
+   else
      {
         Evas_GL_Image *glim = surface;
         DATA32 *pixels;
@@ -3036,10 +3034,7 @@ eng_ector_end(void *engine,
         eng_image_data_put(engine, glim, pixels);
         ector_buffer_pixels_set(ector, NULL, 0, 0, 0, EFL_GFX_COLORSPACE_ARGB8888, EINA_TRUE);
         evas_common_cpu_end_opt();
-     }
-   else if (use_gl)
-     {
-        //FIXME: No implementation yet
+
      }
 }
 
index aba5907..072d46b 100755 (executable)
@@ -5,7 +5,6 @@
 #include "region.h"
 
 #include <software/Ector_Software.h>
-#include "cairo/Ector_Cairo.h"
 #include "evas_ector_software.h"
 #include "draw.h"
 #include "evas_filter_private.h"
@@ -4270,26 +4269,13 @@ eng_output_idle_flush(void *engine EINA_UNUSED, void *data)
 
 // Ector functions
 
-static Eina_Bool use_cairo;
-
 static Ector_Surface *
 eng_ector_create(void *engine EINA_UNUSED)
 {
    Ector_Surface *ector;
-   const char *ector_backend;
 
-   ector_backend = getenv("ECTOR_BACKEND");
    efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
-   if (ector_backend && !strcasecmp(ector_backend, "default"))
-     {
-        ector = efl_add_ref(ECTOR_SOFTWARE_SURFACE_CLASS, NULL);
-        use_cairo = EINA_FALSE;
-     }
-   else
-     {
-        ector = efl_add_ref(ECTOR_CAIRO_SOFTWARE_SURFACE_CLASS, NULL);
-        use_cairo = EINA_TRUE;
-     }
+   ector = efl_add_ref(ECTOR_SOFTWARE_SURFACE_CLASS, NULL);
    efl_domain_current_pop();
    return ector;
 }