summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2015-05-28 17:59:59 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2015-06-25 14:36:08 +0900
commit225c0f937a3a5c40aaf9cb39ba73bfa65dd32d64 (patch)
treed892a56dac749e29c2c760a4b4a8f94d546cafd4 /src
parent4ade39c0ea5ef7ea3716c67841801f8eacf6c31c (diff)
Evas filters: Pass edje state name & value to the filters
From Edje, pass the current state info (name and value) as well as the next state and the transition position when applicable.
Diffstat (limited to 'src')
-rw-r--r--src/lib/edje/edje_calc.c8
-rw-r--r--src/lib/edje/edje_private.h2
-rw-r--r--src/lib/edje/edje_text.c38
-rw-r--r--src/lib/evas/canvas/evas_object_image.c7
-rw-r--r--src/lib/evas/canvas/evas_object_main.c2
-rw-r--r--src/lib/evas/canvas/evas_object_text.c62
-rw-r--r--src/lib/evas/canvas/evas_text.eo17
-rw-r--r--src/lib/evas/filters/evas_filter_parser.c41
-rw-r--r--src/lib/evas/include/evas_filter.h2
-rw-r--r--src/lib/evas/include/evas_private.h11
10 files changed, 163 insertions, 27 deletions
diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index 898e0da..c1e7e1b 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -1603,7 +1603,7 @@ _edje_part_recalc_single_text(FLOAT_T sc EINA_UNUSED,
1603 Edje_Part_Description_Text *chosen_desc, 1603 Edje_Part_Description_Text *chosen_desc,
1604 Edje_Calc_Params *params, 1604 Edje_Calc_Params *params,
1605 int *minw, int *minh, 1605 int *minw, int *minh,
1606 int *maxw, int *maxh) 1606 int *maxw, int *maxh, double pos)
1607#define RECALC_SINGLE_TEXT_USING_APPLY 1 1607#define RECALC_SINGLE_TEXT_USING_APPLY 1
1608#if RECALC_SINGLE_TEXT_USING_APPLY 1608#if RECALC_SINGLE_TEXT_USING_APPLY
1609/* 1609/*
@@ -1634,7 +1634,7 @@ _edje_part_recalc_single_text(FLOAT_T sc EINA_UNUSED,
1634 free(sfont); 1634 free(sfont);
1635 params->type.text.size = size; /* XXX TODO used by further calcs, go inside recalc_apply? */ 1635 params->type.text.size = size; /* XXX TODO used by further calcs, go inside recalc_apply? */
1636 1636
1637 _edje_text_recalc_apply(ed, ep, params, chosen_desc, EINA_TRUE); 1637 _edje_text_recalc_apply(ed, ep, params, chosen_desc, EINA_TRUE, pos);
1638 1638
1639 if ((!chosen_desc) || 1639 if ((!chosen_desc) ||
1640 ((!chosen_desc->text.min_x) && (!chosen_desc->text.min_y) && 1640 ((!chosen_desc->text.min_x) && (!chosen_desc->text.min_y) &&
@@ -2564,7 +2564,7 @@ _edje_part_recalc_single(Edje *ed,
2564 if (ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) 2564 if (ep->part->type == EDJE_PART_TYPE_TEXTBLOCK)
2565 _edje_part_recalc_single_textblock(sc, ed, ep, (Edje_Part_Description_Text *)chosen_desc, params, &minw, &minh, &maxw, &maxh); 2565 _edje_part_recalc_single_textblock(sc, ed, ep, (Edje_Part_Description_Text *)chosen_desc, params, &minw, &minh, &maxw, &maxh);
2566 else if (ep->part->type == EDJE_PART_TYPE_TEXT) 2566 else if (ep->part->type == EDJE_PART_TYPE_TEXT)
2567 _edje_part_recalc_single_text(sc, ed, ep, (Edje_Part_Description_Text *)desc, (Edje_Part_Description_Text *)chosen_desc, params, &minw, &minh, &maxw, &maxh); 2567 _edje_part_recalc_single_text(sc, ed, ep, (Edje_Part_Description_Text*) desc, (Edje_Part_Description_Text*) chosen_desc, params, &minw, &minh, &maxw, &maxh, pos);
2568 2568
2569 if ((ep->part->type == EDJE_PART_TYPE_TABLE) && 2569 if ((ep->part->type == EDJE_PART_TYPE_TABLE) &&
2570 (((((Edje_Part_Description_Table *)chosen_desc)->table.min.h) || 2570 (((((Edje_Part_Description_Table *)chosen_desc)->table.min.h) ||
@@ -4358,7 +4358,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
4358 switch (ep->part->type) 4358 switch (ep->part->type)
4359 { 4359 {
4360 case EDJE_PART_TYPE_TEXT: 4360 case EDJE_PART_TYPE_TEXT:
4361 _edje_text_recalc_apply(ed, ep, pf, (Edje_Part_Description_Text *)chosen_desc, EINA_FALSE); 4361 _edje_text_recalc_apply(ed, ep, pf, (Edje_Part_Description_Text*) chosen_desc, EINA_FALSE, pos);
4362 break; 4362 break;
4363 4363
4364 case EDJE_PART_TYPE_PROXY: 4364 case EDJE_PART_TYPE_PROXY:
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index 44c8be7..b5ac256 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -2286,7 +2286,7 @@ void _edje_text_recalc_apply(Edje *ed,
2286 Edje_Real_Part *ep, 2286 Edje_Real_Part *ep,
2287 Edje_Calc_Params *params, 2287 Edje_Calc_Params *params,
2288 Edje_Part_Description_Text *chosen_desc, 2288 Edje_Part_Description_Text *chosen_desc,
2289 Eina_Bool calc_only); 2289 Eina_Bool calc_only, double state_val);
2290Evas_Font_Size _edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc); 2290Evas_Font_Size _edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc);
2291const char * _edje_text_class_font_get(Edje *ed, 2291const char * _edje_text_class_font_get(Edje *ed,
2292 Edje_Part_Description_Text *chosen_desc, 2292 Edje_Part_Description_Text *chosen_desc,
diff --git a/src/lib/edje/edje_text.c b/src/lib/edje/edje_text.c
index b91db6b..2edf614 100644
--- a/src/lib/edje/edje_text.c
+++ b/src/lib/edje/edje_text.c
@@ -197,7 +197,7 @@ void
197_edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, 197_edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
198 Edje_Calc_Params *params, 198 Edje_Calc_Params *params,
199 Edje_Part_Description_Text *chosen_desc, 199 Edje_Part_Description_Text *chosen_desc,
200 Eina_Bool calc_only) 200 Eina_Bool calc_only, double state_val)
201{ 201{
202 const char *text = NULL; 202 const char *text = NULL;
203 const char *font; 203 const char *font;
@@ -529,16 +529,32 @@ arrange_text:
529 part_get_geometry(ep, &tw, &th); 529 part_get_geometry(ep, &tw, &th);
530 530
531 /* filters */ 531 /* filters */
532 eo_do(ep->object, 532 if (filter)
533 EINA_LIST_FOREACH(prev_sources, li, source_name) 533 {
534 evas_obj_text_filter_source_set(source_name, NULL); 534 eo_do(ep->object,
535 535 EINA_LIST_FOREACH(prev_sources, li, source_name)
536 EINA_LIST_FOREACH(filter_sources, li, source_name) 536 evas_obj_text_filter_source_set(source_name, NULL);
537 { 537
538 Edje_Real_Part *rp = _edje_real_part_get(ed, source_name); 538 EINA_LIST_FOREACH(filter_sources, li, source_name)
539 evas_obj_text_filter_source_set(source_name, rp ? rp->object : NULL); 539 {
540 } 540 Edje_Real_Part *rp = _edje_real_part_get(ed, source_name);
541 evas_obj_text_filter_program_set(filter)); 541 evas_obj_text_filter_source_set(source_name, rp ? rp->object : NULL);
542 };
543 if (ep->param2)
544 {
545 evas_obj_text_filter_state_set(chosen_desc->common.state.name, chosen_desc->common.state.value,
546 ep->param2->description->state.name, ep->param2->description->state.value,
547 state_val);
548 }
549 else
550 {
551 evas_obj_text_filter_state_set(chosen_desc->common.state.name, chosen_desc->common.state.value,
552 NULL, 0.0, state_val);
553 }
554 evas_obj_text_filter_program_set(filter));
555 }
556 else
557 eo_do(ep->object, evas_obj_text_filter_program_set(NULL));
542 558
543 /* Handle alignment */ 559 /* Handle alignment */
544 { 560 {
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index bca2af5..bbf5c80 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -3268,7 +3268,8 @@ start_draw:
3268 W = obj->cur->geometry.w; 3268 W = obj->cur->geometry.w;
3269 H = obj->cur->geometry.h; 3269 H = obj->cur->geometry.h;
3270 3270
3271 if (pgm && evas_filter_program_state_set(pgm, eo_obj, obj)) 3271#warning implement state_set from edje
3272 if (pgm && evas_filter_program_state_set(pgm, eo_obj, obj, NULL, 0.0, NULL, 0.0, 0.0))
3272 redraw = EINA_TRUE; 3273 redraw = EINA_TRUE;
3273 3274
3274 if (!redraw && o->cur->filter->output) 3275 if (!redraw && o->cur->filter->output)
@@ -3309,7 +3310,7 @@ start_draw:
3309 { 3310 {
3310 pgm = evas_filter_program_new("Image", EINA_FALSE); 3311 pgm = evas_filter_program_new("Image", EINA_FALSE);
3311 evas_filter_program_source_set_all(pgm, o->cur->filter->sources); 3312 evas_filter_program_source_set_all(pgm, o->cur->filter->sources);
3312 evas_filter_program_state_set(pgm, eo_obj, obj); 3313 evas_filter_program_state_set(pgm, eo_obj, obj, NULL, 0.0, NULL, 0.0, 0.0);
3313 ok = evas_filter_program_parse(pgm, o->cur->filter->code); 3314 ok = evas_filter_program_parse(pgm, o->cur->filter->code);
3314 if (!ok) goto state_write; 3315 if (!ok) goto state_write;
3315 } 3316 }
@@ -4840,7 +4841,7 @@ _evas_image_filter_program_set(Eo *eo_obj, Evas_Image_Data *o, const char *arg)
4840 { 4841 {
4841 pgm = evas_filter_program_new("Evas_Text: Filter Program", EINA_FALSE); 4842 pgm = evas_filter_program_new("Evas_Text: Filter Program", EINA_FALSE);
4842 evas_filter_program_source_set_all(pgm, fcow->sources); 4843 evas_filter_program_source_set_all(pgm, fcow->sources);
4843 evas_filter_program_state_set(pgm, eo_obj, obj); 4844 evas_filter_program_state_set(pgm, eo_obj, obj, NULL, 0.0, NULL, 0.0, 0.0);
4844 if (!evas_filter_program_parse(pgm, arg)) 4845 if (!evas_filter_program_parse(pgm, arg))
4845 { 4846 {
4846 ERR("Parsing failed!"); 4847 ERR("Parsing failed!");
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index d82b7b4..d047d96 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -33,7 +33,7 @@ static const Evas_Object_Protected_State default_state = {
33 1.0, 0, EVAS_RENDER_BLEND, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE 33 1.0, 0, EVAS_RENDER_BLEND, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE, EINA_FALSE
34}; 34};
35static const Evas_Object_Filter_Data default_filter = { 35static const Evas_Object_Filter_Data default_filter = {
36 NULL, NULL, NULL, NULL, EINA_FALSE, EINA_FALSE 36 NULL, NULL, NULL, NULL, { { "default", 0.0 }, { "default", 0.0 }, 0.0 }, EINA_FALSE, EINA_FALSE
37}; 37};
38const void * const evas_object_filter_cow_default = &default_filter; 38const void * const evas_object_filter_cow_default = &default_filter;
39static const Evas_Object_Mask_Data default_mask = { 39static const Evas_Object_Mask_Data default_mask = {
diff --git a/src/lib/evas/canvas/evas_object_text.c b/src/lib/evas/canvas/evas_object_text.c
index 6fb4335..f517a97 100644
--- a/src/lib/evas/canvas/evas_object_text.c
+++ b/src/lib/evas/canvas/evas_object_text.c
@@ -1783,7 +1783,10 @@ evas_object_text_render(Evas_Object *eo_obj,
1783 Evas_Filter_Program *pgm; 1783 Evas_Filter_Program *pgm;
1784 pgm = evas_filter_program_new("Evas_Text", EINA_TRUE); 1784 pgm = evas_filter_program_new("Evas_Text", EINA_TRUE);
1785 evas_filter_program_source_set_all(pgm, fcow->sources); 1785 evas_filter_program_source_set_all(pgm, fcow->sources);
1786 evas_filter_program_state_set(pgm, eo_obj, obj); 1786 evas_filter_program_state_set(pgm, eo_obj, obj,
1787 fcow->state.cur.name, fcow->state.cur.value,
1788 fcow->state.next.name, fcow->state.next.value,
1789 fcow->state.pos);
1787 if (!evas_filter_program_parse(pgm, fcow->code)) 1790 if (!evas_filter_program_parse(pgm, fcow->code))
1788 { 1791 {
1789 ERR("Filter program parsing failed"); 1792 ERR("Filter program parsing failed");
@@ -1801,7 +1804,10 @@ evas_object_text_render(Evas_Object *eo_obj,
1801 { 1804 {
1802 Eina_Bool redraw; 1805 Eina_Bool redraw;
1803 1806
1804 redraw = evas_filter_program_state_set(fcow->chain, eo_obj, obj); 1807 redraw = evas_filter_program_state_set(fcow->chain, eo_obj, obj,
1808 fcow->state.cur.name, fcow->state.cur.value,
1809 fcow->state.next.name, fcow->state.next.value,
1810 fcow->state.pos);
1805 if (redraw) 1811 if (redraw)
1806 DBG("Filter redraw by state change!"); 1812 DBG("Filter redraw by state change!");
1807 1813
@@ -1841,7 +1847,10 @@ evas_object_text_render(Evas_Object *eo_obj,
1841 } 1847 }
1842 } 1848 }
1843 else 1849 else
1844 evas_filter_program_state_set(fcow->chain, eo_obj, obj); 1850 evas_filter_program_state_set(fcow->chain, eo_obj, obj,
1851 fcow->state.cur.name, fcow->state.cur.value,
1852 fcow->state.next.name, fcow->state.next.value,
1853 fcow->state.pos);
1845 1854
1846 filter = evas_filter_context_new(obj->layer->evas, do_async); 1855 filter = evas_filter_context_new(obj->layer->evas, do_async);
1847 1856
@@ -2401,7 +2410,10 @@ _evas_text_filter_program_set(Eo *eo_obj, Evas_Text_Data *o, const char *arg)
2401 { 2410 {
2402 pgm = evas_filter_program_new("Evas_Text", EINA_TRUE); 2411 pgm = evas_filter_program_new("Evas_Text", EINA_TRUE);
2403 evas_filter_program_source_set_all(pgm, fcow->sources); 2412 evas_filter_program_source_set_all(pgm, fcow->sources);
2404 evas_filter_program_state_set(pgm, eo_obj, obj); 2413 evas_filter_program_state_set(pgm, eo_obj, obj,
2414 fcow->state.cur.name, fcow->state.cur.value,
2415 fcow->state.next.name, fcow->state.next.value,
2416 fcow->state.pos);
2405 if (!evas_filter_program_parse(pgm, arg)) 2417 if (!evas_filter_program_parse(pgm, arg))
2406 { 2418 {
2407 ERR("Parsing failed!"); 2419 ERR("Parsing failed!");
@@ -2551,6 +2563,48 @@ update:
2551 evas_object_inform_call_resize(eo_obj); 2563 evas_object_inform_call_resize(eo_obj);
2552} 2564}
2553 2565
2566EOLIAN static void
2567_evas_text_filter_state_set(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o,
2568 const char *cur_state, double cur_val,
2569 const char *next_state, double next_val, double pos)
2570{
2571 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
2572
2573 evas_object_async_block(obj);
2574 if ((cur_state != o->cur.filter->state.cur.name) || (cur_val != o->cur.filter->state.cur.value) ||
2575 (next_state != o->cur.filter->state.next.name) || (next_val != o->cur.filter->state.next.value) ||
2576 (pos != o->cur.filter->state.pos))
2577 {
2578 EINA_COW_WRITE_BEGIN(evas_object_filter_cow, o->cur.filter, Evas_Object_Filter_Data, fcow)
2579 {
2580 fcow->changed = 1;
2581 fcow->state.cur.name = cur_state;
2582 fcow->state.cur.value = cur_val;
2583 fcow->state.next.name = next_state;
2584 fcow->state.next.value = next_val;
2585 fcow->state.pos = pos;
2586
2587 if (o->cur.filter->chain)
2588 {
2589 evas_filter_program_state_set(o->cur.filter->chain, eo_obj, obj,
2590 fcow->state.cur.name, fcow->state.cur.value,
2591 fcow->state.next.name, fcow->state.next.value,
2592 fcow->state.pos);
2593 }
2594 }
2595 EINA_COW_WRITE_END(evas_object_filter_cow, o->cur.filter, fcow);
2596
2597 // Mark as changed
2598 _evas_object_text_items_clear(o);
2599 o->changed = 1;
2600 _evas_object_text_recalc(eo_obj, o->cur.text);
2601 evas_object_change(eo_obj, obj);
2602 evas_object_clip_dirty(eo_obj, obj);
2603 evas_object_coords_recalc(eo_obj, obj);
2604 evas_object_inform_call_resize(eo_obj);
2605 }
2606}
2607
2554EAPI void 2608EAPI void
2555evas_object_text_font_source_set(Eo *obj, const char *font_source) 2609evas_object_text_font_source_set(Eo *obj, const char *font_source)
2556{ 2610{
diff --git a/src/lib/evas/canvas/evas_text.eo b/src/lib/evas/canvas/evas_text.eo
index 62a27ee..25e02dd 100644
--- a/src/lib/evas/canvas/evas_text.eo
+++ b/src/lib/evas/canvas/evas_text.eo
@@ -260,6 +260,23 @@ class Evas.Text (Evas.Object, Efl.Text, Efl.Text_Properties)
260 eobj: Evas.Object *; /*@ Eo object to use through proxy rendering */ 260 eobj: Evas.Object *; /*@ Eo object to use through proxy rendering */
261 } 261 }
262 } 262 }
263 @property filter_state {
264 set {
265 /*@ Set the current state of the filter (for use from Edje)
266
267 @internal
268 @since 1.15
269 */
270 legacy: null;
271 }
272 values {
273 cur_state: const(char)*;
274 cur_val: double(0.0);
275 next_state: const(char)*;
276 next_val: double(0.0);
277 animpos: double(0.0);
278 }
279 }
263 @property max_descent { 280 @property max_descent {
264 get { 281 get {
265 return: Evas.Coord; 282 return: Evas.Coord;
diff --git a/src/lib/evas/filters/evas_filter_parser.c b/src/lib/evas/filters/evas_filter_parser.c
index c27569d..294cd1e 100644
--- a/src/lib/evas/filters/evas_filter_parser.c
+++ b/src/lib/evas/filters/evas_filter_parser.c
@@ -340,9 +340,20 @@ struct _Evas_Filter_Program_State
340 struct { int a, r, g, b; } glow; 340 struct { int a, r, g, b; } glow;
341 struct { int a, r, g, b; } glow2; 341 struct { int a, r, g, b; } glow2;
342 } text; 342 } text;
343 struct { int a, r, g, b; } color; 343 struct {
344 int a, r, g, b;
345 } color;
346 struct {
347 const char *name;
348 double value;
349 } cur;
350 struct {
351 const char *name;
352 double value;
353 } next;
344 int w, h; 354 int w, h;
345 double scale; 355 double scale;
356 double pos;
346}; 357};
347 358
348struct _Evas_Filter_Program 359struct _Evas_Filter_Program
@@ -2545,6 +2556,24 @@ _filter_program_state_set(Evas_Filter_Program *pgm)
2545 { 2556 {
2546 SETFIELD("color", JOINC(color)); 2557 SETFIELD("color", JOINC(color));
2547 SETFIELD("scale", pgm->state.scale); 2558 SETFIELD("scale", pgm->state.scale);
2559 SETFIELD("pos", pgm->state.pos);
2560 lua_newtable(L); // "cur"
2561 {
2562 SETFIELD("value", pgm->state.cur.value);
2563 lua_pushstring(L, pgm->state.cur.name);
2564 lua_setfield(L, -2, "name");
2565 lua_setfield(L, -2, "cur");
2566 }
2567 lua_newtable(L); // "next"
2568 {
2569 if (pgm->state.next.name)
2570 {
2571 SETFIELD("value", pgm->state.next.value);
2572 lua_pushstring(L, pgm->state.next.name);
2573 lua_setfield(L, -2, "name");
2574 }
2575 lua_setfield(L, -2, "next");
2576 }
2548 lua_newtable(L); // "text" 2577 lua_newtable(L); // "text"
2549 { 2578 {
2550 SETFIELD("outline", JOINC(text.outline)); 2579 SETFIELD("outline", JOINC(text.outline));
@@ -2774,7 +2803,10 @@ evas_filter_program_new(const char *name, Eina_Bool input_alpha)
2774 2803
2775EAPI Eina_Bool 2804EAPI Eina_Bool
2776evas_filter_program_state_set(Evas_Filter_Program *pgm, Evas_Object *eo_obj, 2805evas_filter_program_state_set(Evas_Filter_Program *pgm, Evas_Object *eo_obj,
2777 Evas_Object_Protected_Data *obj) 2806 Evas_Object_Protected_Data *obj,
2807 const char *cur_state, double cur_val,
2808 const char *next_state, double next_val,
2809 double pos)
2778{ 2810{
2779 Evas_Filter_Program_State old_state; 2811 Evas_Filter_Program_State old_state;
2780 2812
@@ -2785,6 +2817,11 @@ evas_filter_program_state_set(Evas_Filter_Program *pgm, Evas_Object *eo_obj,
2785 pgm->state.w = obj->cur->geometry.w; 2817 pgm->state.w = obj->cur->geometry.w;
2786 pgm->state.h = obj->cur->geometry.h; 2818 pgm->state.h = obj->cur->geometry.h;
2787 pgm->state.scale = obj->cur->scale; 2819 pgm->state.scale = obj->cur->scale;
2820 pgm->state.pos = pos;
2821 pgm->state.cur.name = cur_state;
2822 pgm->state.cur.value = cur_val;
2823 pgm->state.next.name = next_state;
2824 pgm->state.next.value = next_val;
2788 2825
2789 eo_do(eo_obj, 2826 eo_do(eo_obj,
2790 efl_gfx_color_get(&pgm->state.color.r, 2827 efl_gfx_color_get(&pgm->state.color.r,
diff --git a/src/lib/evas/include/evas_filter.h b/src/lib/evas/include/evas_filter.h
index 2d23843..e72738a 100644
--- a/src/lib/evas/include/evas_filter.h
+++ b/src/lib/evas/include/evas_filter.h
@@ -126,7 +126,7 @@ enum _Evas_Filter_Transform_Flags
126 126
127/* Parser stuff (high level API) */ 127/* Parser stuff (high level API) */
128EAPI Evas_Filter_Program *evas_filter_program_new(const char *name, Eina_Bool input_alpha); 128EAPI Evas_Filter_Program *evas_filter_program_new(const char *name, Eina_Bool input_alpha);
129EAPI Eina_Bool evas_filter_program_state_set(Evas_Filter_Program *pgm, Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 129EAPI Eina_Bool evas_filter_program_state_set(Evas_Filter_Program *pgm, Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, const char *cur_state, double cur_val, const char *next_state, double next_val, double pos);
130EAPI Eina_Bool evas_filter_program_parse(Evas_Filter_Program *pgm, const char *str); 130EAPI Eina_Bool evas_filter_program_parse(Evas_Filter_Program *pgm, const char *str);
131EAPI void evas_filter_program_del(Evas_Filter_Program *pgm); 131EAPI void evas_filter_program_del(Evas_Filter_Program *pgm);
132Eina_Bool evas_filter_context_program_use(Evas_Filter_Context *ctx, Evas_Filter_Program *pgm); 132Eina_Bool evas_filter_context_program_use(Evas_Filter_Context *ctx, Evas_Filter_Program *pgm);
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index 05de77c..474e3ca 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1178,6 +1178,17 @@ struct _Evas_Object_Filter_Data
1178 Evas_Filter_Program *chain; 1178 Evas_Filter_Program *chain;
1179 Eina_Hash *sources; // Evas_Filter_Proxy_Binding 1179 Eina_Hash *sources; // Evas_Filter_Proxy_Binding
1180 void *output; 1180 void *output;
1181 struct {
1182 struct {
1183 const char *name;
1184 double value;
1185 } cur;
1186 struct {
1187 const char *name;
1188 double value;
1189 } next;
1190 double pos;
1191 } state;
1181 Eina_Bool changed : 1; 1192 Eina_Bool changed : 1;
1182 Eina_Bool invalid : 1; // Code parse failed 1193 Eina_Bool invalid : 1; // Code parse failed
1183}; 1194};