From 80e13538076f5e72ce96ac6f59e6b872441a18b5 Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Fri, 31 May 2013 17:35:30 +0900 Subject: [PATCH] edje - support edc source_visible --- ChangeLog | 3 +++ NEWS | 1 + data/edje/vim/syntax/edc.vim | 3 ++- src/bin/edje/edje_cc_handlers.c | 24 +++++++++++++++++++++++- src/lib/edje/edje_calc.c | 10 +++++++--- src/lib/edje/edje_data.c | 1 + src/lib/edje/edje_edit.c | 1 + src/lib/edje/edje_private.h | 1 + 8 files changed, 39 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 608a15649d..d08de9ff8d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2013-05-31 ChunEon Park (Hermet) + * Edje: support edc proxy.source_visible + 2013-05-31 Jérémy Zurcher * Added --enable-image-loader-xyz=yes|static|auto|no for all loaders * compilation fail if not found and option set to yes or static diff --git a/NEWS b/NEWS index 3fcda0b5dc..bae0c24d6b 100644 --- a/NEWS +++ b/NEWS @@ -103,6 +103,7 @@ Additions: * Edje: - Add edje_object_part_text_input_panel_layout_variation_set/get API - Add EDJE_INPUT_PANEL_LAYOUT_DATETIME layout + - support edc proxy.source_visible * Evil: - Add mkdtemp. * ecore_x: diff --git a/data/edje/vim/syntax/edc.vim b/data/edje/vim/syntax/edc.vim index c47d701023..08c6bec6e9 100644 --- a/data/edje/vim/syntax/edc.vim +++ b/data/edje/vim/syntax/edc.vim @@ -14,7 +14,7 @@ endif " A bunch of useful keywords syn keyword edcBlock images data fonts collections group contained syn keyword edcBlock part parts dragable description contained -syn keyword edcBlock text font fill origin size image contained +syn keyword edcBlock text font fill origin size image proxy contained syn keyword edcBlock programs program styles style contained syn keyword edcBlock gradient spectra spectrum contained syn keyword edcBlock color_classes color_class rel1 rel2 contained @@ -31,6 +31,7 @@ syn keyword edcLabel source5 source6 multiline pointer_mode contained syn keyword edcLabel state visible step aspect fixed middle contained syn keyword edcLabel aspect_preference ellipsis elipsis image contained syn keyword edcLabel relative offset to to_x to_y contained +syn keyword edcLabel source_visible contained syn keyword edcLabel border border_scale scale_hint color color2 color3 font size contained syn keyword edcLabel signal action transition in filter contained syn keyword edcLabel target after fit align contained diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index ef3ad6b0b4..dd9840c910 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -321,6 +321,8 @@ static void st_collections_group_parts_part_description_table_homogeneous(void); static void st_collections_group_parts_part_description_table_align(void); static void st_collections_group_parts_part_description_table_padding(void); static void st_collections_group_parts_part_description_table_min(void); +static void st_collections_group_parts_part_description_proxy_source_visible(void); + #ifdef HAVE_EPHYSICS static void st_collections_group_parts_part_description_physics_mass(void); static void st_collections_group_parts_part_description_physics_restitution(void); @@ -633,6 +635,8 @@ New_Statement_Handler statement_handlers[] = {"collections.group.parts.part.description.table.align", st_collections_group_parts_part_description_table_align}, {"collections.group.parts.part.description.table.padding", st_collections_group_parts_part_description_table_padding}, {"collections.group.parts.part.description.table.min", st_collections_group_parts_part_description_table_min}, + {"collections.group.parts.part.description.proxy.source_visible", st_collections_group_parts_part_description_proxy_source_visible}, + #ifdef HAVE_EPHYSICS {"collections.group.parts.part.description.physics.mass", st_collections_group_parts_part_description_physics_mass}, {"collections.group.parts.part.description.physics.restitution", st_collections_group_parts_part_description_physics_restitution}, @@ -1095,7 +1099,7 @@ _edje_part_description_alloc(unsigned char type, const char *collection, const c ed = mem_alloc(SZ(Edje_Part_Description_Proxy)); ed->proxy.id = -1; - + ed->proxy.source_visible = EINA_TRUE; _edje_part_description_fill(&ed->proxy.fill); result = &ed->common; @@ -7391,6 +7395,24 @@ static void st_collections_group_parts_part_description_table_padding(void) ed->table.padding.y = parse_int_range(1, 0, 0x7fffffff); } +static void +st_collections_group_parts_part_description_proxy_source_visible(void) +{ + Edje_Part_Description_Proxy *ed; + + check_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_PROXY) + { + ERR("parse error %s:%i. proxy attributes in non-PROXY part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Proxy*) current_desc; + ed->proxy.source_visible = parse_bool(0); +} + static void st_collections_group_parts_part_description_table_min(void) { diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c index 26614e25e7..ce1796aab9 100644 --- a/src/lib/edje/edje_calc.c +++ b/src/lib/edje/edje_calc.c @@ -2486,9 +2486,13 @@ _edje_proxy_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj } eo_do(ep->object, - evas_obj_image_fill_set(p3->type.common.fill.x, p3->type.common.fill.y, - p3->type.common.fill.w, p3->type.common.fill.h), - evas_obj_image_smooth_scale_set(p3->smooth)); + evas_obj_image_fill_set(p3->type.common.fill.x, + p3->type.common.fill.y, + p3->type.common.fill.w, + p3->type.common.fill.h), + evas_obj_image_smooth_scale_set(p3->smooth), + evas_obj_image_source_visible_set(chosen_desc->proxy.source_visible) + ); } static void diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c index f531af473c..7a9a31d92e 100644 --- a/src/lib/edje/edje_data.c +++ b/src/lib/edje/edje_data.c @@ -723,6 +723,7 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.angle", proxy.fill.angle, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.spread", proxy.fill.spread, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.type", proxy.fill.type, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.source_visible", proxy.source_visible, EET_T_CHAR); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Text); eddc.func.mem_free = mem_free_text; diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c index 95842958f3..c9b9f84e60 100644 --- a/src/lib/edje/edje_edit.c +++ b/src/lib/edje/edje_edit.c @@ -3095,6 +3095,7 @@ edje_edit_state_add(Evas_Object *obj, const char *part, const char *name, double memset(&pro->proxy, 0, sizeof (pro->proxy)); pro->proxy.id = -1; + pro->proxy.source_visible = EINA_TRUE; pro->proxy.fill.smooth = 1; pro->proxy.fill.pos_rel_x = 0.0; pro->proxy.fill.pos_abs_x = 0; diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index 5cc0075d80..968bc4962e 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -1130,6 +1130,7 @@ struct _Edje_Part_Description_Spec_Proxy Edje_Part_Description_Spec_Fill fill; int id; /* the part id to use as a source for this state */ + Eina_Bool source_visible; /* source object visibility */ }; struct _Edje_Part_Description_Spec_Text