forked from enlightenment/efl
ector: use the new infrastructure to detect changed path for Cairo backend.
This commit is contained in:
parent
d14f805793
commit
728fa26409
|
@ -45,6 +45,19 @@ struct _Ector_Renderer_Cairo_Shape_Data
|
||||||
cairo_path_t *path;
|
cairo_path_t *path;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_ector_renderer_cairo_shape_path_changed(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info)
|
||||||
|
{
|
||||||
|
Ector_Renderer_Cairo_Shape_Data *pd = data;
|
||||||
|
|
||||||
|
USE(obj, cairo_path_destroy, EINA_TRUE);
|
||||||
|
|
||||||
|
if (pd->path) cairo_path_destroy(pd->path);
|
||||||
|
pd->path = NULL;
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_ector_renderer_cairo_shape_ector_renderer_generic_base_prepare(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
|
_ector_renderer_cairo_shape_ector_renderer_generic_base_prepare(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
|
||||||
{
|
{
|
||||||
|
@ -183,25 +196,15 @@ _ector_renderer_cairo_shape_ector_renderer_cairo_base_fill(Eo *obj EINA_UNUSED,
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_ector_renderer_cairo_shape_efl_gfx_shape_path_set(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd,
|
|
||||||
const Efl_Gfx_Path_Command *op, const double *points)
|
|
||||||
{
|
|
||||||
USE(obj, cairo_path_destroy, );
|
|
||||||
|
|
||||||
if (pd->path) cairo_path_destroy(pd->path);
|
|
||||||
pd->path = NULL;
|
|
||||||
|
|
||||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, efl_gfx_shape_path_set(op, points));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
|
_ector_renderer_cairo_shape_eo_base_constructor(Eo *obj, Ector_Renderer_Cairo_Shape_Data *pd)
|
||||||
{
|
{
|
||||||
eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, eo_constructor());
|
eo_do_super(obj, ECTOR_RENDERER_CAIRO_SHAPE_CLASS, eo_constructor());
|
||||||
pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
|
pd->shape = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_SHAPE_MIXIN, obj);
|
||||||
pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
|
pd->base = eo_data_xref(obj, ECTOR_RENDERER_GENERIC_BASE_CLASS, obj);
|
||||||
|
|
||||||
|
eo_do(obj,
|
||||||
|
eo_event_callback_add(EFL_GFX_PATH_CHANGED, _ector_renderer_cairo_shape_path_changed, pd));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -6,7 +6,6 @@ class Ector.Renderer.Cairo.Shape (Ector.Renderer.Cairo.Base, Ector.Renderer.Gene
|
||||||
Ector.Renderer.Generic.Base.prepare;
|
Ector.Renderer.Generic.Base.prepare;
|
||||||
Ector.Renderer.Generic.Base.draw;
|
Ector.Renderer.Generic.Base.draw;
|
||||||
Ector.Renderer.Cairo.Base.fill;
|
Ector.Renderer.Cairo.Base.fill;
|
||||||
Efl.Gfx.Shape.path.set;
|
|
||||||
Eo.Base.constructor;
|
Eo.Base.constructor;
|
||||||
Eo.Base.destructor;
|
Eo.Base.destructor;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue