diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am index bcd5fe73a7..497d092963 100644 --- a/src/Makefile_Evas.am +++ b/src/Makefile_Evas.am @@ -45,7 +45,6 @@ lib/evas/canvas/evas_common_interface.c \ lib/evas/canvas/evas_data.c \ lib/evas/canvas/evas_device.c \ lib/evas/canvas/evas_events.c \ -lib/evas/canvas/evas_filter.c \ lib/evas/canvas/evas_focus.c \ lib/evas/canvas/evas_key.c \ lib/evas/canvas/evas_key_grab.c \ @@ -490,7 +489,6 @@ modules/evas/engines/gl_common/evas_gl_image.c \ modules/evas/engines/gl_common/evas_gl_font.c \ modules/evas/engines/gl_common/evas_gl_polygon.c \ modules/evas/engines/gl_common/evas_gl_line.c \ -modules/evas/engines/gl_common/evas_gl_filter.c \ modules/evas/engines/gl_common/evas_gl_core.c \ modules/evas/engines/gl_common/evas_gl_api_ext.h \ modules/evas/engines/gl_common/evas_gl_api_ext_def.h \ @@ -524,22 +522,6 @@ modules/evas/engines/gl_common/shader/tex_frag.h \ modules/evas/engines/gl_common/shader/tex_vert.h \ modules/evas/engines/gl_common/shader/tex_nomul_frag.h \ modules/evas/engines/gl_common/shader/tex_nomul_vert.h \ -modules/evas/engines/gl_common/shader/filter_invert.h \ -modules/evas/engines/gl_common/shader/filter_invert_nomul.h \ -modules/evas/engines/gl_common/shader/filter_invert_bgra.h \ -modules/evas/engines/gl_common/shader/filter_invert_bgra_nomul.h \ -modules/evas/engines/gl_common/shader/filter_sepia.h \ -modules/evas/engines/gl_common/shader/filter_sepia_nomul.h \ -modules/evas/engines/gl_common/shader/filter_sepia_bgra.h \ -modules/evas/engines/gl_common/shader/filter_sepia_bgra_nomul.h \ -modules/evas/engines/gl_common/shader/filter_greyscale.h \ -modules/evas/engines/gl_common/shader/filter_greyscale_nomul.h \ -modules/evas/engines/gl_common/shader/filter_greyscale_bgra.h \ -modules/evas/engines/gl_common/shader/filter_greyscale_bgra_nomul.h \ -modules/evas/engines/gl_common/shader/filter_blur.h \ -modules/evas/engines/gl_common/shader/filter_blur_nomul.h \ -modules/evas/engines/gl_common/shader/filter_blur_bgra.h \ -modules/evas/engines/gl_common/shader/filter_blur_bgra_nomul.h \ modules/evas/engines/gl_common/shader/yuy2_frag.h \ modules/evas/engines/gl_common/shader/yuy2_vert.h \ modules/evas/engines/gl_common/shader/yuy2_nomul_frag.h \ @@ -570,22 +552,6 @@ modules/evas/engines/gl_common/shader/tex_frag.shd \ modules/evas/engines/gl_common/shader/tex_vert.shd \ modules/evas/engines/gl_common/shader/tex_nomul_frag.shd \ modules/evas/engines/gl_common/shader/tex_nomul_vert.shd \ -modules/evas/engines/gl_common/shader/filter_invert.shd \ -modules/evas/engines/gl_common/shader/filter_invert_nomul.shd \ -modules/evas/engines/gl_common/shader/filter_invert_bgra.shd \ -modules/evas/engines/gl_common/shader/filter_invert_bgra_nomul.shd \ -modules/evas/engines/gl_common/shader/filter_greyscale.shd \ -modules/evas/engines/gl_common/shader/filter_greyscale_nomul.shd \ -modules/evas/engines/gl_common/shader/filter_greyscale_bgra.shd \ -modules/evas/engines/gl_common/shader/filter_greyscale_bgra_nomul.shd \ -modules/evas/engines/gl_common/shader/filter_sepia.shd \ -modules/evas/engines/gl_common/shader/filter_sepia_nomul.shd \ -modules/evas/engines/gl_common/shader/filter_sepia_bgra.shd \ -modules/evas/engines/gl_common/shader/filter_sepia_bgra_nomul.shd \ -modules/evas/engines/gl_common/shader/filter_blur.shd \ -modules/evas/engines/gl_common/shader/filter_blur_nomul.shd \ -modules/evas/engines/gl_common/shader/filter_blur_bgra.shd \ -modules/evas/engines/gl_common/shader/filter_blur_bgra_nomul.shd \ modules/evas/engines/gl_common/shader/nv12_frag.h \ modules/evas/engines/gl_common/shader/nv12_frag.shd \ modules/evas/engines/gl_common/shader/nv12_nomul_frag.h \ diff --git a/src/lib/evas/canvas/evas_filter.c b/src/lib/evas/canvas/evas_filter.c deleted file mode 100644 index 80a11b4313..0000000000 --- a/src/lib/evas/canvas/evas_filter.c +++ /dev/null @@ -1,1428 +0,0 @@ -/* - * Filter implementation for evas - */ - -#if 0 // filtering disabled -typedef enum -{ - /** Apply any filter effects to this object (Default) */ - EVAS_FILTER_MODE_OBJECT, - /** Filter all objects beneath this object on the canvas */ - EVAS_FILTER_MODE_BELOW, -} Evas_Filter_Mode; -typedef enum -{ - /** No filter: Default */ - EVAS_FILTER_NONE, - /** A blur filter. Params are quality (float), and radius (int). */ - EVAS_FILTER_BLUR, - /** Negates the colors of an image. Also called solarize */ - EVAS_FILTER_INVERT, - EVAS_FILTER_SOLARIZE = EVAS_FILTER_INVERT, - /** Makes a sepia version of the image. */ - EVAS_FILTER_SEPIA, - /** Makes a greyscale version of the image. Params are 'red', - * 'green', 'blue' (all floats) which must add to 1. The defaults are - * 0.3, 0.59 and 0.11 which approximates human vision. Setting 'all' - * sets rgb to the same value. */ - EVAS_FILTER_GREYSCALE, - EVAS_FILTER_GRAYSCALE = EVAS_FILTER_GREYSCALE, - /** Brighten (or darken) image. Param 'adjust' float (-1.0 to 1.0) - * amount to adjust. */ - EVAS_FILTER_BRIGHTNESS, - /** Enhance contrast on image. Param 'adjust' float (-1.0 to 1.0) - * amount to adjust. */ - EVAS_FILTER_CONTRAST, - - EVAS_FILTER_LAST = EVAS_FILTER_CONTRAST -} Evas_Filter; - -/** - * Set the filter mode for an object. - * - * There are two valid filtering modes currently: - * - EVAS_FILTER_MODE_OBJECT: which applies the filter to the object itself - * - EVAS_FILTER_MODE_BELOW: which makes the object invisible and filters - * what is below the object. - * - * The default filter mode is EVAS_FILTER_MODE_OBJECT. - * - * @param o Object to set filter mode on. - * @param mode Mode to set. - * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise. - */ - EAPI Eina_Bool evas_object_filter_mode_set (Evas_Object *o, Evas_Filter_Mode mode); - -/** - * Get the current filtering mode for an object. - * - * By default all objects are in object filtering mode, even if no filter is - * set. - * - * @param o Object to get filter mode of. - * @return Filter mode (default EVAS_FILTER_MODE_OBJECT) - */ - EAPI Evas_Filter_Mode evas_object_filter_mode_get (Evas_Object *o); - -/** - * Set the current filter type. - * - * This sets the filter type, whether a blur, color filter or some other type - * of filter. This is normally the only filter call necessary, although some - * filters require additional parameters. - * - * If the object has a filter already, and existing parameters will be - * cleared. - * - * Setting the blur to EVAS_FILTER_NONE removes any filter. - * - * @param o Object to set the filter on. - * @param filter Filter to set. - * @return @c EINA_TRUE on success. - */ - EAPI Eina_Bool evas_object_filter_set (Evas_Object *o, Evas_Filter filter); - -/** - * Get the current filter. - * - * @param o Object to get filter of. - * @return The filter if set, or EVAS_FILTER_NONE. - */ - EAPI Evas_Filter evas_object_filter_get (Evas_Object *o); - -/** - * Set an integer parameter of a filter. - * - * This sets an integer parameter of a filter, if such parameter is known to - * the filter. Note that some parameters may actually set multiple fields. - * The individual filters define the specific parameters available. - * - * It should be noted that filter parameters are lost after the filter type - * changes, so set the filter type, then the parameters. - * - * @param o Object to set parameter on. - * @param param Name of parameter to set. - * @param val Value to set. - * @return @c EINA_TRUE if at least one parameter was set, @c EINA_FALSE - * otherwise. - */ - EAPI Eina_Bool evas_object_filter_param_int_set (Evas_Object *o, const char *param, int val); - -/** - * Get an integer value parameter from a filter. - * - * Gets the first matching parameter for a filter. Note there is no way to - * later fields if they do not have their own accessor name. - * - * Also note that there is no way to tell the difference between a -1 as a - * value, and the error code. Ask your filter writer to use a different - * range. - * - * @param o The object. - * @Param param Name of the parameter to get. - * @return The value, or -1 on error. - */ - EAPI int evas_object_filter_param_int_get (Evas_Object *o, const char *param); - -/** - * Set a string parameter on a filter - * - * Currently unimplemented as no filters use this yet - */ - EAPI Eina_Bool evas_object_filter_param_str_set (Evas_Object *o, const char *param, const char *val); - -/** - * Get a string parameter from a filter - * - * Currently unimplemented as no filters use this yet - */ - EAPI const char *evas_object_filter_param_str_get (Evas_Object *o, const char *param); - -/** - * Set an object parameter on a filter - * - * Currently unimplemented as no filters use this yet - */ - EAPI Eina_Bool evas_object_filter_param_obj_set (Evas_Object *o, const char *param, Evas_Object *val); - -/** - * get an object parameter from a filter - * - * Currently unimplemented as no filters use this yet - */ - EAPI Evas_Object *evas_object_filter_param_obj_get (Evas_Object *o, const char *param); - -/** - * Set a float parameter of a filter. - * - * This is the same as evas_object_filter_param_int_set(), but for floating - * point values. - * - * @param o Object to set value on. - * @param param Name of the parameter to set. - * @param @c EINA_TRUE if at least one parameter was set, @c EINA_FALSE - * otherwise. - */ - EAPI Eina_Bool evas_object_filter_param_float_set(Evas_Object *o, const char *param, double val); - -/** - * Get a float parameter of a filter. - * - * This is the same as evas_object_filter_param_int_get(), but for floating - * point values. - * - * @param o Object to set value on. - * @param param Name of the parameter to set. - * @return The value, or -1 on error. - */ - EAPI double evas_object_filter_param_float_get(Evas_Object *o, const char *param); - -#include // offsetof - -#include "evas_common.h" -#include "evas_private.h" - -#include -/* disable neon - even after fixes: - * Error: ARM register expected -- vdup.u32 q14,$0xff000000' - * not going to fix now -#ifdef BUILD_NEON -# define BUILD_NEON0 1 -#else -# define BUILD_NEON0 0 -#endif -*/ - -#define BUILD_NEON0 0 - -typedef struct Evas_Filter_Info_Blur -{ - double quality; - int radius; -} Evas_Filter_Info_Blur; - -typedef struct Evas_Filter_Info_GreyScale -{ - double r,g,b; -} Evas_Filter_Info_GreyScale; - -typedef struct Evas_Filter_Info_Brightness -{ - double adjust; -} Evas_Filter_Info_Brightness; - -typedef struct Evas_Filter_Info_Contrast -{ - double adjust; -} Evas_Filter_Info_Contrast; - -typedef int (*Filter_Size_FN)(Evas_Filter_Info *,int,int,int*,int*,Eina_Bool); -typedef uint8_t *(*Key_FN)(const Evas_Filter_Info *, uint32_t *); - -struct fieldinfo -{ - const char *field; - int type; - size_t offset; -}; - -struct filterinfo -{ - Evas_Software_Filter_Fn filter; - const size_t datasize; - Filter_Size_FN sizefn; - Key_FN keyfn; - Eina_Bool alwaysalpha; -}; - -enum -{ - TYPE_INT, - TYPE_FLOAT -}; - -static int blur_size_get(Evas_Filter_Info*, int, int, int *, int *, Eina_Bool); -static uint8_t *gaussian_key_get(const Evas_Filter_Info *, uint32_t *); - -static Eina_Bool gaussian_filter(Evas_Filter_Info *, RGBA_Image*, RGBA_Image*); -static Eina_Bool negation_filter(Evas_Filter_Info *, RGBA_Image*, RGBA_Image*); -static Eina_Bool sepia_filter(Evas_Filter_Info *, RGBA_Image*, RGBA_Image*); -static Eina_Bool greyscale_filter(Evas_Filter_Info*, RGBA_Image*, RGBA_Image*); -static Eina_Bool brightness_filter(Evas_Filter_Info*, RGBA_Image*, RGBA_Image*); -static Eina_Bool contrast_filter(Evas_Filter_Info *, RGBA_Image*, RGBA_Image*); - -struct filterinfo filterinfo[] = -{ - /* None */ - { NULL, 0, NULL, NULL, EINA_FALSE}, - /* Blur */ - { gaussian_filter, sizeof(Evas_Filter_Info_Blur), blur_size_get, gaussian_key_get, EINA_TRUE }, - /* Negation */ - { negation_filter, 0, NULL, NULL, EINA_FALSE }, - /* Sepia */ - { sepia_filter, 0, NULL, NULL, EINA_FALSE }, - /* Greyscale */ - { greyscale_filter, sizeof(Evas_Filter_Info_GreyScale), NULL, NULL, EINA_FALSE }, - /* Brightness */ - { brightness_filter, sizeof(Evas_Filter_Info_Brightness), NULL, NULL, EINA_FALSE }, - /* Contrast */ - { contrast_filter, sizeof(Evas_Filter_Info_Contrast), NULL, NULL, EINA_FALSE}, -}; - - -static struct fieldinfo blurfields[] = -{ - { "quality", TYPE_FLOAT, offsetof(Evas_Filter_Info_Blur, quality) }, - { "radius", TYPE_INT, offsetof(Evas_Filter_Info_Blur, radius) }, - { NULL, 0, 0 }, -}; - -static struct fieldinfo greyfields[] = -{ - { "red", TYPE_FLOAT, offsetof(Evas_Filter_Info_GreyScale, r) }, - { "green", TYPE_FLOAT, offsetof(Evas_Filter_Info_GreyScale, g) }, - { "blue", TYPE_FLOAT, offsetof(Evas_Filter_Info_GreyScale, b) }, - - { "all", TYPE_FLOAT, offsetof(Evas_Filter_Info_GreyScale, r) }, - { "all", TYPE_FLOAT, offsetof(Evas_Filter_Info_GreyScale, g) }, - { "all", TYPE_FLOAT, offsetof(Evas_Filter_Info_GreyScale, b) }, - { NULL, 0, 0 }, -}; - -static struct fieldinfo brightnessfields[] = -{ - { "adjust", TYPE_FLOAT, offsetof(Evas_Filter_Info_Brightness, adjust) }, - { NULL, 0, 0 }, -}; - -static struct fieldinfo contrastfields[] = -{ - { "adjust", TYPE_FLOAT, offsetof(Evas_Filter_Info_Contrast, adjust) }, - { NULL, 0, 0 }, -}; - -static struct fieldinfo *filterfields[] = -{ - NULL, - blurfields, - NULL, - NULL, - greyfields, - brightnessfields, - contrastfields, -}; - -static Evas_Filter_Info *filter_alloc(Evas_Object *o); - -EAPI Eina_Bool -evas_object_filter_mode_set(Evas_Object *o, Evas_Filter_Mode mode) -{ - Evas_Filter_Info *info; - - MAGIC_CHECK(o, Evas_Object, MAGIC_OBJ); - return EINA_FALSE; - MAGIC_CHECK_END(); - - if ((mode != EVAS_FILTER_MODE_OBJECT) && (mode != EVAS_FILTER_MODE_BELOW)) - return EINA_FALSE; - - if (!o->filter) - { - filter_alloc(o); - } - if (!o->filter) return EINA_FALSE; - info = o->filter; - - if (info->mode == mode) return EINA_TRUE; /* easy case */ - info->mode = mode; - info->dirty = 1; - return EINA_TRUE; -} - -EAPI Evas_Filter_Mode -evas_object_filter_mode_get(Evas_Object *o) -{ - MAGIC_CHECK(o, Evas_Object, MAGIC_OBJ); - return EVAS_FILTER_MODE_OBJECT; - MAGIC_CHECK_END(); - - if (!o->filter) return EVAS_FILTER_MODE_OBJECT; - return o->filter->mode; -} - -EAPI Eina_Bool -evas_object_filter_set(Evas_Object *o, Evas_Filter filter) -{ - Evas_Filter_Info *info; - struct filterinfo *finfo; - - MAGIC_CHECK(o, Evas_Object, MAGIC_OBJ); - return EINA_FALSE; - MAGIC_CHECK_END(); - - /* force filter to be signed: else gcc complains, but enums may always be - * signed */ - if (((int)filter < (int)EVAS_FILTER_NONE) || (filter > EVAS_FILTER_LAST)) - return EINA_FALSE; - - /* Don't alloc on no-op */ - if (!o-filter && filter == EVAS_FILTER_NONE) return EINA_TRUE; - - if (!o->filter) filter_alloc(o); - if (!o->filter) return EINA_FALSE; - - info = o->filter; - - if (info->filter == filter) return EINA_TRUE; - - finfo = filterinfo + filter; - info->filter = filter; - info->dirty = 1; - if (info->data) - { - if (info->data_free) - info->data_free(info->data); - else - free(info->data); - } - info->datalen = finfo->datasize; - if (finfo->datasize) - { - info->data = calloc(1, finfo->datasize); - if (!info->data) - { - o->filter = EVAS_FILTER_NONE; - return EINA_FALSE; - } - } - else - info->data = NULL; - info->data_free = NULL; - - return EINA_TRUE; -} - -EAPI Evas_Filter -evas_object_filter_get(Evas_Object *o) -{ - MAGIC_CHECK(o, Evas_Object, MAGIC_OBJ); - return EVAS_FILTER_NONE; - MAGIC_CHECK_END(); - - if (!o->filter) return EVAS_FILTER_NONE; - return o->filter->filter; -} - -EAPI Eina_Bool -evas_object_filter_param_int_set(Evas_Object *o, const char *param, int val) -{ - char *data; - const struct fieldinfo *fields; - Eina_Bool found; - int i; - - MAGIC_CHECK(o, Evas_Object, MAGIC_OBJ); - return EINA_FALSE; - MAGIC_CHECK_END(); - - if ((!o->filter) || (!o->filter->data)) return EINA_FALSE; - - fields = filterfields[o->filter->filter]; - data = o->filter->data; - found = EINA_FALSE; - for (i = 0; fields[i].field; i++) - { - if (!strcmp(fields[i].field, param)) - { - if (fields[i].type != TYPE_INT) continue; - *(int *)(data + fields[i].offset) = val; - o->filter->dirty = 1; - evas_object_change(o); - found = EINA_TRUE; - } - } - return found; -} - -EAPI int -evas_object_filter_param_int_get(Evas_Object *o, const char *param) -{ - char *data; - const struct fieldinfo *fields; - int val; - int i; - - MAGIC_CHECK(o, Evas_Object, MAGIC_OBJ); - return -1; - MAGIC_CHECK_END(); - - if ((!o->filter) || (!o->filter->data)) return -1; - - fields = filterfields[o->filter->filter]; - if (!fields) return -1; - data = o->filter->data; - - for (i = 0; fields[i].field; i++) - { - if (!strcmp(fields[i].field, param)) - { - if (fields[i].type != TYPE_INT) continue; - val = *(int *)(data + fields[i].offset); - return val; - } - } - return -1; -} - -EAPI Eina_Bool -evas_object_filter_param_str_set(Evas_Object *o EINA_UNUSED, - const char *param EINA_UNUSED, - const char *val EINA_UNUSED) -{ - return EINA_FALSE; -} - -EAPI const char * -evas_object_filter_param_str_get(Evas_Object *o EINA_UNUSED, - const char *param EINA_UNUSED) -{ - return NULL; -} - -EAPI Eina_Bool -evas_object_filter_param_obj_set(Evas_Object *o EINA_UNUSED, - const char *param EINA_UNUSED, - Evas_Object *val EINA_UNUSED) -{ - return EINA_FALSE; -} - -EAPI Evas_Object * -evas_object_filter_param_obj_get(Evas_Object *o EINA_UNUSED, - const char *param EINA_UNUSED) -{ - return NULL; -} - -EAPI Eina_Bool -evas_object_filter_param_float_set(Evas_Object *o, const char *param, - double val) -{ - char *data; - const struct fieldinfo *fields; - int i; - Eina_Bool rv; - - MAGIC_CHECK(o, Evas_Object, MAGIC_OBJ); - return EINA_FALSE; - MAGIC_CHECK_END(); - - if ((!o->filter) || (!o->filter->data)) return EINA_FALSE; - - rv = EINA_FALSE; - fields = filterfields[o->filter->filter]; - if (!fields) return EINA_FALSE; - - data = o->filter->data; - - for (i = 0; fields[i].field; i++) - { - if (!strcmp(fields[i].field, param)) - { - if (fields[i].type != TYPE_FLOAT) continue; - *(double *)(data + fields[i].offset) = val; - o->filter->dirty = 1; - o->changed = 1; - evas_object_change(o); - rv = EINA_TRUE; - } - } - return rv; -} - -EAPI double -evas_object_filter_param_float_get(Evas_Object *o, const char *param) -{ - char *data; - const struct fieldinfo *fields; - double val; - int i; - - MAGIC_CHECK(o, Evas_Object, MAGIC_OBJ); - return -1; - MAGIC_CHECK_END(); - - if ((!o->filter) || (!o->filter->data)) return -1; - - fields = filterfields[o->filter->filter]; - if (!fields) return -1; - data = o->filter->data; - - for (i = 0; fields[i].field; i++) - { - if (!strcmp(fields[i].field, param)) - { - if (fields[i].type != TYPE_FLOAT) continue; - val = *(double *)(data + fields[i].offset); - return val; - } - } - return -1; -} - - - - - -/* - * Internal call - */ -int -evas_filter_get_size(Evas_Filter_Info *info, int inw, int inh, - int *outw, int *outh, Eina_Bool inv) -{ - if (!info) return -1; - if ((!outw) && (!outh)) return 0; - - if (filterinfo[info->filter].sizefn) - return filterinfo[info->filter].sizefn(info, inw, inh, outw, outh, inv); - - if (outw) *outw = inw; - if (outh) *outh = inh; - return 0; -} - -Eina_Bool -evas_filter_always_alpha(Evas_Filter_Info *info) -{ - if (!info) return EINA_FALSE; - return filterinfo[info->filter].alwaysalpha; -} - -/* - * Another internal call: - * Given a filterinfo, generate a unique key for it - * - * For simple filters, it's just the filter type. - * for more complex filters, it's the type, with it's params. - * - * Note management of the key data is up to the caller, that is it should - * probably be freed after use. - * - * Note the automatic fallback generation places the single byte at the end so - * the memcpy will be aligned. Micro-optimisations FTW! - * - * @param info Filter info to generate from - * @param len Length of the buffer returned. - * @return key Key buffer - */ -uint8_t * -evas_filter_key_get(const Evas_Filter_Info *info, uint32_t *lenp) -{ - struct filterinfo *finfo; - uint8_t *key; - int len; - - if (!info) return NULL; - - finfo = filterinfo + info->filter; - if (finfo->keyfn) return finfo->keyfn(info, lenp); - - len = 1 + finfo->datasize; - key = malloc(len); - if (!key) return NULL; - if (finfo->datasize) memcpy(key, info->data, finfo->datasize); - key[finfo->datasize] = info->filter; - if (lenp) *lenp = len; - return key; -} - -Evas_Software_Filter_Fn -evas_filter_software_get(Evas_Filter_Info *info) -{ - return filterinfo[info->filter].filter; -} - -void -evas_filter_free(Evas_Object *o) -{ - if (!o->filter) return; - if (o->filter->key) free(o->filter->key); - free(o->filter); - o->filter = NULL; -} - - - - -/* - * Private calls - */ -static Evas_Filter_Info * -filter_alloc(Evas_Object *o) -{ - Evas_Filter_Info *info; - - if (!o) return NULL; - info = calloc(1,sizeof(struct Evas_Filter_Info)); - if (!info) return NULL; - info->dirty = 1; - info->filter = EVAS_FILTER_NONE; - info->mode = EVAS_FILTER_MODE_OBJECT; - info->datalen = 0; - - o->filter = info; - - return info; -} - -static int -blur_size_get(Evas_Filter_Info *info, int inw, int inh, int *outw, int *outh, - Eina_Bool inv) -{ - Evas_Filter_Info_Blur *blur = info->data; - - if (inv) - { - if (outw) *outw = MAX(inw - (blur->radius * 2), 0); - if (outh) *outh = MAX(inh - (blur->radius * 2), 0); - } - else - { - if (outw) *outw = inw + (blur->radius * 2); - if (outh) *outh = inh + (blur->radius * 2); - } - return 0; -} - -/* - * Generate a key for the Gaussian generator. - * - * The size is: - * - 1 byte for the type (blur) - * - 1 byte for the quality (0-1 -> 0-255) - * - 2 bytes for radius (max is 508 anyway) - * - * @param info Filter info - * @param len Length of the returned buffer - * @return new buffer - */ -static uint8_t * -gaussian_key_get(const Evas_Filter_Info *info, uint32_t *lenp) -{ - struct Evas_Filter_Info_Blur *blur; - uint8_t *key; - - if ((!info) || (!info->data)) return NULL; - blur = info->data; - - if (lenp) *lenp = 4; - key = malloc(4); - if (!key) return NULL; - key[0] = EVAS_FILTER_BLUR; - key[1] = blur->quality * 255; - key[2] = blur->radius >> 8; - key[3] = blur->radius; - - return key; -} - - - - - - - - - - - - - - - - - - - -/** - * Software implementations - */ -#define all(OP, A, R, G, B, W, I) \ - do { \ - A OP A_VAL(I) * W; \ - R OP R_VAL(I) * W; \ - G OP G_VAL(I) * W; \ - B OP B_VAL(I) * W; \ - } while (0) -#define wavg(x,n) (((x) / (n)) & 0xff) -#define wavgd(x,n) ((uint32_t)((x) / (n)) & 0xff) - -typedef int (*FilterH)(int, uint32_t *, int, uint32_t *); -typedef int (*FilterV)(int, uint32_t *, int, int, uint32_t *); - -static int gaussian_filter_h(int rad, uint32_t *in, int w, uint32_t *out); -static int gaussian_filter_h64(int rad, uint32_t *in, int w, uint32_t *out); -static int gaussian_filter_hd(int rad, uint32_t *in, int w, uint32_t *out); -static int gaussian_filter_v(int rad, uint32_t *in, int h, int skip, uint32_t *out); -static int gaussian_filter_v64(int rad, uint32_t *in, int h, int skip, uint32_t *out); -static int gaussian_filter_vd(int rad, uint32_t *in, int h, int skip, uint32_t *out); -static const uint32_t *gaussian_row_get(int row, int *npoints, uint32_t *weight); -static const uint64_t *gaussian_row_get64(int row, int *npoints, uint64_t *weight); -static const double *gaussian_row_getd(int row, int *npoints, double *weight); - -static Eina_Bool -gaussian_filter(Evas_Filter_Info *filter, RGBA_Image *src, RGBA_Image *dst) -{ - int i; - uint32_t nw, nh; - uint32_t *in, *tmp, *out; - FilterV filter_v = gaussian_filter_v; - FilterH filter_h = gaussian_filter_h; - Evas_Filter_Info_Blur *blur; - int w, h; - - blur = filter->data; - - /* Use 64 bit version if we are going to overflow */ - if (blur->radius > 508) /** too big for doubles: Bail out */ - return EINA_FALSE; - else if (blur->radius > 28) - { - filter_v = gaussian_filter_vd; - filter_h = gaussian_filter_hd; - } - else if (blur->radius > 12) - { - filter_v = gaussian_filter_v64; - filter_h = gaussian_filter_h64; - } - - w = src->cache_entry.w; - h = src->cache_entry.h; - in = src->image.data; - - if (!in) return EINA_FALSE; - - nw = w + (2 * blur->radius); - nh = h + (2 * blur->radius); - - out = dst->image.data; - if (!out) return EINA_FALSE; - tmp = malloc(nw * h * sizeof(uint32_t)); - - for (i = 0; i < h; i++) - filter_h(blur->radius,in + (i * w), w, tmp + (i * nw)); - - for (i = 0; i < (int)nw; i++) - filter_v(blur->radius,tmp + i, h, nw, out + i); - - free(tmp); - return EINA_TRUE; -} - -/* Blur only horizontally */ -static int -gaussian_filter_h(int rad, uint32_t *in, int w, uint32_t *out) -{ - const uint32_t *points; - int npoints = 0; - uint32_t weight = 0; - int i = 0, k = 0; - uint32_t r, g, b, a; - - /* Get twice the radius: even rows have 1 element */ - points = gaussian_row_get(rad * 2, &npoints, &weight); - for (i = -rad; i < (w + rad); i++) - { - r = g = b = a = 0; - for (k = -rad; k <= rad; k++) - { - if ((k + i) < 0) continue; - if ((k + i) >= w) continue; - all(+=, a, r, g, b, points[k + rad], in + k + i); - } - *(out) = ARGB_JOIN(wavg(a, weight), - wavg(r, weight), - wavg(g, weight), - wavg(b, weight)); - out++; - } - return 0; -} - -/* Blur only horizontally */ -static int -gaussian_filter_hd(int rad, uint32_t *in, int w, uint32_t *out) -{ - const double *points; - int npoints = 0; - double weight = 0.0; - int i = 0, k = 0; - double r, g, b, a; - - /* Get twice the radius: even rows have 1 element */ - points = gaussian_row_getd(rad * 2, &npoints, &weight); - for (i = -rad; i < (w + rad); i++) - { - r = g = b = a = 0; - for (k = -rad; k <= rad; k++) - { - if ((k + i) < 0) continue; - if ((k + i) >= w) continue; - all(+=, a, r, g, b, points[k + rad], in + k + i); - } - *(out) = ARGB_JOIN(wavgd(a, weight), - wavgd(r, weight), - wavgd(g, weight), - wavgd(b, weight)); - out++; - } - return 0; -} - - -/* Blur only horizontally */ -static int -gaussian_filter_h64(int rad, uint32_t *in, int w, uint32_t *out) -{ - const uint64_t *points; - int npoints = 0; - uint64_t weight = 0; - int i = 0, k = 0; - uint64_t r, g, b, a; - - /* Get twice the radius: even rows have 1 element */ - points = gaussian_row_get64(rad * 2, &npoints, &weight); - for (i = -rad ; i < w + rad; i ++){ - r = g = b = a = 0; - for (k = -rad ; k <= rad ; k ++){ - if ((k + i) < 0) continue; - if ((k + i) >= w) continue; - all(+=, a, r, g, b, points[k + rad], in + k + i); - } - *(out) = ARGB_JOIN(wavg(a, weight), - wavg(r, weight), - wavg(g, weight), - wavg(b, weight)); - out++; - } - return 0; -} - -static int -gaussian_filter_v(int rad, uint32_t *in, int h, int skip, uint32_t *out) -{ - const uint32_t *points; - int npoints = 0; - uint32_t weight = 0; - int i = 0, k = 0; - uint32_t r, g, b, a; - - /* Get twice the radius: even rows have 1 element */ - points = gaussian_row_get(rad * 2, &npoints, &weight); - weight = 0; - for (i = 0; i < npoints; i++) weight += points[i]; - - for (i = -rad; i < (h + rad); i++) - { - r = g = b = a = 0; - for (k = -rad; k <= rad; k++) - { - if ((k + i) < 0) continue; - if ((k + i) >= h) continue; - all(+=, a, r, g, b, points[k + rad], in + (skip * (k + i))); - } - *(out) = ARGB_JOIN(wavg(a, weight), - wavg(r, weight), - wavg(g, weight), - wavg(b, weight)); - out += skip; - } - return 0; -} - -static int -gaussian_filter_v64(int rad, uint32_t *in, int h, int skip, uint32_t *out) -{ - const uint64_t *points; - int npoints = 0; - uint64_t weight; - int i = 0, k = 0; - uint64_t r, g, b, a; - - /* Get twice the radius: even rows have 1 element */ - points = gaussian_row_get64(rad * 2, &npoints, &weight); - weight = 0; - for (i = 0; i < npoints; i++) weight += points[i]; - - for (i = -rad; i < (h + rad); i++) - { - r = g = b = a = 0; - for (k = -rad ; k <= rad ; k++) - { - if ((k + i) < 0) continue; - if ((k + i) >= h) continue; - all(+=, a, r, g, b, points[k + rad], in + (skip * (k + i))); - } - *(out) = ARGB_JOIN(wavg(a, weight), - wavg(r, weight), - wavg(g, weight), - wavg(b, weight)); - out += skip; - } - return 0; -} - -static int -gaussian_filter_vd(int rad, uint32_t *in, int h, int skip, uint32_t *out) -{ - const double *points; - int npoints = 0; - double weight = 0.0; - int i = 0, k = 0; - double r, g, b, a; - - /* Get twice the radius: even rows have 1 element */ - points = gaussian_row_getd(rad * 2, &npoints, &weight); - weight = 0; - for (i = 0 ; i < npoints ; i ++) weight += points[i]; - - for (i = -rad ; i < h + rad; i ++) - { - r = g = b = a = 0; - for (k = -rad ; k <= rad ; k ++) - { - if ((k + i) < 0) continue; - if ((k + i) >= h) continue; - all(+=, a, r, g, b, points[k + rad], in + (skip * (k + i))); - } - *(out) = ARGB_JOIN(wavgd(a, weight), - wavgd(r, weight), - wavgd(g, weight), - wavgd(b, weight)); - out += skip; - } - return 0; -} - -static const uint32_t * -gaussian_row_get(int row, int *npoints, uint32_t *weight) -{ - static uint32_t *points = NULL; - static int last = -1; - static uint32_t lastweight = -1; - int c, k; - - if (row < 0) return NULL; - - if (npoints) *npoints = row + 1; - - if (last == row) - { - if (weight) *weight = lastweight; - return points; - } - if (points) free(points); - - points = malloc((row + 1) * sizeof(uint32_t)); - if (!points) - { - last = -1; - return NULL; - } - last = row; - - c = 1; - for (k = 0; k <= row; k++) - { - points[k] = c; - c = c * (row - k) / (k + 1); - } - - for (k = 0, lastweight = 0; k <= row; k++) lastweight += points[k]; - if (weight) *weight = lastweight; - return points; -} - -static const uint64_t * -gaussian_row_get64(int row, int *npoints, uint64_t *weight) -{ - static uint64_t *points = NULL; - static int last = -1; - static uint64_t lastweight = -1; - uint64_t c; - int k; - - if (row < 0) return NULL; - - if (npoints) *npoints = row + 1; - if (last == row) - { - if (weight) *weight = lastweight; - return points; - } - if (points) free(points); - - points = malloc((row + 1) * sizeof(uint64_t)); - if (!points) - { - last = -1; - return NULL; - } - last = row; - - c = 1; - for (k = 0; k <= row; k++) - { - points[k] = c; - c = c * (row - k) / (k + 1); - } - - for (k = 0, lastweight = 0; k <= row; k ++) lastweight += points[k]; - if (weight) *weight = lastweight; - - return points; -} - -static const double * -gaussian_row_getd(int row, int *npoints, double *weight) -{ - static double *points = NULL; - static int last = -1; - static double lastweight = -1; - double c; - int k; - - if (row < 0) return NULL; - - if (last == row) - { - if (weight) *weight = lastweight; - return points; - } - - if (points) free(points); - points = malloc((row + 1) * sizeof(double)); - if (!points) - { - last = -1; - return NULL; - } - last = row; - - if (npoints) *npoints = row + 1; - - c = 1; - for (k = 0; k <= row; k++) - { - points[k] = c; - c = c * (row - k) / (k + 1); - } - - for (k = 0, lastweight = 0; k <= row; k++) lastweight += points[k]; - if (weight) *weight = lastweight; - - return points; -} - -#if BUILD_NEON0 -static Eina_Bool -negation_filter_neon(Evas_Filter_Info *info, RGBA_Image *src, RGBA_Image *dst) -{ - uint32_t tmp; - - if (src->cache_entry.flags.alpha) - { - // FIXME: not implemented - } - else - { - /* No alpha */ -#define AP "NEG_FILTER_NA" - asm volatile ( - - ".fpu neon \n\t" - "vdup.u32 q14, $0xff000000 \n\t" - "vmvn.u32 q15, q1 \n\t" - - // fixme: do check for small loops - AP"loopinit: \n\t" - "sub %[tmp], %[e], #31 \n\t" - - AP"loop: \n\t" - "vldm %[s]!, {d0,d1,d2,d3} \n\t" - "vand q2, q0, q15 \n\t" - "vand q3, q1, q15 \n\t" - "vand q4, q0, q14 \n\t" - "vand q5, q1, q14 \n\t" - // fixme: can i do this with xor - "cmp %[tmp], %[s] \n\t" - - "vmvn q6, q2 \n\t" - "vmvn q7, q3 \n\t" - - "vorr q0, q6,q4 \n\t" - "vorr q1, q7,q5 \n\t" - - "vstm %[d]!, {d0,d1,d2,d3} \n\t" - - "bhi "AP"loop \n\t" - - : // no out - : // input - [e] "r" (src->image.data+ src->cache_entry.w*src->cache_entry.h), - [s] "r" (src->image.data), - [tmp] "r" (tmp), - [d] "r" (dst->image.data) - : "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7", "q14", "q15", - "memory" - ); -#undef AP - } - return EINA_TRUE; -} -#endif - -static Eina_Bool -negation_filter(Evas_Filter_Info *info, RGBA_Image *src, RGBA_Image *dst) -{ - uint32_t *in, *out; - int i,j; - int w,h; - uint32_t a; - uint8_t r,g,b; - -#if BUILD_NEON0 - if (evas_common_cpu_has_feature(CPU_FEATURE_NEON) && - (!src->cache_entry.flags.alpha)) - return negation_filter_neon(info, src, dst); -#endif - - in = src->image.data; - out = dst->image.data; - w = src->cache_entry.w; - h = src->cache_entry.h; - - if (src->cache_entry.flags.alpha) - { - for (i = 0; i < h; i++) - { - for (j = 0; j < w; j++) - { - a = A_VAL(in); - r = R_VAL(in); - g = G_VAL(in); - b = B_VAL(in); - *out = ARGB_JOIN(a, a - r, a - g, a - b); - out++; - in++; - } - } - } - else - { - for (i = 0; i < h; i++) - { - for (j = 0; j < w; j++) - { - a = A_VAL(in); - r = R_VAL(in); - g = G_VAL(in); - b = B_VAL(in); - *out = ARGB_JOIN(a, ~r, ~g, ~b); - out++; - in++; - } - } - } - return EINA_TRUE; - info = NULL; -} - -static Eina_Bool -sepia_filter(Evas_Filter_Info *info EINA_UNUSED, RGBA_Image *src, RGBA_Image *dst) -{ - uint32_t *in, *out; - int i, j; - int w, h; - uint32_t a, r, g, b, nr, ng, nb; - - in = src->image.data; - out = dst->image.data; - w = src->cache_entry.w; - h = src->cache_entry.h; - - for (i = 0; i < h; i++) - { - for (j = 0; j < w; j++) - { - a = A_VAL(in); - r = R_VAL(in); - g = G_VAL(in); - b = B_VAL(in); - nr = ((uint32_t)((r * 0.393) + (g * 0.769) + (b * 0.189))); - ng = ((uint32_t)((r * 0.349) + (g * 0.686) + (b * 0.168))); - nb = ((uint32_t)((r * 0.272) + (g * 0.534) + (b * 0.131))); - if (nr > 255) nr = 255; - if (ng > 255) ng = 255; - if (nb > 255) nb = 255; - *out = ARGB_JOIN(a, nr, ng, nb); - out++; - in++; - } - } - - return EINA_TRUE; - -} - -static Eina_Bool -greyscale_filter(Evas_Filter_Info *info EINA_UNUSED, RGBA_Image *src, RGBA_Image *dst) -{ - uint32_t *in, *out; - int i, j; - int w, h; - uint32_t cur; - uint32_t a, r, g, b; - - in = src->image.data; - out = dst->image.data; - w = src->cache_entry.w; - h = src->cache_entry.h; - - if (src->cache_entry.flags.alpha) - { - for (i = 0; i < h; i++) - { - for (j = 0; j < w; j++) - { - a = A_VAL(in); - r = R_VAL(in); - g = G_VAL(in); - b = B_VAL(in); - cur = (r * 0.3) + (g * 0.59) + (b * 0.11); - *out = ARGB_JOIN(a, r, g, b); - out++; - in++; - } - } - } - else - { - for (i = 0 ; i < h ; i ++) - { - for (j = 0; j < w ; j ++) - { - r = R_VAL(in); - g = G_VAL(in); - b = B_VAL(in); - cur = r * 0.3 + g * 0.59 + b * 0.11; - *out = ARGB_JOIN(255, r, g, b); - out++; - in++; - } - } - } - return EINA_TRUE; -} - -static Eina_Bool -brightness_filter(Evas_Filter_Info *info, RGBA_Image *src, RGBA_Image *dst) -{ - uint32_t *in, *out; - int i, j; - int w, h; - int a,r,g,b; - int delta; - int adjdelta; - Evas_Filter_Info_Brightness *bness; - - in = src->image.data; - out = dst->image.data; - w = src->cache_entry.w; - h = src->cache_entry.h; - bness = info->data; - - delta = bness->adjust * 255; - if (delta > 255) - delta = 255; - else if (delta < -255) - delta = -255; - - /* Note we could optimise the -255, 0 and 255 cases, but why would people - * be doing that */ - if (delta >= 0) - { - for (i = 0; i < h; i++) - { - for (j = 0; j < w; j++) - { - a = A_VAL(in); - r = R_VAL(in); - g = G_VAL(in); - b = B_VAL(in); - adjdelta = (a * delta) >> 8; - r = MIN(r + adjdelta, a); - g = MIN(g + adjdelta, a); - b = MIN(b + adjdelta, a); - *out = ARGB_JOIN(a, r ,g, b); - out++; - in++; - } - } - } - else - { - /* Delta negative */ - for (i = 0; i < h; i++) - { - for (j = 0; j < w; j++) - { - a = A_VAL(in); - r = R_VAL(in); - g = G_VAL(in); - b = B_VAL(in); - adjdelta = (a * delta) >> 8; - r = MAX(r + adjdelta, 0); - g = MAX(g + adjdelta, 0); - b = MAX(b + adjdelta, 0); - *out = ARGB_JOIN(a, r ,g, b); - out++; - in++; - } - } - } - - return EINA_TRUE; - -} - -static Eina_Bool -contrast_filter(Evas_Filter_Info *info EINA_UNUSED, RGBA_Image *src, RGBA_Image *dst) -{ - uint32_t *in, *out; - int i, j; - int w, h; - - in = src->image.data; - out = dst->image.data; - w = src->cache_entry.w; - h = src->cache_entry.h; - - for (i = 0; i < h; i++) - { - for (j = 0; j < w; j++) - { - // FIXME: not even implemented - out++; - in++; - } - } - - return EINA_TRUE; - -} -#endif - -/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index dd26568758..0831946105 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -2873,158 +2873,6 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source) */ } -#if 0 // filtering disabled -/* - * - * Note that this is similar to proxy_subrender_recurse. It should be - * possible to merge I guess - */ -static void -image_filter_draw_under_recurse(Evas *eo_e, Evas_Object *eo_obj, Evas_Object *stop, - void *output, void *ctx, void *surface, - int x, int y) -{ - Evas_Object *eo_obj2; - - if (obj->clip.clipees) return; - /* FIXME: Doing bounding box test */ - if (!evas_object_is_in_output_rect(eo_obj, stop->cur.geometry.x, - stop->cur.geometry.y, - stop->cur.geometry.w, - stop->cur.geometry.h)) - return; - - if (!evas_object_is_visible(eo_obj)) return; - obj->pre_render_done = 1; - ctx = e->engine.func->context_new(output); - - if (obj->is_smart) - { - EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2) - { - if (obj2 == stop) return; - image_filter_draw_under_recurse(e, obj2, stop, output, surface, - ctx, x, y); - } - } - else - obj->func->render(eo_obj, output, ctx, surface, x ,y); - e->engine.func->context_free(output, ctx); -} - -/* - * Draw all visible objects intersecting an object which are _beneath_ it. - */ -static void -image_filter_draw_under(Evas *eo_e, Evas_Object *stop, void *output, void *ctx, void *surface, int dx, int dy) -{ - Evas_Layer *lay; - int x, y; - - x = stop->cur.geometry.x - dx; - y = stop->cur.geometry.y - dy; - - EINA_INLIST_FOREACH(e->layers, lay) - { - Evas_Object *eo_obj; - EINA_INLIST_FOREACH(lay->objects, obj) - { - if (obj->delete_me) continue; - if (obj == stop) return; - /* FIXME: Do bounding box check */ - image_filter_draw_under_recurse(e, obj, stop, output, ctx, - surface, -x, -y); - } - } - e->engine.func->image_dirty_region(output, surface, 0, 0, 300, 300); - e->engine.func->output_flush(output); -} - -/* - * Update the filtered object. - * - * Creates a new context, and renders stuff (filtered) onto that. - */ -Filtered_Image * -image_filter_update(Evas *eo_e, Evas_Object *eo_obj, void *src, int imagew, int imageh, int *outw, int *outh) -{ - int w, h; - void *ctx; - Evas_Filter_Info *info; - void *surface; - Eina_Bool alpha; - - info = obj->filter; - - if (info->mode == EVAS_FILTER_MODE_BELOW) - { - w = obj->cur.geometry.w; - h = obj->cur.geometry.h; - evas_filter_get_size(info, w, h, &imagew, &imageh, EINA_TRUE); - alpha = EINA_FALSE; - } - else - { - evas_filter_get_size(info, imagew, imageh, &w, &h, EINA_FALSE); - alpha = e->engine.func->image_alpha_get(e->engine.data.output, src); - } - - /* Certain filters may make alpha images anyway */ - if (alpha == EINA_FALSE) alpha = evas_filter_always_alpha(info); - - surface = e->engine.func->image_map_surface_new(e->engine.data.output, w, h, - alpha); - - if (info->mode == EVAS_FILTER_MODE_BELOW) - { - void *subsurface; - int disw, dish; - int dx, dy; - disw = obj->cur.geometry.w; - dish = obj->cur.geometry.h; - dx = (imagew - w) >> 1; - dy = (imageh - h) >> 1; - subsurface = e->engine.func->image_map_surface_new - (e->engine.data.output, imagew, imageh, 1); - ctx = e->engine.func->context_new(e->engine.data.output); - e->engine.func->context_color_set(e->engine.data.output, ctx, 0, 255, 0, 255); - e->engine.func->context_render_op_set(e->engine.data.output, ctx, EVAS_RENDER_COPY); - e->engine.func->rectangle_draw(e->engine.data.output, ctx, - subsurface, 0, 0, imagew, imageh); - - image_filter_draw_under(e, obj, e->engine.data.output, ctx, - subsurface, dx, dy); - - e->engine.func->context_free(e->engine.data.output, ctx); - - ctx = e->engine.func->context_new(e->engine.data.output); - - e->engine.func->image_draw_filtered(e->engine.data.output, - ctx, surface, subsurface, info); - - e->engine.func->context_free(e->engine.data.output, ctx); - - e->engine.func->image_map_surface_free(e->engine.data.output, - subsurface); - } - else - { - ctx = e->engine.func->context_new(e->engine.data.output); - e->engine.func->image_draw_filtered(e->engine.data.output, - ctx, surface, src, info); - e->engine.func->context_free(e->engine.data.output, ctx); - } - - e->engine.func->image_dirty_region(e->engine.data.output, surface, - 0, 0, w, h); - if (outw) *outw = w; - if (outh) *outh = h; - return e->engine.func->image_filtered_save(src, surface, - obj->filter->key, - obj->filter->len); -} -#endif - static void evas_object_image_unload(Evas_Object *eo_obj, Eina_Bool dirty) { @@ -3365,57 +3213,6 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v o->proxyrendering = EINA_FALSE; } -#if 0 // filtering disabled - /* Now check/update filter */ - if (obj->filter && obj->filter->filter) - { - Filtered_Image *fi = NULL; - //printf("%p has filter: %s\n", obj,obj->filter->dirty?"dirty":"clean"); - if (obj->filter->dirty) - { - if (obj->filter->mode != EVAS_FILTER_MODE_BELOW) - { - uint32_t len; - uint8_t *key; - - if (obj->filter->key) free(obj->filter->key); - obj->filter->key = NULL; - obj->filter->len = 0; - key = evas_filter_key_get(obj->filter, &len); - if (key) - { - obj->filter->key = key; - obj->filter->len = len; - fi = obj->layer->evas->engine.func->image_filtered_get - (o->engine_data, key, len); - if (obj->filter->cached && fi != obj->filter->cached) - { - obj->layer->evas->engine.func->image_filtered_free - (o->engine_data, obj->filter->cached); - obj->filter->cached = NULL; - } - } - } - else if (obj->filter->cached) - { - obj->layer->evas->engine.func->image_filtered_free - (o->engine_data, obj->filter->cached); - } - if (!fi) - fi = image_filter_update(obj->layer->evas, obj, pixels, - imagew, imageh, &imagew, &imageh); - pixels = fi->image; - obj->filter->dirty = 0; - obj->filter->cached = fi; - } - else - { - fi = obj->filter->cached; - pixels = fi->image; - } - } -#endif - if (pixels) { Evas_Coord idw, idh, idx, idy; @@ -3944,12 +3741,6 @@ evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob } } } -#if 0 // filtering disabled - if (obj->filter && obj->filter->dirty) - { - evas_object_render_pre_prev_cur_add(&e->clip_changes, obj); - } -#endif /* 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 */ /* aren't fully opaque and we are visible */ diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index 6a9bce835f..8cde87ab5f 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -88,9 +88,6 @@ evas_object_free(Evas_Object *eo_obj, int clean_layer) int was_smart_child = 0; -#if 0 // filtering disabled - evas_filter_free(eo_obj); -#endif if (!strcmp(obj->type, "image")) evas_object_image_video_surface_set(eo_obj, NULL); evas_object_map_set(eo_obj, NULL); if (obj->prev.map) evas_map_free(obj->prev.map); diff --git a/src/lib/evas/common/evas_image_main.c b/src/lib/evas/common/evas_image_main.c index 05cc9aaf2c..5262d5fd58 100644 --- a/src/lib/evas/common/evas_image_main.c +++ b/src/lib/evas/common/evas_image_main.c @@ -203,20 +203,7 @@ _evas_common_rgba_image_delete(Image_Entry *ie) ie->file, ie->key); // if (ie->data1) evas_cserve2_image_free(ie); #endif -/* - * FIXME: This doesn't seem to be needed... But I'm not sure why. - * -- nash - { - Filtered_Image *fi; - EINA_LIST_FREE(im->filtered, fi) - { - free(fi->key); - _evas_common_rgba_image_delete((Image_Entry *)(fi->image)); - free(fi); - } - } -*/ if (ie->frames) { Eina_List *l; diff --git a/src/lib/evas/include/evas_common.h b/src/lib/evas/include/evas_common.h index cdc6a0e47a..349598bee0 100644 --- a/src/lib/evas/include/evas_common.h +++ b/src/lib/evas/include/evas_common.h @@ -487,10 +487,6 @@ typedef enum _Font_Rend_Flags /*****************************************************************************/ -#if 0 // filtering disabled -typedef struct _Filtered_Image Filtered_Image; -#endif - struct _RGBA_Image_Loadopts { int scale_down_by; // if > 1 then use this @@ -806,10 +802,6 @@ struct _RGBA_Image Eina_Bool dirty: 1; } mask; -#if 0 // filtering disabled - Eina_List *filtered; -#endif - struct { LK(lock); Eina_List *list; @@ -859,16 +851,6 @@ struct _RGBA_Map RGBA_Map_Point pts[1]; }; -#if 0 // filtering disabled -struct _Filtered_Image -{ - void *key; - size_t keylen; - RGBA_Image *image; - int ref; -}; -#endif - // for fonts... ///// typedef struct _Fash_Item_Index_Map Fash_Item_Index_Map; diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 357eae0cbf..de5903f2a8 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -487,35 +487,6 @@ struct _Evas_Map Evas_Map_Point points[]; // actual points }; -#if 0 // filtering disabled -/* nash: Split into two bits */ -typedef struct Evas_Filter_Info -{ - Evas_Filter filter; - Evas_Filter_Mode mode; - - Eina_Bool dirty : 1; - - int datalen; - void *data; - void (*data_free)(void *); - - uint8_t *key; - uint32_t len; - Filtered_Image *cached; -} Evas_Filter_Info; - -typedef Eina_Bool (*Evas_Software_Filter_Fn)(Evas_Filter_Info *, RGBA_Image *, RGBA_Image *); - -int evas_filter_get_size(Evas_Filter_Info *info, int inw, int inh, - int *outw, int *outh, Eina_Bool inv); -Eina_Bool evas_filter_always_alpha(Evas_Filter_Info *info); -uint8_t *evas_filter_key_get(const Evas_Filter_Info *info, uint32_t *lenp); -// expose for use in engines -EAPI Evas_Software_Filter_Fn evas_filter_software_get(Evas_Filter_Info *info); -void evas_filter_free(Evas_Object *o); -#endif - struct _Evas_Object_Protected_Data { EINA_INLIST; @@ -601,9 +572,6 @@ struct _Evas_Object_Protected_Data // Pointer to the Evas_Object itself Evas_Object *object; -#if 0 // filtering disabled - Evas_Filter_Info *filter; -#endif Evas_Size_Hints *size_hints; @@ -903,13 +871,6 @@ struct _Evas_Func Eina_Bool (*font_text_props_info_create) (void *data, Evas_Font_Instance *fi, const Eina_Unicode *text, Evas_Text_Props *intl_props, const Evas_BiDi_Paragraph_Props *par_props, size_t pos, size_t len, Evas_Text_Props_Mode mode); int (*font_right_inset_get) (void *data, Evas_Font_Set *font, const Evas_Text_Props *text_props); -#if 0 // filtering disabled - void (*image_draw_filtered) (void *data, void *context, void *surface, void *image, Evas_Filter_Info *filter); - Filtered_Image *(*image_filtered_get) (void *image, uint8_t *key, size_t len); - Filtered_Image *(*image_filtered_save) (void *image, void *filtered, uint8_t *key, size_t len); - void (*image_filtered_free) (void *image, Filtered_Image *); -#endif - /* EFL-GL Glue Layer */ void *(*gl_surface_create) (void *data, void *config, int w, int h); int (*gl_surface_destroy) (void *data, void *surface); diff --git a/src/modules/evas/engines/gl_cocoa/evas_engine.c b/src/modules/evas/engines/gl_cocoa/evas_engine.c index 73c245f43c..df3f6ac7ef 100644 --- a/src/modules/evas/engines/gl_cocoa/evas_engine.c +++ b/src/modules/evas/engines/gl_cocoa/evas_engine.c @@ -564,40 +564,6 @@ eng_image_colorspace_set(void *data, void *image, int cspace) // drivers? // //#define GLX_TEX_PIXMAP_RECREATE 1 -#if 0 -static void -eng_image_draw_filtered(void *data, void *context, void *surface, - void *image, Evas_Filter_Info *filter) -{ - Render_Engine *re = data; - - if (!image) return; - eng_window_use(re->win); - evas_gl_common_context_target_surface_set(re->win->gl_context, surface); - re->win->gl_context->dc = context; - - evas_gl_common_filter_draw(re->win->gl_context, image, filter); -} - -static Filtered_Image * -eng_image_filtered_get(void *im, uint8_t *key, size_t keylen) -{ - return evas_gl_common_image_filtered_get(im, key, keylen); -} - -static Filtered_Image * -eng_image_filtered_save(void *im, void *fim, uint8_t *key, size_t keylen) -{ - return evas_gl_common_image_filtered_save(im, fim, key, keylen); -} - -static void -eng_image_filtered_free(void *im, Filtered_Image *fim) -{ - evas_gl_common_image_filtered_free(im, fim); -} - -#endif // // @@ -1419,10 +1385,6 @@ module_open(Evas_Module *em) ORD(image_mask_create); // ORD(image_native_set); // ORD(image_native_get); - // ORD(image_draw_filtered); - // ORD(image_filtered_get); - // ORD(image_filtered_save); - // ORD(image_filtered_free); ORD(font_draw); diff --git a/src/modules/evas/engines/gl_common/evas_gl_common.h b/src/modules/evas/engines/gl_common/evas_gl_common.h index 67507b3a93..2110a52fb5 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_common.h +++ b/src/modules/evas/engines/gl_common/evas_gl_common.h @@ -483,25 +483,6 @@ extern Evas_GL_Program_Source shader_tex_frag_src; extern Evas_GL_Program_Source shader_tex_vert_src; extern Evas_GL_Program_Source shader_tex_nomul_frag_src; extern Evas_GL_Program_Source shader_tex_nomul_vert_src; - -extern Evas_GL_Program_Source shader_filter_invert_frag_src; -extern Evas_GL_Program_Source shader_filter_invert_nomul_frag_src; -extern Evas_GL_Program_Source shader_filter_invert_bgra_frag_src; -extern Evas_GL_Program_Source shader_filter_invert_bgra_nomul_frag_src; -extern Evas_GL_Program_Source shader_filter_sepia_frag_src; -extern Evas_GL_Program_Source shader_filter_sepia_nomul_frag_src; -extern Evas_GL_Program_Source shader_filter_sepia_bgra_frag_src; -extern Evas_GL_Program_Source shader_filter_sepia_bgra_nomul_frag_src; -extern Evas_GL_Program_Source shader_filter_greyscale_frag_src; -extern Evas_GL_Program_Source shader_filter_greyscale_nomul_frag_src; -extern Evas_GL_Program_Source shader_filter_greyscale_bgra_frag_src; -extern Evas_GL_Program_Source shader_filter_greyscale_bgra_nomul_frag_src; -/* blur (annoyingly) needs (aka is faster with) a vertex shader */ -extern Evas_GL_Program_Source shader_filter_blur_vert_src; -extern Evas_GL_Program_Source shader_filter_blur_frag_src; -extern Evas_GL_Program_Source shader_filter_blur_nomul_frag_src; -extern Evas_GL_Program_Source shader_filter_blur_bgra_frag_src; -extern Evas_GL_Program_Source shader_filter_blur_bgra_nomul_frag_src; #endif void glerr(int err, const char *file, const char *func, int line, const char *op); @@ -625,13 +606,6 @@ void evas_gl_common_poly_draw(Evas_Engine_GL_Context *gc, Evas_GL_P void evas_gl_common_line_draw(Evas_Engine_GL_Context *gc, int x1, int y1, int x2, int y2); -#if 0 // filtering disabled -void evas_gl_common_filter_draw(Evas_Engine_GL_Context *context, Evas_GL_Image *im, Evas_Filter_Info *filter); -Filtered_Image *evas_gl_common_image_filtered_get(Evas_GL_Image *im, uint8_t *key, size_t keylen); -Filtered_Image *evas_gl_common_image_filtered_save(Evas_GL_Image *im, Evas_GL_Image *fimage, uint8_t *key, size_t keylen); -void evas_gl_common_image_filtered_free(Evas_GL_Image *im, Filtered_Image *); -#endif - extern void (*glsym_glGenFramebuffers) (GLsizei a, GLuint *b); extern void (*glsym_glBindFramebuffer) (GLenum a, GLuint b); extern void (*glsym_glFramebufferTexture2D) (GLenum a, GLenum b, GLenum c, GLuint d, GLint e); diff --git a/src/modules/evas/engines/gl_common/evas_gl_filter.c b/src/modules/evas/engines/gl_common/evas_gl_filter.c deleted file mode 100644 index a9d18d8246..0000000000 --- a/src/modules/evas/engines/gl_common/evas_gl_filter.c +++ /dev/null @@ -1,181 +0,0 @@ -#include "evas_gl_private.h" - -#if 0 // filtering disabled -void -evas_gl_common_filter_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, Evas_Filter_Info *filter) -{ - RGBA_Draw_Context *dc; - GLuint prog; - int r,g,b,a; - int nomul, bgra; - - dc = gc->dc; - - if (dc->mul.use) - { - a = (dc->mul.col >> 24) & 0xff; - r = (dc->mul.col >> 16) & 0xff; - g = (dc->mul.col >> 8 ) & 0xff; - b = (dc->mul.col ) & 0xff; - } - else - { - r = g = b = a = 255; - } - - nomul = (a == 255 && r == 255 && g == 255 && b == 255) ? 1 : 0; - bgra = (gc->shared->info.bgra) ? 1 : 0; - - /* FIXME: This should so be a table */ -#if 0 - if (filter->filter == EVAS_FILTER_BLUR) - { - if (bgra) - { - if (nomul) - prog = gc->shared->shader.filter_blur_bgra_nomul.prog; - else - prog = gc->shared->shader.filter_blur_bgra.prog; - } - else - { - if (a == 255 && r == 255 && g == 255 && b == 255) - prog = gc->shared->shader.filter_blur_nomul.prog; - else - prog = gc->shared->shader.filter_blur.prog; - } - } - else -#endif - if (filter->filter == EVAS_FILTER_INVERT) - { - if (bgra) - { - if (nomul) - prog = gc->shared->shader.filter_invert_bgra_nomul.prog; - else - prog = gc->shared->shader.filter_invert_bgra.prog; - } - else - { - if (a == 255 && r == 255 && g == 255 && b == 255) - prog = gc->shared->shader.filter_invert_nomul.prog; - else - prog = gc->shared->shader.filter_invert.prog; - } - } - else if (filter->filter == EVAS_FILTER_SEPIA) - { - if (bgra) - { - if (nomul) - prog = gc->shared->shader.filter_sepia_bgra_nomul.prog; - else - prog = gc->shared->shader.filter_sepia_bgra.prog; - } - else - { - if (nomul) - prog = gc->shared->shader.filter_sepia_nomul.prog; - else - prog = gc->shared->shader.filter_sepia.prog; - } - - } - else /*if (filter->filter == EVAS_FILTER_GREYSCALE)*/ - { - printf("BGRA: %s Nomul: %s\n",bgra?"true":"false",nomul?"nomul":"mul"); - if (bgra) - { - if (nomul) - prog = gc->shared->shader.filter_greyscale_bgra_nomul.prog; - else - prog = gc->shared->shader.filter_greyscale_bgra.prog; - } - else - { - if (nomul) - prog = gc->shared->shader.filter_greyscale_nomul.prog; - else - prog = gc->shared->shader.filter_greyscale.prog; - } - - } - - printf("Prog: %d %d %d\n",prog,im->w,im->h); - gc->filter_prog = prog; - evas_gl_common_image_update(gc, im); - evas_gl_common_context_image_push(gc, im->tex, 0, 0, im->w, im->h, - 0, 0, im->w, im->h, - r,g,b,a, - 1, im->tex_only); - gc->filter_prog = 0; -} - - -Filtered_Image * -evas_gl_common_image_filtered_get(Evas_GL_Image *im, uint8_t *key, size_t len) -{ - Filtered_Image *fi; - Eina_List *l; - - for (l = im->filtered ; l ; l = l->next) - { - fi = l->data; - if (fi->keylen != len) continue; - if (memcmp(key, fi->key, len) != 0) continue; - fi->ref ++; - return fi; - } - - return NULL; -} - -Filtered_Image * -evas_gl_common_image_filtered_save(Evas_GL_Image *im, Evas_GL_Image *fimage, - uint8_t *key, size_t keylen) -{ - Filtered_Image *fi; - Eina_List *l; - - for (l = im->filtered ; l ; l = l->next) - { - fi = l->data; - if (fi->keylen != keylen) continue; - if (memcmp(key, fi->key, keylen) != 0) continue; - - fi->image = (void *)fimage; - fi->ref ++; - return fi; - } - - fi = calloc(1,sizeof(Filtered_Image)); - if (!fi) return NULL; - - fi->keylen = keylen; - fi->key = malloc(keylen); - memcpy(fi->key, key, keylen); - fi->image = (void *)fimage; - fi->ref = 1; - - im->filtered = eina_list_prepend(im->filtered, fi); - - return fi; -} - -void -evas_gl_common_image_filtered_free(Evas_GL_Image *image, Filtered_Image *fi) -{ - fi->ref --; - if (fi->ref) return; - - free(fi->key); - evas_gl_common_image_free((void *)fi->image); - fi->image = NULL; - - image->filtered = eina_list_remove(image->filtered, fi); -} -#endif - - -/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ diff --git a/src/modules/evas/engines/gl_common/evas_gl_image.c b/src/modules/evas/engines/gl_common/evas_gl_image.c index 404cb13806..8289ed9f53 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_image.c +++ b/src/modules/evas/engines/gl_common/evas_gl_image.c @@ -467,10 +467,6 @@ evas_gl_common_image_cache_flush(Evas_Engine_GL_Context *gc) void evas_gl_common_image_free(Evas_GL_Image *im) { -#if 0 // filtering disabled - Filtered_Image *fi; -#endif - evas_gl_common_context_flush(im->gc); im->references--; if (im->references > 0) return; @@ -489,15 +485,6 @@ evas_gl_common_image_free(Evas_GL_Image *im) if (im->im) evas_cache_image_drop(&im->im->cache_entry); if (im->tex) evas_gl_common_texture_free(im->tex); -#if 0 // filtering disabled - EINA_LIST_FREE(im->filtered, fi) - { - free(fi->key); - evas_gl_common_image_free((Evas_GL_Image *)fi->image); - free(fi); - } -#endif - free(im); } diff --git a/src/modules/evas/engines/gl_common/evas_gl_shader.c b/src/modules/evas/engines/gl_common/evas_gl_shader.c index 477e47072f..fe6207c83e 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_shader.c +++ b/src/modules/evas/engines/gl_common/evas_gl_shader.c @@ -286,167 +286,6 @@ Evas_GL_Program_Source shader_img_bgra_nomul_vert_src = NULL, 0 }; -///////////////////////////////////////////// -const char filter_invert_frag_glsl[] = -#include "shader/filter_invert.h" - ; -Evas_GL_Program_Source shader_filter_invert_frag_src = -{ - filter_invert_frag_glsl, - NULL, 0 -}; - -const char filter_invert_nomul_frag_glsl[] = -#include "shader/filter_invert_nomul.h" - ; -Evas_GL_Program_Source shader_filter_invert_nomul_frag_src = -{ - filter_invert_nomul_frag_glsl, - NULL, 0 -}; - -const char filter_invert_bgra_frag_glsl[] = -#include "shader/filter_invert_bgra.h" - ; -Evas_GL_Program_Source shader_filter_invert_bgra_frag_src = -{ - filter_invert_bgra_frag_glsl, - NULL, 0 -}; - -const char filter_invert_bgra_nomul_frag_glsl[] = -#include "shader/filter_invert_bgra_nomul.h" - ; -Evas_GL_Program_Source shader_filter_invert_bgra_nomul_frag_src = -{ - filter_invert_bgra_nomul_frag_glsl, - NULL, 0 -}; - -///////////////////////////////////////////// -const char filter_greyscale_frag_glsl[] = -#include "shader/filter_greyscale.h" - ; -Evas_GL_Program_Source shader_filter_greyscale_frag_src = -{ - filter_greyscale_frag_glsl, - NULL, 0 -}; - -const char filter_greyscale_nomul_frag_glsl[] = -#include "shader/filter_greyscale_nomul.h" - ; -Evas_GL_Program_Source shader_filter_greyscale_nomul_frag_src = -{ - filter_greyscale_nomul_frag_glsl, - NULL, 0 -}; - -const char filter_greyscale_bgra_frag_glsl[] = -#include "shader/filter_greyscale_bgra.h" - ; -Evas_GL_Program_Source shader_filter_greyscale_bgra_frag_src = -{ - filter_greyscale_bgra_frag_glsl, - NULL, 0 -}; -const char filter_greyscale_bgra_nomul_frag_glsl[] = -#include "shader/filter_greyscale_bgra_nomul.h" - ; -Evas_GL_Program_Source shader_filter_greyscale_bgra_nomul_frag_src = -{ - filter_greyscale_bgra_nomul_frag_glsl, - NULL, 0 -}; - -///////////////////////////////////////////// -const char filter_sepia_frag_glsl[] = -#include "shader/filter_sepia.h" - ; -Evas_GL_Program_Source shader_filter_sepia_frag_src = -{ - filter_sepia_frag_glsl, - NULL, 0 -}; - -const char filter_sepia_nomul_frag_glsl[] = -#include "shader/filter_sepia_nomul.h" - ; -Evas_GL_Program_Source shader_filter_sepia_nomul_frag_src = -{ - filter_sepia_nomul_frag_glsl, - NULL, 0 -}; - -const char filter_sepia_bgra_frag_glsl[] = -#include "shader/filter_sepia_bgra.h" - ; -Evas_GL_Program_Source shader_filter_sepia_bgra_frag_src = -{ - filter_sepia_bgra_frag_glsl, - NULL, 0 -}; -const char filter_sepia_bgra_nomul_frag_glsl[] = -#include "shader/filter_sepia_bgra_nomul.h" - ; -Evas_GL_Program_Source shader_filter_sepia_bgra_nomul_frag_src = -{ - filter_sepia_bgra_nomul_frag_glsl, - NULL, 0 -}; - -///////////////////////////////////////////// -#if 0 - Blur is a work in progress currently. - Mostly because GPUs are so hopeless. -const char filter_blur_vert_glsl[] = -#include "shader/filter_blur_vert.h" - ; - -Evas_GL_Program_Source shader_filter_blur_vert_src = -{ - filter_blur_vert_glsl, - NULL, 0 -}; - -const char filter_blur_frag_glsl[] = -#include "shader/filter_blur.h" - ; -Evas_GL_Program_Source shader_filter_blur_frag_src = -{ - filter_blur_frag_glsl, - NULL, 0 -}; - -const char filter_blur_nomul_frag_glsl[] = -#include "shader/filter_blur_nomul.h" - ; -Evas_GL_Program_Source shader_filter_blur_nomul_frag_src = -{ - filter_blur_nomul_frag_glsl, - NULL, 0 -}; - -const char filter_blur_bgra_frag_glsl[] = -#include "shader/filter_blur_bgra.h" - ; -Evas_GL_Program_Source shader_filter_blur_bgra_frag_src = -{ - filter_blur_bgra_frag_glsl, - NULL, 0 -}; -const char filter_blur_bgra_nomul_frag_glsl[] = -#include "shader/filter_blur_bgra_nomul.h" - ; -Evas_GL_Program_Source shader_filter_blur_bgra_nomul_frag_src = -{ - filter_blur_bgra_nomul_frag_glsl, - NULL, 0 -}; - -#endif - - ///////////////////////////////////////////// static void @@ -802,23 +641,6 @@ static const struct { SHADER_SOURCE_LINE(NV12_NOMUL, nv12_nomul), SHADER_SOURCE_LINE(TEX, tex), SHADER_SOURCE_LINE(TEX_NOMUL, tex_nomul), - /* Most of the filters use the image fragment shader */ - SHADER_SOURCE_FILTER_LINE(FILTER_INVERT, filter_invert), - SHADER_SOURCE_FILTER_LINE(FILTER_INVERT_NOMUL, filter_invert_nomul), - SHADER_SOURCE_FILTER_LINE(FILTER_INVERT_BGRA, filter_invert_bgra), - SHADER_SOURCE_FILTER_LINE(FILTER_INVERT_BGRA_NOMUL, filter_invert_bgra_nomul), - SHADER_SOURCE_FILTER_LINE(FILTER_GREYSCALE, filter_greyscale), - SHADER_SOURCE_FILTER_LINE(FILTER_GREYSCALE_NOMUL, filter_greyscale_nomul), - SHADER_SOURCE_FILTER_LINE(FILTER_GREYSCALE_BGRA, filter_greyscale_bgra), - SHADER_SOURCE_FILTER_LINE(FILTER_GREYSCALE_BGRA_NOMUL, filter_greyscale_bgra_nomul), - SHADER_SOURCE_FILTER_LINE(FILTER_SEPIA, filter_sepia), - SHADER_SOURCE_FILTER_LINE(FILTER_SEPIA_NOMUL, filter_sepia_nomul), - SHADER_SOURCE_FILTER_LINE(FILTER_SEPIA_BGRA, filter_sepia_bgra), - SHADER_SOURCE_FILTER_LINE(FILTER_SEPIA_BGRA_NOMUL, filter_sepia_bgra_nomul)/* , */ - /* SHADER_SOURCE_LINE(FILTER_BLUR, filter_blur), */ - /* SHADER_SOURCE_LINE(FILTER_BLUR_NOMUL, filter_blur_nomul), */ - /* SHADER_SOURCE_LINE(FILTER_BLUR_BGRA, filter_blur_bgra), */ - /* SHADER_SOURCE_LINE(FILTER_BLUR_BGRA_NOMUL, filter_blur_bgra_nomul) */ }; static int diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur.h b/src/modules/evas/engines/gl_common/shader/filter_blur.h deleted file mode 100644 index 7c3a3697ce..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur.h +++ /dev/null @@ -1,24 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"uniform sampler1D gaussian;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"varying weight;\n" -"uniform radius;\n" -"void main()\n" -"{\n" -" int i;\n" -" vec4 fc = vec4(0,0,0,0);\n" -" \n" -" for (i = 0 ; i < radius ; i ++){\n" -" fc += texture2D(tex, tex_c.xy).rgba *\n" -" texture1D(gaussian,i/radius).aaaa;\n" -" }\n" -" gl_FragColor = fc / 4 * col;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur.shd b/src/modules/evas/engines/gl_common/shader/filter_blur.shd deleted file mode 100644 index 5f13a4740a..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur.shd +++ /dev/null @@ -1,24 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -uniform sampler1D gaussian; -varying vec4 col; -varying vec2 tex_c; -varying weight; -uniform radius; -void main() -{ - int i; - vec4 fc = vec4(0,0,0,0); - - for (i = 0 ; i < radius ; i ++){ - fc += texture2D(tex, tex_c.xy).rgba * - texture1D(gaussian,i/radius).aaaa; - } - gl_FragColor = fc / 4 * col; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur_bgra.h b/src/modules/evas/engines/gl_common/shader/filter_blur_bgra.h deleted file mode 100644 index 0862e4f658..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur_bgra.h +++ /dev/null @@ -1,24 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"uniform sampler1D gaussian;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"varying weight;\n" -"uniform radius;\n" -"void main()\n" -"{\n" -" int i;\n" -" vec4 fc = vec4(0,0,0,0);\n" -" \n" -" for (i = 0 ; i < radius ; i ++){\n" -" fc += texture2D(tex, tex_c.xy).rgba *\n" -" texture1D(gaussian,i/radius).aaaa;\n" -" }\n" -" gl_FragColor = fc / 4;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur_bgra.shd b/src/modules/evas/engines/gl_common/shader/filter_blur_bgra.shd deleted file mode 100644 index a9134df1d4..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur_bgra.shd +++ /dev/null @@ -1,24 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -uniform sampler1D gaussian; -varying vec4 col; -varying vec2 tex_c; -varying weight; -uniform radius; -void main() -{ - int i; - vec4 fc = vec4(0,0,0,0); - - for (i = 0 ; i < radius ; i ++){ - fc += texture2D(tex, tex_c.xy).rgba * - texture1D(gaussian,i/radius).aaaa; - } - gl_FragColor = fc / 4; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur_bgra_nomul.h b/src/modules/evas/engines/gl_common/shader/filter_blur_bgra_nomul.h deleted file mode 100644 index 0862e4f658..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur_bgra_nomul.h +++ /dev/null @@ -1,24 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"uniform sampler1D gaussian;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"varying weight;\n" -"uniform radius;\n" -"void main()\n" -"{\n" -" int i;\n" -" vec4 fc = vec4(0,0,0,0);\n" -" \n" -" for (i = 0 ; i < radius ; i ++){\n" -" fc += texture2D(tex, tex_c.xy).rgba *\n" -" texture1D(gaussian,i/radius).aaaa;\n" -" }\n" -" gl_FragColor = fc / 4;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur_bgra_nomul.shd b/src/modules/evas/engines/gl_common/shader/filter_blur_bgra_nomul.shd deleted file mode 100644 index a9134df1d4..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur_bgra_nomul.shd +++ /dev/null @@ -1,24 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -uniform sampler1D gaussian; -varying vec4 col; -varying vec2 tex_c; -varying weight; -uniform radius; -void main() -{ - int i; - vec4 fc = vec4(0,0,0,0); - - for (i = 0 ; i < radius ; i ++){ - fc += texture2D(tex, tex_c.xy).rgba * - texture1D(gaussian,i/radius).aaaa; - } - gl_FragColor = fc / 4; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur_nomul.h b/src/modules/evas/engines/gl_common/shader/filter_blur_nomul.h deleted file mode 100644 index 0862e4f658..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur_nomul.h +++ /dev/null @@ -1,24 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"uniform sampler1D gaussian;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"varying weight;\n" -"uniform radius;\n" -"void main()\n" -"{\n" -" int i;\n" -" vec4 fc = vec4(0,0,0,0);\n" -" \n" -" for (i = 0 ; i < radius ; i ++){\n" -" fc += texture2D(tex, tex_c.xy).rgba *\n" -" texture1D(gaussian,i/radius).aaaa;\n" -" }\n" -" gl_FragColor = fc / 4;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur_nomul.shd b/src/modules/evas/engines/gl_common/shader/filter_blur_nomul.shd deleted file mode 100644 index a9134df1d4..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur_nomul.shd +++ /dev/null @@ -1,24 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -uniform sampler1D gaussian; -varying vec4 col; -varying vec2 tex_c; -varying weight; -uniform radius; -void main() -{ - int i; - vec4 fc = vec4(0,0,0,0); - - for (i = 0 ; i < radius ; i ++){ - fc += texture2D(tex, tex_c.xy).rgba * - texture1D(gaussian,i/radius).aaaa; - } - gl_FragColor = fc / 4; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur_vert.h b/src/modules/evas/engines/gl_common/shader/filter_blur_vert.h deleted file mode 100644 index d38f4127f6..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur_vert.h +++ /dev/null @@ -1,29 +0,0 @@ -"#ifdef GL_ES\n" -"precision highp float;\n" -"#endif\n" -"attribute vec4 vertex;\n" -"attribute vec4 color;\n" -"attribute vec2 tex_coord;\n" -"attribute float r;\n" -"uniform mat4 mvp;\n" -"uniform sampler1D tex_blur;\n" -"varying float weight;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"\n" -"void main(){\n" -" /* FIXME: This index should be tweaked so for \n" -" radius 1, I want 3 points at 1/4, 2/4, 3/4 */\n" -" /*\n" -" for (float i = 0 ; i <= radius * 2 ; i ++){\n" -" float pos = i;\n" -" float r = float(radius);\n" -" weight += sampler1D(tex_blur, 1.0 / (r * 2.0 * pos));\n" -" }*/\n" -" for (float i = 0.0 ; i < r * 2.0 ; i += 1.0){\n" -" weight += sampler1D(tex_blur, 1.0 / (r * 2.0 * i));\n" -" }\n" -" gl_Position = mvp * vertex;\n" -" col = color;\n" -" tex_c = tex_coord;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_blur_vert.shd b/src/modules/evas/engines/gl_common/shader/filter_blur_vert.shd deleted file mode 100644 index 56ddc404fc..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_blur_vert.shd +++ /dev/null @@ -1,29 +0,0 @@ -#ifdef GL_ES -precision highp float; -#endif -attribute vec4 vertex; -attribute vec4 color; -attribute vec2 tex_coord; -attribute float r; -uniform mat4 mvp; -uniform sampler1D tex_blur; -varying float weight; -varying vec4 col; -varying vec2 tex_c; - -void main(){ - /* FIXME: This index should be tweaked so for - radius 1, I want 3 points at 1/4, 2/4, 3/4 */ - /* - for (float i = 0 ; i <= radius * 2 ; i ++){ - float pos = i; - float r = float(radius); - weight += sampler1D(tex_blur, 1.0 / (r * 2.0 * pos)); - }*/ - for (float i = 0.0 ; i < r * 2.0 ; i += 1.0){ - weight += sampler1D(tex_blur, 1.0 / (r * 2.0 * i)); - } - gl_Position = mvp * vertex; - col = color; - tex_c = tex_coord; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_greyscale.h b/src/modules/evas/engines/gl_common/shader/filter_greyscale.h deleted file mode 100644 index 850538a52a..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_greyscale.h +++ /dev/null @@ -1,15 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" float inten = dot(texture2D(tex,tex_c.xy).agb,vec3(.3, .59, .11));\n" -" gl_FragColor = vec4(inten, inten, inten, texture2D(tex,tex_c.xy).r) * col;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_greyscale.shd b/src/modules/evas/engines/gl_common/shader/filter_greyscale.shd deleted file mode 100644 index 78ecf0883e..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_greyscale.shd +++ /dev/null @@ -1,15 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - float inten = dot(texture2D(tex,tex_c.xy).agb,vec3(.3, .59, .11)); - gl_FragColor = vec4(inten, inten, inten, texture2D(tex,tex_c.xy).r) * col; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra.h b/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra.h deleted file mode 100644 index 3caef3506b..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra.h +++ /dev/null @@ -1,15 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" float inten = dot(texture2D(tex,tex_c.xy).rgb,vec3(.3, .59, .11));\n" -" gl_FragColor = vec4(inten, inten, inten, texture2D(tex,tex_c.xy).a) * col;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra.shd b/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra.shd deleted file mode 100644 index 5dca381012..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra.shd +++ /dev/null @@ -1,15 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - float inten = dot(texture2D(tex,tex_c.xy).rgb,vec3(.3, .59, .11)); - gl_FragColor = vec4(inten, inten, inten, texture2D(tex,tex_c.xy).a) * col; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra_nomul.h b/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra_nomul.h deleted file mode 100644 index 4cb36a873b..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra_nomul.h +++ /dev/null @@ -1,14 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" float inten = dot(texture2D(tex,tex_c.xy).rgb,vec3(.3, .59, .11));\n" -" gl_FragColor = vec4(inten, inten, inten, texture2D(tex,tex_c.xy).a);\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra_nomul.shd b/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra_nomul.shd deleted file mode 100644 index a077eea939..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_greyscale_bgra_nomul.shd +++ /dev/null @@ -1,14 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec2 tex_c; -void main() -{ - float inten = dot(texture2D(tex,tex_c.xy).rgb,vec3(.3, .59, .11)); - gl_FragColor = vec4(inten, inten, inten, texture2D(tex,tex_c.xy).a); -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_greyscale_nomul.h b/src/modules/evas/engines/gl_common/shader/filter_greyscale_nomul.h deleted file mode 100644 index f501a02bcf..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_greyscale_nomul.h +++ /dev/null @@ -1,14 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" float inten = dot(texture2D(tex,tex_c.xy).abg,vec3(.3, .59, .11));\n" -" gl_FragColor = vec4(inten, inten, inten, texture2D(tex,tex_c.xy).r);\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_greyscale_nomul.shd b/src/modules/evas/engines/gl_common/shader/filter_greyscale_nomul.shd deleted file mode 100644 index b5b8ec6b93..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_greyscale_nomul.shd +++ /dev/null @@ -1,14 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec2 tex_c; -void main() -{ - float inten = dot(texture2D(tex,tex_c.xy).abg,vec3(.3, .59, .11)); - gl_FragColor = vec4(inten, inten, inten, texture2D(tex,tex_c.xy).r); -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_invert.h b/src/modules/evas/engines/gl_common/shader/filter_invert.h deleted file mode 100644 index 46373e0da8..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_invert.h +++ /dev/null @@ -1,14 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" gl_FragColor = (vec4(0, 1.0, 1.0, 1.0) - texture2D(tex, tex_c.xy).bgra)*col;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_invert.shd b/src/modules/evas/engines/gl_common/shader/filter_invert.shd deleted file mode 100644 index a75b058022..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_invert.shd +++ /dev/null @@ -1,14 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - gl_FragColor = (vec4(0, 1.0, 1.0, 1.0) - texture2D(tex, tex_c.xy).bgra)*col; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_invert_bgra.h b/src/modules/evas/engines/gl_common/shader/filter_invert_bgra.h deleted file mode 100644 index 3e3011d4ea..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_invert_bgra.h +++ /dev/null @@ -1,14 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" gl_FragColor = (vec4(1.0, 1.0, 1.0, 1.0) - texture2D(tex, tex_c.xy))*col;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_invert_bgra.shd b/src/modules/evas/engines/gl_common/shader/filter_invert_bgra.shd deleted file mode 100644 index 8d7df2d3d9..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_invert_bgra.shd +++ /dev/null @@ -1,14 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - gl_FragColor = (vec4(1.0, 1.0, 1.0, 1.0) - texture2D(tex, tex_c.xy))*col; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_invert_bgra_nomul.h b/src/modules/evas/engines/gl_common/shader/filter_invert_bgra_nomul.h deleted file mode 100644 index b9f1e25753..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_invert_bgra_nomul.h +++ /dev/null @@ -1,15 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" vec3 inv = vec3(1.0, 1.0, 1.0) - texture2D(tex,tex_c.xy).rgb;\n" -" gl_FragColor = vec4(inv.r, inv.g, inv.b, 1.0);\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_invert_bgra_nomul.shd b/src/modules/evas/engines/gl_common/shader/filter_invert_bgra_nomul.shd deleted file mode 100644 index 682acb2d01..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_invert_bgra_nomul.shd +++ /dev/null @@ -1,15 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - vec3 inv = vec3(1.0, 1.0, 1.0) - texture2D(tex,tex_c.xy).rgb; - gl_FragColor = vec4(inv.r, inv.g, inv.b, 1.0); -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_invert_nomul.h b/src/modules/evas/engines/gl_common/shader/filter_invert_nomul.h deleted file mode 100644 index 46373e0da8..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_invert_nomul.h +++ /dev/null @@ -1,14 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" gl_FragColor = (vec4(0, 1.0, 1.0, 1.0) - texture2D(tex, tex_c.xy).bgra)*col;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_invert_nomul.shd b/src/modules/evas/engines/gl_common/shader/filter_invert_nomul.shd deleted file mode 100644 index a75b058022..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_invert_nomul.shd +++ /dev/null @@ -1,14 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - gl_FragColor = (vec4(0, 1.0, 1.0, 1.0) - texture2D(tex, tex_c.xy).bgra)*col; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_sepia.h b/src/modules/evas/engines/gl_common/shader/filter_sepia.h deleted file mode 100644 index 50fbf12c6d..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_sepia.h +++ /dev/null @@ -1,20 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" vec3 inp = texture2D(tex,tex_c.xy).abg;\n" -" vec4 sep;\n" -" sep.r = dot(inp, vec3(.393, .769, .189));\n" -" sep.g = dot(inp, vec3(.349, .686, .168));\n" -" sep.b = dot(inp, vec3(.272, .534, .131));\n" -" sep.a = texture2D(tex,tex_c.xy).r;\n" -" gl_FragColor = sep * col;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_sepia.shd b/src/modules/evas/engines/gl_common/shader/filter_sepia.shd deleted file mode 100644 index 027ecfb393..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_sepia.shd +++ /dev/null @@ -1,20 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - vec3 inp = texture2D(tex,tex_c.xy).abg; - vec4 sep; - sep.r = dot(inp, vec3(.393, .769, .189)); - sep.g = dot(inp, vec3(.349, .686, .168)); - sep.b = dot(inp, vec3(.272, .534, .131)); - sep.a = texture2D(tex,tex_c.xy).r; - gl_FragColor = sep * col; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra.h b/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra.h deleted file mode 100644 index 41e4283d1b..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra.h +++ /dev/null @@ -1,20 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" vec3 inp = texture2D(tex,tex_c.xy).rgb;\n" -" vec4 sep;\n" -" sep.r = dot(inp, vec3(.393, .769, .189));\n" -" sep.g = dot(inp, vec3(.349, .686, .168));\n" -" sep.b = dot(inp, vec3(.272, .534, .131));\n" -" sep.a = texture2D(tex,tex_c.xy).a;\n" -" gl_FragColor = sep * col;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra.shd b/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra.shd deleted file mode 100644 index caed3780a1..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra.shd +++ /dev/null @@ -1,20 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - vec3 inp = texture2D(tex,tex_c.xy).rgb; - vec4 sep; - sep.r = dot(inp, vec3(.393, .769, .189)); - sep.g = dot(inp, vec3(.349, .686, .168)); - sep.b = dot(inp, vec3(.272, .534, .131)); - sep.a = texture2D(tex,tex_c.xy).a; - gl_FragColor = sep * col; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra_nomul.h b/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra_nomul.h deleted file mode 100644 index 0c4fe1b2ef..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra_nomul.h +++ /dev/null @@ -1,18 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" vec3 inp = texture2D(tex,tex_c.xy).rgb;\n" -" gl_FragColor.r = dot(inp, vec3(.393, .769, .189));\n" -" gl_FragColor.g = dot(inp, vec3(.349, .686, .168));\n" -" gl_FragColor.b = dot(inp, vec3(.272, .534, .131));\n" -" gl_FragColor.a = texture2D(tex,tex_c.xy).a;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra_nomul.shd b/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra_nomul.shd deleted file mode 100644 index 9c6c1d4bf8..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_sepia_bgra_nomul.shd +++ /dev/null @@ -1,18 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - vec3 inp = texture2D(tex,tex_c.xy).rgb; - gl_FragColor.r = dot(inp, vec3(.393, .769, .189)); - gl_FragColor.g = dot(inp, vec3(.349, .686, .168)); - gl_FragColor.b = dot(inp, vec3(.272, .534, .131)); - gl_FragColor.a = texture2D(tex,tex_c.xy).a; -} diff --git a/src/modules/evas/engines/gl_common/shader/filter_sepia_nomul.h b/src/modules/evas/engines/gl_common/shader/filter_sepia_nomul.h deleted file mode 100644 index 23af9ecb9a..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_sepia_nomul.h +++ /dev/null @@ -1,18 +0,0 @@ -"#ifdef GL_ES\n" -"#ifdef GL_FRAGMENT_PRECISION_HIGH\n" -"precision highp float;\n" -"#else\n" -"precision mediump float;\n" -"#endif\n" -"#endif\n" -"uniform sampler2D tex;\n" -"varying vec4 col;\n" -"varying vec2 tex_c;\n" -"void main()\n" -"{\n" -" vec3 inp = texture2D(tex,tex_c.xy).abg;\n" -" gl_FragColor.r = dot(inp, vec3(.393, .769, .189));\n" -" gl_FragColor.g = dot(inp, vec3(.349, .686, .168));\n" -" gl_FragColor.b = dot(inp, vec3(.272, .534, .131));\n" -" gl_FragColor.a = texture2D(tex,tex_c.xy).r;\n" -"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/filter_sepia_nomul.shd b/src/modules/evas/engines/gl_common/shader/filter_sepia_nomul.shd deleted file mode 100644 index f9871bd8f1..0000000000 --- a/src/modules/evas/engines/gl_common/shader/filter_sepia_nomul.shd +++ /dev/null @@ -1,18 +0,0 @@ -#ifdef GL_ES -#ifdef GL_FRAGMENT_PRECISION_HIGH -precision highp float; -#else -precision mediump float; -#endif -#endif -uniform sampler2D tex; -varying vec4 col; -varying vec2 tex_c; -void main() -{ - vec3 inp = texture2D(tex,tex_c.xy).abg; - gl_FragColor.r = dot(inp, vec3(.393, .769, .189)); - gl_FragColor.g = dot(inp, vec3(.349, .686, .168)); - gl_FragColor.b = dot(inp, vec3(.272, .534, .131)); - gl_FragColor.a = texture2D(tex,tex_c.xy).r; -} diff --git a/src/modules/evas/engines/gl_sdl/evas_engine.c b/src/modules/evas/engines/gl_sdl/evas_engine.c index f49fcb8d8d..a2ed13fa16 100644 --- a/src/modules/evas/engines/gl_sdl/evas_engine.c +++ b/src/modules/evas/engines/gl_sdl/evas_engine.c @@ -1010,12 +1010,6 @@ module_open(Evas_Module *em) ORD(image_colorspace_get); ORD(image_native_set); ORD(image_native_get); -#if 0 // filtering disabled -// ORD(image_draw_filtered); -// ORD(image_filtered_get); -// ORD(image_filtered_save); -// ORD(image_filtered_free); -#endif ORD(font_draw); ORD(image_scale_hint_set); diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c b/src/modules/evas/engines/gl_x11/evas_engine.c index fbf897fd25..653a750b1b 100644 --- a/src/modules/evas/engines/gl_x11/evas_engine.c +++ b/src/modules/evas/engines/gl_x11/evas_engine.c @@ -2097,40 +2097,6 @@ eng_image_native_get(void *data EINA_UNUSED, void *image) return &(n->ns); } -#if 0 // filtering disabled -static void -eng_image_draw_filtered(void *data, void *context, void *surface, - void *image, Evas_Filter_Info *filter) -{ - Render_Engine *re = data; - - if (!image) return; - eng_window_use(re->win); - evas_gl_common_context_target_surface_set(re->win->gl_context, surface); - re->win->gl_context->dc = context; - - evas_gl_common_filter_draw(re->win->gl_context, image, filter); -} - -static Filtered_Image * -eng_image_filtered_get(void *im, uint8_t *key, size_t keylen) -{ - return evas_gl_common_image_filtered_get(im, key, keylen); -} - -static Filtered_Image * -eng_image_filtered_save(void *im, void *fim, uint8_t *key, size_t keylen) -{ - return evas_gl_common_image_filtered_save(im, fim, key, keylen); -} - -static void -eng_image_filtered_free(void *im, Filtered_Image *fim) -{ - evas_gl_common_image_filtered_free(im, fim); -} -#endif - // // @@ -2978,12 +2944,6 @@ module_open(Evas_Module *em) ORD(image_mask_create); ORD(image_native_set); ORD(image_native_get); -#if 0 // filtering disabled - ORD(image_draw_filtered); - ORD(image_filtered_get); - ORD(image_filtered_save); - ORD(image_filtered_free); -#endif ORD(font_draw); diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index cf213d75e3..c91f8b7a96 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -1366,88 +1366,6 @@ eng_canvas_alpha_get(void *data EINA_UNUSED, void *info EINA_UNUSED) } -/* Filter API */ -#if 0 // filtering disabled -static void -eng_image_draw_filtered(void *data EINA_UNUSED, void *context EINA_UNUSED, - void *surface, void *image, Evas_Filter_Info *filter) -{ - Evas_Software_Filter_Fn fn; - RGBA_Image *im = image; - - fn = evas_filter_software_get(filter); - if (!fn) return; - if (im->cache_entry.cache) evas_cache_image_load_data(&im->cache_entry); - fn(filter, image, surface); - return; -} - -static Filtered_Image * -eng_image_filtered_get(void *image, uint8_t *key, size_t keylen) -{ - RGBA_Image *im = image; - Filtered_Image *fi; - Eina_List *l; - - for (l = im->filtered ; l ; l = l->next) - { - fi = l->data; - if (fi->keylen != keylen) continue; - if (memcmp(key, fi->key, keylen) != 0) continue; - fi->ref ++; - return fi; - } - - return NULL; -} - -static Filtered_Image * -eng_image_filtered_save(void *image, void *fimage, uint8_t *key, size_t keylen) -{ - RGBA_Image *im = image; - Filtered_Image *fi; - Eina_List *l; - - for (l = im->filtered ; l ; l = l->next) - { - fi = l->data; - if (fi->keylen != keylen) continue; - if (memcmp(key, fi->key, keylen) == 0) continue; - evas_cache_image_drop((void *)fi->image); - fi->image = fimage; - return fi; - } - - fi = calloc(1,sizeof(Filtered_Image)); - if (!fi) return NULL; - - fi->keylen = keylen; - fi->key = malloc(keylen); - memcpy(fi->key, key, keylen); - fi->image = fimage; - fi->ref = 1; - - im->filtered = eina_list_prepend(im->filtered, fi); - - return fi; -} - -static void -eng_image_filtered_free(void *image, Filtered_Image *fi) -{ - RGBA_Image *im = image; - - fi->ref --; - if (fi->ref) return; - - free(fi->key); - evas_cache_image_drop(&fi->image->cache_entry); - fi->image = NULL; - - im->filtered = eina_list_remove(im->filtered, fi); -} -#endif - static int eng_image_load_error_get(void *data EINA_UNUSED, void *image) { @@ -1885,12 +1803,6 @@ static Evas_Func func = eng_font_pen_coords_get, eng_font_text_props_info_create, eng_font_right_inset_get, -#if 0 // filtering disabled - eng_image_draw_filtered, - eng_image_filtered_get, - eng_image_filtered_save, - eng_image_filtered_free, -#endif NULL, // need software mesa for gl rendering <- gl_surface_create NULL, // need software mesa for gl rendering <- gl_surface_destroy NULL, // need software mesa for gl rendering <- gl_context_create diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c b/src/modules/evas/engines/wayland_egl/evas_engine.c index c5dba720c3..a95166156d 100644 --- a/src/modules/evas/engines/wayland_egl/evas_engine.c +++ b/src/modules/evas/engines/wayland_egl/evas_engine.c @@ -1563,40 +1563,6 @@ eng_image_native_get(void *data EINA_UNUSED, void *image) return &(n->ns); } -#if 0 // filtering disabled -static void -eng_image_draw_filtered(void *data, void *context, void *surface, - void *image, Evas_Filter_Info *filter) -{ - Render_Engine *re = data; - - if (!image) return; - eng_window_use(re->win); - evas_gl_common_context_target_surface_set(re->win->gl_context, surface); - re->win->gl_context->dc = context; - - evas_gl_common_filter_draw(re->win->gl_context, image, filter); -} - -static Filtered_Image * -eng_image_filtered_get(void *im, uint8_t *key, size_t keylen) -{ - return evas_gl_common_image_filtered_get(im, key, keylen); -} - -static Filtered_Image * -eng_image_filtered_save(void *im, void *fim, uint8_t *key, size_t keylen) -{ - return evas_gl_common_image_filtered_save(im, fim, key, keylen); -} - -static void -eng_image_filtered_free(void *im, Filtered_Image *fim) -{ - evas_gl_common_image_filtered_free(im, fim); -} -#endif - static void * eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo) { @@ -3776,12 +3742,6 @@ module_open(Evas_Module *em) ORD(image_mask_create); ORD(image_native_set); ORD(image_native_get); -#if 0 // filtering disabled - ORD(image_draw_filtered); - ORD(image_filtered_get); - ORD(image_filtered_save); - ORD(image_filtered_free); -#endif ORD(font_draw);