forked from enlightenment/efl
parent
57afb0986b
commit
62940b41f2
|
@ -57,6 +57,17 @@ mixin Evas.Filter (Efl.Gfx.Filter)
|
||||||
Virtual, to be implemented in the parent class.
|
Virtual, to be implemented in the parent class.
|
||||||
]]
|
]]
|
||||||
}
|
}
|
||||||
|
@property output_buffer @protected {
|
||||||
|
get {
|
||||||
|
[[Retrieve cached output buffer, if any.
|
||||||
|
|
||||||
|
Does not increment the reference count.
|
||||||
|
]]
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
buffer: void*;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
implements {
|
implements {
|
||||||
Efl.Gfx.Filter.program.set;
|
Efl.Gfx.Filter.program.set;
|
||||||
|
|
|
@ -584,4 +584,10 @@ _evas_filter_efl_gfx_filter_data_set(Eo *obj EINA_UNUSED, Evas_Filter_Data *pd,
|
||||||
FCOW_END(fcow, pd);
|
FCOW_END(fcow, pd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN void *
|
||||||
|
_evas_filter_output_buffer_get(Eo *obj EINA_UNUSED, Evas_Filter_Data *pd)
|
||||||
|
{
|
||||||
|
return pd->data->output;
|
||||||
|
}
|
||||||
|
|
||||||
#include "evas_filter.eo.c"
|
#include "evas_filter.eo.c"
|
||||||
|
|
|
@ -3290,7 +3290,7 @@ _evas_image_render(Eo *eo_obj, Evas_Object_Protected_Data *obj,
|
||||||
void *output, void *context, void *surface, int x, int y,
|
void *output, void *context, void *surface, int x, int y,
|
||||||
int l, int t, int r, int b, Eina_Bool do_async)
|
int l, int t, int r, int b, Eina_Bool do_async)
|
||||||
{
|
{
|
||||||
Evas_Image_Data *o = obj->private_data;
|
Evas_Image_Data *o = obj->private_data, *oi = NULL;
|
||||||
int imagew, imageh, uvw, uvh;
|
int imagew, imageh, uvw, uvh;
|
||||||
void *pixels;
|
void *pixels;
|
||||||
|
|
||||||
|
@ -3298,6 +3298,8 @@ _evas_image_render(Eo *eo_obj, Evas_Object_Protected_Data *obj,
|
||||||
(o->cur->source ?
|
(o->cur->source ?
|
||||||
eo_data_scope_get(o->cur->source, EVAS_OBJECT_CLASS):
|
eo_data_scope_get(o->cur->source, EVAS_OBJECT_CLASS):
|
||||||
NULL);
|
NULL);
|
||||||
|
if (source && (source->type == o_type))
|
||||||
|
oi = eo_data_scope_get(o->cur->source, MY_CLASS);
|
||||||
|
|
||||||
if (o->cur->scene)
|
if (o->cur->scene)
|
||||||
{
|
{
|
||||||
|
@ -3333,13 +3335,16 @@ _evas_image_render(Eo *eo_obj, Evas_Object_Protected_Data *obj,
|
||||||
uvw = imagew;
|
uvw = imagew;
|
||||||
uvh = imageh;
|
uvh = imageh;
|
||||||
}
|
}
|
||||||
else if (source->type == o_type &&
|
else if (oi && oi->engine_data)
|
||||||
((Evas_Image_Data *)eo_data_scope_get(o->cur->source, MY_CLASS))->engine_data)
|
|
||||||
{
|
{
|
||||||
Evas_Image_Data *oi;
|
|
||||||
|
|
||||||
oi = eo_data_scope_get(o->cur->source, MY_CLASS);
|
|
||||||
pixels = oi->engine_data;
|
pixels = oi->engine_data;
|
||||||
|
if (oi->has_filter)
|
||||||
|
{
|
||||||
|
void *output_buffer = eo_do_ret(source->object, output_buffer,
|
||||||
|
evas_filter_output_buffer_get());
|
||||||
|
if (output_buffer)
|
||||||
|
pixels = output_buffer;
|
||||||
|
}
|
||||||
imagew = oi->cur->image.w;
|
imagew = oi->cur->image.w;
|
||||||
imageh = oi->cur->image.h;
|
imageh = oi->cur->image.h;
|
||||||
uvw = source->cur->geometry.w;
|
uvw = source->cur->geometry.w;
|
||||||
|
|
Loading…
Reference in New Issue