forked from enlightenment/efl
edje: morning speed of edje. Theme can now be a little bit lighter and faster.
NOTE: VIRTUAL part are almost like rectangle except they don't create any object on the canvas. This part can't be visible, nor have any color, nor be used as a clip, nor receive any event. SVN revision: 71674
This commit is contained in:
parent
d7e9d661f0
commit
b0e087b6bf
|
@ -467,7 +467,11 @@
|
|||
|
||||
* Use Eina_File instead of fopen when possible in edje_cc.
|
||||
|
||||
2012-05-21 Shilpa Onkar Singh
|
||||
2012-05-21 Shilpa Onkar Singh
|
||||
|
||||
* Fix patch for edje draggable jump issue when external event
|
||||
area is used for the dragable.
|
||||
|
||||
2012-06-04 Cedric Bail
|
||||
|
||||
* Add VIRTUAL part to reduce the load on the canvas (lighter and faster theme).
|
||||
|
|
|
@ -7,6 +7,8 @@ Additions:
|
|||
* Add edje_watch to monitore change on edje source.
|
||||
* Emit ['edje,change,file', 'edje'] when the file change on disk.
|
||||
* edje_player will automatically reload the file when it change on disk.
|
||||
* Add VIRTUAL part. This part are not putting anything into the canvas. So lighter and faster to
|
||||
process (Use it to replace RECT part that are never visible and never catch any event).
|
||||
|
||||
Improvements:
|
||||
* Allocate once and reuse Evas_Map.
|
||||
|
|
|
@ -875,6 +875,7 @@ _edje_part_description_alloc(unsigned char type, const char *collection, const c
|
|||
|
||||
switch (type)
|
||||
{
|
||||
case EDJE_PART_TYPE_VIRTUAL:
|
||||
case EDJE_PART_TYPE_RECTANGLE:
|
||||
case EDJE_PART_TYPE_SWALLOW:
|
||||
case EDJE_PART_TYPE_GROUP:
|
||||
|
@ -3023,6 +3024,7 @@ st_collections_group_parts_part_name(void)
|
|||
@li TABLE
|
||||
@li EXTERNAL
|
||||
@li PROXY
|
||||
@li VIRTUAL
|
||||
@endproperty
|
||||
*/
|
||||
static void
|
||||
|
@ -3044,6 +3046,7 @@ st_collections_group_parts_part_type(void)
|
|||
"TABLE", EDJE_PART_TYPE_TABLE,
|
||||
"EXTERNAL", EDJE_PART_TYPE_EXTERNAL,
|
||||
"PROXY", EDJE_PART_TYPE_PROXY,
|
||||
"VIRTUAL", EDJE_PART_TYPE_VIRTUAL,
|
||||
NULL);
|
||||
|
||||
/* handle type change of inherited part */
|
||||
|
@ -4379,6 +4382,7 @@ st_collections_group_parts_part_description_inherit(void)
|
|||
ed->color_class = STRDUP(ed->color_class);
|
||||
switch (ep->type)
|
||||
{
|
||||
case EDJE_PART_TYPE_VIRTUAL:
|
||||
case EDJE_PART_TYPE_RECTANGLE:
|
||||
case EDJE_PART_TYPE_SWALLOW:
|
||||
case EDJE_PART_TYPE_GROUP:
|
||||
|
@ -4611,6 +4615,14 @@ st_collections_group_parts_part_description_visible(void)
|
|||
{
|
||||
check_arg_count(1);
|
||||
|
||||
if (current_part->type == EDJE_PART_TYPE_VIRTUAL)
|
||||
{
|
||||
ERR("%s: Error. parse error %s:%i. "
|
||||
"VIRTUAL part can't have a visibility defined",
|
||||
progname, file_in, line - 1);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
current_desc->visible = parse_bool(0);
|
||||
}
|
||||
|
||||
|
@ -4843,6 +4855,14 @@ st_collections_group_parts_part_description_color_class(void)
|
|||
{
|
||||
check_arg_count(1);
|
||||
|
||||
if (current_part->type == EDJE_PART_TYPE_VIRTUAL)
|
||||
{
|
||||
ERR("%s: Error. parse error %s:%i. "
|
||||
"VIRTUAL part can't have a color defined",
|
||||
progname, file_in, line - 1);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
current_desc->color_class = parse_str(0);
|
||||
}
|
||||
|
||||
|
@ -4861,6 +4881,14 @@ st_collections_group_parts_part_description_color(void)
|
|||
{
|
||||
check_arg_count(4);
|
||||
|
||||
if (current_part->type == EDJE_PART_TYPE_VIRTUAL)
|
||||
{
|
||||
ERR("%s: Error. parse error %s:%i. "
|
||||
"VIRTUAL part can't have a color defined",
|
||||
progname, file_in, line - 1);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
current_desc->color.r = parse_int_range(0, 0, 255);
|
||||
current_desc->color.g = parse_int_range(1, 0, 255);
|
||||
current_desc->color.b = parse_int_range(2, 0, 255);
|
||||
|
@ -4882,6 +4910,14 @@ st_collections_group_parts_part_description_color2(void)
|
|||
{
|
||||
check_arg_count(4);
|
||||
|
||||
if (current_part->type == EDJE_PART_TYPE_VIRTUAL)
|
||||
{
|
||||
ERR("%s: Error. parse error %s:%i. "
|
||||
"VIRTUAL part can't have a color defined",
|
||||
progname, file_in, line - 1);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
current_desc->color2.r = parse_int_range(0, 0, 255);
|
||||
current_desc->color2.g = parse_int_range(1, 0, 255);
|
||||
current_desc->color2.b = parse_int_range(2, 0, 255);
|
||||
|
|
|
@ -382,7 +382,8 @@ typedef enum _Edje_Part_Type
|
|||
EDJE_PART_TYPE_TABLE = 9,
|
||||
EDJE_PART_TYPE_EXTERNAL = 10,
|
||||
EDJE_PART_TYPE_PROXY = 11,
|
||||
EDJE_PART_TYPE_LAST = 12
|
||||
EDJE_PART_TYPE_VIRTUAL = 12,
|
||||
EDJE_PART_TYPE_LAST = 13
|
||||
} Edje_Part_Type;
|
||||
|
||||
typedef enum _Edje_Text_Effect
|
||||
|
|
|
@ -63,6 +63,7 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
|
|||
INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce);
|
||||
INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce);
|
||||
INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce);
|
||||
INIT_EMP_BOTH(VIRTUAL, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP(part, Edje_Part, ce);
|
||||
|
||||
snprintf(buf, sizeof(buf), "edje/collections/%i", id);
|
||||
|
|
|
@ -232,6 +232,12 @@ _edje_get_description_by_orientation(Edje *ed, Edje_Part_Description_Common *src
|
|||
ce->count.GROUP++;
|
||||
memsize = sizeof(Edje_Part_Description_Common);
|
||||
break;
|
||||
case EDJE_PART_TYPE_VIRTUAL:
|
||||
desc_rtl = eina_mempool_malloc(ce->mp_rtl.VIRTUAL,
|
||||
sizeof (Edje_Part_Description_Common));
|
||||
ce->count.VIRTUAL++;
|
||||
memsize = sizeof(Edje_Part_Description_Common);
|
||||
break;
|
||||
EDIT_ALLOC_POOL_RTL(TEXT, Text, text);
|
||||
EDIT_ALLOC_POOL_RTL(TEXTBLOCK, Text, text);
|
||||
EDIT_ALLOC_POOL_RTL(IMAGE, Image, image);
|
||||
|
@ -241,7 +247,7 @@ _edje_get_description_by_orientation(Edje *ed, Edje_Part_Description_Common *src
|
|||
EDIT_ALLOC_POOL_RTL(EXTERNAL, External, external_params);
|
||||
}
|
||||
|
||||
if(desc_rtl)
|
||||
if (desc_rtl)
|
||||
memcpy(desc_rtl, src, memsize);
|
||||
|
||||
_edje_part_make_rtl(desc_rtl);
|
||||
|
@ -2015,23 +2021,26 @@ _edje_part_recalc_single(Edje *ed,
|
|||
else if (ep->part->type == EDJE_PART_TYPE_PROXY)
|
||||
_edje_part_recalc_single_fill(ep, &((Edje_Part_Description_Proxy *)desc)->proxy.fill, params);
|
||||
|
||||
/* colors */
|
||||
if ((desc->color_class) && (*desc->color_class))
|
||||
cc = _edje_color_class_find(ed, desc->color_class);
|
||||
if (ep->part->type != EDJE_PART_TYPE_VIRTUAL)
|
||||
{
|
||||
/* colors */
|
||||
if ((desc->color_class) && (*desc->color_class))
|
||||
cc = _edje_color_class_find(ed, desc->color_class);
|
||||
|
||||
if (cc)
|
||||
{
|
||||
params->color.r = (((int)cc->r + 1) * desc->color.r) >> 8;
|
||||
params->color.g = (((int)cc->g + 1) * desc->color.g) >> 8;
|
||||
params->color.b = (((int)cc->b + 1) * desc->color.b) >> 8;
|
||||
params->color.a = (((int)cc->a + 1) * desc->color.a) >> 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
params->color.r = desc->color.r;
|
||||
params->color.g = desc->color.g;
|
||||
params->color.b = desc->color.b;
|
||||
params->color.a = desc->color.a;
|
||||
if (cc)
|
||||
{
|
||||
params->color.r = (((int)cc->r + 1) * desc->color.r) >> 8;
|
||||
params->color.g = (((int)cc->g + 1) * desc->color.g) >> 8;
|
||||
params->color.b = (((int)cc->b + 1) * desc->color.b) >> 8;
|
||||
params->color.a = (((int)cc->a + 1) * desc->color.a) >> 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
params->color.r = desc->color.r;
|
||||
params->color.g = desc->color.g;
|
||||
params->color.b = desc->color.b;
|
||||
params->color.a = desc->color.a;
|
||||
}
|
||||
}
|
||||
|
||||
/* visible */
|
||||
|
@ -2087,6 +2096,7 @@ _edje_part_recalc_single(Edje *ed,
|
|||
|
||||
break;
|
||||
}
|
||||
case EDJE_PART_TYPE_VIRTUAL:
|
||||
case EDJE_PART_TYPE_RECTANGLE:
|
||||
case EDJE_PART_TYPE_BOX:
|
||||
case EDJE_PART_TYPE_TABLE:
|
||||
|
@ -2158,6 +2168,9 @@ _edje_proxy_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj
|
|||
case EDJE_PART_TYPE_EXTERNAL:
|
||||
evas_object_image_source_set(ep->object, pp->swallowed_object);
|
||||
break;
|
||||
case EDJE_PART_TYPE_VIRTUAL:
|
||||
/* FIXME: detect that at compile time and prevent it */
|
||||
break;
|
||||
}
|
||||
|
||||
evas_object_image_fill_set(ep->object, p3->type.common.fill.x, p3->type.common.fill.y,
|
||||
|
@ -2785,6 +2798,9 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
/* FIXME: definitivly remove this code when we switch to new format. */
|
||||
abort();
|
||||
break;
|
||||
case EDJE_PART_TYPE_VIRTUAL:
|
||||
/* We really should do nothing on VIRTUAL part */
|
||||
break;
|
||||
}
|
||||
|
||||
/* Some object need special recalc. */
|
||||
|
@ -2816,6 +2832,9 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
/* FIXME: definitivly remove this code when we switch to new format. */
|
||||
abort();
|
||||
break;
|
||||
case EDJE_PART_TYPE_VIRTUAL:
|
||||
/* We really should do nothing on VIRTUAL part */
|
||||
break;
|
||||
}
|
||||
|
||||
if (ep->swallowed_object)
|
||||
|
@ -2839,7 +2858,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
mo = ep->swallowed_object;
|
||||
}
|
||||
else mo = ep->object;
|
||||
if (chosen_desc->map.on)
|
||||
if (chosen_desc->map.on && ep->part->type != EDJE_PART_TYPE_VIRTUAL)
|
||||
{
|
||||
static Evas_Map *map = NULL;
|
||||
|
||||
|
@ -2922,5 +2941,4 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
ep->invalidate = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
|
@ -83,6 +83,7 @@ EMP(GROUP, group);
|
|||
EMP(BOX, box);
|
||||
EMP(TABLE, table);
|
||||
EMP(EXTERNAL, external);
|
||||
EMP(VIRTUAL, virtual);
|
||||
EMP(part, part);
|
||||
|
||||
#define FREED(eed) \
|
||||
|
@ -105,7 +106,8 @@ struct {
|
|||
{ EDJE_PART_TYPE_BOX, "box" },
|
||||
{ EDJE_PART_TYPE_TABLE, "table" },
|
||||
{ EDJE_PART_TYPE_EXTERNAL, "external" },
|
||||
{ EDJE_PART_TYPE_PROXY, "proxy" }
|
||||
{ EDJE_PART_TYPE_PROXY, "proxy" },
|
||||
{ EDJE_PART_TYPE_VIRTUAL, "virtual" }
|
||||
};
|
||||
|
||||
static const char *
|
||||
|
@ -329,6 +331,7 @@ _edje_edd_init(void)
|
|||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.BOX", count.BOX, EET_T_INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.TABLE", count.TABLE, EET_T_INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.EXTERNAL", count.EXTERNAL, EET_T_INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.VIRTUAL", count.VIRTUAL, EET_T_INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.part", count.part, EET_T_INT);
|
||||
|
||||
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Style_Tag);
|
||||
|
@ -742,6 +745,7 @@ _edje_edd_init(void)
|
|||
eddc.func.type_set = _edje_description_variant_type_set;
|
||||
_edje_edd_edje_part_description_variant = eet_data_descriptor_file_new(&eddc);
|
||||
|
||||
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "virtual", _edje_edd_edje_part_description_rectangle);
|
||||
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "rectangle", _edje_edd_edje_part_description_rectangle);
|
||||
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "swallow", _edje_edd_edje_part_description_swallow);
|
||||
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "group", _edje_edd_edje_part_description_group);
|
||||
|
@ -767,6 +771,7 @@ _edje_edd_init(void)
|
|||
_edje_edd_edje_part_description_variant_list = eet_data_descriptor_file_new(&eddc);
|
||||
|
||||
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "rectangle", rectangle);
|
||||
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "virtual", rectangle);
|
||||
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "swallow", swallow);
|
||||
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "group", group);
|
||||
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "image", image);
|
||||
|
|
|
@ -443,7 +443,8 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
|
|||
_edje_part_description_find(ed, rp, "default", 0.0);
|
||||
rp->chosen_description = rp->param1.description;
|
||||
if (!rp->param1.description)
|
||||
ERR("no default part description!");
|
||||
ERR("no default part description for '%s'!",
|
||||
rp->part->name);
|
||||
|
||||
switch (ep->type)
|
||||
{
|
||||
|
@ -487,6 +488,10 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
|
|||
case EDJE_PART_TYPE_GRADIENT:
|
||||
ERR("SPANK ! SPANK ! SPANK ! YOU ARE USING GRADIENT IN PART %s FROM GROUP %s INSIDE FILE %s !! THEY ARE NOW REMOVED !",
|
||||
ep->name, group, file);
|
||||
break;
|
||||
case EDJE_PART_TYPE_VIRTUAL:
|
||||
rp->object = NULL;
|
||||
break;
|
||||
default:
|
||||
ERR("wrong part type %i!", ep->type);
|
||||
break;
|
||||
|
@ -551,7 +556,9 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
|
|||
if (rp->part->clip_to_id >= 0)
|
||||
{
|
||||
rp->clip_to = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size];
|
||||
if (rp->clip_to)
|
||||
if (rp->clip_to &&
|
||||
rp->clip_to->object &&
|
||||
rp->object)
|
||||
{
|
||||
evas_object_pass_events_set(rp->clip_to->object, 1);
|
||||
evas_object_pointer_mode_set(rp->clip_to->object, EVAS_OBJECT_POINTER_MODE_NOGRAB);
|
||||
|
|
|
@ -675,6 +675,7 @@ struct _Edje_Limit
|
|||
TYPE GROUP; \
|
||||
TYPE BOX; \
|
||||
TYPE TABLE; \
|
||||
TYPE VIRTUAL; \
|
||||
TYPE EXTERNAL;
|
||||
|
||||
struct _Edje_Part_Collection_Directory_Entry
|
||||
|
@ -1667,6 +1668,7 @@ extern Eina_Mempool *_emp_GROUP;
|
|||
extern Eina_Mempool *_emp_BOX;
|
||||
extern Eina_Mempool *_emp_TABLE;
|
||||
extern Eina_Mempool *_emp_EXTERNAL;
|
||||
extern Eina_Mempool *_emp_VIRTUAL;
|
||||
extern Eina_Mempool *_emp_part;
|
||||
|
||||
void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T v1, FLOAT_T v2);
|
||||
|
|
Loading…
Reference in New Issue