evas: update and propagate Evas_VG_Base transformation.

This commit is contained in:
Subhransu Sekhar Mohanty 2015-04-03 16:31:29 +02:00 committed by Cedric BAIL
parent abc64b7526
commit 3dea7dbfaf
2 changed files with 13 additions and 6 deletions

View File

@ -57,10 +57,10 @@ _efl_vg_base_changed(Eo *obj)
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
}
#define EFL_VG_COMPUTE_MATRIX(Current, Parent, Nd) \
Eina_Matrix3 *Current = Nd->m; \
Eina_Matrix3 _matrix_tmp; \
\
#define EFL_VG_COMPUTE_MATRIX(Current, Parent, Nd) \
Eina_Matrix3 *Current = Nd->m; \
Eina_Matrix3 _matrix_tmp, translate; \
\
if (Parent) \
{ \
if (Current) \
@ -70,7 +70,11 @@ _efl_vg_base_changed(Eo *obj)
} \
else \
{ \
Current = Parent; \
eina_matrix3_translate(&translate, -(Nd->x), -(Nd->y)); \
eina_matrix3_compose(Parent, &translate, &_matrix_tmp); \
eina_matrix3_translate(&translate, (Nd->x), (Nd->y)); \
eina_matrix3_compose(&_matrix_tmp, &translate, &_matrix_tmp); \
Current = &_matrix_tmp; \
} \
}

View File

@ -280,10 +280,13 @@ _efl_vg_shape_render_pre(Eo *obj EINA_UNUSED,
{
Efl_VG_Shape_Data *pd = data;
Efl_VG_Base_Data *fill, *stroke_fill, *stroke_marker, *mask;
double xn = nd->x, yn = nd->y ;
if (!nd->changed) return ;
nd->changed = EINA_FALSE;
if(parent) eina_matrix3_point_transform(parent, nd->x, nd->y, &xn, &yn);
EFL_VG_COMPUTE_MATRIX(current, parent, nd);
fill = _evas_vg_render_pre(pd->fill, s, current);
@ -298,7 +301,7 @@ _efl_vg_shape_render_pre(Eo *obj EINA_UNUSED,
eo_do(nd->renderer,
ector_renderer_transformation_set(current),
ector_renderer_origin_set(nd->x, nd->y),
ector_renderer_origin_set(xn, yn),
ector_renderer_color_set(nd->r, nd->g, nd->b, nd->a),
ector_renderer_visibility_set(nd->visibility),
ector_renderer_mask_set(mask ? mask->renderer : NULL),