efl/evas: remove mask of non-rectangle objects.

it was broken and mostly disabled, so now we do remove it in the hope
who does that next time, does it properly.



SVN revision: 80252
This commit is contained in:
Gustavo Sverzut Barbieri 2012-12-05 13:52:59 +00:00
parent 3604cc2f4f
commit a332d1c869
15 changed files with 24 additions and 380 deletions

View File

@ -290,17 +290,10 @@ _clip_set(Eo *eo_obj, void *_pd, va_list *list)
/* If it's NOT a rectangle set the mask bits too */
/* FIXME: Optmz ths chck */
if (clip->type == o_rect_type)
obj->cur.mask = NULL;
else
if (clip->type != o_rect_type)
{
void *engdata;
obj->cur.mask = eo_clip;
engdata = clip->func->engine_data_get(eo_clip);
/* FIXME: Images only */
clip->layer->evas->engine.func->image_mask_create(
clip->layer->evas->engine.data.output,
engdata);
ERR("Not supported clipping to type '%s', just rectangles.",
clip->type);
}
evas_object_change(eo_clip, clip);
evas_object_change(eo_obj, obj);

View File

@ -1625,20 +1625,7 @@ evas_render_updates_internal(Evas *eo_e,
obj->cur.cache.clip.w,
obj->cur.cache.clip.h);
}
if (obj->cur.mask)
{
Evas_Object_Protected_Data *cur_mask = eo_data_get(obj->cur.mask, EVAS_OBJ_CLASS);
e->engine.func->context_mask_set(e->engine.data.output,
e->engine.data.context,
cur_mask->func->engine_data_get(obj->cur.mask),
cur_mask->cur.geometry.x + off_x,
cur_mask->cur.geometry.y + off_y,
cur_mask->cur.geometry.w,
cur_mask->cur.geometry.h);
}
else
e->engine.func->context_mask_unset(e->engine.data.output,
e->engine.data.context);
e->engine.func->context_clip_set(e->engine.data.output,
e->engine.data.context,
x, y, w, h);

View File

@ -17,8 +17,6 @@ EAPI void evas_common_draw_context_unset_clip (RGBA_D
EAPI void evas_common_draw_context_set_color (RGBA_Draw_Context *dc, int r, int g, int b, int a);
EAPI void evas_common_draw_context_set_multiplier (RGBA_Draw_Context *dc, int r, int g, int b, int a);
EAPI void evas_common_draw_context_unset_multiplier (RGBA_Draw_Context *dc);
EAPI void evas_common_draw_context_set_mask (RGBA_Draw_Context *dc, RGBA_Image *im, int x, int y, int w, int h);
EAPI void evas_common_draw_context_unset_mask (RGBA_Draw_Context *dc);
EAPI Cutout_Rects *evas_common_draw_context_cutouts_new (void);
EAPI void evas_common_draw_context_cutouts_free (Cutout_Rects* rects);
EAPI void evas_common_draw_context_cutouts_del (Cutout_Rects* rects, int idx);

View File

@ -174,55 +174,6 @@ evas_common_draw_context_unset_multiplier(RGBA_Draw_Context *dc)
dc->mul.use = 0;
}
EAPI void
evas_common_draw_context_set_mask(RGBA_Draw_Context *dc, RGBA_Image *mask, int x, int y, int w, int h)
{
dc->mask.mask = mask;
dc->mask.x = x;
dc->mask.y = y;
dc->mask.w = w;
dc->mask.h = h;
#ifdef HAVE_PIXMAN
if (mask->pixman.im)
pixman_image_unref(mask->pixman.im);
if (mask->cache_entry.flags.alpha)
{
mask->pixman.im = pixman_image_create_bits(PIXMAN_a8r8g8b8, w, h,
(uint32_t *)mask->mask.mask,
w * 4);
}
else
{
mask->pixman.im = pixman_image_create_bits(PIXMAN_x8r8g8b8, w, h,
(uint32_t *)mask->mask.mask,
w * 4);
}
#endif
}
EAPI void
evas_common_draw_context_unset_mask(RGBA_Draw_Context *dc)
{
dc->mask.mask = NULL;
#ifdef HAVE_PIXMAN
RGBA_Image *mask;
mask = (RGBA_Image *)dc->mask.mask;
if (mask && mask->pixman.im)
{
pixman_image_unref(mask->pixman.im);
mask->pixman.im = NULL;
}
#endif
}
EAPI void
evas_common_draw_context_add_cutout(RGBA_Draw_Context *dc, int x, int y, int w, int h)

View File

@ -200,17 +200,10 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
p = dst->image.data + (dstw * y0) + x0;
#ifdef HAVE_PIXMAN
# ifdef PIXMAN_LINE
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(op, dc->col.pixman_color_image,
NULL, dst->pixman.im,
x0, y0, 0, 0, x0, y0, len, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
x0, y0, 0, 0, x0, y0, len, 1);
else
# endif
#endif
@ -237,16 +230,10 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
p = dst->image.data + (dstw * y0) + x0;
#ifdef HAVE_PIXMAN
# ifdef PIXMAN_LINE
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(op, dc->col.pixman_color_image,
NULL, dst->pixman.im,
x0, y0, 0, 0, x0, y0, 1, len);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im, dst->pixman.im,
x0, y0, 0, 0, x0, y0, 1, len);
else
# endif
#endif
@ -347,23 +334,13 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
{
#ifdef HAVE_PIXMAN
# ifdef PIXMAN_LINE
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(op, dc->col.pixman_color_image,
NULL, dst->pixman.im,
pixman_x_position,
pixman_y_position,
0, 0, pixman_x_position,
pixman_y_position, 1, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
pixman_x_position,
pixman_y_position, 0, 0,
pixman_x_position,
pixman_y_position, 1, 1);
else
# endif
#endif
@ -621,19 +598,11 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1,
{
#ifdef HAVE_PIXMAN
# ifdef PIXMAN_LINE
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(op, dc->col.pixman_color_image,
NULL, dst->pixman.im,
pix_x, pix_y, 0, 0,
pix_x, pix_y, 1, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
pix_x, pix_y, 0, 0,
pix_x, pix_y, 1, 1);
else
# endif
#endif
@ -685,19 +654,11 @@ next_x:
{
#ifdef HAVE_PIXMAN
# ifdef PIXMAN_LINE
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(op, dc->col.pixman_color_image,
NULL, dst->pixman.im,
pix_x, pix_y, 0, 0,
pix_x, pix_y, 1, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
pix_x, pix_y, 0, 0,
pix_x, pix_y, 1, 1);
else
# endif
#endif
@ -828,20 +789,12 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
(uint32_t *)&alpha_data_buffer, 4);
if ((dst->pixman.im) && (dc->col.pixman_color_image ) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(PIXMAN_OP_OVER,
dc->col.pixman_color_image,
aa_mask_image, dst->pixman.im,
pix_x, pix_y, 0, 0,
pix_x, pix_y, 1, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask) )
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
pix_x, pix_y, 0, 0,
pix_x, pix_y, 1, 1);
else
# endif
#endif
@ -860,20 +813,12 @@ _evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
(uint32_t *)&alpha_data_buffer, 4);
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(PIXMAN_OP_OVER,
dc->col.pixman_color_image,
aa_mask_image, dst->pixman.im,
pix_x, pix_y + 1, 0, 0,
pix_x, pix_y + 1, 1, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
pix_x, pix_y + 1, 0, 0,
pix_x, pix_y + 1, 1, 1);
else
# endif
#endif
@ -937,20 +882,12 @@ next_x:
alpha_data_buffer = 255 - aa;
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1, (uint32_t *)&alpha_data_buffer, 4);
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(PIXMAN_OP_OVER,
dc->col.pixman_color_image,
aa_mask_image, dst->pixman.im,
pix_x, pix_y, 0, 0,
pix_x, pix_y, 1, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
pix_x, pix_y, 0, 0,
pix_x, pix_y, 1, 1);
else
# endif
#endif
@ -970,20 +907,12 @@ next_x:
aa_mask_image = pixman_image_create_bits(PIXMAN_a8, 1, 1,
(uint32_t *)&alpha_data_buffer, 4);
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(PIXMAN_OP_OVER,
dc->col.pixman_color_image,
aa_mask_image, dst->pixman.im,
pix_x + 1, pix_y, 0, 0,
pix_x + 1, pix_y, 1, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
pix_x + 1, pix_y, 0, 0,
pix_x + 1, pix_y, 1, 1);
else
# endif
#endif

View File

@ -289,19 +289,11 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po
#ifdef HAVE_PIXMAN
# ifdef PIXMAN_POLY
if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(!dc->mask.mask))
if ((dst->pixman.im) && (dc->col.pixman_color_image))
pixman_image_composite(op, dc->col.pixman_color_image,
NULL, dst->pixman.im,
span->x, span->y, 0, 0,
span->x, span->y, span->w, 1);
else if ((dst->pixman.im) && (dc->col.pixman_color_image) &&
(dc->mask.mask))
pixman_image_composite(op, dc->col.pixman_color_image,
dc->mask.mask->pixman.im,
dst->pixman.im,
span->x, span->y, 0, 0,
span->x, span->y, span->w, 1);
else
# endif
#endif

View File

@ -72,11 +72,8 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
DATA32 **row_ptr;
DATA32 *ptr, *dst_ptr, *src_data, *dst_data;
int dst_clip_x, dst_clip_y, dst_clip_w, dst_clip_h;
int m_clip_x = 0, m_clip_y = 0, m_clip_w = 0, m_clip_h = 0, mdx = 0, mdy = 0;
int src_w, src_h, dst_w, dst_h;
RGBA_Gfx_Func func;
RGBA_Image *maskobj = NULL;
DATA8 *mask = NULL;
if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
return;
@ -120,21 +117,6 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
dst_clip_h = dst_h;
}
if (dc->mask.mask)
{
m_clip_x = dc->mask.x;
m_clip_y = dc->mask.y;
m_clip_w = dc->mask.mask->cache_entry.w;
m_clip_h = dc->mask.mask->cache_entry.h;
RECTS_CLIP_TO_RECT(m_clip_x, m_clip_y, m_clip_w, m_clip_h,
dst_clip_x, dst_clip_y, dst_clip_w, dst_clip_h);
if ((m_clip_w <= 0) || (m_clip_h <= 0)) return;
dst_clip_x = m_clip_x;
dst_clip_y = m_clip_y;
dst_clip_w = m_clip_w;
dst_clip_h = m_clip_h;
}
if (dst_clip_x < dst_region_x)
{
dst_clip_w += dst_clip_x - dst_region_x;
@ -233,22 +215,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
/* figure out dest start ptr */
dst_ptr = dst_data + dst_clip_x + (dst_clip_y * dst_w);
if (dc->mask.mask)
{
func = evas_common_gfx_func_composite_pixel_mask_span_get(src, dst, dst_clip_w, dc->render_op);
maskobj = dc->mask.mask;
mask = maskobj->mask.mask;
/*
if (1 || dst_region_w > src_region_w || dst_region_h > src_region_h){
printf("Mask w/h: %d/%d\n",maskobj->cache_entry.w,
maskobj->cache_entry.h);
printf("Warning: Unscaled mask (%d/%d) // (%d/%d)\n",
dst_region_w,src_region_w,
dst_region_h,src_region_h);
}
*/
}
else if (dc->mul.use)
if (dc->mul.use)
func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op);
else
func = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
@ -257,8 +224,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
{
#ifdef HAVE_PIXMAN
# ifdef PIXMAN_IMAGE_SCALE_SAMPLE
if ((src->pixman.im) && (dst->pixman.im) && (!dc->mask.mask) &&
((!dc->mul.use) ||
if ((src->pixman.im) && (dst->pixman.im) && ((!dc->mul.use) ||
((dc->mul.use) && (dc->mul.col == 0xffffffff))) &&
((dc->render_op == _EVAS_RENDER_COPY) ||
(dc->render_op == _EVAS_RENDER_BLEND)))
@ -276,44 +242,18 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
dst_clip_x, dst_clip_y,
dst_clip_w, dst_clip_h);
}
else if ((src->pixman.im) && (dst->pixman.im) &&
(dc->mask.mask) && (dc->mask.mask->pixman.im) &&
((dc->render_op == _EVAS_RENDER_COPY) ||
(dc->render_op == _EVAS_RENDER_BLEND)))
{
// In case of pixel and color operation.
pixman_op_t op = PIXMAN_OP_SRC; // _EVAS_RENDER_COPY
if (dc->render_op == _EVAS_RENDER_BLEND)
op = PIXMAN_OP_OVER;
pixman_image_composite(op,
src->pixman.im, dc->mask.mask->pixman.im,
dst->pixman.im,
(dst_clip_x - dst_region_x) + src_region_x,
(dst_clip_y - dst_region_y) + src_region_y,
0, 0,
dst_clip_x, dst_clip_y,
dst_clip_w, dst_clip_h);
}
else
# endif
#endif
{
ptr = src_data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x;
if (mask)
{
mdx = (m_clip_x - dc->mask.x) + (m_clip_x - dst_clip_x);
mdy = (m_clip_y - dc->mask.y) + (m_clip_y - dst_clip_y);
mask += mdx + (mdy * maskobj->cache_entry.w);
}
for (y = 0; y < dst_clip_h; y++)
{
/* * blend here [clip_w *] ptr -> dst_ptr * */
func(ptr, mask, dc->mul.col, dst_ptr, dst_clip_w);
func(ptr, NULL, dc->mul.col, dst_ptr, dst_clip_w);
ptr += src_w;
dst_ptr += dst_w;
if (mask) mask += maskobj->cache_entry.w;
}
}
}

View File

@ -1,43 +1,19 @@
{
DATA32 *ptr;
RGBA_Gfx_Func func;
RGBA_Image *maskobj;
DATA8 *mask = NULL;
ptr = src->image.data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x;
if (dc->mask.mask)
{
func = evas_common_gfx_func_composite_pixel_mask_span_get(NULL, NULL, dst_clip_w, dc->render_op);
maskobj = dc->mask.mask;
mask = maskobj->mask.mask;
}
else if (dc->mul.use)
if (dc->mul.use)
func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op);
else
func = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
if (mask)
while (dst_clip_h--)
{
// mask += dst_clip_x - dc->mask.x;
// mask += (dst_clip_y - dc->mask.y) * maskobj->cache_entry.w;
while (dst_clip_h--)
{
func(ptr, mask, dc->mul.col, dst_ptr, dst_clip_w);
func(ptr, NULL, dc->mul.col, dst_ptr, dst_clip_w);
ptr += src_w;
dst_ptr += dst_w;
mask += maskobj->cache_entry.w;
}
}
else
{
while (dst_clip_h--)
{
func(ptr, NULL, dc->mul.col, dst_ptr, dst_clip_w);
ptr += src_w;
dst_ptr += dst_w;
}
ptr += src_w;
dst_ptr += dst_w;
}
}

View File

@ -680,10 +680,6 @@ struct _RGBA_Draw_Context
int x, y, w, h;
Eina_Bool use : 1;
} clip;
struct {
int x, y, w, h;
RGBA_Image *mask;
} mask;
Cutout_Rects cutout;
struct {
struct {
@ -797,11 +793,6 @@ struct _RGBA_Image
Eina_Bool no_free : 1;
} image;
struct {
DATA8 *mask;
Eina_Bool dirty: 1;
} mask;
struct {
LK(lock);
Eina_List *list;

View File

@ -66,7 +66,6 @@ evas_object_is_opaque(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
if (obj->is_smart) return 0;
/* If a mask: Assume alpha */
if (obj->cur.mask) return 0;
if (obj->cur.cache.clip.a == 255)
{
if (obj->func->is_opaque)

View File

@ -498,7 +498,6 @@ struct _Evas_Object_Protected_Data
Evas_Map *map;
Evas_Object_Protected_Data *clipper;
Evas_Object *eo_clipper;
Evas_Object *mask;
Evas_Object *map_parent;
double scale;
Evas_Coord_Rectangle geometry;
@ -774,8 +773,6 @@ struct _Evas_Func
void (*context_clip_clip) (void *data, void *context, int x, int y, int w, int h);
void (*context_clip_unset) (void *data, void *context);
int (*context_clip_get) (void *data, void *context, int *x, int *y, int *w, int *h);
void (*context_mask_set) (void *data, void *context, void *mask, int x, int y, int w, int h);
void (*context_mask_unset) (void *data, void *context);
void (*context_color_set) (void *data, void *context, int r, int g, int b, int a);
int (*context_color_get) (void *data, void *context, int *r, int *g, int *b, int *a);
void (*context_multiplier_set) (void *data, void *context, int r, int g, int b, int a);
@ -820,7 +817,6 @@ struct _Evas_Func
void (*image_colorspace_set) (void *data, void *image, int cspace);
int (*image_colorspace_get) (void *data, void *image);
Eina_Bool (*image_can_region_get) (void *data, void *image);
void (*image_mask_create) (void *data, void *image);
void *(*image_native_set) (void *data, void *image, void *native);
void *(*image_native_get) (void *data, void *image);

View File

@ -1326,21 +1326,6 @@ evas_gl_common_context_rectangle_push(Evas_Engine_GL_Context *gc,
GLuint prog = gc->shared->shader[SHADER_RECT].prog;
int pn = 0;
if (gc->dc->mask.mask)
{
RGBA_Draw_Context *dc;
dc = gc->dc;
Evas_GL_Image *im;
im = (void *)dc->mask.mask;
evas_gl_common_context_font_push(gc, im->tex,
x - dc->mask.x,
y - dc->mask.y,
dc->mask.w, dc->mask.h,
x, y, w, h,
r, g, b, a);
return;
}
if (a < 255) blend = 1;
if (gc->dc->render_op == EVAS_RENDER_COPY) blend = 0;

View File

@ -686,10 +686,8 @@ evas_gl_common_image_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, int sx,
{
static Cutout_Rects *rects = NULL;
RGBA_Draw_Context *dc;
Evas_GL_Image *imm;
int r, g, b, a;
double ssx, ssy, ssw, ssh;
double mssx, mssy, mssw, mssh;
Cutout_Rect *rct;
int c, cx, cy, cw, ch;
int i;
@ -700,7 +698,6 @@ evas_gl_common_image_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, int sx,
if (sw < 1) sw = 1;
if (sh < 1) sh = 1;
dc = gc->dc;
imm = (Evas_GL_Image *)dc->mask.mask;
if (dc->mul.use)
{
a = (dc->mul.col >> 24) & 0xff;
@ -719,11 +716,6 @@ evas_gl_common_image_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, int sx,
evas_gl_common_rect_draw(gc, dx, dy, dw, dh);
return;
}
if (imm)
{
evas_gl_common_image_update(gc, imm);
if (!imm->tex) imm = NULL; /* Turn of mask on error */
}
if ((im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
(im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
@ -735,7 +727,6 @@ evas_gl_common_image_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, int sx,
nv12 = 1;
im->tex->im = im;
if (imm) imm->tex->im = imm;
if ((!gc->dc->cutout.rects) ||
((gc->shared->info.tune.cutout.max > 0) &&
(gc->dc->cutout.active > gc->shared->info.tune.cutout.max)))
@ -743,14 +734,13 @@ evas_gl_common_image_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, int sx,
if (gc->dc->clip.use)
{
int nx, ny, nw, nh;
double scalex,scaley;
nx = dx; ny = dy; nw = dw; nh = dh;
RECTS_CLIP_TO_RECT(nx, ny, nw, nh,
gc->dc->clip.x, gc->dc->clip.y,
gc->dc->clip.w, gc->dc->clip.h);
if ((nw < 1) || (nh < 1)) return;
if ((!imm) && (nx == dx) && (ny == dy) && (nw == dw) && (nh == dh))
if ((nx == dx) && (ny == dy) && (nw == dw) && (nh == dh))
{
if (yuv)
evas_gl_common_context_yuv_push(gc,
@ -788,28 +778,8 @@ evas_gl_common_image_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, int sx,
ssy = (double)sy + ((double)(sh * (ny - dy)) / (double)(dh));
ssw = ((double)sw * (double)(nw)) / (double)(dw);
ssh = ((double)sh * (double)(nh)) / (double)(dh);
if (imm)
{
/* Correct ones here */
scalex = imm->w / (double)dc->mask.w;
scaley = imm->h / (double)dc->mask.h;
mssx = scalex * (nx - dc->mask.x);
mssy = scaley * (ny - dc->mask.y);
mssw = scalex * nw;
mssh = scaley * nh;
/* No yuv + imm I'm afraid */
evas_gl_common_context_image_mask_push(gc,
im->tex,
imm->tex,
ssx, ssy, ssw, ssh,
mssx, mssy, mssw, mssh,
//dc->mask.x, dc->mask.y, dc->mask.w, dc->mask.h,
nx, ny, nw, nh,
r, g, b, a,
smooth);
}
else if (yuv)
if (yuv)
evas_gl_common_context_yuv_push(gc,
im->tex,
ssx, ssy, ssw, ssh,

View File

@ -1372,20 +1372,6 @@ eng_image_colorspace_get(void *data EINA_UNUSED, void *image)
return im->cs.space;
}
static void
eng_image_mask_create(void *data EINA_UNUSED, void *image)
{
Evas_GL_Image *im;
if (!image) return;
im = image;
if (!im->im->image.data)
evas_cache_image_load_data(&im->im->cache_entry);
if (!im->tex)
im->tex = evas_gl_common_texture_new(im->gc, im->im);
}
static void *
eng_image_alpha_set(void *data, void *image, int has_alpha)
{
@ -2941,7 +2927,6 @@ module_open(Evas_Module *em)
ORD(image_colorspace_set);
ORD(image_colorspace_get);
ORD(image_can_region_get);
ORD(image_mask_create);
ORD(image_native_set);
ORD(image_native_get);

View File

@ -368,25 +368,6 @@ eng_context_multiplier_get(void *data EINA_UNUSED, void *context, int *r, int *g
return ((RGBA_Draw_Context *)context)->mul.use;
}
static void
eng_context_mask_set(void *data EINA_UNUSED, void *context, void *mask, int x, int y, int w, int h)
{
evas_common_draw_context_set_mask(context, mask, x, y, w, h);
}
static void
eng_context_mask_unset(void *data EINA_UNUSED, void *context)
{
evas_common_draw_context_unset_mask(context);
}
/*
static void *
eng_context_mask_get(void *data EINA_UNUSED, void *context)
{
return ((RGBA_Draw_Context *)context)->mask.mask;
}
*/
static void
eng_context_cutout_add(void *data EINA_UNUSED, void *context, int x, int y, int w, int h)
{
@ -531,32 +512,6 @@ eng_image_can_region_get(void *data EINA_UNUSED, void *image)
return ((Evas_Image_Load_Func*) im->info.loader)->do_region;
}
static void
eng_image_mask_create(void *data EINA_UNUSED, void *image)
{
RGBA_Image *im;
int sz;
uint8_t *dst,*end;
uint32_t *src;
if (!image) return;
im = image;
if (im->mask.mask && !im->mask.dirty) return;
if (im->mask.mask) free(im->mask.mask);
sz = im->cache_entry.w * im->cache_entry.h;
im->mask.mask = malloc(sz);
dst = im->mask.mask;
if (!im->image.data)
evas_cache_image_load_data(&im->cache_entry);
src = (void*) im->image.data;
if (!src) return;
for (end = dst + sz ; dst < end ; dst ++, src ++)
*dst = *src >> 24;
im->mask.dirty = 0;
}
static void *
eng_image_alpha_set(void *data EINA_UNUSED, void *image, int has_alpha)
{
@ -1713,8 +1668,6 @@ static Evas_Func func =
eng_context_clip_clip,
eng_context_clip_unset,
eng_context_clip_get,
eng_context_mask_set,
eng_context_mask_unset,
eng_context_color_set,
eng_context_color_get,
eng_context_multiplier_set,
@ -1759,7 +1712,6 @@ static Evas_Func func =
eng_image_colorspace_set,
eng_image_colorspace_get,
eng_image_can_region_get,
eng_image_mask_create,
eng_image_native_set,
eng_image_native_get,
/* image cache funcs */