if (!nd || !nd->data) return;
cd = nd->data;
+ tvg_scene_clear(cd->scene);
+
if (scene != NULL)
- {
- if (eina_hash_find(cd->targets, &scene) == NULL)
- {
- tvg_scene_push(scene, cd->scene);
- eina_hash_add(cd->targets, &scene, scene);
- }
- }
+ tvg_scene_push(scene, cd->scene);
else if (scene == NULL && canvas != NULL)
- {
- if (eina_hash_find(cd->targets, &canvas) == NULL)
- {
- tvg_canvas_push(canvas, cd->scene);
- eina_hash_add(cd->targets, &canvas, canvas);
- }
- }
+ tvg_canvas_push(canvas, cd->scene);
EFL_CANVAS_VG_COMPUTE_MATRIX(cTransform, pTransform, nd);
#ifdef HAVE_THORVG
pd->scene = tvg_scene_new();
- pd->targets = eina_hash_pointer_new(NULL);
nd->render_pre_tvg = _efl_canvas_vg_container_render_pre_tvg;
#endif
#else
tvg_scene_clear(pd->scene);
tvg_paint_del(pd->scene);
- eina_hash_free(pd->targets);
#endif
efl_unref(pd->comp_target);
//scaling using scale * width
double scale;
- //hash array indicates where shape was added. It have to be used to don't double
- //the same objects stored in one canvas or scene.
- Eina_Hash *targets;
-
//Flag indicates if shape was started. It is used to store start position
//and keep shape current point valid when shape close API is called.
Eina_Bool started;
}
if (scene)
- {
- if (eina_hash_find(sd->targets, &scene) == NULL)
- {
- tvg_scene_push(scene, sd->shape);
- eina_hash_add(sd->targets, &scene, scene);
- }
- }
+ tvg_scene_push(scene, sd->shape);
else if (canvas)
- {
- if (eina_hash_find(sd->targets, &canvas) == NULL)
- {
- tvg_canvas_push(canvas, sd->shape);
- eina_hash_add(sd->targets, &canvas, canvas);
- }
- }
+ tvg_canvas_push(canvas, sd->shape);
uint8_t opacity = nd->visibility ? 255 : 0;
tvg_paint_set_opacity(sd->shape, opacity);
nd->render_pre_tvg = _efl_canvas_vg_shape_render_pre_tvg;
pd->shape = tvg_shape_new();
pd->scale = 1.0;
- pd->targets = eina_hash_pointer_new(NULL);
//default EFL implementation. We don't want to draw invisible shapes.
//when object is visible, renderer changes opacity to valid value.
#ifdef HAVE_THORVG
tvg_paint_del(pd->shape);
- eina_hash_free(pd->targets);
#else
efl_gfx_path_reset(obj);
#endif
const Efl_Canvas_Vg_Node *to,
double pos_map)
{
- Efl_Canvas_Vg_Shape_Data *fromd, *tod;
Eina_Bool r = EINA_TRUE;
+#ifndef HAVE_THORVG
+ Efl_Canvas_Vg_Shape_Data *fromd, *tod;
//Check if both objects have same type
if (!(efl_isa(from, MY_CLASS) && efl_isa(to, MY_CLASS)))
//Stroke Marker
if (fromd->stroke.marker && tod->stroke.marker && pd->stroke.marker)
r &= efl_gfx_path_interpolate(pd->stroke.marker, fromd->stroke.marker, tod->stroke.marker, pos_map);
+#else
+ r = evas_vg_shape_interpolate(obj, from, to, pos_map);
+#endif
return r;
}