}
EOLIAN static void
-_efl_canvas_vg_object_root_node_set(Eo *obj, Efl_Canvas_Vg_Object_Data *pd, Efl_VG *root_node)
+_efl_canvas_vg_object_root_node_set(Eo *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)
return;
+ Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
+
// check if a file has been already set
if (pd->vg_entry)
{
return;
}
}
-
pd->user_entry->w = pd->user_entry->h = 0;
pd->user_entry->root = root_node;
// set the parent so that vg canvas can render it.
efl_parent_set(pd->user_entry->root, pd->root);
- efl_canvas_vg_node_root_set(root_node, obj);
+ efl_canvas_vg_node_root_set(root_node, eo_obj);
}
else if (pd->user_entry)
{
// drop any surface cache attached to it.
- Evas_Object_Protected_Data *eobj = efl_data_scope_get(obj, EFL_CANVAS_OBJECT_CLASS);
- eobj->layer->evas->engine.func->ector_surface_cache_drop(_evas_engine_context(eobj->layer->evas),
- pd->user_entry->root);
+ ENFN->ector_surface_cache_drop(_evas_engine_context(obj->layer->evas), pd->user_entry->root);
free(pd->user_entry);
pd->user_entry = NULL;
}
// force a redraw
pd->changed = EINA_TRUE;
- evas_object_change(obj, efl_data_scope_get(obj, EFL_CANVAS_OBJECT_CLASS));
+ evas_object_change(eo_obj, obj);
}
EOLIAN static void
//create a buffer
if (!buffer)
{
- buffer = obj->layer->evas->engine.func->ector_surface_create(engine,
- w, h,
- &error);
+ buffer = ENFN->ector_surface_create(engine, w, h, &error);
if (error) return NULL;
buffer_created = EINA_TRUE;
}
//caching buffer only for first and last frames.
if (buffer_created && cacheable)
- obj->layer->evas->engine.func->ector_surface_cache_set(engine, key, buffer);
+ ENFN->ector_surface_cache_set(engine, key, buffer);
return buffer;
}
Eina_Bool async_unref;
//Draw the buffer as image to canvas
- async_unref = obj->layer->evas->engine.func->image_draw(engine, output, context, surface,
+ async_unref = ENFN->image_draw(engine, output, context, surface,
buffer,
0, 0, w, h,
x, y, w, h,
}
//TODO: Reuse buffer if size is same?
- if (!cacheable)
- obj->layer->evas->engine.func->ector_surface_destroy(engine, buffer);
+ if (!cacheable) ENFN->ector_surface_destroy(engine, buffer);
}
static void
root = evas_cache_vg_tree_get(vg_entry, pd->frame_index);
if (!root) return;
- void *buffer = obj->layer->evas->engine.func->ector_surface_cache_get(engine, root);
+ void *buffer = ENFN->ector_surface_cache_get(engine, root);
if (!buffer)
buffer = _render_to_buffer(obj, pd, engine, root, w, h, root, NULL,
do_async, cacheable);
else
//cache reference was increased when we get the cache.
- obj->layer->evas->engine.func->ector_surface_cache_drop(engine, root);
+ ENFN->ector_surface_cache_drop(engine, root);
_render_buffer_to_screen(obj,
engine, output, context, surface,
if ((user_entry->w != w ) ||
(user_entry->h != h))
{
- obj->layer->evas->engine.func->ector_surface_cache_drop(engine, user_entry->root);
+ ENFN->ector_surface_cache_drop(engine, user_entry->root);
user_entry->w = w;
user_entry->h = h;
}
//if the buffer is not created yet
- void *buffer = obj->layer->evas->engine.func->ector_surface_cache_get(engine, user_entry->root);
+ void *buffer = ENFN->ector_surface_cache_get(engine, user_entry->root);
if (!buffer)
{
buffer,
do_async, EINA_FALSE);
//cache reference was increased when we get the cache.
- obj->layer->evas->engine.func->ector_surface_cache_drop(engine, user_entry->root);
+ ENFN->ector_surface_cache_drop(engine, user_entry->root);
}
_render_buffer_to_screen(obj,
Efl_Canvas_Vg_Object_Data *pd = type_private_data;
/* render object to surface with context, and offxet by x,y */
- obj->layer->evas->engine.func->context_color_set(engine, context,
- 255, 255, 255, 255);
- obj->layer->evas->engine.func->context_multiplier_set(engine,
- context,
- obj->cur->cache.clip.r,
- obj->cur->cache.clip.g,
- obj->cur->cache.clip.b,
- obj->cur->cache.clip.a);
- obj->layer->evas->engine.func->context_anti_alias_set(engine, context,
- obj->cur->anti_alias);
- obj->layer->evas->engine.func->context_render_op_set(engine, context,
- obj->cur->render_op);
+ ENFN->context_color_set(engine, context, 255, 255, 255, 255);
+ ENFN->context_multiplier_set(engine, context,
+ obj->cur->cache.clip.r,
+ obj->cur->cache.clip.g,
+ obj->cur->cache.clip.b,
+ obj->cur->cache.clip.a);
+ ENFN->context_anti_alias_set(engine, context, obj->cur->anti_alias);
+ ENFN->context_render_op_set(engine, context, obj->cur->render_op);
//Cache surface?
Eina_Bool cacheable = EINA_FALSE;