summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2015-08-05 15:58:01 +0200
committerCedric BAIL <cedric@osg.samsung.com>2015-08-06 11:05:50 +0200
commita7fd98f8f6d411c120e9c1c8ceeedbeb54d675a5 (patch)
tree3a3b6859febe339fb5a538c0cda7ff416af64409
parent08e888156ea343cbb004b825c44187576c3a7fa0 (diff)
downloadefl-a7fd98f8f6d411c120e9c1c8ceeedbeb54d675a5.tar.gz
edje: add a SNAPSHOT part in EDC.devs/cedric/evas_snapshot
-rw-r--r--src/bin/edje/edje_cc_handlers.c9
-rw-r--r--src/lib/edje/Edje_Common.h3
-rw-r--r--src/lib/edje/edje_cache.c3
-rw-r--r--src/lib/edje/edje_calc.c7
-rw-r--r--src/lib/edje/edje_data.c20
-rw-r--r--src/lib/edje/edje_load.c5
-rw-r--r--src/lib/edje/edje_private.h4
7 files changed, 47 insertions, 4 deletions
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index e002d19aa4..3138300936 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -1270,6 +1270,7 @@ New_Object_Handler object_handlers[] =
external{}
proxy{}
spacer{}
+ snapshot{}
part {
desc {
}
@@ -1422,6 +1423,7 @@ _edje_part_description_alloc(unsigned char type, const char *collection, const c
case EDJE_PART_TYPE_RECTANGLE:
case EDJE_PART_TYPE_SWALLOW:
case EDJE_PART_TYPE_GROUP:
+ case EDJE_PART_TYPE_SNAPSHOT:
result = mem_alloc(SZ(Edje_Part_Description_Common));
break;
case EDJE_PART_TYPE_TEXT:
@@ -4882,6 +4884,7 @@ ob_collections_group_parts_part_short(void)
"external", EDJE_PART_TYPE_EXTERNAL,
"proxy", EDJE_PART_TYPE_PROXY,
"spacer", EDJE_PART_TYPE_SPACER,
+ "snapshot", EDJE_PART_TYPE_SNAPSHOT,
NULL);
stack_pop_quick(EINA_TRUE, EINA_TRUE);
@@ -4918,6 +4921,7 @@ _part_desc_free(Edje_Part_Collection *pc,
case EDJE_PART_TYPE_RECTANGLE:
case EDJE_PART_TYPE_SWALLOW:
case EDJE_PART_TYPE_GROUP:
+ case EDJE_PART_TYPE_SNAPSHOT:
/* Nothing todo, this part only have a common description. */
break;
case EDJE_PART_TYPE_BOX:
@@ -5289,6 +5293,7 @@ st_collections_group_parts_part_name(void)
@li EXTERNAL
@li PROXY
@li SPACER
+ @li SNAPSHOT
@endproperty
*/
static void
@@ -5310,7 +5315,8 @@ st_collections_group_parts_part_type(void)
"TABLE", EDJE_PART_TYPE_TABLE,
"EXTERNAL", EDJE_PART_TYPE_EXTERNAL,
"PROXY", EDJE_PART_TYPE_PROXY,
- "SPACER", EDJE_PART_TYPE_SPACER,
+ "SPACER", EDJE_PART_TYPE_SPACER,
+ "SNAPSHOT", EDJE_PART_TYPE_SNAPSHOT,
NULL);
_part_type_set(type);
@@ -7025,6 +7031,7 @@ st_collections_group_parts_part_description_inherit(void)
case EDJE_PART_TYPE_RECTANGLE:
case EDJE_PART_TYPE_SWALLOW:
case EDJE_PART_TYPE_GROUP:
+ case EDJE_PART_TYPE_SNAPSHOT:
/* Nothing todo, this part only have a common description. */
break;
case EDJE_PART_TYPE_TEXT:
diff --git a/src/lib/edje/Edje_Common.h b/src/lib/edje/Edje_Common.h
index e8bc7191bc..468b163c0a 100644
--- a/src/lib/edje/Edje_Common.h
+++ b/src/lib/edje/Edje_Common.h
@@ -1235,7 +1235,8 @@ typedef enum _Edje_Part_Type
EDJE_PART_TYPE_MESH_NODE = 13,
EDJE_PART_TYPE_LIGHT = 14,
EDJE_PART_TYPE_CAMERA = 15,
- EDJE_PART_TYPE_LAST = 16 /**< Last type value */
+ EDJE_PART_TYPE_SNAPSHOT = 16,
+ EDJE_PART_TYPE_LAST = 17 /**< Last type value */
} Edje_Part_Type;
/**
* @}
diff --git a/src/lib/edje/edje_cache.c b/src/lib/edje/edje_cache.c
index 13f83767f9..10fa3fa7b8 100644
--- a/src/lib/edje/edje_cache.c
+++ b/src/lib/edje/edje_cache.c
@@ -33,6 +33,7 @@ edje_cache_emp_alloc(Edje_Part_Collection_Directory_Entry *ce)
INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce);
INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce);
INIT_EMP_BOTH(SPACER, Edje_Part_Description_Common, ce);
+ INIT_EMP_BOTH(SNAPSHOT, Edje_Part_Description_Common, ce);
INIT_EMP(part, Edje_Part, ce);
}
@@ -51,6 +52,7 @@ edje_cache_emp_free(Edje_Part_Collection_Directory_Entry *ce)
eina_mempool_del(ce->mp.TABLE);
eina_mempool_del(ce->mp.EXTERNAL);
eina_mempool_del(ce->mp.SPACER);
+ eina_mempool_del(ce->mp.SNAPSHOT);
eina_mempool_del(ce->mp.part);
memset(&ce->mp, 0, sizeof (ce->mp));
@@ -65,6 +67,7 @@ edje_cache_emp_free(Edje_Part_Collection_Directory_Entry *ce)
eina_mempool_del(ce->mp_rtl.TABLE);
eina_mempool_del(ce->mp_rtl.EXTERNAL);
eina_mempool_del(ce->mp_rtl.SPACER);
+ eina_mempool_del(ce->mp_rtl.SNAPSHOT);
memset(&ce->mp_rtl, 0, sizeof (ce->mp_rtl));
ce->ref = NULL;
}
diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index 16d0c1ad77..dcf868a11a 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -326,6 +326,13 @@ case EDJE_PART_TYPE_##Short: \
memsize = sizeof(Edje_Part_Description_Common);
break;
+ case EDJE_PART_TYPE_SNAPSHOT:
+ desc_rtl = eina_mempool_malloc(ce->mp_rtl.SNAPSHOT,
+ sizeof (Edje_Part_Description_Common));
+ ce->count.SNAPSHOT++;
+ memsize = sizeof(Edje_Part_Description_Common);
+ break;
+
case EDJE_PART_TYPE_SWALLOW:
desc_rtl = eina_mempool_malloc(ce->mp_rtl.SWALLOW,
sizeof (Edje_Part_Description_Common));
diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c
index cedda6d413..19176d8c26 100644
--- a/src/lib/edje/edje_data.c
+++ b/src/lib/edje/edje_data.c
@@ -36,6 +36,7 @@ Eet_Data_Descriptor *_edje_edd_edje_part = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_pointer = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_variant = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_rectangle = NULL;
+Eet_Data_Descriptor *_edje_edd_edje_part_description_snapshot = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_spacer = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_swallow = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_group = NULL;
@@ -54,6 +55,7 @@ Eet_Data_Descriptor *_edje_edd_edje_part_description_light = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_camera = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_variant_list = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_rectangle_pointer = NULL;
+Eet_Data_Descriptor *_edje_edd_edje_part_description_snapshot_pointer = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_spacer_pointer = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_swallow_pointer = NULL;
Eet_Data_Descriptor *_edje_edd_edje_part_description_group_pointer = NULL;
@@ -116,6 +118,7 @@ EMP(SPACER, spacer)
EMP(MESH_NODE, mesh_node)
EMP(LIGHT, light)
EMP(CAMERA, camera)
+EMP(SNAPSHOT, snapshot)
#undef EMP
EAPI Eina_Mempool *_emp_part = NULL;
@@ -164,7 +167,8 @@ struct
{ EDJE_PART_TYPE_SPACER, "spacer" },
{ EDJE_PART_TYPE_MESH_NODE, "mesh_node" },
{ EDJE_PART_TYPE_LIGHT, "light" },
- { EDJE_PART_TYPE_CAMERA, "camera" }
+ { EDJE_PART_TYPE_CAMERA, "camera" },
+ { EDJE_PART_TYPE_SNAPSHOT, "snapshot" }
};
static const char *
@@ -254,6 +258,7 @@ _edje_edd_shutdown(void)
FREED(_edje_edd_edje_part_pointer);
FREED(_edje_edd_edje_part_description_variant);
FREED(_edje_edd_edje_part_description_rectangle);
+ FREED(_edje_edd_edje_part_description_snapshot);
FREED(_edje_edd_edje_part_description_spacer);
FREED(_edje_edd_edje_part_description_swallow);
FREED(_edje_edd_edje_part_description_group);
@@ -272,6 +277,7 @@ _edje_edd_shutdown(void)
FREED(_edje_edd_edje_part_description_3d_vec);
FREED(_edje_edd_edje_part_description_variant_list);
FREED(_edje_edd_edje_part_description_rectangle_pointer);
+ FREED(_edje_edd_edje_part_description_snapshot_pointer);
FREED(_edje_edd_edje_part_description_spacer_pointer);
FREED(_edje_edd_edje_part_description_swallow_pointer);
FREED(_edje_edd_edje_part_description_group_pointer);
@@ -491,6 +497,7 @@ _edje_edd_init(void)
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.SPACER", count.SPACER, EET_T_INT);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.SNAPSHOT", count.SNAPSHOT, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.MESH_NODE", count.MESH_NODE, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.LIGHT", count.LIGHT, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.CAMERA", count.CAMERA, EET_T_INT);
@@ -865,6 +872,14 @@ _edje_edd_init(void)
EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_spacer, Edje_Part_Description_Common);
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common);
+ eddc.func.mem_free = mem_free_snapshot;
+ eddc.func.mem_alloc = mem_alloc_snapshot;
+ _edje_edd_edje_part_description_snapshot =
+ eet_data_descriptor_file_new(&eddc);
+ EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_snapshot, Edje_Part_Description_Common);
+
+
+ EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common);
eddc.func.mem_free = mem_free_swallow;
eddc.func.mem_alloc = mem_alloc_swallow;
_edje_edd_edje_part_description_swallow =
@@ -1117,6 +1132,7 @@ _edje_edd_init(void)
EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_rectangle);
EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_swallow);
EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_group);
+ EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_snapshot);
EDJE_DEFINE_POINTER_TYPE(Part_Description_Image, part_description_image);
EDJE_DEFINE_POINTER_TYPE(Part_Description_Proxy, part_description_proxy);
EDJE_DEFINE_POINTER_TYPE(Part_Description_Text, part_description_text);
@@ -1135,6 +1151,7 @@ _edje_edd_init(void)
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "spacer", _edje_edd_edje_part_description_spacer);
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, "snapshot", _edje_edd_edje_part_description_snapshot);
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);
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "image", _edje_edd_edje_part_description_image);
@@ -1162,6 +1179,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, "snapshot", snapshot);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "spacer", spacer);
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);
diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c
index 6f29897a32..2ab9862b8b 100644
--- a/src/lib/edje/edje_load.c
+++ b/src/lib/edje/edje_load.c
@@ -710,7 +710,10 @@ _edje_object_file_set_internal(Evas_Object *obj, const Eina_File *file, const ch
case EDJE_PART_TYPE_PROXY:
case EDJE_PART_TYPE_IMAGE:
+ case EDJE_PART_TYPE_SNAPSHOT:
rp->object = evas_object_image_add(ed->base->evas);
+ if (ep->type == EDJE_PART_TYPE_SNAPSHOT)
+ evas_object_image_snapshot_set(rp->object, EINA_TRUE);
break;
case EDJE_PART_TYPE_TEXT:
@@ -1958,6 +1961,8 @@ case EDJE_PART_TYPE_##Type: eina_mempool_free(Ce->mp.Type, Desc); \
FREE_POOL(BOX, ce, desc);
FREE_POOL(TABLE, ce, desc);
FREE_POOL(EXTERNAL, ce, desc);
+ FREE_POOL(SNAPSHOT, ce, desc);
+ FREE_POOL(SPACER, ce, desc);
}
}
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index e629923596..8fec707968 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -837,7 +837,8 @@ struct _Edje_Limit
TYPE EXTERNAL; \
TYPE MESH_NODE; \
TYPE LIGHT; \
- TYPE CAMERA;
+ TYPE CAMERA; \
+ TYPE SNAPSHOT;
struct _Edje_Part_Collection_Directory_Entry
{
@@ -2239,6 +2240,7 @@ EAPI extern Eina_Mempool *_emp_SPACER;
EAPI extern Eina_Mempool *_emp_MESH_NODE;
EAPI extern Eina_Mempool *_emp_LIGHT;
EAPI extern Eina_Mempool *_emp_CAMERA;
+EAPI extern Eina_Mempool *_emp_SNAPSHOT;
EAPI 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, FLOAT_T v3, FLOAT_T v4);