forked from enlightenment/efl
efl: introduce EFL_GFX_CHANGED event and properly propagate up to Evas.
This commit is contained in:
parent
9fd2b74b08
commit
0f6328b04f
|
@ -116,7 +116,7 @@ _ector_renderer_cairo_gradient_linear_eo_base_destructor(Eo *obj,
|
|||
}
|
||||
|
||||
void
|
||||
_ector_renderer_cairo_gradient_linear_efl_gfx_gradient_stop_set(Eo *obj, Ector_Renderer_Cairo_Gradient_Linear_Data *pd, const Efl_Gfx_Gradient_Stop *colors, unsigned int length)
|
||||
_ector_renderer_cairo_gradient_linear_efl_gfx_gradient_base_stop_set(Eo *obj, Ector_Renderer_Cairo_Gradient_Linear_Data *pd, const Efl_Gfx_Gradient_Stop *colors, unsigned int length)
|
||||
{
|
||||
USE(obj, cairo_pattern_destroy, );
|
||||
|
||||
|
|
|
@ -7,6 +7,6 @@ class Ector.Renderer.Cairo.Gradient_Linear (Ector.Renderer.Cairo.Base, Ector.Ren
|
|||
Ector.Renderer.Generic.Base.draw;
|
||||
Ector.Renderer.Cairo.Base.fill;
|
||||
Eo.Base.destructor;
|
||||
Efl.Gfx.Gradient.stop.set;
|
||||
Efl.Gfx.Gradient.Base.stop.set;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ _ector_renderer_cairo_gradient_radial_eo_base_destructor(Eo *obj,
|
|||
}
|
||||
|
||||
void
|
||||
_ector_renderer_cairo_gradient_radial_efl_gfx_gradient_stop_set(Eo *obj, Ector_Renderer_Cairo_Gradient_Radial_Data *pd, const Efl_Gfx_Gradient_Stop *colors, unsigned int length)
|
||||
_ector_renderer_cairo_gradient_radial_efl_gfx_gradient_base_stop_set(Eo *obj, Ector_Renderer_Cairo_Gradient_Radial_Data *pd, const Efl_Gfx_Gradient_Stop *colors, unsigned int length)
|
||||
{
|
||||
USE(obj, cairo_pattern_destroy, );
|
||||
|
||||
|
|
|
@ -7,6 +7,6 @@ class Ector.Renderer.Cairo.Gradient_Radial (Ector.Renderer.Cairo.Base, Ector.Ren
|
|||
Ector.Renderer.Generic.Base.draw;
|
||||
Ector.Renderer.Cairo.Base.fill;
|
||||
Eo.Base.destructor;
|
||||
Efl.Gfx.Gradient.stop.set;
|
||||
Efl.Gfx.Gradient.Base.stop.set;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -165,7 +165,7 @@ _efl_gfx_shape_path_set(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
|||
&pd->current.x, &pd->current.y,
|
||||
&pd->current_ctrl.x, &pd->current_ctrl.y);
|
||||
|
||||
eo_do(obj, eo_event_callback_call(EFX_GFX_CHANGED, NULL));
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -276,7 +276,7 @@ _efl_gfx_shape_interpolate(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
|||
to_pd->current_ctrl.y,
|
||||
pos_map);
|
||||
|
||||
eo_do(obj, eo_event_callback_call(EFX_GFX_CHANGED, NULL));
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -329,7 +329,7 @@ _efl_gfx_shape_dup(Eo *obj, Efl_Gfx_Shape_Data *pd, Eo *dup_from)
|
|||
|
||||
_efl_gfx_shape_path_set(obj, pd, from->commands, from->points);
|
||||
|
||||
eo_do(obj, eo_event_callback_call(EFX_GFX_CHANGED, NULL));
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -348,7 +348,7 @@ _efl_gfx_shape_reset(Eo *obj, Efl_Gfx_Shape_Data *pd)
|
|||
pd->current_ctrl.x = 0;
|
||||
pd->current_ctrl.y = 0;
|
||||
|
||||
eo_do(obj, eo_event_callback_call(EFX_GFX_CHANGED, NULL));
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -367,7 +367,7 @@ _efl_gfx_shape_append_move_to(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
|||
pd->current.x = x;
|
||||
pd->current.y = y;
|
||||
|
||||
eo_do(obj, eo_event_callback_call(EFX_GFX_CHANGED, NULL));
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -386,7 +386,7 @@ _efl_gfx_shape_append_line_to(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
|||
pd->current.x = x;
|
||||
pd->current.y = y;
|
||||
|
||||
eo_do(obj, eo_event_callback_call(EFX_GFX_CHANGED, NULL));
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -413,7 +413,7 @@ _efl_gfx_shape_append_cubic_to(Eo *obj, Efl_Gfx_Shape_Data *pd,
|
|||
pd->current_ctrl.x = ctrl_x1;
|
||||
pd->current_ctrl.y = ctrl_y1;
|
||||
|
||||
eo_do(obj, eo_event_callback_call(EFX_GFX_CHANGED, NULL));
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -641,7 +641,7 @@ _efl_gfx_shape_append_close(Eo *obj, Efl_Gfx_Shape_Data *pd)
|
|||
efl_gfx_path_grow(EFL_GFX_PATH_COMMAND_TYPE_CLOSE,
|
||||
&pd->commands, &pd->points, &offset_point);
|
||||
|
||||
eo_do(obj, eo_event_callback_call(EFX_GFX_CHANGED, NULL));
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -15,6 +15,10 @@ _evas_vg_container_render_pre(Eo *obj EINA_UNUSED,
|
|||
Evas_VG_Container_Data *pd = data;
|
||||
Eina_List *l;
|
||||
Eo *child;
|
||||
|
||||
if (!nd->changed) return ;
|
||||
nd->changed = EINA_FALSE;
|
||||
|
||||
EVAS_VG_COMPUTE_MATRIX(current, parent, nd);
|
||||
|
||||
EINA_LIST_FOREACH(pd->children, l, child)
|
||||
|
|
|
@ -20,6 +20,8 @@ _evas_vg_gradient_efl_gfx_gradient_base_stop_set(Eo *obj EINA_UNUSED,
|
|||
|
||||
memcpy(pd->colors, colors, length * sizeof(Efl_Gfx_Gradient_Stop));
|
||||
pd->colors_count = length;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -38,6 +40,8 @@ _evas_vg_gradient_efl_gfx_gradient_base_spread_set(Eo *obj EINA_UNUSED,
|
|||
Efl_Gfx_Gradient_Spread s)
|
||||
{
|
||||
pd->s = s;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static Efl_Gfx_Gradient_Spread
|
||||
|
|
|
@ -22,6 +22,8 @@ _evas_vg_gradient_linear_efl_gfx_gradient_linear_start_set(Eo *obj EINA_UNUSED,
|
|||
{
|
||||
pd->start.x = x;
|
||||
pd->start.y = y;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -40,6 +42,8 @@ _evas_vg_gradient_linear_efl_gfx_gradient_linear_end_set(Eo *obj EINA_UNUSED,
|
|||
{
|
||||
pd->end.x = x;
|
||||
pd->end.y = y;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -59,7 +63,12 @@ _evas_vg_gradient_linear_render_pre(Eo *obj,
|
|||
Evas_VG_Node_Data *nd)
|
||||
{
|
||||
Evas_VG_Gradient_Linear_Data *pd = data;
|
||||
Evas_VG_Gradient_Data *gd = eo_data_scope_get(obj, EVAS_VG_GRADIENT_CLASS);
|
||||
Evas_VG_Gradient_Data *gd;
|
||||
|
||||
if (!nd->changed) return ;
|
||||
nd->changed = EINA_FALSE;
|
||||
|
||||
gd = eo_data_scope_get(obj, EVAS_VG_GRADIENT_CLASS);
|
||||
EVAS_VG_COMPUTE_MATRIX(current, parent, nd);
|
||||
|
||||
if (!nd->renderer)
|
||||
|
|
|
@ -21,6 +21,8 @@ _evas_vg_gradient_radial_efl_gfx_gradient_radial_center_set(Eo *obj EINA_UNUSED,
|
|||
{
|
||||
pd->center.x = x;
|
||||
pd->center.y = y;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -38,6 +40,8 @@ _evas_vg_gradient_radial_efl_gfx_gradient_radial_radius_set(Eo *obj EINA_UNUSED,
|
|||
double r)
|
||||
{
|
||||
pd->radius = r;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static double
|
||||
|
@ -54,6 +58,8 @@ _evas_vg_gradient_radial_efl_gfx_gradient_radial_focal_set(Eo *obj EINA_UNUSED,
|
|||
{
|
||||
pd->focal.x = x;
|
||||
pd->focal.y = y;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -73,7 +79,12 @@ _evas_vg_gradient_radial_render_pre(Eo *obj,
|
|||
Evas_VG_Node_Data *nd)
|
||||
{
|
||||
Evas_VG_Gradient_Radial_Data *pd = data;
|
||||
Evas_VG_Gradient_Data *gd = eo_data_scope_get(obj, EVAS_VG_GRADIENT_CLASS);
|
||||
Evas_VG_Gradient_Data *gd;
|
||||
|
||||
if (!nd->changed) return ;
|
||||
nd->changed = EINA_FALSE;
|
||||
|
||||
gd = eo_data_scope_get(obj, EVAS_VG_GRADIENT_CLASS);
|
||||
EVAS_VG_COMPUTE_MATRIX(current, parent, nd);
|
||||
|
||||
if (!nd->renderer)
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
#include <strings.h>
|
||||
|
||||
#include "evas_vg_private.h"
|
||||
|
||||
typedef struct _Evas_VG_Image_Data Evas_VG_Image_Data;
|
||||
struct _Evas_VG_Image_Data
|
||||
{
|
||||
|
@ -19,6 +21,8 @@ _evas_vg_image_position_set(Eo *obj, Evas_VG_Image_Data *pd, int x, int y)
|
|||
{
|
||||
pd->x = x;
|
||||
pd->y = y;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -34,6 +38,8 @@ _evas_vg_image_size_set(Eo *obj, Evas_VG_Image_Data *pd,
|
|||
{
|
||||
pd->w = w;
|
||||
pd->h = h;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -54,6 +60,8 @@ _evas_vg_image_efl_file_mmap_set(Eo *obj EINA_UNUSED, Evas_VG_Image_Data *pd,
|
|||
eina_file_close(tmp);
|
||||
eina_stringshare_replace(&pd->key, key);
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,13 +8,22 @@
|
|||
|
||||
#define MY_CLASS EVAS_VG_NODE_CLASS
|
||||
|
||||
// FIXME:
|
||||
// - share private structure with evas_object_vg
|
||||
// - mark parent canvas evas_object dirty after any change on the object
|
||||
// - add a virtual render function as part of the private data field
|
||||
static Eina_Bool
|
||||
_evas_vg_node_property_changed(void *data, Eo *obj, const Eo_Event_Description *desc, void *event_info)
|
||||
{
|
||||
Evas_VG_Node_Data *pd = data;
|
||||
Eo *parent;
|
||||
|
||||
if (pd->changed) return EINA_TRUE;
|
||||
pd->changed = EINA_TRUE;
|
||||
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
eo_do(parent, eo_event_callback_call(desc, event_info));
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
_evas_vg_node_transformation_set(Eo *obj EINA_UNUSED,
|
||||
_evas_vg_node_transformation_set(Eo *obj,
|
||||
Evas_VG_Node_Data *pd,
|
||||
const Eina_Matrix3 *m)
|
||||
{
|
||||
|
@ -24,6 +33,8 @@ _evas_vg_node_transformation_set(Eo *obj EINA_UNUSED,
|
|||
if (!pd->m) return ;
|
||||
}
|
||||
memcpy(pd->m, m, sizeof (Eina_Matrix3));
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
const Eina_Matrix3 *
|
||||
|
@ -33,12 +44,14 @@ _evas_vg_node_transformation_get(Eo *obj EINA_UNUSED, Evas_VG_Node_Data *pd)
|
|||
}
|
||||
|
||||
void
|
||||
_evas_vg_node_origin_set(Eo *obj EINA_UNUSED,
|
||||
_evas_vg_node_origin_set(Eo *obj,
|
||||
Evas_VG_Node_Data *pd,
|
||||
double x, double y)
|
||||
{
|
||||
pd->x = x;
|
||||
pd->y = y;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -57,6 +70,8 @@ _evas_vg_node_efl_gfx_base_position_set(Eo *obj EINA_UNUSED,
|
|||
{
|
||||
pd->x = lrint(x);
|
||||
pd->y = lrint(y);
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -73,6 +88,8 @@ _evas_vg_node_efl_gfx_base_visible_set(Eo *obj EINA_UNUSED,
|
|||
Evas_VG_Node_Data *pd, Eina_Bool v)
|
||||
{
|
||||
pd->visibility = v;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
|
||||
|
@ -92,6 +109,8 @@ _evas_vg_node_efl_gfx_base_color_set(Eo *obj EINA_UNUSED,
|
|||
pd->g = g;
|
||||
pd->b = b;
|
||||
pd->a = a;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
|
@ -136,6 +155,8 @@ _evas_vg_node_mask_set(Eo *obj EINA_UNUSED,
|
|||
|
||||
pd->mask = eo_ref(r);
|
||||
eo_unref(tmp);
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
Evas_VG_Node*
|
||||
|
@ -159,9 +180,12 @@ _evas_vg_node_efl_gfx_base_size_get(Eo *obj,
|
|||
// Parent should be a container otherwise dismissing the stacking operation
|
||||
static Eina_Bool
|
||||
_evas_vg_node_parent_checked_get(Eo *obj,
|
||||
Eo **parent, Evas_VG_Container_Data **cd)
|
||||
Eo **parent,
|
||||
Evas_VG_Container_Data **cd)
|
||||
{
|
||||
*cd = NULL;
|
||||
eo_do(obj, *parent = eo_parent_get());
|
||||
|
||||
if (eo_isa(*parent, EVAS_VG_CONTAINER_CLASS))
|
||||
{
|
||||
*cd = eo_data_scope_get(*parent, EVAS_VG_CONTAINER_CLASS);
|
||||
|
@ -187,7 +211,7 @@ _evas_vg_node_parent_checked_get(Eo *obj,
|
|||
|
||||
void
|
||||
_evas_vg_node_eo_base_constructor(Eo *obj,
|
||||
Evas_VG_Node_Data *pd EINA_UNUSED)
|
||||
Evas_VG_Node_Data *pd)
|
||||
{
|
||||
Evas_VG_Container_Data *cd = NULL;
|
||||
Eo *parent;
|
||||
|
@ -199,6 +223,9 @@ _evas_vg_node_eo_base_constructor(Eo *obj,
|
|||
|
||||
if (cd)
|
||||
cd->children = eina_list_append(cd->children, obj);
|
||||
|
||||
eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _evas_vg_node_property_changed, pd));
|
||||
pd->changed = EINA_TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -219,7 +246,7 @@ _evas_vg_node_eo_base_parent_set(Eo *obj,
|
|||
goto on_error;
|
||||
}
|
||||
}
|
||||
else if (parent != NULL && !eo_isa(parent, EVAS_VG_CLASS))
|
||||
else if (parent != NULL)
|
||||
{
|
||||
ERR("%p not even an EVAS_VG_CLASS.", parent);
|
||||
goto on_error;
|
||||
|
@ -236,6 +263,10 @@ _evas_vg_node_eo_base_parent_set(Eo *obj,
|
|||
if (cd)
|
||||
cd->children = eina_list_append(cd->children, obj);
|
||||
|
||||
_evas_vg_node_changed(old_parent);
|
||||
_evas_vg_node_changed(obj);
|
||||
_evas_vg_node_changed(parent);
|
||||
|
||||
return ;
|
||||
|
||||
on_error:
|
||||
|
@ -264,6 +295,7 @@ _evas_vg_node_efl_gfx_stack_raise(Eo *obj, Evas_VG_Node_Data *pd EINA_UNUSED)
|
|||
cd->children = eina_list_remove_list(cd->children, lookup);
|
||||
cd->children = eina_list_append_relative_list(cd->children, obj, next);
|
||||
|
||||
_evas_vg_node_changed(parent);
|
||||
return ;
|
||||
|
||||
on_error:
|
||||
|
@ -293,6 +325,7 @@ _evas_vg_node_efl_gfx_stack_stack_above(Eo *obj,
|
|||
cd->children = eina_list_remove_list(cd->children, lookup);
|
||||
cd->children = eina_list_append_relative_list(cd->children, obj, ref);
|
||||
|
||||
_evas_vg_node_changed(parent);
|
||||
return ;
|
||||
|
||||
on_error:
|
||||
|
@ -322,6 +355,7 @@ _evas_vg_node_efl_gfx_stack_stack_below(Eo *obj,
|
|||
cd->children = eina_list_remove_list(cd->children, lookup);
|
||||
cd->children = eina_list_prepend_relative_list(cd->children, obj, ref);
|
||||
|
||||
_evas_vg_node_changed(parent);
|
||||
return ;
|
||||
|
||||
on_error:
|
||||
|
@ -349,6 +383,7 @@ _evas_vg_node_efl_gfx_stack_lower(Eo *obj, Evas_VG_Node_Data *pd EINA_UNUSED)
|
|||
cd->children = eina_list_remove_list(cd->children, lookup);
|
||||
cd->children = eina_list_prepend_relative_list(cd->children, obj, prev);
|
||||
|
||||
_evas_vg_node_changed(parent);
|
||||
return ;
|
||||
|
||||
on_error:
|
||||
|
|
|
@ -51,6 +51,12 @@ _evas_vg_render_pre(Evas_VG_Node *child, Ector_Surface *s, Eina_Matrix3 *m)
|
|||
return child_nd;
|
||||
}
|
||||
|
||||
static inline void
|
||||
_evas_vg_node_changed(Eo *obj)
|
||||
{
|
||||
eo_do(obj, eo_event_callback_call(EFL_GFX_CHANGED, NULL));
|
||||
}
|
||||
|
||||
#define EVAS_VG_COMPUTE_MATRIX(Current, Parent, Nd) \
|
||||
Eina_Matrix3 *Current = Nd->m; \
|
||||
Eina_Matrix3 _matrix_tmp; \
|
||||
|
|
|
@ -10,30 +10,52 @@
|
|||
typedef struct _Evas_VG_Root_Node_Data Evas_VG_Root_Node_Data;
|
||||
struct _Evas_VG_Root_Node_Data
|
||||
{
|
||||
Evas_Object *parent;
|
||||
Evas_Object_Protected_Data *data;
|
||||
};
|
||||
|
||||
static Eina_Bool
|
||||
_evas_vg_root_node_changed(void *data, Eo *obj EINA_UNUSED,
|
||||
const Eo_Event_Description *desc EINA_UNUSED,
|
||||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
Evas_VG_Root_Node_Data *pd = data;
|
||||
|
||||
evas_object_change(pd->parent, pd->data);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
_evas_vg_root_node_eo_base_parent_set(Eo *obj,
|
||||
Evas_VG_Root_Node_Data *pd EINA_UNUSED,
|
||||
Evas_VG_Root_Node_Data *pd,
|
||||
Eo *parent)
|
||||
{
|
||||
// Nice little hack, jump over parent parent_set in Evas_VG_Root
|
||||
eo_do_super(obj, EVAS_VG_NODE_CLASS, eo_parent_set(parent));
|
||||
if (parent && !eo_isa(parent, EVAS_VG_CLASS))
|
||||
eo_error_set(obj);
|
||||
{
|
||||
eo_error_set(obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
pd->parent = parent;
|
||||
pd->data = eo_data_scope_get(parent, EVAS_OBJECT_CLASS);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
_evas_vg_root_node_eo_base_constructor(Eo *obj,
|
||||
Evas_VG_Root_Node_Data *pd EINA_UNUSED)
|
||||
Evas_VG_Root_Node_Data *pd)
|
||||
{
|
||||
Eo *parent;
|
||||
|
||||
// Nice little hack, jump over parent constructor in Evas_VG_Root
|
||||
eo_do_super(obj, EVAS_VG_NODE_CLASS, eo_constructor());
|
||||
// Nice little hack, jump over parent constructor in Efl_VG_Root
|
||||
eo_do_super(obj, EFL_VG_BASE_CLASS, eo_constructor());
|
||||
eo_do(obj, parent = eo_parent_get());
|
||||
if (!eo_isa(parent, EVAS_VG_CLASS))
|
||||
eo_error_set(obj);
|
||||
|
||||
eo_do(obj, eo_event_callback_add(EFL_GFX_CHANGED, _evas_vg_root_node_changed, pd));
|
||||
}
|
||||
|
||||
#include "evas_vg_root_node.eo.c"
|
||||
|
|
|
@ -45,6 +45,8 @@ _evas_vg_shape_fill_set(Eo *obj EINA_UNUSED,
|
|||
|
||||
pd->fill = eo_ref(f);
|
||||
eo_unref(tmp);
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static Evas_VG_Node *
|
||||
|
@ -59,6 +61,8 @@ _evas_vg_shape_efl_gfx_shape_stroke_scale_set(Eo *obj EINA_UNUSED,
|
|||
double s)
|
||||
{
|
||||
pd->stroke.scale = s;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static double
|
||||
|
@ -77,6 +81,8 @@ _evas_vg_shape_efl_gfx_shape_stroke_color_set(Eo *obj EINA_UNUSED,
|
|||
pd->stroke.g = g;
|
||||
pd->stroke.b = b;
|
||||
pd->stroke.a = a;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
@ -137,6 +143,8 @@ _evas_vg_shape_stroke_fill_set(Eo *obj EINA_UNUSED,
|
|||
|
||||
pd->stroke.fill = eo_ref(f);
|
||||
eo_unref(tmp);
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static Evas_VG_Node *
|
||||
|
@ -152,6 +160,8 @@ _evas_vg_shape_efl_gfx_shape_stroke_width_set(Eo *obj EINA_UNUSED,
|
|||
double w)
|
||||
{
|
||||
pd->stroke.width = w;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static double
|
||||
|
@ -167,6 +177,8 @@ _evas_vg_shape_efl_gfx_shape_stroke_location_set(Eo *obj EINA_UNUSED,
|
|||
double centered)
|
||||
{
|
||||
pd->stroke.centered = centered;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static double
|
||||
|
@ -191,6 +203,8 @@ _evas_vg_shape_efl_gfx_shape_stroke_dash_set(Eo *obj EINA_UNUSED,
|
|||
|
||||
memcpy(pd->stroke.dash, dash, sizeof (Efl_Gfx_Dash) * length);
|
||||
pd->stroke.dash_count = length;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -212,6 +226,8 @@ _evas_vg_shape_stroke_marker_set(Eo *obj EINA_UNUSED,
|
|||
|
||||
pd->stroke.marker = eo_ref(m);
|
||||
eo_unref(tmp);
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static Evas_VG_Shape *
|
||||
|
@ -227,6 +243,8 @@ _evas_vg_shape_efl_gfx_shape_stroke_cap_set(Eo *obj EINA_UNUSED,
|
|||
Efl_Gfx_Cap c)
|
||||
{
|
||||
pd->stroke.cap = c;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static Efl_Gfx_Cap
|
||||
|
@ -242,6 +260,8 @@ _evas_vg_shape_efl_gfx_shape_stroke_join_set(Eo *obj EINA_UNUSED,
|
|||
Efl_Gfx_Join j)
|
||||
{
|
||||
pd->stroke.join = j;
|
||||
|
||||
_evas_vg_node_changed(obj);
|
||||
}
|
||||
|
||||
static Efl_Gfx_Join
|
||||
|
@ -260,6 +280,10 @@ _evas_vg_shape_render_pre(Eo *obj EINA_UNUSED,
|
|||
{
|
||||
Evas_VG_Shape_Data *pd = data;
|
||||
Evas_VG_Node_Data *fill, *stroke_fill, *stroke_marker, *mask;
|
||||
|
||||
if (!nd->changed) return ;
|
||||
nd->changed = EINA_FALSE;
|
||||
|
||||
EVAS_VG_COMPUTE_MATRIX(current, parent, nd);
|
||||
|
||||
fill = _evas_vg_render_pre(pd->fill, s, current);
|
||||
|
|
Loading…
Reference in New Issue