# Handle cairo backend
ector_eolian_files_cairo = \
lib/ector/cairo/ector_cairo_surface.eo \
+ lib/ector/cairo/ector_cairo_software_surface.eo \
lib/ector/cairo/ector_renderer_cairo_base.eo \
lib/ector/cairo/ector_renderer_cairo_shape.eo \
lib/ector/cairo/ector_renderer_cairo_gradient_linear.eo \
lib/ector/cairo/ector_renderer_cairo_gradient_radial.c \
lib/ector/cairo/ector_renderer_cairo_shape.c \
lib/ector/cairo/ector_renderer_cairo_base.c \
+lib/ector/cairo/ector_cairo_software_surface.c \
lib/ector/cairo/ector_cairo_surface.c
installed_ectorcairoheadersdir = $(includedir)/ector-@VMAJ@/cairo
lib/ector/ector_private.h \
lib/ector/ector_buffer.h \
lib/ector/cairo/ector_cairo_private.h \
-lib/ector/software/ector_drawhelper_private.h \
lib/ector/software/ector_software_private.h \
static_libs/freetype/sw_ft_math.h \
static_libs/freetype/sw_ft_raster.h \
lib/evas/filters/blur/blur_box_rgba_sse3.c \
lib/evas/filters/blur/blur_box_rgba_neon.c
-### Vector surface helper
-
-EXTRA_DIST += \
-modules/evas/engines/software_generic/ector_cairo_software_surface.eo \
-modules/evas/engines/gl_generic/ector_cairo_software_surface.eo
-
### Engines
if EVAS_STATIC_BUILD_SOFTWARE_GENERIC
-BUILT_SOURCES += \
-modules/evas/engines/software_generic/ector_cairo_software_surface.eo.c \
-modules/evas/engines/software_generic/ector_cairo_software_surface.eo.h
-lib_evas_libevas_la_SOURCES += modules/evas/engines/software_generic/evas_engine.c modules/evas/engines/software_generic/ector_cairo_software_surface.c modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h
+lib_evas_libevas_la_SOURCES += modules/evas/engines/software_generic/evas_engine.c modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h
lib_evas_libevas_la_LIBADD +=
else
enginesoftwaregenericpkgdir = $(libdir)/evas/modules/engines/software_generic/$(MODULE_ARCH)
endif
if BUILD_ENGINE_GL_COMMON
-BUILT_SOURCES += \
-modules/evas/engines/gl_generic/ector_cairo_software_surface.eo.c \
-modules/evas/engines/gl_generic/ector_cairo_software_surface.eo.h
-
GL_COMMON_SOURCES = \
modules/evas/engines/gl_common/evas_gl_private.h \
modules/evas/engines/gl_common/evas_gl_common.h \
GL_GENERIC_SOURCES = \
modules/evas/engines/gl_generic/evas_engine.c \
-modules/evas/engines/gl_generic/ector_cairo_software_surface.c \
modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h
if EVAS_STATIC_BUILD_GL_COMMON
+++ /dev/null
-#ifdef HAVE_CONFIG_H
-#include "config.h" /* so that EAPI in Evas.h is correctly defined */
-#endif
-
-#include <Ector.h>
-
-#include <cairo/Ector_Cairo.h>
-#include <software/Ector_Software.h>
-
-#include "evas_common_private.h"
-#include "evas_private.h"
-#include "ector_cairo_software_surface.eo.h"
-#include "ector_buffer.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;
-
- eo_do(ector_surface,
- sym = ector_cairo_surface_symbol_get(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_generic_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,
- unsigned char l, unsigned char r, unsigned char t, unsigned char b)
-{
- 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;
-
- eo_do_super(obj, MY_CLASS,
- ok = ector_buffer_pixels_set(pixels, width, height, stride,
- cspace, writable, l, r, t, b));
-
- 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();
- eo_do(obj, ector_cairo_surface_context_set(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 Eo_Base *
-_ector_cairo_software_surface_eo_base_constructor(Eo *obj, Ector_Cairo_Software_Surface_Data *pd)
-{
- eo_do_super(obj, MY_CLASS, obj = eo_constructor());
- pd->base = eo_data_ref(obj, ECTOR_SOFTWARE_BUFFER_BASE_MIXIN);
- pd->base->generic = eo_data_ref(obj, ECTOR_GENERIC_BUFFER_MIXIN);
- pd->base->generic->eo = obj;
- return obj;
-}
-
-EOLIAN static void
-_ector_cairo_software_surface_eo_base_destructor(Eo *obj, Ector_Cairo_Software_Surface_Data *pd)
-{
- eo_data_unref(obj, pd->base);
- eo_do_super(obj, MY_CLASS, eo_destructor());
-}
-
-#include "ector_cairo_software_surface.eo.c"