|
|
|
@ -3,7 +3,7 @@
|
|
|
|
|
|
|
|
|
|
#include "evas_vg_private.h"
|
|
|
|
|
|
|
|
|
|
#define MY_CLASS EFL_CANVAS_VG_CLASS
|
|
|
|
|
#define MY_CLASS EFL_CANVAS_VG_OBJECT_CLASS
|
|
|
|
|
|
|
|
|
|
/* private magic number for rectangle objects */
|
|
|
|
|
static const char o_type[] = "vectors";
|
|
|
|
@ -62,7 +62,7 @@ static void
|
|
|
|
|
_evas_vg_tree_changed(void *data, const Efl_Event *event EINA_UNUSED)
|
|
|
|
|
{
|
|
|
|
|
Evas_Object_Protected_Data *obj = data;
|
|
|
|
|
Efl_Canvas_Vg_Data *pd = efl_data_scope_get(obj->object, MY_CLASS);
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *pd = efl_data_scope_get(obj->object, MY_CLASS);
|
|
|
|
|
|
|
|
|
|
if (pd->changed) return;
|
|
|
|
|
|
|
|
|
@ -72,7 +72,7 @@ _evas_vg_tree_changed(void *data, const Efl_Event *event EINA_UNUSED)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
_update_vgtree_viewport(Eo *obj, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
_update_vgtree_viewport(Eo *obj, Efl_Canvas_Vg_Object_Data *pd)
|
|
|
|
|
{
|
|
|
|
|
double vb_w, vb_h, vp_w, vp_h, scale_w, scale_h, scale;
|
|
|
|
|
Eina_Size2D sz = efl_gfx_entity_size_get(obj);
|
|
|
|
@ -110,7 +110,7 @@ _update_vgtree_viewport(Eo *obj, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
static void
|
|
|
|
|
_evas_vg_resize(void *data, const Efl_Event *ev)
|
|
|
|
|
{
|
|
|
|
|
Efl_Canvas_Vg_Data *pd = data;
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *pd = data;
|
|
|
|
|
|
|
|
|
|
if (eina_rectangle_is_empty(&pd->viewbox.rect))
|
|
|
|
|
return;
|
|
|
|
@ -128,7 +128,7 @@ evas_object_vg_add(Evas *e)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static Efl_VG *
|
|
|
|
|
_efl_canvas_vg_root_node_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
_efl_canvas_vg_object_root_node_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Object_Data *pd)
|
|
|
|
|
{
|
|
|
|
|
Efl_VG *root = NULL;
|
|
|
|
|
|
|
|
|
@ -141,7 +141,7 @@ _efl_canvas_vg_root_node_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
|
_efl_canvas_vg_root_node_set(Eo *obj, Efl_Canvas_Vg_Data *pd, Efl_VG *root_node)
|
|
|
|
|
_efl_canvas_vg_object_root_node_set(Eo *obj, Efl_Canvas_Vg_Object_Data *pd, Efl_VG *root_node)
|
|
|
|
|
{
|
|
|
|
|
// if the same root is already set
|
|
|
|
|
if (pd->user_entry && pd->user_entry->root == root_node)
|
|
|
|
@ -188,19 +188,19 @@ _efl_canvas_vg_root_node_set(Eo *obj, Efl_Canvas_Vg_Data *pd, Efl_VG *root_node)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
|
_efl_canvas_vg_fill_mode_set(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd, Efl_Canvas_Vg_Fill_Mode fill_mode)
|
|
|
|
|
_efl_canvas_vg_object_fill_mode_set(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Object_Data *pd, Efl_Canvas_Vg_Fill_Mode fill_mode)
|
|
|
|
|
{
|
|
|
|
|
pd->fill_mode = fill_mode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static Efl_Canvas_Vg_Fill_Mode
|
|
|
|
|
_efl_canvas_vg_fill_mode_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
_efl_canvas_vg_object_fill_mode_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Object_Data *pd)
|
|
|
|
|
{
|
|
|
|
|
return pd->fill_mode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
|
_efl_canvas_vg_viewbox_set(Eo *obj, Efl_Canvas_Vg_Data *pd, Eina_Rect viewbox)
|
|
|
|
|
_efl_canvas_vg_object_viewbox_set(Eo *obj, Efl_Canvas_Vg_Object_Data *pd, Eina_Rect viewbox)
|
|
|
|
|
{
|
|
|
|
|
// viewbox should be a valid rectangle
|
|
|
|
|
if (eina_rectangle_is_empty(&viewbox.rect))
|
|
|
|
@ -227,13 +227,13 @@ _efl_canvas_vg_viewbox_set(Eo *obj, Efl_Canvas_Vg_Data *pd, Eina_Rect viewbox)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static Eina_Rect
|
|
|
|
|
_efl_canvas_vg_viewbox_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
_efl_canvas_vg_object_viewbox_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Object_Data *pd)
|
|
|
|
|
{
|
|
|
|
|
return pd->viewbox;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
|
_efl_canvas_vg_viewbox_align_set(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd, double align_x, double align_y)
|
|
|
|
|
_efl_canvas_vg_object_viewbox_align_set(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Object_Data *pd, double align_x, double align_y)
|
|
|
|
|
{
|
|
|
|
|
align_x = align_x < 0 ? 0 : align_x;
|
|
|
|
|
align_x = align_x > 1 ? 1 : align_x;
|
|
|
|
@ -246,7 +246,7 @@ _efl_canvas_vg_viewbox_align_set(Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd, do
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
|
_efl_canvas_vg_viewbox_align_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd, double *align_x, double *align_y)
|
|
|
|
|
_efl_canvas_vg_object_viewbox_align_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Object_Data *pd, double *align_x, double *align_y)
|
|
|
|
|
{
|
|
|
|
|
if (align_x) *align_x = pd->align_x;
|
|
|
|
|
if (align_y) *align_y = pd->align_y;
|
|
|
|
@ -255,7 +255,7 @@ _efl_canvas_vg_viewbox_align_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *
|
|
|
|
|
// file set and save api implementation
|
|
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
|
_efl_canvas_vg_efl_file_file_set(Eo *eo_obj, Efl_Canvas_Vg_Data *pd, const char *file, const char *key)
|
|
|
|
|
_efl_canvas_vg_object_efl_file_file_set(Eo *obj, Efl_Canvas_Vg_Object_Data *pd, const char *file, const char *key)
|
|
|
|
|
{
|
|
|
|
|
Evas_Cache_Vg_Entry *old_entry;
|
|
|
|
|
int w, h;
|
|
|
|
@ -263,17 +263,17 @@ _efl_canvas_vg_efl_file_file_set(Eo *eo_obj, Efl_Canvas_Vg_Data *pd, const char
|
|
|
|
|
if (!file) return EINA_FALSE;
|
|
|
|
|
|
|
|
|
|
old_entry = pd->vg_entry;
|
|
|
|
|
evas_object_geometry_get(eo_obj, NULL, NULL, &w, &h);
|
|
|
|
|
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
|
|
|
|
|
pd->vg_entry = evas_cache_vg_entry_find(file, key, w, h);
|
|
|
|
|
if (pd->vg_entry != old_entry)
|
|
|
|
|
evas_object_change(eo_obj, efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS));
|
|
|
|
|
evas_object_change(obj, efl_data_scope_get(obj, EFL_CANVAS_OBJECT_CLASS));
|
|
|
|
|
evas_cache_vg_entry_del(old_entry);
|
|
|
|
|
|
|
|
|
|
return EINA_TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
|
_efl_canvas_vg_efl_file_file_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *pd, const char **file, const char **key)
|
|
|
|
|
_efl_canvas_vg_object_efl_file_file_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Object_Data *pd, const char **file, const char **key)
|
|
|
|
|
{
|
|
|
|
|
if (pd->vg_entry)
|
|
|
|
|
{
|
|
|
|
@ -283,7 +283,7 @@ _efl_canvas_vg_efl_file_file_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Vg_Data *
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
|
_efl_canvas_vg_efl_file_save(const Eo *obj, Efl_Canvas_Vg_Data *pd, const char *file, const char *key, const char *flags)
|
|
|
|
|
_efl_canvas_vg_object_efl_file_save(const Eo *obj, Efl_Canvas_Vg_Object_Data *pd, const char *file, const char *key, const char *flags)
|
|
|
|
|
{
|
|
|
|
|
Vg_File_Data tmp = {};
|
|
|
|
|
Vg_File_Data *info = &tmp;
|
|
|
|
@ -306,7 +306,7 @@ _efl_canvas_vg_efl_file_save(const Eo *obj, Efl_Canvas_Vg_Data *pd, const char *
|
|
|
|
|
static void
|
|
|
|
|
_cleanup_reference(void *data, const Efl_Event *event EINA_UNUSED)
|
|
|
|
|
{
|
|
|
|
|
Efl_Canvas_Vg_Data *pd = data;
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *pd = data;
|
|
|
|
|
Eo *renderer;
|
|
|
|
|
|
|
|
|
|
/* unref all renderer and may also destroy them async */
|
|
|
|
@ -315,7 +315,7 @@ _cleanup_reference(void *data, const Efl_Event *event EINA_UNUSED)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
|
_efl_canvas_vg_efl_object_destructor(Eo *eo_obj, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
_efl_canvas_vg_object_efl_object_destructor(Eo *eo_obj, Efl_Canvas_Vg_Object_Data *pd)
|
|
|
|
|
{
|
|
|
|
|
Evas *e = evas_object_evas_get(eo_obj);
|
|
|
|
|
|
|
|
|
@ -332,7 +332,7 @@ _efl_canvas_vg_efl_object_destructor(Eo *eo_obj, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EOLIAN static Eo *
|
|
|
|
|
_efl_canvas_vg_efl_object_constructor(Eo *eo_obj, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
_efl_canvas_vg_object_efl_object_constructor(Eo *eo_obj, Efl_Canvas_Vg_Object_Data *pd)
|
|
|
|
|
{
|
|
|
|
|
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
|
|
|
|
|
|
|
|
|
@ -355,7 +355,7 @@ _efl_canvas_vg_efl_object_constructor(Eo *eo_obj, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Efl_Object *
|
|
|
|
|
_efl_canvas_vg_efl_object_finalize(Eo *obj, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
_efl_canvas_vg_object_efl_object_finalize(Eo *obj, Efl_Canvas_Vg_Object_Data *pd)
|
|
|
|
|
{
|
|
|
|
|
Evas *e = evas_object_evas_get(obj);
|
|
|
|
|
|
|
|
|
@ -367,7 +367,7 @@ _efl_canvas_vg_efl_object_finalize(Eo *obj, Efl_Canvas_Vg_Data *pd)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
_evas_vg_render(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Data *pd,
|
|
|
|
|
_evas_vg_render(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Object_Data *vd,
|
|
|
|
|
void *engine, void *output, void *context, void *surface, Efl_VG *n,
|
|
|
|
|
Eina_Array *clips, Eina_Bool do_async)
|
|
|
|
|
{
|
|
|
|
@ -380,7 +380,7 @@ _evas_vg_render(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Data *pd,
|
|
|
|
|
vc = efl_data_scope_get(n, EFL_CANVAS_VG_CONTAINER_CLASS);
|
|
|
|
|
|
|
|
|
|
EINA_LIST_FOREACH(vc->children, l, child)
|
|
|
|
|
_evas_vg_render(obj, pd,
|
|
|
|
|
_evas_vg_render(obj, vd,
|
|
|
|
|
engine, output, context, surface, child,
|
|
|
|
|
clips, do_async);
|
|
|
|
|
}
|
|
|
|
@ -390,14 +390,14 @@ _evas_vg_render(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Data *pd,
|
|
|
|
|
nd = efl_data_scope_get(n, EFL_CANVAS_VG_NODE_CLASS);
|
|
|
|
|
obj->layer->evas->engine.func->ector_renderer_draw(engine, output, context, surface, nd->renderer, clips, do_async);
|
|
|
|
|
if (do_async)
|
|
|
|
|
eina_array_push(&pd->cleanup, efl_ref(nd->renderer));
|
|
|
|
|
eina_array_push(&vd->cleanup, efl_ref(nd->renderer));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// renders a vg_tree to an offscreen buffer
|
|
|
|
|
// and push it to the cache.
|
|
|
|
|
static void *
|
|
|
|
|
_render_to_buffer(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Data *pd,
|
|
|
|
|
_render_to_buffer(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Object_Data *vd,
|
|
|
|
|
void *engine, void *surface,
|
|
|
|
|
Efl_VG *root, int w, int h, void *key,
|
|
|
|
|
void *buffer, Eina_Bool do_async)
|
|
|
|
@ -434,7 +434,7 @@ _render_to_buffer(Evas_Object_Protected_Data *obj, Efl_Canvas_Vg_Data *pd,
|
|
|
|
|
ector,
|
|
|
|
|
0, 0,
|
|
|
|
|
do_async);
|
|
|
|
|
_evas_vg_render(obj, pd,
|
|
|
|
|
_evas_vg_render(obj, vd,
|
|
|
|
|
engine, buffer,
|
|
|
|
|
context, surface,
|
|
|
|
|
root, NULL,
|
|
|
|
@ -477,11 +477,11 @@ _render_buffer_to_screen(Evas_Object_Protected_Data *obj,
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
_cache_vg_entry_render(Evas_Object_Protected_Data *obj,
|
|
|
|
|
Efl_Canvas_Vg_Data *pd,
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *vd,
|
|
|
|
|
void *engine, void *output, void *context, void *surface,
|
|
|
|
|
int x, int y, int w, int h, Eina_Bool do_async)
|
|
|
|
|
{
|
|
|
|
|
Evas_Cache_Vg_Entry *vg_entry = pd->vg_entry;
|
|
|
|
|
Evas_Cache_Vg_Entry *vg_entry = vd->vg_entry;
|
|
|
|
|
Efl_VG *root, *dupe_root;
|
|
|
|
|
void *buffer;
|
|
|
|
|
|
|
|
|
@ -492,7 +492,7 @@ _cache_vg_entry_render(Evas_Object_Protected_Data *obj,
|
|
|
|
|
evas_cache_vg_entry_del(vg_entry);
|
|
|
|
|
vg_entry = evas_cache_vg_entry_find(vg_entry->file, vg_entry->key,
|
|
|
|
|
w, h);
|
|
|
|
|
pd->vg_entry = vg_entry;
|
|
|
|
|
vd->vg_entry = vg_entry;
|
|
|
|
|
}
|
|
|
|
|
root = evas_cache_vg_tree_get(vg_entry);
|
|
|
|
|
if (!root) return;
|
|
|
|
@ -503,7 +503,7 @@ _cache_vg_entry_render(Evas_Object_Protected_Data *obj,
|
|
|
|
|
{
|
|
|
|
|
dupe_root = efl_duplicate(root);
|
|
|
|
|
// render to the buffer
|
|
|
|
|
buffer = _render_to_buffer(obj, pd,
|
|
|
|
|
buffer = _render_to_buffer(obj, vd,
|
|
|
|
|
engine, surface,
|
|
|
|
|
dupe_root,
|
|
|
|
|
w, h,
|
|
|
|
@ -526,11 +526,11 @@ _cache_vg_entry_render(Evas_Object_Protected_Data *obj,
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
_user_vg_entry_render(Evas_Object_Protected_Data *obj,
|
|
|
|
|
Efl_Canvas_Vg_Data *pd,
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *vd,
|
|
|
|
|
void *engine, void *output, void *context, void *surface,
|
|
|
|
|
int x, int y, int w, int h, Eina_Bool do_async)
|
|
|
|
|
{
|
|
|
|
|
User_Vg_Entry *user_entry = pd->user_entry;
|
|
|
|
|
User_Vg_Entry *user_entry = vd->user_entry;
|
|
|
|
|
void *buffer;
|
|
|
|
|
|
|
|
|
|
// if the size dosen't match
|
|
|
|
@ -540,14 +540,14 @@ _user_vg_entry_render(Evas_Object_Protected_Data *obj,
|
|
|
|
|
obj->layer->evas->engine.func->ector_surface_cache_drop(engine, user_entry);
|
|
|
|
|
user_entry->w = w;
|
|
|
|
|
user_entry->h = h;
|
|
|
|
|
pd->user_entry = user_entry;
|
|
|
|
|
vd->user_entry = user_entry;
|
|
|
|
|
}
|
|
|
|
|
// if the buffer is not created yet
|
|
|
|
|
buffer = obj->layer->evas->engine.func->ector_surface_cache_get(engine, user_entry);
|
|
|
|
|
if (!buffer)
|
|
|
|
|
{
|
|
|
|
|
// render to the buffer
|
|
|
|
|
buffer = _render_to_buffer(obj, pd,
|
|
|
|
|
buffer = _render_to_buffer(obj, vd,
|
|
|
|
|
engine, surface,
|
|
|
|
|
user_entry->root,
|
|
|
|
|
w, h,
|
|
|
|
@ -558,8 +558,8 @@ _user_vg_entry_render(Evas_Object_Protected_Data *obj,
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// render to the buffer
|
|
|
|
|
if (pd->changed)
|
|
|
|
|
buffer = _render_to_buffer(obj, pd,
|
|
|
|
|
if (vd->changed)
|
|
|
|
|
buffer = _render_to_buffer(obj, vd,
|
|
|
|
|
engine, surface,
|
|
|
|
|
user_entry->root,
|
|
|
|
|
w, h,
|
|
|
|
@ -583,7 +583,7 @@ _efl_canvas_vg_render(Evas_Object *eo_obj EINA_UNUSED,
|
|
|
|
|
void *engine, void *output, void *context, void *surface,
|
|
|
|
|
int x, int y, Eina_Bool do_async)
|
|
|
|
|
{
|
|
|
|
|
Efl_Canvas_Vg_Data *pd = type_private_data;
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *vd = type_private_data;
|
|
|
|
|
|
|
|
|
|
/* render object to surface with context, and offxet by x,y */
|
|
|
|
|
obj->layer->evas->engine.func->context_color_set(engine,
|
|
|
|
@ -602,21 +602,21 @@ _efl_canvas_vg_render(Evas_Object *eo_obj EINA_UNUSED,
|
|
|
|
|
obj->cur->anti_alias);
|
|
|
|
|
obj->layer->evas->engine.func->context_render_op_set(engine, context,
|
|
|
|
|
obj->cur->render_op);
|
|
|
|
|
if (pd->vg_entry)
|
|
|
|
|
if (vd->vg_entry)
|
|
|
|
|
{
|
|
|
|
|
_cache_vg_entry_render(obj, pd,
|
|
|
|
|
_cache_vg_entry_render(obj, vd,
|
|
|
|
|
engine, output, context, surface,
|
|
|
|
|
obj->cur->geometry.x + x, obj->cur->geometry.y + y,
|
|
|
|
|
obj->cur->geometry.w, obj->cur->geometry.h, do_async);
|
|
|
|
|
}
|
|
|
|
|
if (pd->user_entry)
|
|
|
|
|
if (vd->user_entry)
|
|
|
|
|
{
|
|
|
|
|
_user_vg_entry_render(obj, pd,
|
|
|
|
|
_user_vg_entry_render(obj, vd,
|
|
|
|
|
engine, output, context, surface,
|
|
|
|
|
obj->cur->geometry.x + x, obj->cur->geometry.y + y,
|
|
|
|
|
obj->cur->geometry.w, obj->cur->geometry.h, do_async);
|
|
|
|
|
}
|
|
|
|
|
pd->changed = EINA_FALSE;
|
|
|
|
|
vd->changed = EINA_FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
@ -624,7 +624,7 @@ _efl_canvas_vg_render_pre(Evas_Object *eo_obj,
|
|
|
|
|
Evas_Object_Protected_Data *obj,
|
|
|
|
|
void *type_private_data)
|
|
|
|
|
{
|
|
|
|
|
Efl_Canvas_Vg_Data *pd = type_private_data;
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *vd = type_private_data;
|
|
|
|
|
int is_v, was_v;
|
|
|
|
|
Ector_Surface *s;
|
|
|
|
|
|
|
|
|
@ -649,8 +649,8 @@ _efl_canvas_vg_render_pre(Evas_Object *eo_obj,
|
|
|
|
|
|
|
|
|
|
// FIXME: handle damage only on changed renderer.
|
|
|
|
|
s = evas_ector_get(obj->layer->evas);
|
|
|
|
|
if (pd->root && s)
|
|
|
|
|
_evas_vg_render_pre(pd->root, s, NULL);
|
|
|
|
|
if (vd->root && s)
|
|
|
|
|
_evas_vg_render_pre(vd->root, s, NULL);
|
|
|
|
|
|
|
|
|
|
/* now figure what changed and add draw rects */
|
|
|
|
|
/* if it just became visible or invisible */
|
|
|
|
@ -658,7 +658,7 @@ _efl_canvas_vg_render_pre(Evas_Object *eo_obj,
|
|
|
|
|
was_v = evas_object_was_visible(eo_obj,obj);
|
|
|
|
|
if (!(is_v | was_v)) goto done;
|
|
|
|
|
|
|
|
|
|
if (pd->changed)
|
|
|
|
|
if (vd->changed)
|
|
|
|
|
{
|
|
|
|
|
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, eo_obj, obj);
|
|
|
|
|
goto done;
|
|
|
|
@ -757,7 +757,7 @@ _efl_canvas_vg_render_post(Evas_Object *eo_obj EINA_UNUSED,
|
|
|
|
|
static unsigned int
|
|
|
|
|
_efl_canvas_vg_id_get(Evas_Object *eo_obj)
|
|
|
|
|
{
|
|
|
|
|
Efl_Canvas_Vg_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
|
|
|
|
|
if (!o) return 0;
|
|
|
|
|
return MAGIC_OBJ_VG;
|
|
|
|
|
}
|
|
|
|
@ -765,7 +765,7 @@ _efl_canvas_vg_id_get(Evas_Object *eo_obj)
|
|
|
|
|
static unsigned int
|
|
|
|
|
_efl_canvas_vg_visual_id_get(Evas_Object *eo_obj)
|
|
|
|
|
{
|
|
|
|
|
Efl_Canvas_Vg_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
|
|
|
|
|
if (!o) return 0;
|
|
|
|
|
return MAGIC_OBJ_SHAPE;
|
|
|
|
|
}
|
|
|
|
@ -773,7 +773,7 @@ _efl_canvas_vg_visual_id_get(Evas_Object *eo_obj)
|
|
|
|
|
static void *
|
|
|
|
|
_efl_canvas_vg_engine_data_get(Evas_Object *eo_obj)
|
|
|
|
|
{
|
|
|
|
|
Efl_Canvas_Vg_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
|
|
|
|
|
Efl_Canvas_Vg_Object_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
|
|
|
|
|
return o->engine_data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -793,4 +793,4 @@ _efl_canvas_vg_was_opaque(Evas_Object *eo_obj EINA_UNUSED,
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#include "efl_canvas_vg.eo.c"
|
|
|
|
|
#include "efl_canvas_vg_object.eo.c"
|