diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am
index 950a8145f5..f33cd7c652 100644
--- a/src/Makefile_Edje.am
+++ b/src/Makefile_Edje.am
@@ -17,6 +17,9 @@ EDJE_COMMON_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
installed_edjemainheadersdir = $(includedir)/edje-@VMAJ@
dist_installed_edjemainheaders_DATA = \
lib/edje/Edje.h \
+lib/edje/Edje_Common.h \
+lib/edje/Edje_Eo.h \
+lib/edje/Edje_Legacy.h \
lib/edje/Edje_Edit.h
lib_edje_libedje_la_SOURCES = \
diff --git a/src/lib/edje/Edje.h b/src/lib/edje/Edje.h
index 749b1d46b8..266200a576 100644
--- a/src/lib/edje/Edje.h
+++ b/src/lib/edje/Edje.h
@@ -202,19 +202,6 @@ param in edje programs
* These routines are used for Edje.
*/
-/**
- * @defgroup Edje_General_Group Edje General
- * @ingroup Edje
- *
- * @brief This group discusses functions that have general purposes or affect Edje as a whole.
- *
- * Besides containing the initialize and shutdown functions of the library, which should
- * always be called when we are using Edje, this module contains some other utilities that
- * could be used in many contexts or should do their jobs independent of the context inside Edje.
- *
- * @{
- */
-
#ifndef _EDJE_H
#define _EDJE_H
@@ -260,6411 +247,13 @@ extern "C" {
#define EDJE_VERSION_MAJOR 1
#define EDJE_VERSION_MINOR 8
-typedef struct _Edje_Version
-{
- int major;
- int minor;
- int micro;
- int revision;
-} Edje_Version;
-
-EAPI extern Edje_Version *edje_version;
-
-/**
- * @brief Initialize the Edje library.
- *
- * @return The new init count. The initial value is zero.
- *
- * This function initializes the Edje library, making the proper calls
- * to internal initialization functions. It will also initialize its
- * @b dependencies, making calls to @c eina_init(), @c ecore_init(),
- * @c embryo_init() and @c eet_init(). So, there is no need to call
- * those functions again, in your code. To shutdown Edje there is the
- * function edje_shutdown().
- *
- * @see edje_shutdown()
- * @see eina_init()
- * @see ecore_init()
- * @see embryo_init()
- * @see eet_init()
- *
- */
-EAPI int edje_init (void);
-
-/**
- * @brief Shutdown the Edje library.
- *
- * @return The number of times the library has been initialised
- * without being shutdown.
- *
- * This function shuts down the Edje library. It will also call the
- * shutdown functions of its @b dependencies, which are @c
- * eina_shutdown(), @c ecore_shutdown(), @c embryo_shutdown() and @c
- * eet_shutdown(), so there is no need to call these functions again,
- * in your code.
- *
- * @see edje_init()
- * @see eina_shutdown()
- * @see ecore_shutdown()
- * @see embryo_shutdown()
- * @see eet_shutdown()
- *
- */
-EAPI int edje_shutdown (void);
-
-/**
- * @brief Set the edje append fontset.
- *
- * @param fonts The fontset to append.
- *
- * This function sets the edje append fontset.
- *
- */
-EAPI void edje_fontset_append_set (const char *fonts);
-
-/**
- * Get data from the file level data block of an edje file
- * @param file The path to the .edj file
- * @param key The data key
- * @return The string value of the data or NULL if no key is found.
- * Must be freed by the user when no longer needed.
- *
- * If an edje file test.edj is built from the following edc:
- *
- * data {
- * item: "key1" "value1";
- * item: "key2" "value2";
- * }
- * collections { ... }
- *
- * Then, edje_file_data_get("test.edj", "key1") will return "value1"
- */
-EAPI char *edje_file_data_get (const char *file, const char *key);
-
-/**
- * @brief Load a new module in Edje.
- * @param module The name of the module that will be added to Edje.
- * @return EINA_TRUE if the module was successfully loaded. Otherwise, EINA_FALSE.
- *
- * Modules are used to add functionality to Edje.
- * So, when a module is loaded, its functionality should be available for use.
- *
- */
-EAPI Eina_Bool edje_module_load (const char *module);
-
-/**
- * @brief Retrieves all modules that can be loaded.
- * @return A list of all loadable modules.
- *
- * This function retrieves all modules that can be loaded by edje_module_load().
- *
- * @see edje_module_load().
- *
- */
-EAPI const Eina_List *edje_available_modules_get (void);
-
-/**
- * @brief Get the edje append fontset.
- *
- * @return The edje append fontset.
- *
- * This function returns the edje append fontset set by
- * edje_fontset_append_set() function.
- *
- * @see edje_fontset_append_set().
- *
- */
-EAPI const char *edje_fontset_append_get (void);
-
-/**
- * @brief Set the file cache size.
- *
- * @param count The file cache size in edje file units. Default is 16.
- *
- * This function sets the file cache size. Edje keeps this cache in
- * order to prevent duplicates of edje file entries in memory. The
- * file cache size can be retrieved with edje_file_cache_get().
- *
- * @see edje_file_cache_get()
- * @see edje_file_cache_flush()
- *
- */
-EAPI void edje_file_cache_set (int count);
-
-/**
- * @brief Return the file cache size.
- *
- * @return The file cache size in edje file units. Default is 16.
- *
- * This function returns the file cache size set by
- * edje_file_cache_set().
- *
- * @see edje_file_cache_set()
- * @see edje_file_cache_flush()
- *
- */
-EAPI int edje_file_cache_get (void);
-
-/**
- * @brief Clean the file cache.
- *
- * This function cleans the file cache entries, but keeps this cache's
- * size to the last value set.
- *
- * @see edje_file_cache_set()
- * @see edje_file_cache_get()
- *
- */
-EAPI void edje_file_cache_flush (void);
-
-/**
- * @brief Set the collection cache size.
- *
- * @param count The collection cache size, in edje object units. Default is 16.
- *
- * This function sets the collection cache size. Edje keeps this cache
- * in order to prevent duplicates of edje {collection,group,part}
- * entries in memory. The collection cache size can be retrieved with
- * edje_collection_cache_get().
- *
- * @see edje_collection_cache_get()
- * @see edje_collection_cache_flush()
- *
- */
-EAPI void edje_collection_cache_set (int count);
-
-/**
- * @brief Return the collection cache size.
- *
- * @return The collection cache size, in edje object units. Default is 16.
- *
- * This function returns the collection cache size set by
- * edje_collection_cache_set().
- *
- * @see edje_collection_cache_set()
- * @see edje_collection_cache_flush()
- *
- */
-EAPI int edje_collection_cache_get (void);
-
-/**
- * @brief Clean the collection cache.
- *
- * This function cleans the collection cache, but keeps this cache's
- * size to the last value set.
- *
- * @see edje_collection_cache_set()
- * @see edje_collection_cache_get()
- *
- */
-EAPI void edje_collection_cache_flush (void);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_External_Group Edje External
- * @ingroup Edje
- *
- * @brief This group discusses functions of the external section of Edje.
- *
- * The programmer can create new types for parts, that will be called generically
- * EXTERNALS as they are not native of Edje. The developer must also create
- * plugins that will define the meaning of each extra properties carried by
- * these parts of type EXTERNAL.
- *
- * As long as there are new types properly registered with the plugins created,
- * the user can use the parts of type EXTERNAL as all the parts of native types.
- *
- * @{
- */
-
-/**
- * The possible types the parameters of an EXTERNAL part can be.
- */
-typedef enum _Edje_External_Param_Type
-{
- EDJE_EXTERNAL_PARAM_TYPE_INT, /**< Parameter value is an integer. */
- EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, /**< Parameter value is a double. */
- EDJE_EXTERNAL_PARAM_TYPE_STRING, /**< Parameter value is a string. */
- EDJE_EXTERNAL_PARAM_TYPE_BOOL, /**< Parameter value is boolean. */
- EDJE_EXTERNAL_PARAM_TYPE_CHOICE, /**< Parameter value is one of a set of
- predefined string choices. */
- EDJE_EXTERNAL_PARAM_TYPE_MAX /**< Sentinel. Don't use. */
-} Edje_External_Param_Type;
-
-/**
- * Flags that determine how a parameter may be accessed in different
- * circumstances.
- */
-typedef enum _Edje_External_Param_Flags
-{
- EDJE_EXTERNAL_PARAM_FLAGS_NONE = 0, /**< Property is incapable of operations, this is used to catch bogus flags. */
- EDJE_EXTERNAL_PARAM_FLAGS_GET = (1 << 0), /**< Property can be read/get. */
- EDJE_EXTERNAL_PARAM_FLAGS_SET = (1 << 1), /**< Property can be written/set. This only enables edje_object_part_external_param_set() and Embryo scripts. To enable the parameter being set from state description whenever it changes state, use #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */
- EDJE_EXTERNAL_PARAM_FLAGS_STATE = (1 << 2), /**< Property can be set from state description. */
- EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR = (1 << 3), /**< This property is only set once when the object is constructed using its value from "default" 0.0 state description. Setting this overrides #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */
- EDJE_EXTERNAL_PARAM_FLAGS_REGULAR = (EDJE_EXTERNAL_PARAM_FLAGS_GET |
- EDJE_EXTERNAL_PARAM_FLAGS_SET |
- EDJE_EXTERNAL_PARAM_FLAGS_STATE) /**< Convenience flag that sets property as GET, SET and STATE. */
-} Edje_External_Param_Flags;
-
-/**
- * @brief Converts type identifier to string nicer representation.
- *
- * This may be used to debug or other informational purposes.
- *
- * @param type the identifier to convert.
- * @return the string with the string representation, or @c "(unknown)".
- */
-EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type) EINA_PURE;
-
-/**
- * Struct that holds parameters for parts of type EXTERNAL.
- */
-struct _Edje_External_Param
-{
- const char *name; /**< The name of the parameter. */
- Edje_External_Param_Type type; /**< The type of the parameter. This defines
- which of the next three variables holds
- the value for it. */
- // XXX these could be in a union, but eet doesn't support them (or does it?)
- int i; /**< Used by both integer and boolean */
- double d; /**< Used by double */
- const char *s; /**< Used by both string and choice */
-};
-/**
- * Struct that holds parameters for parts of type EXTERNAL.
- */
-typedef struct _Edje_External_Param Edje_External_Param;
-
-/**
- * Helper macro to indicate an EXTERNAL's integer parameter is undefined.
- */
-#define EDJE_EXTERNAL_INT_UNSET INT_MAX
-/**
- * Helper macro to indicate an EXTERNAL's double parameter is undefined.
- */
-#define EDJE_EXTERNAL_DOUBLE_UNSET DBL_MAX
-
-/**
- * Struct holding information about an EXTERNAL part's parameters.
- *
- * When creating types to use with EXTERNAL parts, an array of this type is
- * used to describe the different parameters the object uses.
- *
- * This struct holds the name, type and flags that define how and when the
- * parameter is used, as well as information specific to each type, like the
- * maximum or minimum value, that can be used by editors to restrict the
- * range of values to set for each parameter.
- */
-typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
-
-/**
- * Struct holding information about an EXTERNAL part's parameters.
- *
- * When creating types to use with EXTERNAL parts, an array of this type is
- * used to describe the different parameters the object uses.
- *
- * This struct holds the name, type and flags that define how and when the
- * parameter is used, as well as information specific to each type, like the
- * maximum or minimum value, that can be used by editors to restrict the
- * range of values to set for each parameter.
- */
-struct _Edje_External_Param_Info
-{
- const char *name; /**< Name of the parameter. */
- Edje_External_Param_Type type; /**< Type of the parameter. */
- Edje_External_Param_Flags flags; /**< Flags indicating how this parameter is
- used. */
- union {
- struct {
- int def, /**< Default value for the parameter. */
- min, /**< Minimum value it can have. */
- max, /**< Maximum value it can have. */
- step; /**< Values will be a multiple of this. */
- } i; /**< Info about integer type parameters. Use #EDJE_EXTERNAL_INT_UNSET
- on any of them to indicate they are not defined.*/
- struct {
- double def, /**< Default value for the parameter. */
- min, /**< Minimum value it can have. */
- max, /**< Maximum value it can have. */
- step; /**< Values will be a multiple of this. */
- } d; /**< Info about double type parameters. Use
-#EDJE_EXTERNAL_DOUBLE_UNSET on any of them to indicate they are not defined.*/
- struct {
- const char *def; /**< Default value. */
- const char *accept_fmt; /**< Not implemented. */
- const char *deny_fmt; /**< Not implemented */
- } s; /**< Info about string type parameters. NULL indicates undefined. */
- struct {
- int def; /**< Default value. */
- const char *false_str; /**< String shown by editors to indicate the false state. */
- const char *true_str; /**< String shown by editors to indicate the true state. */
- } b; /**< Info about boolean type parameters.*/
- struct {
- const char *def; /**< Default value. */
- const char **choices; /* Array of strings, each represents a
- valid value for this parameter. The
- last element of the array must be
- NULL. */
- char *(*def_get)(void *data, const Edje_External_Param_Info *info); /** return malloc() memory with the default choice, should be used if def is NULL. First parameter is Edje_External_Type::data */
- char **(*query)(void *data, const Edje_External_Param_Info *info); /** NULL terminated array of strings, memory is dynamically allocated and should be freed with free() for array and each element. First parameter is Edje_External_Type::data */
- } c; /**< Info about choice type parameters. */
- } info;
-};
-
-#define EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, flags) \
- {name, EDJE_EXTERNAL_PARAM_TYPE_INT, flags, {.i = {def, min, max, step}}}
-#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, flags) \
- {name, EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, flags, {.d = {def, min, max, step}}}
-#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, flags) \
- {name, EDJE_EXTERNAL_PARAM_TYPE_STRING, flags, {.s = {def, accept, deny}}}
-#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, flags) \
- {name, EDJE_EXTERNAL_PARAM_TYPE_BOOL, flags, {.b = {def, false_str, true_str}}}
-#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, flags) \
- {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {def, choices, NULL, NULL}}}
-#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, flags) \
- {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {NULL, NULL, def_get, query}}}
-
-#define EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, min, max, step) \
- EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
-#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, min, max, step) \
- EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
-#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, accept, deny) \
- EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
-#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, false_str, true_str) \
- EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
-#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL(name, def, choices) \
- EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
-#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL(name, def_get, query) \
- EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
-
-#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, def) \
- EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET)
-#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, def) \
- EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET)
-#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, def) \
- EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, NULL, NULL)
-#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, def) \
- EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, "false", "true")
-
-#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, def, flags) \
- EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, flags)
-#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, def, flags) \
- EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, flags)
-#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, def, flags) \
- EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, NULL, NULL, flags)
-#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, def, flags) \
- EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, "false", "true", flags)
-
-#define EDJE_EXTERNAL_PARAM_INFO_INT(name) \
- EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, 0)
-#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE(name) \
- EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, 0.0)
-#define EDJE_EXTERNAL_PARAM_INFO_STRING(name) \
- EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, NULL)
-#define EDJE_EXTERNAL_PARAM_INFO_BOOL(name) \
- EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, 0)
-
-#define EDJE_EXTERNAL_PARAM_INFO_INT_FLAGS(name, flags) \
- EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, 0, flags)
-#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FLAGS(name, flags) \
- EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, 0.0, flags)
-#define EDJE_EXTERNAL_PARAM_INFO_STRING_FLAGS(name, flags) \
- EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, NULL, flags)
-#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FLAGS(name, flags) \
- EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, 0, flags)
-
-#define EDJE_EXTERNAL_PARAM_INFO_SENTINEL {NULL, 0, 0, {.s = {NULL, NULL, NULL}}}
-
-#define EDJE_EXTERNAL_TYPE_ABI_VERSION (3)
-
-/**
- * @struct _Edje_External_Type
- *
- * @brief Information about an external type to be used.
- *
- * This structure provides information on how to display and modify a
- * third party Evas_Object in Edje.
- *
- * Some function pointers are not really used by Edje, but provide
- * means for Edje users to better interact with such objects. For
- * instance, an editor may use label_get() and icon_get() to list all
- * registered external types.
- *
- * @note The function pointers provided in this structure must check
- * for errors and invalid or out-of-range values as for
- * performance reasons Edje will not enforce hints provided as
- * #Edje_External_Param_Info in the member parameters_info.
- */
-struct _Edje_External_Type
-{
- unsigned int abi_version; /**< always use:
- * - #EDJE_EXTERNAL_TYPE_ABI_VERSION to declare.
- * - edje_external_type_abi_version_get() to check.
- */
- const char *module; /**< Name of the module that holds these definitions,
- as used in the externals {} block of a theme
- definition. */
- const char *module_name; /**< Canonical name of the module, for displaying
- in edition programs, for example. */
- Evas_Object *(*add) (void *data, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name); /**< Creates the object to be used by Edje as the part. @p part_name is the name of the part that holds the object and can be used to forward callbacks from the object as signals from Edje. @p params is the list of #Edje_External_Param, not parsed, from the default state of the part. Parameters of type #EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR should be set on
- the object here. */
- void (*state_set) (void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos); /**< Called upon state changes, including the initial "default" 0.0 state. Parameters are the value returned by params_parse(). The @p pos parameter is a value between 0.0 and 1.0 indicating the position in time within the state transition. */
- void (*signal_emit) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Feed a signal emitted with emission originally set as part_name:signal to this object (without the "part_name:" prefix) */
- Eina_Bool (*param_set) (void *data, Evas_Object *obj, const Edje_External_Param *param); /**< Dynamically change a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success */
- Eina_Bool (*param_get) (void *data, const Evas_Object *obj, Edje_External_Param *param); /**< Dynamically fetch a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success. (Must check parameter name and type!) */
- Evas_Object *(*content_get) (void *data, const Evas_Object *obj, const char *content); /**< Dynamically fetch a sub object of this external, called by scripts and user code. Returns @c Evas_Object * on success. (Must check parameter name and type!) */
- void *(*params_parse) (void *data, Evas_Object *obj, const Eina_List *params); /**< Parses the list of parameters, converting into a friendly representation. Used with state_set() */
- void (*params_free) (void *params); /**< Free parameters parsed with params_parse() */
-
- /* The following callbacks aren't used by Edje itself, but by UI design
- tools instead */
- const char *(*label_get) (void *data); /**< Get a label to use to identify this EXTERNAL. (For editors) */
- const char *(*description_get) (void *data); /**< Get a user friendly description of this EXTERNAL. (For editors) */
- Evas_Object *(*icon_add) (void *data, Evas *e); /**< Get an icon to use to identify this EXTERNAL. (For editors) */
- Evas_Object *(*preview_add) (void *data, Evas *e); /**< Get a preview of the EXTERNAL object in use. (For editors) */
- const char *(*translate) (void *data, const char *orig); /**< called to translate parameters_info name properties for use in user interfaces that support internationalization (i18n) (For editors) */
-
- Edje_External_Param_Info *parameters_info; /**< An array of #Edje_External_Param_Info describing the different parameters this EXTERNAL may have. The last element in the array must be #EDJE_EXTERNAL_PARAM_INFO_SENTINEL. */
- void *data; /**< Private user data that will be passed to all of the class functions. */
-};
-typedef struct _Edje_External_Type Edje_External_Type;
-
-/**
- * Convenience struct used to mass-register types of EXTERNAL objects.
- *
- * Used with edje_external_type_array_register().
- */
-struct _Edje_External_Type_Info
-{
- const char *name; /**< The name of the type to register. */
- const Edje_External_Type *info; /**< The type definition. */
-};
-
-typedef struct _Edje_External_Type_Info Edje_External_Type_Info;
-
-/**
- * @}
- */
-
-#define EDJE_OBJ_CLASS edje_object_class_get()
-
-const Eo_Class *edje_object_class_get(void) EINA_CONST;
-
-extern EAPI Eo_Op EDJE_OBJ_BASE_ID;
-
-enum
-{
- EDJE_OBJ_SUB_ID_SCALE_SET,
- EDJE_OBJ_SUB_ID_SCALE_GET,
- EDJE_OBJ_SUB_ID_MIRRORED_GET,
- EDJE_OBJ_SUB_ID_MIRRORED_SET,
- EDJE_OBJ_SUB_ID_DATA_GET,
- EDJE_OBJ_SUB_ID_FREEZE,
- EDJE_OBJ_SUB_ID_THAW,
- EDJE_OBJ_SUB_ID_COLOR_CLASS_SET,
- EDJE_OBJ_SUB_ID_COLOR_CLASS_GET,
- EDJE_OBJ_SUB_ID_TEXT_CLASS_SET,
- EDJE_OBJ_SUB_ID_PART_EXISTS,
- EDJE_OBJ_SUB_ID_PART_OBJECT_GET,
- EDJE_OBJ_SUB_ID_PART_GEOMETRY_GET,
- EDJE_OBJ_SUB_ID_ITEM_PROVIDER_SET,
- EDJE_OBJ_SUB_ID_TEXT_CHANGE_CB_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PUSH,
- EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_POP,
- EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PEEK,
- EDJE_OBJ_SUB_ID_PART_TEXT_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_ESCAPED_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_SELECTION_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_NONE,
- EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALL,
- EDJE_OBJ_SUB_ID_PART_TEXT_INSERT,
- EDJE_OBJ_SUB_ID_PART_TEXT_APPEND,
- EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_LIST_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_GEOMETRY_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_LIST_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_GEOMETRY_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_GEOMETRY_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_USER_INSERT,
- EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALLOW_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ABORT,
- EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_BEGIN,
- EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_EXTEND,
- EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_NEXT,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_PREV,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_UP,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_DOWN,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_BEGIN_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_END_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COPY,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_BEGIN_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_END_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COORD_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_FORMAT_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_VISIBLE_FORMAT_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_CONTENT_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_RESET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_SHOW,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_HIDE,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_GET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_SET,
- EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_GET,
- EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_ADD,
- EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL,
- EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL_FULL,
- EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_ADD,
- EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL,
- EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL_FULL,
- EDJE_OBJ_SUB_ID_PART_SWALLOW,
- EDJE_OBJ_SUB_ID_PART_UNSWALLOW,
- EDJE_OBJ_SUB_ID_PART_SWALLOW_GET,
- EDJE_OBJ_SUB_ID_SIZE_MIN_GET,
- EDJE_OBJ_SUB_ID_SIZE_MAX_GET,
- EDJE_OBJ_SUB_ID_CALC_FORCE,
- EDJE_OBJ_SUB_ID_SIZE_MIN_CALC,
- EDJE_OBJ_SUB_ID_PARTS_EXTENDS_CALC,
- EDJE_OBJ_SUB_ID_SIZE_MIN_RESTRICTED_CALC,
- EDJE_OBJ_SUB_ID_PART_STATE_GET,
- EDJE_OBJ_SUB_ID_PART_DRAG_DIR_GET,
- EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_SET,
- EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_GET,
- EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_SET,
- EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_GET,
- EDJE_OBJ_SUB_ID_PART_DRAG_STEP_SET,
- EDJE_OBJ_SUB_ID_PART_DRAG_STEP_GET,
- EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_SET,
- EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_GET,
- EDJE_OBJ_SUB_ID_PART_DRAG_STEP,
- EDJE_OBJ_SUB_ID_PART_DRAG_PAGE,
- EDJE_OBJ_SUB_ID_PART_BOX_APPEND,
- EDJE_OBJ_SUB_ID_PART_BOX_PREPEND,
- EDJE_OBJ_SUB_ID_PART_BOX_INSERT_BEFORE,
- EDJE_OBJ_SUB_ID_PART_BOX_INSERT_AT,
- EDJE_OBJ_SUB_ID_PART_BOX_REMOVE,
- EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_AT,
- EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_ALL,
- EDJE_OBJ_SUB_ID_ACCESS_PART_LIST_GET,
- EDJE_OBJ_SUB_ID_PART_TABLE_CHILD_GET,
- EDJE_OBJ_SUB_ID_PART_TABLE_PACK,
- EDJE_OBJ_SUB_ID_PART_TABLE_UNPACK,
- EDJE_OBJ_SUB_ID_PART_TABLE_COL_ROW_SIZE_GET,
- EDJE_OBJ_SUB_ID_PART_TABLE_CLEAR,
- EDJE_OBJ_SUB_ID_PERSPECTIVE_SET,
- EDJE_OBJ_SUB_ID_PERSPECTIVE_GET,
- EDJE_OBJ_SUB_ID_PRELOAD,
- EDJE_OBJ_SUB_ID_UPDATE_HINTS_SET,
- EDJE_OBJ_SUB_ID_UPDATE_HINTS_GET,
-
- EDJE_OBJ_SUB_ID_PART_EXTERNAL_OBJECT_GET,
- EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_SET,
- EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_GET,
- EDJE_OBJ_SUB_ID_PART_EXTERNAL_CONTENT_GET,
- EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_TYPE_GET,
-
- EDJE_OBJ_SUB_ID_FILE_SET,
- EDJE_OBJ_SUB_ID_FILE_GET,
- EDJE_OBJ_SUB_ID_LOAD_ERROR_GET,
-
- EDJE_OBJ_SUB_ID_MESSAGE_SEND,
- EDJE_OBJ_SUB_ID_MESSAGE_HANDLER_SET,
- EDJE_OBJ_SUB_ID_MESSAGE_SIGNAL_PROCESS,
-
- EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_ADD,
- EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_DEL,
- EDJE_OBJ_SUB_ID_SIGNAL_EMIT,
- EDJE_OBJ_SUB_ID_PLAY_SET,
- EDJE_OBJ_SUB_ID_PLAY_GET,
- EDJE_OBJ_SUB_ID_ANIMATION_SET,
- EDJE_OBJ_SUB_ID_ANIMATION_GET,
-
- EDJE_OBJ_SUB_ID_LAST
-};
-
-#define EDJE_OBJ_ID(sub_id) (EDJE_OBJ_BASE_ID + sub_id)
-
-
-/**
- * @def edje_obj_scale_set
- * @since 1.8
- *
- * @brief Set the scaling factor for a given Edje object.
- *
- * @param[in] scale
- * @param[out] ret
- *
- * @see edje_object_scale_set
- */
-#define edje_obj_scale_set(scale, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SCALE_SET), EO_TYPECHECK(double, scale), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_scale_get
- * @since 1.8
- *
- * @brief Get a given Edje object's scaling factor.
- *
- * @param[out] ret
- *
- * @see edje_object_scale_get
- */
-#define edje_obj_scale_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SCALE_GET), EO_TYPECHECK(double *, ret)
-
-/**
- * @def edje_obj_mirrored_get
- * @since 1.8
- *
- * @brief Get the RTL orientation for this object.
- *
- * @param[out] ret
- *
- * @see edje_object_mirrored_get
- */
-#define edje_obj_mirrored_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MIRRORED_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_mirrored_set
- * @since 1.8
- *
- * @brief Set the RTL orientation for this object.
- *
- * @param[in] rtl
- *
- * @see edje_object_mirrored_set
- */
-#define edje_obj_mirrored_set(rtl) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MIRRORED_SET), EO_TYPECHECK(Eina_Bool, rtl)
-
-/**
- * @def edje_obj_data_get
- * @since 1.8
- *
- * @brief Retrieve an EDC data field's value from a given Edje.
- *
- * @param[in] key
- * @param[out] ret
- *
- * @see edje_object_data_get
- */
-#define edje_obj_data_get(key, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_DATA_GET), EO_TYPECHECK(const char *, key), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def edje_obj_freeze
- * @since 1.8
- *
- * @brief Freezes the Edje object.
- *
- * @param[out] ret
- *
- * @see edje_object_freeze
- */
-#define edje_obj_freeze(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FREEZE), EO_TYPECHECK(int *, ret)
-
-/**
- * @def edje_obj_thaw
- * @since 1.8
- *
- * @brief Thaws the Edje object.
- *
- * @param[out] ret
- *
- * @see edje_object_thaw
- */
-#define edje_obj_thaw(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_THAW), EO_TYPECHECK(int *, ret)
-
-/**
- * @def edje_obj_color_class_set
- * @since 1.8
- *
- * @brief Sets the object color class.
- *
- * @param[in] color_class
- * @param[in] r
- * @param[in] g
- * @param[in] b
- * @param[in] a
- * @param[in] r2
- * @param[in] g2
- * @param[in] b2
- * @param[in] a2
- * @param[in] r3
- * @param[in] g3
- * @param[in] b3
- * @param[in] a3
- * @param[out] ret
- *
- * @see edje_object_color_class_set
- */
-#define edje_obj_color_class_set(color_class, r, g, b, a, r2, g2, b2, a2, r3, g3, b3, a3, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_COLOR_CLASS_SET), EO_TYPECHECK(const char *, color_class), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a), EO_TYPECHECK(int, r2), EO_TYPECHECK(int, g2), EO_TYPECHECK(int, b2), EO_TYPECHECK(int, a2), EO_TYPECHECK(int, r3), EO_TYPECHECK(int, g3), EO_TYPECHECK(int, b3), EO_TYPECHECK(int, a3), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_color_class_get
- * @since 1.8
- *
- * @brief Gets the object color class.
- *
- * @param[in] color_class
- * @param[out] r
- * @param[out] g
- * @param[out] b
- * @param[out] a
- * @param[out] r2
- * @param[out] g2
- * @param[out] b2
- * @param[out] a2
- * @param[out] r3
- * @param[out] g3
- * @param[out] b3
- * @param[out] a3
- * @param[out] ret
- *
- * @see edje_object_color_class_get
- */
-#define edje_obj_color_class_get(color_class, r, g, b, a, r2, g2, b2, a2, r3, g3, b3, a3, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_COLOR_CLASS_GET), EO_TYPECHECK(const char *, color_class), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a), EO_TYPECHECK(int *, r2), EO_TYPECHECK(int *, g2), EO_TYPECHECK(int *, b2), EO_TYPECHECK(int *, a2), EO_TYPECHECK(int *, r3), EO_TYPECHECK(int *, g3), EO_TYPECHECK(int *, b3), EO_TYPECHECK(int *, a3), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_text_class_set
- * @since 1.8
- *
- * @brief Sets Edje text class.
- *
- * @param[in] text_class
- * @param[in] font
- * @param[in] size
- * @param[out] ret
- *
- * @see edje_object_text_class_set
- */
-#define edje_obj_text_class_set(text_class, font, size, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_CLASS_SET), EO_TYPECHECK(const char *, text_class), EO_TYPECHECK(const char *, font), EO_TYPECHECK(Evas_Font_Size, size), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_exists
- * @since 1.8
- *
- * @brief Check if an Edje part exists in a given Edje object's group
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_exists
- */
-#define edje_obj_part_exists(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXISTS), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_object_get
- * @since 1.8
- *
- * @brief Get a handle to the Evas object implementing a given Edje
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_object_get
- */
-#define edje_obj_part_object_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_OBJECT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Evas_Object **, ret)
-
-/**
- * @def edje_obj_part_geometry_get
- * @since 1.8
- *
- * @brief Retrieve the geometry of a given Edje part, in a given Edje
- *
- * @param[in] part
- * @param[out] x
- * @param[out] y
- * @param[out] w
- * @param[out] h
- * @param[out] ret
- *
- * @see edje_object_part_geometry_get
- */
-#define edje_obj_part_geometry_get(part, x, y, w, h, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_item_provider_set
- * @since 1.8
- *
- * @brief Set the function that provides item objects for named items in an edje entry text
- *
- * @param[in] func
- * @param[in] data
- *
- * @see edje_object_item_provider_set
- */
-#define edje_obj_item_provider_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ITEM_PROVIDER_SET), EO_TYPECHECK(Edje_Item_Provider_Cb, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def edje_obj_text_change_cb_set
- * @since 1.8
- *
- * @brief Set the object text callback.
- *
- * @param[in] func
- * @param[in] data
- *
- * @see edje_object_text_change_cb_set
- */
-#define edje_obj_text_change_cb_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_CHANGE_CB_SET), EO_TYPECHECK(Edje_Text_Change_Cb, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def edje_obj_part_text_style_user_push
- * @since 1.8
- *
- * @brief Set the style of the part.
- *
- * @param[in] part
- * @param[in] style
- *
- * @see edje_object_part_text_style_user_push
- */
-#define edje_obj_part_text_style_user_push(part, style) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PUSH), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, style)
-
-/**
- * @def edje_obj_part_text_style_user_pop
- * @since 1.8
- *
- * @brief Delete the top style form the user style stack.
- *
- * @param[in] part
- *
- * @see edje_object_part_text_style_user_pop
- */
-#define edje_obj_part_text_style_user_pop(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_POP), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_style_user_peek
- * @since 1.8
- *
- * @brief Return the text of the object part.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_style_user_peek
- */
-#define edje_obj_part_text_style_user_peek(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PEEK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def edje_obj_part_text_set
- * @since 1.8
- *
- * @brief Sets the text for an object part
- *
- * @param[in] part
- * @param[in] text
- * @param[out] ret
- *
- * @see edje_object_part_text_set
- */
-#define edje_obj_part_text_set(part, text, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_get
- * @since 1.8
- *
- * @brief Return the text of the object part.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_get
- */
-#define edje_obj_part_text_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def edje_obj_part_text_escaped_set
- * @since 1.8
- *
- * @brief Sets the text for an object part, but converts HTML escapes to UTF8
- *
- * @param[in] part
- * @param[in] text
- * @param[out] ret
- *
- * @see edje_object_part_text_escaped_set
- */
-#define edje_obj_part_text_escaped_set(part, text, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ESCAPED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_unescaped_set
- * @since 1.8
- *
- * @brief Sets the raw (non escaped) text for an object part.
- *
- * @param[in] part
- * @param[in] text_to_escape
- * @param[out] ret
- *
- * @see edje_object_part_text_unescaped_set
- */
-#define edje_obj_part_text_unescaped_set(part, text_to_escape, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text_to_escape), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_unescaped_get
- * @since 1.8
- *
- * @brief Returns the text of the object part, without escaping.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_unescaped_get
- */
-#define edje_obj_part_text_unescaped_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(char **, ret)
-
-/**
- * @def edje_obj_part_text_selection_get
- * @since 1.8
- *
- * @brief Return the selection text of the object part.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_selection_get
- */
-#define edje_obj_part_text_selection_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECTION_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def edje_obj_part_text_select_none
- * @since 1.8
- *
- * @brief Set the selection to be none.
- *
- * @param[in] part
- *
- * @see edje_object_part_text_select_none
- */
-#define edje_obj_part_text_select_none(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_NONE), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_select_all
- * @since 1.8
- *
- * @brief Set the selection to be everything.
- *
- * @param[in] part
- *
- * @see edje_object_part_text_select_all
- */
-#define edje_obj_part_text_select_all(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALL), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_insert
- * @since 1.8
- *
- * @brief Insert text for an object part.
- *
- * @param[in] part
- * @param[in] text
- *
- * @see edje_object_part_text_insert
- */
-#define edje_obj_part_text_insert(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INSERT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
-
-/**
- * @def edje_obj_part_text_append
- * @since 1.8
- *
- * @brief Insert text for an object part.
- *
- * @param[in] part
- * @param[in] text
- *
- * @see edje_object_part_text_append
- */
-#define edje_obj_part_text_append(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_APPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
-
-/**
- * @def edje_obj_part_text_anchor_list_get
- * @since 1.8
- *
- * @brief Return a list of char anchor names.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_anchor_list_get
- */
-#define edje_obj_part_text_anchor_list_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_LIST_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Eina_List **, ret)
-
-/**
- * @def edje_obj_part_text_anchor_geometry_get
- * @since 1.8
- *
- * @brief Return a list of Evas_Textblock_Rectangle anchor rectangles.
- *
- * @param[in] part
- * @param[in] anchor
- * @param[out] ret
- *
- * @see edje_object_part_text_anchor_geometry_get
- */
-#define edje_obj_part_text_anchor_geometry_get(part, anchor, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, anchor), EO_TYPECHECK(const Eina_List **, ret)
-
-/**
- * @def edje_obj_part_text_item_list_get
- * @since 1.8
- *
- * @brief Return a list of char item names.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_item_list_get
- */
-#define edje_obj_part_text_item_list_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_LIST_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Eina_List **, ret)
-
-/**
- * @def edje_obj_part_text_item_geometry_get
- * @since 1.8
- *
- * @brief Return item geometry.
- *
- * @param[in] part
- * @param[in] item
- * @param[out] cx
- * @param[out] cy
- * @param[out] cw
- * @param[out] ch
- * @param[out] ret
- *
- * @see edje_object_part_text_item_geometry_get
- */
-#define edje_obj_part_text_item_geometry_get(part, item, cx, cy, cw, ch, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, item), EO_TYPECHECK(Evas_Coord *, cx), EO_TYPECHECK(Evas_Coord *, cy), EO_TYPECHECK(Evas_Coord *, cw), EO_TYPECHECK(Evas_Coord *, ch), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_cursor_geometry_get
- * @since 1.8
- *
- * @brief Returns the cursor geometry of the part relative to the edje
- *
- * @param[in] part
- * @param[out] x
- * @param[out] y
- * @param[out] w
- * @param[out] h
- *
- * @see edje_object_part_text_cursor_geometry_get
- */
-#define edje_obj_part_text_cursor_geometry_get(part, x, y, w, h) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
-
-/**
- * @def edje_obj_part_text_user_insert
- * @since 1.8
- *
- * @brief This function inserts text as if the user has inserted it.
- *
- * @param[in] part
- * @param[in] text
- *
- * @see edje_object_part_text_user_insert
- */
-#define edje_obj_part_text_user_insert(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_USER_INSERT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
-
-/**
- * @def edje_obj_part_text_select_allow_set
- * @since 1.8
- *
- * @brief Enables selection if the entry is an EXPLICIT selection mode
- *
- * @param[in] part
- * @param[in] allow
- *
- * @see edje_object_part_text_select_allow_set
- */
-#define edje_obj_part_text_select_allow_set(part, allow) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALLOW_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, allow)
-
-/**
- * @def edje_obj_part_text_select_abort
- * @since 1.8
- *
- * @brief Aborts any selection action on a part.
- *
- * @param[in] part
- *
- * @see edje_object_part_text_select_abort
- */
-#define edje_obj_part_text_select_abort(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ABORT), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_select_begin
- * @since 1.8
- *
- * @brief Starts selecting at current cursor position
- *
- * @param[in] part
- *
- * @see edje_object_part_text_select_begin
- */
-#define edje_obj_part_text_select_begin(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_BEGIN), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_select_extend
- * @since 1.8
- *
- * @brief Extends the current selection to the current cursor position
- *
- * @param[in] part
- *
- * @see edje_object_part_text_select_extend
- */
-#define edje_obj_part_text_select_extend(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_EXTEND), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_imf_context_get
- * @since 1.8
- *
- * @brief Get the input method context in entry.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_imf_context_get
- */
-#define edje_obj_part_text_imf_context_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(void **, ret)
-
-/**
- * @def edje_obj_part_text_cursor_next
- * @since 1.8
- *
- * @brief Advances the cursor to the next cursor position.
- *
- * @param[in] part
- * @param[in] cur
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_next
- */
-#define edje_obj_part_text_cursor_next(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_NEXT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_cursor_prev
- * @since 1.8
- *
- * @brief Moves the cursor to the previous char
- *
- * @param[in] part
- * @param[in] cur
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_prev
- */
-#define edje_obj_part_text_cursor_prev(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_PREV), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_cursor_up
- * @since 1.8
- *
- * @brief Move the cursor to the char above the current cursor position.
- *
- * @param[in] part
- * @param[in] cur
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_up
- */
-#define edje_obj_part_text_cursor_up(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_UP), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_cursor_down
- * @since 1.8
- *
- * @brief Moves the cursor to the char below the current cursor position.
- *
- * @param[in] part
- * @param[in] cur
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_down
- */
-#define edje_obj_part_text_cursor_down(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_DOWN), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_cursor_begin_set
- * @since 1.8
- *
- * @brief Moves the cursor to the beginning of the text part
- *
- * @param[in] part
- * @param[in] cur
- *
- * @see edje_object_part_text_cursor_begin_set
- */
-#define edje_obj_part_text_cursor_begin_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_BEGIN_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
-
-/**
- * @def edje_obj_part_text_cursor_end_set
- * @since 1.8
- *
- * @brief Moves the cursor to the end of the text part.
- *
- * @param[in] part
- * @param[in] cur
- *
- * @see edje_object_part_text_cursor_end_set
- */
-#define edje_obj_part_text_cursor_end_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_END_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
-
-/**
- * @def edje_obj_part_text_cursor_copy
- * @since 1.8
- *
- * @brief Copy the cursor to another cursor.
- *
- * @param[in] part
- * @param[in] src
- * @param[in] dst
- *
- * @see edje_object_part_text_cursor_copy
- */
-#define edje_obj_part_text_cursor_copy(part, src, dst) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COPY), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, src), EO_TYPECHECK(Edje_Cursor, dst)
-
-/**
- * @def edje_obj_part_text_cursor_line_begin_set
- * @since 1.8
- *
- * @brief Move the cursor to the beginning of the line.
- *
- * @param[in] part
- * @param[in] cur
- *
- * @see edje_object_part_text_cursor_line_begin_set
- */
-#define edje_obj_part_text_cursor_line_begin_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_BEGIN_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
-
-/**
- * @def edje_obj_part_text_cursor_line_end_set
- * @since 1.8
- *
- * @brief Move the cursor to the end of the line.
- *
- * @param[in] part
- * @param[in] cur
- *
- * @see edje_object_part_text_cursor_line_end_set
- */
-#define edje_obj_part_text_cursor_line_end_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_END_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
-
-/**
- * @def edje_obj_part_text_cursor_coord_set
- * @since 1.8
- *
- * Position the given cursor to a X,Y position.
- *
- * @param[in] part
- * @param[in] cur
- * @param[in] x
- * @param[in] y
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_coord_set
- */
-#define edje_obj_part_text_cursor_coord_set(part, cur, x, y, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COORD_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_cursor_is_format_get
- * @since 1.8
- *
- * @brief Returns whether the cursor points to a format.
- *
- * @param[in] part
- * @param[in] cur
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_is_format_get
- */
-#define edje_obj_part_text_cursor_is_format_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_FORMAT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_cursor_is_visible_format_get
- * @since 1.8
- *
- * @brief Return true if the cursor points to a visible format
- *
- * @param[in] part
- * @param[in] cur
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_is_visible_format_get
- */
-#define edje_obj_part_text_cursor_is_visible_format_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_VISIBLE_FORMAT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_cursor_content_get
- * @since 1.8
- *
- * @brief Returns the content (char) at the cursor position.
- *
- * @param[in] part
- * @param[in] cur
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_content_get
- */
-#define edje_obj_part_text_cursor_content_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_CONTENT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(char **, ret)
-
-/**
- * @def edje_obj_part_text_cursor_pos_set
- * @since 1.8
- *
- * @brief Sets the cursor position to the given value
- *
- * @param[in] part
- * @param[in] cur
- * @param[in] pos
- *
- * @see edje_object_part_text_cursor_pos_set
- */
-#define edje_obj_part_text_cursor_pos_set(part, cur, pos) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(int, pos)
-
-/**
- * @def edje_obj_part_text_cursor_pos_get
- * @since 1.8
- *
- * @brief Retrieves the current position of the cursor
- *
- * @param[in] part
- * @param[in] cur
- * @param[out] ret
- *
- * @see edje_object_part_text_cursor_pos_get
- */
-#define edje_obj_part_text_cursor_pos_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(int *, ret)
-
-/**
- * @def edje_obj_part_text_imf_context_reset
- * @since 1.8
- *
- * @brief Reset the input method context if needed.
- *
- * @param[in] part
- *
- * @see edje_object_part_text_imf_context_reset
- */
-#define edje_obj_part_text_imf_context_reset(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_RESET), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_input_panel_layout_set
- * @since 1.8
- *
- * @brief Set the layout of the input panel.
- *
- * @param[in] part
- * @param[in] layout
- *
- * @see edje_object_part_text_input_panel_layout_set
- */
-#define edje_obj_part_text_input_panel_layout_set(part, layout) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Layout, layout)
-
-/**
- * @def edje_obj_part_text_input_panel_layout_get
- * @since 1.8
- *
- * @brief Get the layout of the input panel.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_input_panel_layout_get
- */
-#define edje_obj_part_text_input_panel_layout_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Layout *, ret)
-
-/**
- * @def edje_obj_part_text_autocapital_type_set
- * @since 1.8
- *
- * @brief Set the autocapitalization type on the immodule.
- *
- * @param[in] part
- * @param[in] autocapital_type
- *
- * @see edje_object_part_text_autocapital_type_set
- */
-#define edje_obj_part_text_autocapital_type_set(part, autocapital_type) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Autocapital_Type, autocapital_type)
-
-/**
- * @def edje_obj_part_text_autocapital_type_get
- * @since 1.8
- *
- * @brief Retrieves the autocapitalization type
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_autocapital_type_get
- */
-#define edje_obj_part_text_autocapital_type_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Autocapital_Type *, ret)
-
-/**
- * @def edje_obj_part_text_prediction_allow_set
- * @since 1.8
- *
- * @brief Set whether the prediction is allowed or not.
- *
- * @param[in] part
- * @param[in] prediction
- *
- * @see edje_object_part_text_prediction_allow_set
- */
-#define edje_obj_part_text_prediction_allow_set(part, prediction) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, prediction)
-
-/**
- * @def edje_obj_part_text_prediction_allow_get
- * @since 1.8
- *
- * @brief Get whether the prediction is allowed or not.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_prediction_allow_get
- */
-#define edje_obj_part_text_prediction_allow_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_input_panel_enabled_set
- * @since 1.8
- *
- * @brief Sets the attribute to show the input panel automatically.
- *
- * @param[in] part
- * @param[in] enabled
- *
- * @see edje_object_part_text_input_panel_enabled_set
- */
-#define edje_obj_part_text_input_panel_enabled_set(part, enabled) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, enabled)
-
-/**
- * @def edje_obj_part_text_input_panel_enabled_get
- * @since 1.8
- *
- * @brief Retrieve the attribute to show the input panel automatically.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_input_panel_enabled_get
- */
-#define edje_obj_part_text_input_panel_enabled_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_text_input_panel_show
- * @since 1.8
- *
- * @brief Show the input panel (virtual keyboard) based on the input panel property such as layout, autocapital types, and so on.
- *
- * @param[in] part
- *
- * @see edje_object_part_text_input_panel_show
- */
-#define edje_obj_part_text_input_panel_show(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_SHOW), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_input_panel_hide
- * @since 1.8
- *
- * @brief Hide the input panel (virtual keyboard).
- *
- * @param[in] part
- *
- * @see edje_object_part_text_input_panel_hide
- */
-#define edje_obj_part_text_input_panel_hide(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_HIDE), EO_TYPECHECK(const char *, part)
-
-/**
- * @def edje_obj_part_text_input_panel_language_set
- * @since 1.8
- *
- * Set the language mode of the input panel.
- *
- * @param[in] part
- * @param[in] lang
- *
- * @see edje_object_part_text_input_panel_language_set
- */
-#define edje_obj_part_text_input_panel_language_set(part, lang) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Lang, lang)
-
-/**
- * @def edje_obj_part_text_input_panel_language_get
- * @since 1.8
- *
- * Get the language mode of the input panel.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_input_panel_language_get
- */
-#define edje_obj_part_text_input_panel_language_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Lang *, ret)
-
-/**
- * @def edje_obj_part_text_input_panel_imdata_set
- * @since 1.8
- *
- * Set the input panel-specific data to deliver to the input panel.
- *
- * @param[in] part
- * @param[in] data
- * @param[in] len
- *
- * @see edje_object_part_text_input_panel_imdata_set
- */
-#define edje_obj_part_text_input_panel_imdata_set(part, data, len) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const void *, data), EO_TYPECHECK(int, len)
-
-/**
- * @def edje_obj_part_text_input_panel_imdata_get
- * @since 1.8
- *
- * Get the specific data of the current active input panel.
- *
- * @param[in] part
- * @param[in] data
- * @param[in] len
- *
- * @see edje_object_part_text_input_panel_imdata_get
- */
-#define edje_obj_part_text_input_panel_imdata_get(part, data, len) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(void *, data), EO_TYPECHECK(int *, len)
-
-/**
- * @def edje_obj_part_text_input_panel_return_key_type_set
- * @since 1.8
- *
- * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
- *
- * @param[in] part
- * @param[out] return_key_type
- *
- * @see edje_object_part_text_input_panel_return_key_type_set
- */
-#define edje_obj_part_text_input_panel_return_key_type_set(part, return_key_type) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Return_Key_Type, return_key_type)
-
-/**
- * @def edje_obj_part_text_input_panel_return_key_type_get
- * @since 1.8
- *
- * Get the "return" key type.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_input_panel_return_key_type_get
- */
-#define edje_obj_part_text_input_panel_return_key_type_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Return_Key_Type *, ret)
-
-/**
- * @def edje_obj_part_text_input_panel_return_key_disabled_set
- * @since 1.8
- *
- * Set the return key on the input panel to be disabled.
- *
- * @param[in] part
- * @param[in] disabled
- *
- * @see edje_object_part_text_input_panel_return_key_disabled_set
- */
-#define edje_obj_part_text_input_panel_return_key_disabled_set(part, disabled) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, disabled)
-
-/**
- * @def edje_obj_part_text_input_panel_return_key_disabled_get
- * @since 1.8
- *
- * Get whether the return key on the input panel should be disabled or not.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_text_input_panel_return_key_disabled_get
- */
-#define edje_obj_part_text_input_panel_return_key_disabled_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_text_insert_filter_callback_add
- * @since 1.8
- *
- * Add a filter function for newly inserted text.
- *
- * @param[in] part
- * @param[in] func
- * @param[in] data
- *
- * @see edje_object_text_insert_filter_callback_add
- */
-#define edje_obj_text_insert_filter_callback_add(part, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_ADD), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def edje_obj_text_insert_filter_callback_del
- * @since 1.8
- *
- * Delete a function from the filter list.
- *
- * @param[in] part
- * @param[in] func
- * @param[out] ret
- *
- * @see edje_object_text_insert_filter_callback_del
- */
-#define edje_obj_text_insert_filter_callback_del(part, func, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void **, ret)
-
-/**
- * @def edje_obj_text_insert_filter_callback_del_full
- * @since 1.8
- *
- * Delete a function and matching user data from the filter list.
- *
- * @param[in] part
- * @param[in] func
- * @param[in] data
- * @param[out] ret
- *
- * @see edje_object_text_insert_filter_callback_del_full
- */
-#define edje_obj_text_insert_filter_callback_del_full(part, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL_FULL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
-
-/**
- * @def edje_obj_text_markup_filter_callback_add
- * @since 1.8
- *
- * Add a markup filter function for newly inserted text.
- *
- * @param[in] part
- * @param[in] func
- * @param[in] data
- *
- * @see edje_object_text_markup_filter_callback_add
- */
-#define edje_obj_text_markup_filter_callback_add(part, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_ADD), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def edje_obj_text_markup_filter_callback_del
- * @since 1.8
- *
- * Delete a function from the markup filter list.
- *
- * @param[in] part
- * @param[in] func
- * @param[out] ret
- *
- * @see edje_object_text_markup_filter_callback_del
- */
-#define edje_obj_text_markup_filter_callback_del(part, func, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void **, ret)
-
-/**
- * @def edje_obj_text_markup_filter_callback_del_full
- * @since 1.8
- *
- * Delete a function and matching user data from the markup filter list.
- *
- * @param[in] part
- * @param[in] func
- * @param[in] data
- * @param[out] ret
- *
- * @see edje_object_text_markup_filter_callback_del_full
- */
-#define edje_obj_text_markup_filter_callback_del_full(part, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL_FULL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
-
-/**
- * @def edje_obj_part_swallow
- * @since 1.8
- *
- * @brief "Swallows" an object into one of the Edje object SWALLOW
- *
- * @param[in] part
- * @param[in] obj_swallow
- * @param[out] ret
- *
- * @see edje_object_part_swallow
- */
-#define edje_obj_part_swallow(part, obj_swallow, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_SWALLOW), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, obj_swallow), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_unswallow
- * @since 1.8
- *
- * @brief Unswallow an object.
- *
- * @param[in] obj_swallow
- *
- * @see edje_object_part_unswallow
- */
-#define edje_obj_part_unswallow(obj_swallow) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_UNSWALLOW), EO_TYPECHECK(Evas_Object *, obj_swallow)
-
-/**
- * @def edje_obj_part_swallow_get
- * @since 1.8
- *
- * @brief Get the object currently swallowed by a part.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_swallow_get
- */
-#define edje_obj_part_swallow_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_SWALLOW_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def edje_obj_size_min_get
- * @since 1.8
- *
- * @brief Get the minimum size specified -- as an EDC property -- for a
- * given Edje object
- *
- * @param[out] minw
- * @param[out] minh
- *
- * @see edje_object_size_min_get
- */
-#define edje_obj_size_min_get(minw, minh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_GET), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh)
-
-/**
- * @def edje_obj_size_max_get
- * @since 1.8
- *
- * @brief Get the maximum size specified -- as an EDC property -- for a
- * given Edje object
- *
- * @param[out] maxw
- * @param[out] maxh
- *
- * @see edje_object_size_max_get
- */
-#define edje_obj_size_max_get(maxw, maxh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MAX_GET), EO_TYPECHECK(Evas_Coord *, maxw), EO_TYPECHECK(Evas_Coord *, maxh)
-
-/**
- * @def edje_obj_calc_force
- * @since 1.8
- *
- * @brief Force a Size/Geometry calculation.
- *
- *
- * @see edje_object_calc_force
- */
-#define edje_obj_calc_force() EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_CALC_FORCE)
-
-/**
- * @def edje_obj_size_min_calc
- * @since 1.8
- *
- * @brief Calculate the minimum required size for a given Edje object.
- *
- * @param[out] minw
- * @param[out] minh
- *
- * @see edje_object_size_min_calc
- */
-#define edje_obj_size_min_calc(minw, minh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_CALC), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh)
-
-/**
- * @def edje_obj_parts_extends_calc
- * @since 1.8
- *
- * Calculate the geometry of the region, relative to a given Edje
- *
- * @param[out] x
- * @param[out] y
- * @param[out] w
- * @param[out] h
- * @param[out] ret
- *
- * @see edje_object_parts_extends_calc
- */
-#define edje_obj_parts_extends_calc(x, y, w, h, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PARTS_EXTENDS_CALC), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_size_min_restricted_calc
- * @since 1.8
- *
- * @brief Calculate the minimum required size for a given Edje object.
- *
- * @param[out] minw
- * @param[out] minh
- * @param[in] restrictedw
- * @param[in] restrictedh
- *
- * @see edje_object_size_min_restricted_calc
- */
-#define edje_obj_size_min_restricted_calc(minw, minh, restrictedw, restrictedh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_RESTRICTED_CALC), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh), EO_TYPECHECK(Evas_Coord, restrictedw), EO_TYPECHECK(Evas_Coord, restrictedh)
-
-/**
- * @def edje_obj_part_state_get
- * @since 1.8
- *
- * @brief Returns the state of the Edje part.
- *
- * @param[in] part
- * @param[out] val_ret
- * @param[out] ret
- *
- * @see edje_object_part_state_get
- */
-#define edje_obj_part_state_get(part, val_ret, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_STATE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, val_ret), EO_TYPECHECK(const char **, ret)
-
-/**
- * @def edje_obj_part_drag_dir_get
- * @since 1.8
- *
- * @brief Determine dragable directions.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_drag_dir_get
- */
-#define edje_obj_part_drag_dir_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_DIR_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Drag_Dir *, ret)
-
-/**
- * @def edje_obj_part_drag_value_set
- * @since 1.8
- *
- * @brief Set the dragable object location.
- *
- * @param[in] part
- * @param[in] dx
- * @param[in] dy
- * @param[out] ret
- *
- * @see edje_object_part_drag_value_set
- */
-#define edje_obj_part_drag_value_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_value_get
- * @since 1.8
- *
- * @brief Get the dragable object location.
- *
- * @param[in] part
- * @param[out] dx
- * @param[out] dy
- * @param[out] ret
- *
- * @see edje_object_part_drag_value_get
- */
-#define edje_obj_part_drag_value_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_size_set
- * @since 1.8
- *
- * @brief Set the dragable object size.
- *
- * @param[in] part
- * @param[in] dw
- * @param[in] dh
- * @param[out] ret
- *
- * @see edje_object_part_drag_size_set
- */
-#define edje_obj_part_drag_size_set(part, dw, dh, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dw), EO_TYPECHECK(double, dh), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_size_get
- * @since 1.8
- *
- * @brief Get the dragable object size.
- *
- * @param[in] part
- * @param[out] dw
- * @param[out] dh
- * @param[out] ret
- *
- * @see edje_object_part_drag_size_get
- */
-#define edje_obj_part_drag_size_get(part, dw, dh, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dw), EO_TYPECHECK(double *, dh), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_step_set
- * @since 1.8
- *
- * @brief Sets the drag step increment.
- *
- * @param[in] part
- * @param[in] dx
- * @param[in] dy
- * @param[out] ret
- *
- * @see edje_object_part_drag_step_set
- */
-#define edje_obj_part_drag_step_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_step_get
- * @since 1.8
- *
- * @brief Gets the drag step increment values.
- *
- * @param[in] part
- * @param[out] dx
- * @param[out] dy
- * @param[out] ret
- *
- * @see edje_object_part_drag_step_get
- */
-#define edje_obj_part_drag_step_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_page_set
- * @since 1.8
- *
- * @brief Sets the page step increments.
- *
- * @param[in] part
- * @param[in] dx
- * @param[in] dy
- * @param[out] ret
- *
- * @see edje_object_part_drag_page_set
- */
-#define edje_obj_part_drag_page_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_page_get
- * @since 1.8
- *
- * @brief Gets the page step increments.
- *
- * @param[in] part
- * @param[out] dx
- * @param[out] dy
- * @param[out] ret
- *
- * @see edje_object_part_drag_page_get
- */
-#define edje_obj_part_drag_page_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_step
- * @since 1.8
- *
- * @brief Steps the dragable x,y steps.
- *
- * @param[in] part
- * @param[in] dx
- * @param[in] dy
- * @param[out] ret
- *
- * @see edje_object_part_drag_step
- */
-#define edje_obj_part_drag_step(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_drag_page
- * @since 1.8
- *
- * @brief Pages x,y steps.
- *
- * @param[in] part
- * @param[in] dx
- * @param[in] dy
- * @param[out] ret
- *
- * @see edje_object_part_drag_page
- */
-#define edje_obj_part_drag_page(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_box_append
- * @since 1.8
- *
- * @brief Appends an object to the box.
- *
- * @param[in] part
- * @param[in] child
- * @param[out] ret
- *
- * @see edje_object_part_box_append
- */
-#define edje_obj_part_box_append(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_APPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_box_prepend
- * @since 1.8
- *
- * @brief Prepends an object to the box.
- *
- * @param[in] part
- * @param[in] child
- * @param[out] ret
- *
- * @see edje_object_part_box_prepend
- */
-#define edje_obj_part_box_prepend(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_PREPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_box_insert_before
- * @since 1.8
- *
- * @brief Adds an object to the box.
- *
- * @param[in] part
- * @param[in] child
- * @param[in] reference
- * @param[out] ret
- *
- * @see edje_object_part_box_insert_before
- */
-#define edje_obj_part_box_insert_before(part, child, reference, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_INSERT_BEFORE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(const Evas_Object *, reference), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_box_insert_at
- * @since 1.8
- *
- * @brief Inserts an object to the box.
- *
- * @param[in] part
- * @param[in] child
- * @param[in] pos
- * @param[out] ret
- *
- * @see edje_object_part_box_insert_at
- */
-#define edje_obj_part_box_insert_at(part, child, pos, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_INSERT_AT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_box_remove
- * @since 1.8
- *
- * @brief Removes an object from the box.
- *
- * @param[in] part
- * @param[in] child
- * @param[out] ret
- *
- * @see edje_object_part_box_remove
- */
-#define edje_obj_part_box_remove(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def edje_obj_part_box_remove_at
- * @since 1.8
- *
- * @brief Removes an object from the box.
- *
- * @param[in] part
- * @param[in] pos
- * @param[out] ret
- *
- * @see edje_object_part_box_remove_at
- */
-#define edje_obj_part_box_remove_at(part, pos, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_AT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def edje_obj_part_box_remove_all
- * @since 1.8
- *
- * @brief Removes all elements from the box.
- *
- * @param[in] part
- * @param[in] clear
- * @param[out] ret
- *
- * @see edje_object_part_box_remove_all
- */
-#define edje_obj_part_box_remove_all(part, clear, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_ALL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, clear), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_access_part_list_get
- * @since 1.8
- *
- * @brief Retrieve a list all accessibility part names
- *
- * @param[out] ret
- *
- * @see edje_object_access_part_list_get
- */
-#define edje_obj_access_part_list_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ACCESS_PART_LIST_GET), EO_TYPECHECK(Eina_List **, ret)
-
-/**
- * @def edje_obj_part_table_child_get
- * @since 1.8
- *
- * @brief Retrieve a child from a table
- *
- * @param[in] part
- * @param[in] col
- * @param[in] row
- * @param[out] ret
- *
- * @see edje_object_part_table_child_get
- */
-#define edje_obj_part_table_child_get(part, col, row, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_CHILD_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(unsigned int, col), EO_TYPECHECK(unsigned int, row), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def edje_obj_part_table_pack
- * @since 1.8
- *
- * @brief Packs an object into the table.
- *
- * @param[in] part
- * @param[in] child_obj
- * @param[in] col
- * @param[in] row
- * @param[in] colspan
- * @param[in] rowspan
- * @param[out] ret
- *
- * @see edje_object_part_table_pack
- */
-#define edje_obj_part_table_pack(part, child_obj, col, row, colspan, rowspan, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_PACK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child_obj), EO_TYPECHECK(unsigned short, col), EO_TYPECHECK(unsigned short, row), EO_TYPECHECK(unsigned short, colspan), EO_TYPECHECK(unsigned short, rowspan), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_table_unpack
- * @since 1.8
- *
- * @brief Removes an object from the table.
- *
- * @param[in] part
- * @param[in] child_obj
- * @param[out] ret
- *
- * @see edje_object_part_table_unpack
- */
-#define edje_obj_part_table_unpack(part, child_obj, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_UNPACK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child_obj), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_table_col_row_size_get
- * @since 1.8
- *
- * @brief Gets the number of columns and rows the table has.
- *
- * @param[in] part
- * @param[out] cols
- * @param[out] rows
- * @param[out] ret
- *
- * @see edje_object_part_table_col_row_size_get
- */
-#define edje_obj_part_table_col_row_size_get(part, cols, rows, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_COL_ROW_SIZE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(int *, cols), EO_TYPECHECK(int *, rows), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_table_clear
- * @since 1.8
- *
- * @brief Removes all object from the table.
- *
- * @param[in] part
- * @param[in] clear
- * @param[out] ret
- *
- * @see edje_object_part_table_clear
- */
-#define edje_obj_part_table_clear(part, clear, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_CLEAR), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, clear), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_perspective_set
- * @since 1.8
- *
- * Set the given perspective object on this Edje object.
- *
- * @param[in] ps
- *
- * @see edje_object_perspective_set
- */
-#define edje_obj_perspective_set(ps) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PERSPECTIVE_SET), EO_TYPECHECK(Edje_Perspective *, ps)
-
-/**
- * @def edje_obj_perspective_get
- * @since 1.8
- *
- * Get the current perspective used on this Edje object.
- *
- * @param[out] ret
- *
- * @see edje_object_perspective_get
- */
-#define edje_obj_perspective_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PERSPECTIVE_GET), EO_TYPECHECK(const Edje_Perspective **, ret)
-
-/**
- * @def edje_obj_preload
- * @since 1.8
- *
- * @brief Preload the images on the Edje Object in the background.
- *
- * @param[in] cancel
- * @param[out] ret
- *
- * @see edje_object_preload
- */
-#define edje_obj_preload(cancel, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PRELOAD), EO_TYPECHECK(Eina_Bool, cancel), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_update_hints_set
- * @since 1.8
- *
- * @brief Edje will automatically update the size hints on itself.
- *
- * @param[in] update
- *
- * @see edje_object_update_hints_set
- */
-#define edje_obj_update_hints_set(update) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_UPDATE_HINTS_SET), EO_TYPECHECK(Eina_Bool, update)
-
-/**
- * @def edje_obj_update_hints_get
- * @since 1.8
- *
- * @brief Wether or not Edje will update size hints on itself.
- *
- * @param[out] ret
- *
- * @see edje_object_update_hints_get
- */
-#define edje_obj_update_hints_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_UPDATE_HINTS_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-
-/**
- * @def edje_obj_part_external_object_get
- * @since 1.8
- *
- * @brief Get the object created by this external part.
- *
- * @param[in] part
- * @param[out] ret
- *
- * @see edje_object_part_external_object_get
- */
-#define edje_obj_part_external_object_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_OBJECT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def edje_obj_part_external_param_set
- * @since 1.8
- *
- * @brief Set the parameter for the external part.
- *
- * @param[in] part
- * @param[in] param
- * @param[out] ret
- *
- * @see edje_object_part_external_param_set
- */
-#define edje_obj_part_external_param_set(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Edje_External_Param *, param), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_external_param_get
- * @since 1.8
- *
- * @brief Get the parameter for the external part.
- *
- * @param[in] part
- * @param[out] param
- * @param[out] ret
- *
- * @see edje_object_part_external_param_get
- */
-#define edje_obj_part_external_param_get(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_External_Param *, param), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_part_external_content_get
- * @since 1.8
- *
- * @brief Get an object contained in an part of type EXTERNAL
- *
- * @param[in] part
- * @param[out] content
- * @param[out] ret
- *
- * @see edje_object_part_external_content_get
- */
-#define edje_obj_part_external_content_get(part, content, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_CONTENT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, content), EO_TYPECHECK(Evas_Object **, ret)
-
-/**
- * @def edje_obj_part_external_param_type_get
- * @since 1.8
- *
- * Facility to query the type of the given parameter of the given part.
- *
- * @param[in] part
- * @param[out] param
- * @param[out] ret
- *
- * @see edje_object_part_external_param_type_get
- */
-#define edje_obj_part_external_param_type_get(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, param), EO_TYPECHECK(Edje_External_Param_Type *, ret)
-
-/**
- * @def edje_obj_file_set
- * @since 1.8
- *
- * @param[in] file in
- * @param[in] group in
- * @param[in] nested in
- * @param[out] ret out
- *
- * @see edje_object_file_set
- */
-#define edje_obj_file_set(file, group, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FILE_SET), EO_TYPECHECK(const char*, file), EO_TYPECHECK(const char *, group), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_file_get
- * @since 1.8
- *
- * @brief Get the file and group name that a given Edje object is bound to
- *
- * @param[out] file
- * @param[out] group
- *
- * @see edje_object_file_get
- */
-#define edje_obj_file_get(file, group) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, group)
-
-/**
- * @def edje_obj_load_error_get
- * @since 1.8
- *
- * @brief Gets the (last) file loading error for a given Edje object
- *
- * @param[out] ret
- *
- * @see edje_object_load_error_get
- */
-#define edje_obj_load_error_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_LOAD_ERROR_GET), EO_TYPECHECK(Edje_Load_Error *, ret)
-
-
-/**
- * @def edje_obj_message_send
- * @since 1.8
- *
- * @brief Send an (Edje) message to a given Edje object
- *
- * @param[in] type
- * @param[in] id
- * @param[in] msg
- *
- * @see edje_object_message_send
- */
-#define edje_obj_message_send(type, id, msg) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_SEND), EO_TYPECHECK(Edje_Message_Type, type), EO_TYPECHECK(int, id), EO_TYPECHECK(void *, msg)
-
-/**
- * @def edje_obj_message_handler_set
- * @since 1.8
- *
- * @brief Set an Edje message handler function for a given Edje object.
- *
- * @param[in] func
- * @param[in] data
- *
- * @see edje_object_message_handler_set
- */
-#define edje_obj_message_handler_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_HANDLER_SET), EO_TYPECHECK(Edje_Message_Handler_Cb, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def edje_obj_message_signal_process
- * @since 1.8
- *
- * @brief Process an object's message queue.
- *
- *
- * @see edje_object_message_signal_process
- */
-#define edje_obj_message_signal_process() EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_SIGNAL_PROCESS)
-
-
-/**
- * @def edje_obj_signal_callback_add
- * @since 1.8
- *
- * @brief Add a callback for an arriving Edje signal, emitted by
- * a given Ejde object.
- *
- * @param[in] emission
- * @param[in] source
- * @param[in] func
- * @param[in] data
- *
- * @see edje_object_signal_callback_add
- */
-#define edje_obj_signal_callback_add(emission, source, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_ADD), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source), EO_TYPECHECK(Edje_Signal_Cb, func), EO_TYPECHECK(void *, data)
-
-/**
- * @def edje_obj_signal_callback_del
- * @since 1.8
- *
- * @brief Remove a signal-triggered callback from an object.
- *
- * @param[in] emission
- * @param[in] source
- * @param[in] func
- * @param[out] ret
- *
- * @see edje_object_signal_callback_del
- */
-#define edje_obj_signal_callback_del(emission, source, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_DEL), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source), EO_TYPECHECK(Edje_Signal_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
-
-/**
- * @def edje_obj_signal_emit
- * @since 1.8
- *
- * @brief Send/emit an Edje signal to a given Edje object
- *
- * @param[in] emission
- * @param[in] source
- *
- * @see edje_object_signal_emit
- */
-#define edje_obj_signal_emit(emission, source) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_EMIT), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source)
-
-/**
- * @def edje_obj_play_set
- * @since 1.8
- *
- * @brief Set the Edje object to playing or paused states.
- *
- * @param[in] play
- *
- * @see edje_object_play_set
- */
-#define edje_obj_play_set(play) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PLAY_SET), EO_TYPECHECK(Eina_Bool, play)
-
-/**
- * @def edje_obj_play_get
- * @since 1.8
- *
- * @brief Get the Edje object's state.
- *
- * @param[out] ret
- *
- * @see edje_object_play_get
- */
-#define edje_obj_play_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PLAY_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-/**
- * @def edje_obj_animation_set
- * @since 1.8
- *
- * @brief Set the object's animation state.
- *
- * @param[in] on
- *
- * @see edje_object_animation_set
- */
-#define edje_obj_animation_set(on) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ANIMATION_SET), EO_TYPECHECK(Eina_Bool, on)
-
-/**
- * @def edje_obj_animation_get
- * @since 1.8
- *
- * @brief Get the Edje object's animation state.
- *
- * @param[out] ret
- *
- * @see edje_object_animation_get
- */
-#define edje_obj_animation_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ANIMATION_GET), EO_TYPECHECK(Eina_Bool *, ret)
-
-#define EDJE_EDIT_CLASS edje_edit_class_get()
-
-const Eo_Class *edje_edit_class_get(void) EINA_CONST;
-
-/**
- * @defgroup Edje_External_Part_Group Edje Use of External Parts
- *
- * @brief Functions to manipulate parts of type EXTERNAL.
- *
- * Edje supports parts of type EXTERNAL, which will call plugins defined by the user
- * to create and manipulate the object that's allocated in that part.
- *
- * Parts of type external may carry extra properties that have meanings defined
- * by the external plugin. For instance, it may be a string that defines a button
- * label and setting this property will change that label on the fly.
- *
- * @ingroup Edje_External_Group
- *
- * @{
- */
-
-/**
- * @brief Get the object created by this external part.
- *
- * Parts of type external creates the part object using information
- * provided by external plugins. It's somehow like "swallow"
- * (edje_object_part_swallow()), but it's all set automatically.
- *
- * This function returns the part created by such external plugins and
- * being currently managed by this Edje.
- *
- * @note Almost all swallow rules apply: you should not move, resize,
- * hide, show, set the color or clipper of such part. It's a bit
- * more restrictive as one must @b never delete this object!
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return The externally created object, or NULL if there is none or
- * part is not an external.
- */
-EAPI Evas_Object *edje_object_part_external_object_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the parameter for the external part.
- *
- * Parts of type external may carry extra properties that have
- * meanings defined by the external plugin. For instance, it may be a
- * string that defines a button label and setting this property will
- * change that label on the fly.
- *
- * @note external parts have parameters set when they change
- * states. Those parameters will never be changed by this
- * function. The interpretation of how state_set parameters and
- * param_set will interact is up to the external plugin.
- *
- * @note this function will not check if parameter value is valid
- * using #Edje_External_Param_Info minimum, maximum, valid
- * choices and others. However these should be checked by the
- * underlying implementation provided by the external
- * plugin. This is done for performance reasons.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param param the parameter details, including its name, type and
- * actual value. This pointer should be valid, and the
- * parameter must exist in
- * #Edje_External_Type::parameters_info, with the exact type,
- * otherwise the operation will fail and @c EINA_FALSE will be
- * returned.
- *
- * @return @c EINA_TRUE if everything went fine, @c EINA_FALSE on errors.
- */
-EAPI Eina_Bool edje_object_part_external_param_set (Evas_Object *obj, const char *part, const Edje_External_Param *param);
-
-/**
- * @brief Get the parameter for the external part.
- *
- * Parts of type external may carry extra properties that have
- * meanings defined by the external plugin. For instance, it may be a
- * string that defines a button label. This property can be modified by
- * state parameters, by explicit calls to
- * edje_object_part_external_param_set() or getting the actual object
- * with edje_object_part_external_object_get() and calling native
- * functions.
- *
- * This function asks the external plugin what is the current value,
- * independent on how it was set.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
-
- * @param param the parameter details. It is used as both input and
- * output variable. This pointer should be valid, and the
- * parameter must exist in
- * #Edje_External_Type::parameters_info, with the exact type,
- * otherwise the operation will fail and @c EINA_FALSE will be
- * returned.
- *
- * @return @c EINA_TRUE if everything went fine and @p param members
- * are filled with information, @c EINA_FALSE on errors and @p
- * param member values are not set or valid.
- */
-EAPI Eina_Bool edje_object_part_external_param_get (const Evas_Object *obj, const char *part, Edje_External_Param *param);
-
-/**
- * @brief Get an object contained in an part of type EXTERNAL
- *
- * The @p content string must not be NULL. Its actual value depends on the
- * code providing the EXTERNAL.
- *
- * @param obj The Edje object
- * @param part The name of the part holding the EXTERNAL
- * @param content A string identifying which content from the EXTERNAL to get
- */
-EAPI Evas_Object *edje_object_part_external_content_get (const Evas_Object *obj, const char *part, const char *content);
-
-/**
- * Facility to query the type of the given parameter of the given part.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param param the parameter name to use.
- *
- * @return @c EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value
- * from #Edje_External_Param_Type on success.
- */
-EAPI Edje_External_Param_Type edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_External_Plugin_Development_Group Edje Development of External Plugins
- *
- * @brief Functions to register, unregister EXTERNAL types and develop the plugins.
- *
- * This group dicusses functions useful for the development of new plugins.
- * These functions deal with the newly EXTERNAL types by registering, unregistering and manipulating them.
- *
- * @ingroup Edje_External_Group
- *
- * @{
- */
-
-/**
- * Register a type to be used by EXTERNAL parts.
- *
- * Parts of type EXTERNAL will call user defined functions
- * to create and manipulate the object that's allocated in that part. This is
- * done by expecifying in the @c source property of the part the name of the
- * external to use, which must be one registered with this function.
- *
- * @param type_name name to register and be known by edje's "source:"
- * parameter of "type: EXTERNAL" parts.
- * @param type_info meta-information describing how to interact with it.
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
- * type already registered).
- *
- * @see edje_external_type_array_register()
- */
-EAPI Eina_Bool edje_external_type_register (const char *type_name, const Edje_External_Type *type_info);
-
-/**
- * Unregister a previously registered EXTERNAL type.
- *
- * @param type_name name to unregister. It should have been registered with
- * edje_external_type_register() before.
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
- * type_name did not exist).
- *
- * @see edje_external_type_array_unregister()
- */
-EAPI Eina_Bool edje_external_type_unregister (const char *type_name);
-
-/**
- * Register a batch of types and their information.
- *
- * When several types will be registered it is recommended to use this
- * function instead of several calls to edje_external_type_register(), as it
- * is faster.
- *
- * @note The contents of the array will be referenced directly for as long as
- * the type remains registered, so both the @c name and @c info in the
- * @p array must be kept alive during all this period (usually, the entire
- * program lifetime). The most common case would be to keep the array as a
- * @c static @c const type anyway.
- *
- * @param array @c NULL terminated array with type name and
- * information. Note that type name or information are
- * referenced directly, so they must be kept alive after
- * this function returns!
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
- * type already registered).
- *
- * @see edje_external_type_register()
- */
-EAPI void edje_external_type_array_register (const Edje_External_Type_Info *array);
-
-/**
- * Unregister a batch of given external type previously registered.
- *
- * @param array @c NULL terminated array, should be the same as the
- * one used to register with edje_external_type_array_register()
- *
- * @see edje_external_type_unregister()
- */
-EAPI void edje_external_type_array_unregister (const Edje_External_Type_Info *array);
-
-/**
- * Return the current ABI version for Edje_External_Type structure.
- *
- * Always check this number before accessing Edje_External_Type in
- * your own software. If the number is not the same, your software may
- * access invalid memory and crash, or just get garbage values.
- *
- * @warning @b NEVER, EVER define your own Edje_External_Type using the
- * return of this function as it will change as Edje library
- * (libedje.so) changes, but your type definition will
- * not. Instead, use #EDJE_EXTERNAL_TYPE_ABI_VERSION.
- *
- * Summary:
- * - use edje_external_type_abi_version_get() to check.
- * - use #EDJE_EXTERNAL_TYPE_ABI_VERSION to define/declare.
- *
- * @return The external ABI version the Edje library was compiled with. That
- * is, the value #EDJE_EXTERNAL_TYPE_ABI_VERSION had at that moment.
- */
-EAPI unsigned int edje_external_type_abi_version_get (void) EINA_CONST;
-
-/**
- * Returns an interator of all the registered EXTERNAL types.
- *
- * Each item in the iterator is an @c Eina_Hash_Tuple which has the type
- * of the external in the @c key and #Edje_External_Type as @c data.
- *
- * @code
- * const Eina_Hash_Tuple *tuple;
- * Eina_Iterator *itr;
- * const Eina_List *l, *modules;
- * const char *s;
- *
- * modules = edje_available_modules_get();
- * EINA_LIST_FOREACH(modules, l, s)
- * {
- * if (!edje_module_load(s))
- * printf("Error loading edje module: %s\n", s);
- * }
- *
- * itr = edje_external_iterator_get();
- * EINA_ITERATOR_FOREACH(itr, tuple)
- * {
- * const char *name = tuple->key;
- * const Edje_External_Type *type = tuple->data;
- *
- * if ((!type) ||
- * (type->abi_version != edje_external_type_abi_version_get()))
- * {
- * printf("Error: invalid type %p (abi: %d, expected: %d)\n",
- * type, type ? type->abi_version : 0,
- * edje_external_type_abi_version_get());
- * continue;
- * }
- *
- * printf("%s: %s (%s) label='%s' desc='%s'\n",
- * name, type->module, type->module_name,
- * type->label_get ? type->label_get(type->data) : "",
- * type->description_get ? type->description_get(type->data) : "");
- * }
- *
- * @endcode
- */
-EAPI Eina_Iterator *edje_external_iterator_get (void);
-
-/**
- * Conevenience function to find a specific parameter in a list of them.
- *
- * @param params The list of parameters for the external
- * @param key The parameter to look for
- *
- * @return The matching #Edje_External_Param or NULL if it's not found.
- */
-EAPI Edje_External_Param *edje_external_param_find (const Eina_List *params, const char *key);
-
-/**
- * Get the value of the given parameter of integer type.
- *
- * Look for the @p key parameter in the @p params list and return its value in
- * @p ret. If the parameter is found and is of type
- * #EDJE_EXTERNAL_PARAM_TYPE_INT, its value will be stored in the int pointed
- * by @p ret, returning EINA_TRUE. In any other case, the function returns
- * EINA_FALSE.
- *
- * @param params List of parameters where to look
- * @param key Name of the parameter to fetch
- * @param ret Int pointer where to store the value, must not be NULL.
- *
- * @return EINA_TRUE if the parameter was found and is of integer type,
- * EINA_FALSE otherwise.
- */
-EAPI Eina_Bool edje_external_param_int_get (const Eina_List *params, const char *key, int *ret);
-
-/**
- * Get the value of the given parameter of double type.
- *
- * Look for the @p key parameter in the @p params list and return its value in
- * @p ret. If the parameter is found and is of type
- * #EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, its value will be stored in the double
- * pointed by @p ret, returning EINA_TRUE. In any other case, the function
- * returns EINA_FALSE.
- *
- * @param params List of parameters where to look
- * @param key Name of the parameter to fetch
- * @param ret Double pointer where to store the value, must not be NULL.
- *
- * @return EINA_TRUE if the parameter was found and is of double type,
- * EINA_FALSE otherwise.
- */
-EAPI Eina_Bool edje_external_param_double_get (const Eina_List *params, const char *key, double *ret);
-
-/**
- * Get the value of the given parameter of string type.
- *
- * Look for the @p key parameter in the @p params list and return its value in
- * @p ret. If the parameter is found and is of type
- * #EDJE_EXTERNAL_PARAM_TYPE_STRING, its value will be stored in the pointer
- * pointed by @p ret, returning EINA_TRUE. In any other case, the function
- * returns EINA_FALSE.
- *
- * The string stored in @p ret must not be freed or modified.
- *
- * @param params List of parameters where to look
- * @param key Name of the parameter to fetch
- * @param ret String pointer where to store the value, must not be NULL.
- *
- * @return EINA_TRUE if the parameter was found and is of string type,
- * EINA_FALSE otherwise.
- */
-EAPI Eina_Bool edje_external_param_string_get (const Eina_List *params, const char *key, const char **ret);
-
-/**
- * Get the value of the given parameter of boolean type.
- *
- * Look for the @p key parameter in the @p params list and return its value in
- * @p ret. If the parameter is found and is of type
- * #EDJE_EXTERNAL_PARAM_TYPE_BOOL, its value will be stored in the Eina_Bool
- * pointed by @p ret, returning EINA_TRUE. In any other case, the function
- * returns EINA_FALSE.
- *
- * @param params List of parameters where to look
- * @param key Name of the parameter to fetch
- * @param ret Eina_Bool pointer where to store the value, must not be NULL.
- *
- * @return EINA_TRUE if the parameter was found and is of boolean type,
- * EINA_FALSE otherwise.
- */
-EAPI Eina_Bool edje_external_param_bool_get (const Eina_List *params, const char *key, Eina_Bool *ret);
-
-/**
- * Get the value of the given parameter of choice type.
- *
- * Look for the @p key parameter in the @p params list and return its value in
- * @p ret. If the parameter is found and is of type
- * #EDJE_EXTERNAL_PARAM_TYPE_CHOICE, its value will be stored in the string
- * pointed by @p ret, returning EINA_TRUE. In any other case, the function
- * returns EINA_FALSE.
- *
- * The string stored in @p ret must not be freed or modified.
- *
- * @param params List of parameters where to look
- * @param key Name of the parameter to fetch
- * @param ret String pointer where to store the value, must not be NULL.
- *
- * @return EINA_TRUE if the parameter was found and is of integer type,
- * EINA_FALSE otherwise.
- */
-EAPI Eina_Bool edje_external_param_choice_get (const Eina_List *params, const char *key, const char **ret);
-
-/**
- * Get the array of parameters information about a type given its name.
- *
- * @note the type names and other strings are static, that means they are
- * @b NOT translated. One must use
- * Edje_External_Type::translate() to translate those.
- *
- * @return the NULL terminated array, or @c NULL if type is unknown or
- * it does not have any parameter information.
- *
- * @see edje_external_type_get()
- */
-EAPI const Edje_External_Param_Info *edje_external_param_info_get (const char *type_name);
-
-/**
- * Get the #Edje_External_Type that defines an EXTERNAL type registered with
- * the name @p type_name.
- */
-EAPI const Edje_External_Type *edje_external_type_get (const char *type_name);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Group Edje Object
- * @ingroup Edje
- *
- * @brief This group discusses functions that deal with Edje layouts and its components
- *
- * An important thing to know about this group is that there is no
- * Edje_Object in @b code. What we refer here as object are layouts (or themes)
- * defined by groups, and parts, both declared in EDC files. They are of
- * type Evas_Object as the other native objects of Evas, but they only exist
- * in Edje, so that is why we are calling them "edje objects".
- *
- * With the Edje Object Group functions we can deal with layouts by managing
- * its aspect, content, message and signal exchange and animation, among others.
- *
- * @{
- */
-
-/**
- * @brief Instantiate a new Edje object
- *
- * @param evas A valid Evas handle, the canvas to place the new object
- * in
- * @return A handle to the new object created or @c NULL, on errors.
- *
- * This function creates a new Edje smart object, returning its @c
- * Evas_Object handle. An Edje object is useless without a (source)
- * file set to it, so you'd most probably call edje_object_file_set()
- * afterwards, like in:
- * @code
- * Evas_Object *edje;
- *
- * edje = edje_object_add(canvas);
- * if (!edje)
- * {
- * fprintf(stderr, "could not create edje object!\n");
- * return NULL;
- * }
- *
- * if (!edje_object_file_set(edje, "theme.edj", "group_name"))
- * {
- * int err = edje_object_load_error_get(edje);
- * const char *errmsg = edje_load_error_str(err);
- * fprintf(stderr, "could not load 'group_name' from theme.edj: %s",
- * errmsg);
- *
- * evas_object_del(edje);
- * return NULL;
- * }
- *
- * @endcode
- *
- * @note You can get a callback every time edje re-calculates the object
- * (either due to animation or some kind of signal or input). This is called
- * in-line just after the recalculation has occurred. It is a good idea not
- * to go and delete or alter the object inside this callbacks, simply make
- * a note that the recalculation has taken place and then do something about
- * it outside the callback. to register a callback use code like:
- *
- * @code
- * evas_object_smart_callback_add(edje_obj, "recalc", my_cb, my_cb_data);
- * @endcode
- *
- * @see evas_object_smart_callback_add()
- *
- * @note Before creating the first Edje object in your code, remember
- * to initialize the library, with edje_init(), or unexpected behavior
- * might occur.
- */
-EAPI Evas_Object *edje_object_add (Evas *evas);
-
-/**
- * @brief Preload the images on the Edje Object in the background.
- *
- * @param obj A handle to an Edje object
- * @param cancel @c EINA_FALSE will add it the preloading work queue,
- * @c EINA_TRUE will remove it (if it was issued before).
- * @return @c EINA_FASLE if obj was not a valid Edje object
- * otherwise @c EINA_TRUE
- *
- * This function requests the preload of all data images (on the given
- * object) in the background. The work is queued before being processed
- * (because there might be other pending requests of this type).
- * It emits a signal "preload,done" when finished.
- *
- * @note Use @c EINA_TRUE on scenarios where you don't need
- * the image data preloaded anymore.
- */
-EAPI Eina_Bool edje_object_preload (Evas_Object *obj, Eina_Bool cancel);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Scale Edje Scale
- *
- * @brief Functions that deal with scaling objects
- *
- * Edje allows one to build scalable interfaces. Scaling factors,
- * which are set to neutral (@c 1.0) values by default (no scaling,
- * actual sizes), are of two types: @b global and @b individual.
- *
- * Scaling affects the values of minimum/maximum @b part sizes, which
- * are @b multiplied by it. Font sizes are scaled, too.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-/**
- * @brief Set Edje's global scaling factor.
- *
- * @param scale The global scaling factor (the default value is @c 1.0)
- *
- * Edje's global scaling factor will affect all its objects which
- * hadn't their individual scaling factors altered from the default
- * value (which is zero). If they had it set differently, by
- * edje_object_scale_set(), that factor will @b override the global
- * one.
- *
- * @warning Only parts which, at EDC level, had the @c "scale"
- * property set to @c 1, will be affected by this function. Check the
- * complete @ref edcref "syntax reference" for EDC files.
- *
- * @see edje_scale_get().
- */
-EAPI void edje_scale_set (double scale);
-
-/**
- * @brief Retrieve Edje's global scaling factor.
- *
- * @return The global scaling factor
- *
- * This function returns Edje's global scaling factor.
- *
- * @see edje_scale_set() for more details
- *
- */
-EAPI double edje_scale_get (void);
-
-/**
- * @brief Set the scaling factor for a given Edje object.
- *
- * @param obj A handle to an Edje object
- * @param scale The scaling factor (the default value is @c 0.0,
- * meaning individual scaling @b not set)
- *
- * This function sets an @b individual scaling factor on the @a obj
- * Edje object. This property (or Edje's global scaling factor, when
- * applicable), will affect this object's part sizes. If @p scale is
- * not zero, than the individual scaling will @b override any global
- * scaling set, for the object @p obj's parts. Put it back to zero to
- * get the effects of the global scaling again.
- *
- * @warning Only parts which, at EDC level, had the @c "scale"
- * property set to @c 1, will be affected by this function. Check the
- * complete @ref edcref "syntax reference" for EDC files.
- *
- * @see edje_object_scale_get()
- * @see edje_scale_get() for more details
- */
-EAPI Eina_Bool edje_object_scale_set (Evas_Object *obj, double scale);
-
-/**
- * @brief Get a given Edje object's scaling factor.
- *
- * @param obj A handle to an Edje object
- *
- * This function returns the @c individual scaling factor set on the
- * @a obj Edje object.
- *
- * @see edje_object_scale_set() for more details
- *
- */
-EAPI double edje_object_scale_get (const Evas_Object *obj);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Color_Class Edje Class: Color
- *
- * @brief Functions that deal with Color Classes
- *
- * Sometimes we want to change the color of two or more parts equally and
- * that's when we use color classes.
- *
- * If one or more parts are assigned with a color class, when we set color
- * values to this class it will cause all these parts to have their colors
- * multiplied by the values. Setting values to a color class at a process level
- * will affect all parts with that color class, while at a object level will
- * affect only the parts inside an specified object.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-/**
- * @brief Set Edje color class.
- *
- * @param color_class
- * @param r Object Red value
- * @param g Object Green value
- * @param b Object Blue value
- * @param a Object Alpha value
- * @param r2 Outline Red value
- * @param g2 Outline Green value
- * @param b2 Outline Blue value
- * @param a2 Outline Alpha value
- * @param r3 Shadow Red value
- * @param g3 Shadow Green value
- * @param b3 Shadow Blue value
- * @param a3 Shadow Alpha value
- *
- * This function sets the color values for a process level color
- * class. This will cause all edje parts in the current process that
- * have the specified color class to have their colors multiplied by
- * these values. (Object level color classes set by
- * edje_object_color_class_set() will override the values set by this
- * function).
- *
- * The first color is the object, the second is the text outline, and
- * the third is the text shadow. (Note that the second two only apply
- * to text parts).
- *
- * Setting color emits a signal "color_class,set" with source being
- * the given color class in all objects.
- *
- * @see edje_color_class_set().
- *
- * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
- * half-transparent white is 255 255 255 128.
- */
-EAPI Eina_Bool edje_color_class_set (const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
-
-/**
- * @brief Get Edje color class.
- *
- * @param color_class
- * @param r Object Red value
- * @param g Object Green value
- * @param b Object Blue value
- * @param a Object Alpha value
- * @param r2 Outline Red value
- * @param g2 Outline Green value
- * @param b2 Outline Blue value
- * @param a2 Outline Alpha value
- * @param r3 Shadow Red value
- * @param g3 Shadow Green value
- * @param b3 Shadow Blue value
- * @param a3 Shadow Alpha value
- *
- * @return EINA_TRUE if found or EINA_FALSE if not found and all
- * values are zeroed.
- *
- * This function gets the color values for a process level color
- * class. This value is the globally set and not per-object, that is,
- * the value that would be used by objects if they did not override with
- * edje_object_color_class_set().
- *
- * The first color is the object, the second is the text outline, and
- * the third is the text shadow. (Note that the second two only apply
- * to text parts).
- *
- * @see edje_color_class_set().
- *
- * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
- * half-transparent white is 255 255 255 128.
- */
-EAPI Eina_Bool edje_color_class_get (const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
-
-/**
- * @brief Delete edje color class.
- *
- * @param color_class
- *
- * This function deletes any values at the process level for the
- * specified color class.
- * @note Deleting the color class will revert it to the
- * values defined in the theme file.
- *
- * Deleting the color class will emit the signal "color_class,del"
- * to all the Edje objects in the running program.
- */
-EAPI void edje_color_class_del (const char *color_class);
-
-/**
- * @brief Lists color classes.
- *
- * @return A list of color class names (strings). These strings and
- * the list must be free()'d by the caller.
- *
- * This function lists all color classes known about by the current
- * process.
- *
- */
-EAPI Eina_List *edje_color_class_list (void);
-
-/**
- * @brief Sets the object color class.
- *
- * @param obj A valid Evas_Object handle
- * @param color_class
- * @param r Object Red value
- * @param g Object Green value
- * @param b Object Blue value
- * @param a Object Alpha value
- * @param r2 Outline Red value
- * @param g2 Outline Green value
- * @param b2 Outline Blue value
- * @param a2 Outline Alpha value
- * @param r3 Shadow Red value
- * @param g3 Shadow Green value
- * @param b3 Shadow Blue value
- * @param a3 Shadow Alpha value
- *
- * This function sets the color values for an object level color
- * class. This will cause all edje parts in the specified object that
- * have the specified color class to have their colors multiplied by
- * these values.
- *
- * The first color is the object, the second is the text outline, and
- * the third is the text shadow. (Note that the second two only apply
- * to text parts).
- *
- * Setting color emits a signal "color_class,set" with source being
- * the given color.
- *
- * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
- * half-transparent white is 255 255 255 128.
- */
-EAPI Eina_Bool edje_object_color_class_set (Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
-
-/**
- * @brief Gets the object color class.
- *
- * @param o A valid Evas_Object handle
- * @param color_class
- * @param r Object Red value
- * @param g Object Green value
- * @param b Object Blue value
- * @param a Object Alpha value
- * @param r2 Outline Red value
- * @param g2 Outline Green value
- * @param b2 Outline Blue value
- * @param a2 Outline Alpha value
- * @param r3 Shadow Red value
- * @param g3 Shadow Green value
- * @param b3 Shadow Blue value
- * @param a3 Shadow Alpha value
- *
- * @return EINA_TRUE if found or EINA_FALSE if not found and all
- * values are zeroed.
- *
- * This function gets the color values for an object level color
- * class. If no explicit object color is set, then global values will
- * be used.
- *
- * The first color is the object, the second is the text outline, and
- * the third is the text shadow. (Note that the second two only apply
- * to text parts).
- *
- * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
- * half-transparent white is 255 255 255 128.
- */
-EAPI Eina_Bool edje_object_color_class_get (const Evas_Object *o, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
-
-/**
- * @brief Delete the object color class.
- *
- * @param obj The edje object's reference.
- * @param color_class The color class to be deleted.
- *
- * This function deletes any values at the object level for the
- * specified object and color class.
- * @note Deleting the color class will revert it to the values
- * defined by edje_color_class_set() or the color class
- * defined in the theme file.
- *
- * Deleting the color class will emit the signal "color_class,del"
- * for the given Edje object.
- */
- EAPI void edje_object_color_class_del (Evas_Object *obj, const char *color_class);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Text_Class Edje Class: Text
- *
- * @brief Functions that deal with Text Classes
- *
- * Sometimes we want to change the text of two or more parts equally and
- * that's when we use text classes.
- *
- * If one or more parts are assigned with a text class, when we set font
- * attributes to this class will update all these parts with the new font
- * attributes. Setting values to a text class at a process level will affect
- * all parts with that text class, while at object level will affect only
- * the parts inside an specified object.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-/**
- * @brief Set the Edje text class.
- *
- * @param text_class The text class name
- * @param font The font name
- * @param size The font size
- *
- * @return @c EINA_TRUE, on success or @c EINA_FALSE, on error
- *
- * This function updates all Edje members at the process level which
- * belong to this text class with the new font attributes.
- * If the @p size is 0 then the font size will be kept with the previous size.
- * If the @p size is less then 0 then the font size will be calculated in the
- * percentage. For example, if the @p size is -50, then the font size will be
- * scaled to half of the original size and if the @p size is -10 then the font
- * size will be scaled as much as 0.1x.
- *
- * @see edje_text_class_get().
- *
- */
-EAPI Eina_Bool edje_text_class_set (const char *text_class, const char *font, Evas_Font_Size size);
-
-/**
- * @brief Delete the text class.
- *
- * @param text_class The text class name string
- *
- * This function deletes any values at the process level for the
- * specified text class.
- *
- */
-EAPI void edje_text_class_del (const char *text_class);
-
-/**
- * @brief List text classes.
- *
- * @return A list of text class names (strings). These strings are
- * stringshares and the list must be free()'d by the caller.
- *
- * This function lists all text classes known about by the current
- * process.
- *
- */
-EAPI Eina_List *edje_text_class_list (void);
-
-/**
- * @brief Sets Edje text class.
- *
- * @param obj A valid Evas_Object handle
- * @param text_class The text class name
- * @param font Font name
- * @param size Font Size
- *
- * @return @c EINA_TRUE, on success or @c EINA_FALSE, on error
- *
- * This function sets the text class for the Edje.
- *
- */
-EAPI Eina_Bool edje_object_text_class_set (Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_File Edje Object File
- *
- * @brief Functions to deals with EDJ files.
- *
- * Layouts in Edje are usually called themes and they are
- * created using the EDC language. The EDC language is declarative
- * and must be compiled before being used. The output of this
- * compilation is an EDJ file, this file can be loaded by Edje,
- * and the result is a edje object.
- *
- * This groups of functions interact with these EDJ files,
- * either by loading them or retrieving information of the EDC
- * file about objects.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-typedef enum _Edje_Load_Error
-{
- EDJE_LOAD_ERROR_NONE = 0, /**< No error happened, the loading was successful */
- EDJE_LOAD_ERROR_GENERIC = 1, /**< A generic error happened during the loading */
- EDJE_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< The file pointed to did not exist */
- EDJE_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission to read the given file was denied */
- EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Resource allocation failed during the loading */
- EDJE_LOAD_ERROR_CORRUPT_FILE = 5, /**< The file pointed to was corrupt */
- EDJE_LOAD_ERROR_UNKNOWN_FORMAT = 6, /**< The file pointed to had an unknown format */
- EDJE_LOAD_ERROR_INCOMPATIBLE_FILE = 7, /**< The file pointed to is incompatible, i.e., it doesn't match the library's current version's format */
- EDJE_LOAD_ERROR_UNKNOWN_COLLECTION = 8, /**< The group/collection set to load from was @b not found in the file */
- EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = 9 /**< The group/collection set to load from had recursive references on its components */
-} Edje_Load_Error; /**< Edje file loading error codes one can get - see edje_load_error_str() too. */
-
-/**
- * Get a list of groups in an edje file
- * @param file The path to the edje file
- *
- * @return The Eina_List of group names (char *)
- *
- * Note: the list must be freed using edje_file_collection_list_free()
- * when you are done with it.
- */
-EAPI Eina_List *edje_file_collection_list (const char *file);
-
-/**
- * Free file collection list
- * @param lst The Eina_List of groups
- *
- * Frees the list returned by edje_file_collection_list().
- */
-EAPI void edje_file_collection_list_free (Eina_List *lst);
-
-/**
- * Determine whether a group matching glob exists in an edje file.
- * @param file The file path
- * @param glob A glob to match on
- *
- * @return 1 if a match is found, 0 otherwise
- */
-EAPI Eina_Bool edje_file_group_exists (const char *file, const char *glob);
-
-/**
- * @brief Retrive an EDC data field's value from a given Edje
- * object's group.
- *
- * @param obj A handle to an Edje object
- * @param key The data field's key string
- * @return The data's value string. Must not be freed.
- *
- * This function fetches an EDC data field's value, which is declared
- * on the objects building EDC file, under its group. EDC data
- * blocks are most commonly used to pass arbitrary parameters from an
- * application's theme to its code.
- *
- * They look like the following:
- *
- * @code
- * collections {
- * group {
- * name: "a_group";
- * data {
- * item: "key1" "value1";
- * item: "key2" "value2";
- * }
- * }
- * }
- * @endcode
- *
- * EDC data fields always hold @b strings as values, hence the return
- * type of this function. Check the complete @ref edcref "syntax reference"
- * for EDC files.
- *
- * @warning Do not confuse this call with edje_file_data_get(), which
- * queries for a @b global EDC data field on an EDC declaration file.
- *
- * @see edje_object_file_set()
- */
-EAPI const char *edje_object_data_get (const Evas_Object *obj, const char *key);
-
-/**
- * @brief Sets the @b EDJ file (and group within it) to load an Edje
- * object's contents from
- *
- * @param obj A handle to an Edje object
- * @param file The path to the EDJ file to load @p from
- * @param group The name of the group, in @p file, which implements an
- * Edje object
- * @return @c EINA_TRUE, on success or @c EINA_FALSE, on errors (check
- * edje_object_load_error_get() after this call to get errors causes)
- *
- * Edje expects EDJ files, which are theming objects' descriptions and
- * resources packed together in an EET file, to read Edje object
- * definitions from. They usually are created with the @c .edj
- * extension. EDJ files, in turn, are assembled from @b textual object
- * description files, where one describes Edje objects declaratively
- * -- the EDC files (see @ref edcref "the syntax" for those files).
- *
- * Those description files were designed so that many Edje object
- * definitions -- also called @b groups (or collections) -- could be
- * packed together in the same EDJ file, so that a whole
- * application's theme could be packed in one file only. This is the
- * reason for the @p group argument.
- *
- * Use this function after you instantiate a new Edje object, so that
- * you can "give him life", telling where to get its contents from.
- *
- * @see edje_object_add()
- * @see edje_object_file_get()
- */
-EAPI Eina_Bool edje_object_file_set (Evas_Object *obj, const char *file, const char *group);
-
-/**
- * @brief Get the file and group name that a given Edje object is bound to
- *
- * @param obj A handle to an Edje object
- * @param file A pointer to a variable whero to store the file's
- * path
- * @param group A pointer to a variable where to store the group
- * name in
- *
- * This gets the EDJ file's path, with the respective group set for
- * the given Edje object. If @a obj is either not an Edje file, or has
- * not had its file/group set previously, by edje_object_file_set(),
- * then both @p file and @p group will be set to @c NULL, indicating
- * an error.
- *
- * @see edje_object_file_set()
- *
- * @note Use @c NULL pointers on the file/group components you're not
- * interested in: they'll be ignored by the function.
- */
-EAPI void edje_object_file_get (const Evas_Object *obj, const char **file, const char **group);
-
-/**
- * @brief Gets the (last) file loading error for a given Edje object
- *
- * @param obj A handlet to an Edje object
- *
- * @return The Edje loading error, one of:
- * - #EDJE_LOAD_ERROR_NONE
- * - #EDJE_LOAD_ERROR_GENERIC
- * - #EDJE_LOAD_ERROR_DOES_NOT_EXIST
- * - #EDJE_LOAD_ERROR_PERMISSION_DENIED
- * - #EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED
- * - #EDJE_LOAD_ERROR_CORRUPT_FILE
- * - #EDJE_LOAD_ERROR_UNKNOWN_FORMAT
- * - #EDJE_LOAD_ERROR_INCOMPATIBLE_FILE
- * - #EDJE_LOAD_ERROR_UNKNOWN_COLLECTION
- * - #EDJE_LOAD_ERROR_RECURSIVE_REFERENCE
- *
- * This function is meant to be used after an Edje EDJ file
- * loading, what takes place with the edje_object_file_set()
- * function. If that function does not return @c EINA_TRUE, one should
- * check for the reason of failure with this one.
- *
- * @see edje_load_error_str()
- */
-EAPI Edje_Load_Error edje_object_load_error_get (const Evas_Object *obj);
-
-/**
- * Converts the given Edje file load error code into a string
- * describing it in English.
- *
- * @param error the error code, a value in ::Edje_Load_Error.
- * @return Always returns a valid string. If the given @p error is not
- * supported, "Unknown error"
is returned.
- *
- * edje_object_file_set() is a function which sets an error value,
- * afterwards, which can be fetched with
- * edje_object_load_error_get(). The function in question is meant
- * to be used in conjunction with the latter, for pretty-printing any
- * possible error cause.
- */
-EAPI const char *edje_load_error_str (Edje_Load_Error error);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Communication_Interface_Signal Edje Communication Interface: Signal
- *
- * @brief Functions that deal with signals.
- *
- * Edje has two communication interfaces between @b code and @b theme.
- * Signals and messages.
- *
- * This group has functions that deal with signals. One can either
- * emit a signal from @b code to a @b theme or create handles for
- * the ones emitted from @b themes. Signals are identified by strings.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-typedef void (*Edje_Signal_Cb) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Edje signal callback functions's prototype definition. @c data will have the auxiliary data pointer set at the time the callback registration. @c obj will be a pointer the Edje object where the signal comes from. @c emission will identify the exact signal's emission string and @c source the exact signal's source one. */
-
-/**
- * @brief Add a callback for an arriving Edje signal, emitted by
- * a given Edje object.
- *
- * @param obj A handle to an Edje object
- * @param emission The signal's "emission" string
- * @param source The signal's "source" string
- * @param func The callback function to be executed when the signal is
- * emitted.
- * @param data A pointer to data to pass in to @p func.
- *
- * Edje signals are one of the communication interfaces between
- * @b code and a given Edje object's @b theme. With signals, one can
- * communicate two string values at a time, which are:
- * - "emission" value: the name of the signal, in general
- * - "source" value: a name for the signal's context, in general
- *
- * Though there are those common uses for the two strings, one is free
- * to use them however they like.
- *
- * This function adds a callback function to a signal emitted by @a obj, to
- * be issued every time an EDC program like the following
- * @code
- * program {
- * name: "emit_example";
- * action: SIGNAL_EMIT "a_signal" "a_source";
- * }
- * @endcode
- * is run, if @p emission and @p source are given those same values,
- * here.
- *
- * Signal callback registration is powerful, in the way that @b blobs
- * may be used to match multiple signals at once. All the @c
- * "*?[\" set of @c fnmatch() operators can be used, both for @p
- * emission and @p source.
- *
- * Edje has @b internal signals it will emit, automatically, on
- * various actions taking place on group parts. For example, the mouse
- * cursor being moved, pressed, released, etc., over a given part's
- * area, all generate individual signals.
- *
- * By using something like
- * @code
- * edje_object_signal_callback_add(obj, "mouse,down,*", "button.*",
- * signal_cb, NULL);
- * @endcode
- * being @c "button.*" the pattern for the names of parts implementing
- * buttons on an interface, you'd be registering for notifications on
- * events of mouse buttons being pressed down on either of those parts
- * (those events all have the @c "mouse,down," common prefix on their
- * names, with a suffix giving the button number). The actual emission
- * and source strings of an event will be passed in as the @a emission
- * and @a source parameters of the callback function (e.g. @c
- * "mouse,down,2" and @c "button.close"), for each of those events.
- *
- * @note See @ref edcref "the syntax" for EDC files
- * @see edje_object_signal_emit() on how to emits Edje signals from
- * code to a an object
- * @see edje_object_signal_callback_del_full()
- */
-EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
-
-/**
- * @brief Remove a signal-triggered callback from an object.
- *
- * @param obj A valid Evas_Object handle.
- * @param emission The emission string.
- * @param source The source string.
- * @param func The callback function.
- * @return The data pointer
- *
- * This function removes a callback, previously attached to the
- * emittion of a signal, from the object @a obj. The parameters @a
- * emission, @a source and @a func must match exactly those passed to
- * a previous call to edje_object_signal_callback_add(). The data
- * pointer that was passed to this call will be returned.
- *
- * @see edje_object_signal_callback_add().
- * @see edje_object_signal_callback_del_full().
- *
- */
-EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
-
-/**
- * @brief Unregister/delete a callback set for an arriving Edje
- * signal, emitted by a given Edje object.
- *
- * @param obj A handle to an Edje object
- * @param emission The signal's "emission" string
- * @param source The signal's "source" string
- * @param func The callback function passed on the callback's
- * registration
- * @param data The pointer given to be passed as data to @p func
- * @return @p data, on success or @c NULL, on errors (or if @p data
- * had this value)
- *
- * This function removes a callback, previously attached to the
- * emittion of a signal, from the object @a obj. The parameters
- * @a emission, @a source, @a func and @a data must match exactly those
- * passed to a previous call to edje_object_signal_callback_add(). The
- * data pointer that was passed to this call will be returned.
- *
- * @see edje_object_signal_callback_add().
- * @see edje_object_signal_callback_del().
- *
- */
-EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
-
-/**
- * @brief Send/emit an Edje signal to a given Edje object
- *
- * @param obj A handle to an Edje object
- * @param emission The signal's "emission" string
- * @param source The signal's "source" string
- *
- * This function sends a signal to the object @a obj. An Edje program,
- * at @p obj's EDC specification level, can respond to a signal by
- * having declared matching @c 'signal' and @c 'source' fields on its
- * block (see @ref edcref "the syntax" for EDC files).
- *
- * As an example,
- * @code
- * edje_object_signal_emit(obj, "a_signal", "");
- * @endcode
- * would trigger a program which had an EDC declaration block like
- * @code
- * program {
- * name: "a_program";
- * signal: "a_signal";
- * source: "";
- * action: ...
- * }
- * @endcode
- *
- * @see edje_object_signal_callback_add() for more on Edje signals.
- */
-EAPI void edje_object_signal_emit (Evas_Object *obj, const char *emission, const char *source);
-
-/**
- * @brief Get extra data passed to callbacks.
- *
- * @return the extra data for that callback.
- *
- * Some callbacks pass extra information. This function gives access to that
- * extra information. It's somehow like event_info in smart callbacks.
- *
- * @see edje_object_signal_callback_add() for more on Edje signals.
- * @since 1.1.0
- */
-EAPI void * edje_object_signal_callback_extra_data_get(void);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Animation Edje Object Animation
- *
- * @brief Functions that deal with animations.
- *
- * Edje has the ability to animate objects. One can start, stop, play,
- * pause, freeze and thaw edje animations using the functions of this section.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-typedef enum _Edje_Tween_Mode
-{
- EDJE_TWEEN_MODE_NONE = 0,
- EDJE_TWEEN_MODE_LINEAR = 1,
- EDJE_TWEEN_MODE_SINUSOIDAL = 2,
- EDJE_TWEEN_MODE_ACCELERATE = 3,
- EDJE_TWEEN_MODE_DECELERATE = 4,
- EDJE_TWEEN_MODE_ACCELERATE_FACTOR = 5,
- EDJE_TWEEN_MODE_DECELERATE_FACTOR = 6,
- EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR = 7,
- EDJE_TWEEN_MODE_DIVISOR_INTERP = 8,
- EDJE_TWEEN_MODE_BOUNCE = 9,
- EDJE_TWEEN_MODE_SPRING = 10,
- EDJE_TWEEN_MODE_LAST = 11,
- EDJE_TWEEN_MODE_MASK = 0xff,
- EDJE_TWEEN_MODE_OPT_FROM_CURRENT = (1 << 31)
-} Edje_Tween_Mode;
-
-typedef enum _Edje_Action_Type
-{
- EDJE_ACTION_TYPE_NONE = 0,
- EDJE_ACTION_TYPE_STATE_SET = 1,
- EDJE_ACTION_TYPE_ACTION_STOP = 2,
- EDJE_ACTION_TYPE_SIGNAL_EMIT = 3,
- EDJE_ACTION_TYPE_DRAG_VAL_SET = 4,
- EDJE_ACTION_TYPE_DRAG_VAL_STEP = 5,
- EDJE_ACTION_TYPE_DRAG_VAL_PAGE = 6,
- EDJE_ACTION_TYPE_SCRIPT = 7,
- EDJE_ACTION_TYPE_FOCUS_SET = 8,
- EDJE_ACTION_TYPE_RESERVED00 = 9,
- EDJE_ACTION_TYPE_FOCUS_OBJECT = 10,
- EDJE_ACTION_TYPE_PARAM_COPY = 11,
- EDJE_ACTION_TYPE_PARAM_SET = 12,
- EDJE_ACTION_TYPE_SOUND_SAMPLE = 13, /**< @since 1.1 */
- EDJE_ACTION_TYPE_SOUND_TONE = 14, /**< @since 1.1 */
- EDJE_ACTION_TYPE_PHYSICS_IMPULSE = 15, /**< @since 1.8 */
- EDJE_ACTION_TYPE_PHYSICS_TORQUE_IMPULSE = 16, /**< @since 1.8 */
- EDJE_ACTION_TYPE_PHYSICS_FORCE = 17, /**< @since 1.8 */
- EDJE_ACTION_TYPE_PHYSICS_TORQUE = 18, /**< @since 1.8 */
- EDJE_ACTION_TYPE_PHYSICS_FORCES_CLEAR = 19, /**< @since 1.8 */
- EDJE_ACTION_TYPE_PHYSICS_VEL_SET = 20, /**< @since 1.8 */
- EDJE_ACTION_TYPE_PHYSICS_ANG_VEL_SET = 21, /**< @since 1.8 */
- EDJE_ACTION_TYPE_PHYSICS_STOP = 22, /**< @since 1.8 */
- EDJE_ACTION_TYPE_PHYSICS_ROT_SET = 23, /**< @since 1.8 */
- EDJE_ACTION_TYPE_LAST = 24
-} Edje_Action_Type;
-
-/**
- * @brief Set edje trasitions' frame time.
- *
- * @param t The frame time, in seconds. Default value is 1/30.
- *
- * This function sets the edje built-in animations' frame time (thus,
- * affecting their resolution) by calling
- * ecore_animator_frametime_set(). This frame time can be retrieved
- * with edje_frametime_get().
- *
- * @see edje_frametime_get()
- *
- */
-EAPI void edje_frametime_set (double t);
-
-/**
- * @brief Get edje trasitions' frame time.
- *
- * @return The frame time, in seconds.
- *
- * This function returns the edje frame time set by
- * edje_frametime_set() or the default value 1/30.
- *
- * @see edje_frametime_set()
- *
- */
-EAPI double edje_frametime_get (void);
-
-/**
- * @brief Freeze Edje objects.
- *
- * This function freezes all Edje animations in the current process.
- *
- * @note: for freeze a specific object @see edje_object_freeze().
- *
- * @see edje_thaw()
- *
- */
-EAPI void edje_freeze (void);
-
-/**
- * @brief Thaw Edje objects.
- *
- * This function thaws all Edje animations in the current process.
- *
- * @note for thaw a specific object @see edje_object_thaw().
- *
- * @see edje_freeze()
- *
- */
-EAPI void edje_thaw (void);
-
-/**
- * @brief Set the Edje object to playing or paused states.
- *
- * @param obj A handle to an Edje object.
- * @param play Object state (@c EINA_TRUE to playing,
- * @c EINA_FALSE to paused).
- *
- * This function sets the Edje object @a obj to playing or paused
- * states, depending on the parameter @a play. This has no effect if
- * the object was already at that state.
- *
- * @see edje_object_play_get().
- *
- */
-EAPI void edje_object_play_set (Evas_Object *obj, Eina_Bool play);
-
-/**
- * @brief Get the Edje object's state.
- *
- * @param obj A handle to an Edje object.
- * @return @c EINA_FALSE if the object is not connected, its @c delete_me flag
- * is set, or it is at paused state; @c EINA_TRUE if the object is at playing
- * state.
- *
- * This function tells if an Edje object is playing or not. This state
- * is set by edje_object_play_set().
- *
- * @see edje_object_play_set().
- *
- */
-EAPI Eina_Bool edje_object_play_get (const Evas_Object *obj);
-
-/**
- * @brief Set the object's animation state.
- *
- * @param obj A handle to an Edje object.
- * @param on The animation state. @c EINA_TRUE to starts or
- * @c EINA_FALSE to stops.
- *
- * This function starts or stops an Edje object's animation. The
- * information if it's stopped can be retrieved by
- * edje_object_animation_get().
- *
- * @see edje_object_animation_get()
- *
- */
-EAPI void edje_object_animation_set (Evas_Object *obj, Eina_Bool on);
-
-/**
- * @brief Get the Edje object's animation state.
- *
- * @param obj A handle to an Edje object.
- * @return @c EINA_FALSE on error or if object is not animated;
- * @c EINA_TRUE if animated.
- *
- * This function returns if the animation is stopped or not. The
- * animation state is set by edje_object_animation_set().
- *
- * @see edje_object_animation_set().
- *
- */
-EAPI Eina_Bool edje_object_animation_get (const Evas_Object *obj);
-
-/**
- * @brief Freezes the Edje object.
- *
- * @param obj A handle to an Edje object.
- * @return The frozen state or 0 on Error
- *
- * This function puts all changes on hold. Successive freezes will
- * nest, requiring an equal number of thaws.
- *
- * @see edje_object_thaw()
- */
-EAPI int edje_object_freeze (Evas_Object *obj);
-
-/**
- * @brief Thaws the Edje object.
- *
- * @param obj A handle to an Edje object.
- * @return The frozen state or 0 if the object is not frozen or on error.
- *
- * This function thaws the given Edje object.
- *
- * @note: If sucessives freezes were done, an equal number of
- * thaws will be required.
- *
- * @see edje_object_freeze()
- */
-EAPI int edje_object_thaw (Evas_Object *obj);
-
-/**
- * @brief Returns the state of the Edje part.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param val_ret
- *
- * @return The part state:\n
- * "default" for the default state\n
- * "" for other states
- */
-EAPI const char *edje_object_part_state_get (const Evas_Object *obj, const char *part, double *val_ret);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Geometry_Group Edje Object Geometry
- *
- * @brief Functions that deal with object's geometry.
- *
- * By geometry we mean size and position. So in this groups there are
- * functions to manipulate object's geometry or retrieve information
- * about it.
- *
- * Keep in mind that by changing an object's geometry, it may affect
- * the appearance in the screen of the parts inside. Most times
- * that is what you want.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-/**
- * @brief Get the minimum size specified -- as an EDC property -- for a
- * given Edje object
- *
- * @param obj A handle to an Edje object
- * @param minw Pointer to a variable where to store the minimum width
- * @param minh Pointer to a variable where to store the minimum height
- *
- * This function retrieves the @p obj object's minimum size values,
- * as declared in its EDC group definition. Minimum size of
- * groups have the following syntax
- * @code
- * collections {
- * group {
- * name: "a_group";
- * min: 100 100;
- * }
- * }
- * @endcode
- *
- * where one declares a minimum size of 100 pixels both for width and
- * height. Those are (hint) values which should be respected when the
- * given object/group is to be controlled by a given container object
- * (e.g. an Edje object being "swallowed" into a given @c SWALLOW
- * typed part, as in edje_object_part_swallow()). Check the complete
- * @ref edcref "syntax reference" for EDC files.
- *
- * @note If the @c min EDC property was not declared for @p obj, this
- * call will return the value 0, for each axis.
- *
- * @note On failure, this function will make all non-@c NULL size
- * pointers' pointed variables be set to zero.
- *
- * @see edje_object_size_max_get()
- */
-EAPI void edje_object_size_min_get (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
-
-/**
- * @brief Edje will automatically update the size hints on itself.
- *
- * @param obj A handle to an Edje object.
- * @param update Wether or not update the size hints.
- *
- * By default edje doesn't set size hints on itself. With this function
- * call, it will do so if update is true. Be carefully, it cost a lot to
- * trigger this feature as it will recalc the object every time it make
- * sense to be sure that's its minimal size hint is always accurate.
- */
-EAPI void edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update);
-
-/**
- * @brief Wether or not Edje will update size hints on itself.
- *
- * @param obj A handle to an Edje object.
- * @return @c true if does, @c false if it doesn't.
- */
-EAPI Eina_Bool edje_object_update_hints_get(Evas_Object *obj);
-
-/**
- * @brief Get the maximum size specified -- as an EDC property -- for a
- * given Edje object
- *
- * @param obj A handle to an Edje object
- * @param maxw Pointer to a variable where to store the maximum width
- * @param maxh Pointer to a variable where to store the maximum height
- *
- * This function retrieves the @p obj object's maximum size values,
- * as declared in its EDC group definition. Maximum size of
- * groups have the following syntax
- * @code
- * collections {
- * group {
- * name: "a_group";
- * max: 100 100;
- * }
- * }
- * @endcode
- *
- * where one declares a maximum size of 100 pixels both for width and
- * height. Those are (hint) values which should be respected when the
- * given object/group is to be controlled by a given container object
- * (e.g. an Edje object being "swallowed" into a given @c SWALLOW
- * typed part, as in edje_object_part_swallow()). Check the complete
- * @ref edcref "syntax reference" for EDC files.
- *
- * @note If the @c max EDC property was not declared for @p obj, this
- * call will return the maximum size a given Edje object may have, for
- * each axis.
- *
- * @note On failure, this function will make all non-@c NULL size
- * pointers' pointed variables be set to zero.
- *
- * @see edje_object_size_min_get()
- */
-EAPI void edje_object_size_max_get (const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh);
-
-/**
- * @brief Force a Size/Geometry calculation.
- *
- * @param obj A valid Evas_Object handle
- *
- * Forces the object @p obj to recalculation layout regardless of
- * freeze/thaw.
- */
-EAPI void edje_object_calc_force (Evas_Object *obj);
-
-/**
- * @brief Calculate the minimum required size for a given Edje object.
- *
- * @param obj A handle to an Edje object
- * @param minw Pointer to a variable where to store the minimum
- * required width
- * @param minh Pointer to a variable where to store the minimum
- * required height
- *
- * This call works exactly as edje_object_size_min_restricted_calc(),
- * with the last two arguments set to 0. Please refer to its
- * documentation, then.
- */
-EAPI void edje_object_size_min_calc (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
-
-/**
- * Calculate the geometry of the region, relative to a given Edje
- * object's area, occupied by all parts in the object
- *
- * @param obj A handle to an Edje object
- * @param x A pointer to a variable where to store the parts region's
- * x coordinate
- * @param y A pointer to a variable where to store the parts region's
- * y coordinate
- * @param w A pointer to a variable where to store the parts region's
- * width
- * @param h A pointer to a variable where to store the parts region's
- * height
- *
- * This function gets the geometry of the rectangle equal to the area
- * required to group all parts in @p obj's group/collection. The @p x
- * and @p y coordinates are relative to the top left corner of the
- * whole @p obj object's area. Parts placed out of the group's
- * boundaries will also be taken in account, so that @p x and @p y
- * may be negative.
- *
- * @note Use @c NULL pointers on the geometry components you're not
- * interested in: they'll be ignored by the function.
- *
- * @note On failure, this function will make all non-@c NULL geometry
- * pointers' pointed variables be set to zero.
- */
-EAPI Eina_Bool edje_object_parts_extends_calc (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
-
-/**
- * @brief Calculate the minimum required size for a given Edje object.
- *
- * @param obj A handle to an Edje object
- * @param minw Pointer to a variable where to store the minimum
- * required width
- * @param minh Pointer to a variable where to store the minimum
- * required height
- * @param restrictedw Do not allow object's calculated (minimum) width
- * to be less than this value
- * @param restrictedh Do not allow object's calculated (minimum)
- * height to be less than this value
- *
- * This call will trigger an internal recalculation of all parts of
- * the @p obj object, in order to return its minimum required
- * dimensions for width and height. The user might choose to @b impose
- * those minimum sizes, making the resulting calculation to get to values
- * equal or bigger than @p restrictedw and @p restrictedh, for width and
- * height, respectively.
- *
- * @note At the end of this call, @p obj @b won't be automatically
- * resized to new dimensions, but just return the calculated
- * sizes. The caller is the one up to change its geometry or not.
- *
- * @warning Be advised that invisible parts in @p obj @b will be taken
- * into account in this calculation.
- */
-EAPI void edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Part Edje Part
- *
- * @brief Functions that deal with layout components
- *
- * Parts are layout components, but as a layout, they are objects too.
- *
- * There are several types of parts, these types can be divided into two
- * main categories, the first being containers. Containers are parts
- * that are in effect a group of elements. The second group is that of
- * the elements, these part types may not contain others.
- *
- * This section has some functions specific for some types and others that
- * could be applied to any type.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-typedef enum _Edje_Part_Type
-{
- EDJE_PART_TYPE_NONE = 0,
- EDJE_PART_TYPE_RECTANGLE = 1,
- EDJE_PART_TYPE_TEXT = 2,
- EDJE_PART_TYPE_IMAGE = 3,
- EDJE_PART_TYPE_SWALLOW = 4,
- EDJE_PART_TYPE_TEXTBLOCK = 5,
- EDJE_PART_TYPE_GRADIENT = 6,
- EDJE_PART_TYPE_GROUP = 7,
- EDJE_PART_TYPE_BOX = 8,
- EDJE_PART_TYPE_TABLE = 9,
- EDJE_PART_TYPE_EXTERNAL = 10,
- EDJE_PART_TYPE_PROXY = 11,
- EDJE_PART_TYPE_SPACER = 12, /**< @since 1.7 */
- EDJE_PART_TYPE_LAST = 13
-} Edje_Part_Type;
-
-/**
- * @brief Check if an Edje part exists in a given Edje object's group
- * definition.
- *
- * @param obj A handle to an Edje object
- * @param part The part's name to check for existence in @p obj's
- * group
- * @return @c EINA_TRUE, if the Edje part exists in @p obj's group or
- * @c EINA_FALSE, otherwise (and on errors)
- *
- * This function returns if a given part exists in the Edje group
- * bound to object @p obj (with edje_object_file_set()).
- *
- * This call is useful, for example, when one could expect or not a
- * given GUI element, depending on the @b theme applied to @p obj.
- */
-EAPI Eina_Bool edje_object_part_exists (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Get a handle to the Evas object implementing a given Edje
- * part, in an Edje object.
- *
- * @param obj A handle to an Edje object
- * @param part The Edje part's name
- * @return A pointer to the Evas object implementing the given part,
- * or @c NULL on failure (e.g. the given part doesn't exist)
- *
- * This function gets a pointer of the Evas object corresponding to a
- * given part in the @p obj object's group.
- *
- * You should @b never modify the state of the returned object (with
- * @c evas_object_move() or @c evas_object_hide() for example),
- * because it's meant to be managed by Edje, solely. You are safe to
- * query information about its current state (with @c
- * evas_object_visible_get() or @c evas_object_color_get() for
- * example), though.
- */
-EAPI const Evas_Object *edje_object_part_object_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Retrieve the geometry of a given Edje part, in a given Edje
- * object's group definition, relative to the object's area
- *
- * @param obj A handle to an Edje object
- * @param part The Edje part's name
- * @param x A pointer to a variable where to store the part's x
- * coordinate
- * @param y A pointer to a variable where to store the part's y
- * coordinate
- * @param w A pointer to a variable where to store the part's width
- * @param h A pointer to a variable where to store the part's height
- *
- * This function gets the geometry of an Edje part within its
- * group. The @p x and @p y coordinates are relative to the top left
- * corner of the whole @p obj object's area.
- *
- * @note Use @c NULL pointers on the geometry components you're not
- * interested in: they'll be ignored by the function.
- *
- * @note On failure, this function will make all non-@c NULL geometry
- * pointers' pointed variables be set to zero.
- */
-EAPI Eina_Bool edje_object_part_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
-
-/**
- * @brief Retrieve a list all accessibility part names
- *
- * @param obj A valid Evas_Object handle
- * @return A list all accessibility part names on @p obj
- * @since 1.7.0
- */
-EAPI Eina_List *edje_object_access_part_list_get (const Evas_Object *obj);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Part_Text Edje Text Part
- *
- * @brief Functions that deal with parts of type text
- *
- * Text is an element type for parts. It's basic functionality is to
- * display a string on the layout, but a lot more things can be done
- * with texts, like string selection, setting the cursor and include
- * a input panel, where one can set a virtual keyboard to handle
- * keyboard entry easily.
- *
- * @ingroup Edje_Object_Part
- *
- * @{
- */
-
-typedef enum _Edje_Text_Effect
-{
-#define EDJE_TEXT_EFFECT_MASK_BASIC 0xf
-#define EDJE_TEXT_EFFECT_BASIC_SET(x, s) \
- do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_BASIC) | (s); } while (0)
- EDJE_TEXT_EFFECT_NONE = 0,
- EDJE_TEXT_EFFECT_PLAIN = 1,
- EDJE_TEXT_EFFECT_OUTLINE = 2,
- EDJE_TEXT_EFFECT_SOFT_OUTLINE = 3,
- EDJE_TEXT_EFFECT_SHADOW = 4,
- EDJE_TEXT_EFFECT_SOFT_SHADOW = 5,
- EDJE_TEXT_EFFECT_OUTLINE_SHADOW = 6,
- EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW = 7,
- EDJE_TEXT_EFFECT_FAR_SHADOW = 8,
- EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW = 9,
- EDJE_TEXT_EFFECT_GLOW = 10,
-
- EDJE_TEXT_EFFECT_LAST = 11,
-
-#define EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION (0x7 << 4)
-#define EDJE_TEXT_EFFECT_SHADOW_DIRECTION_SET(x, s) \
- do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) | (s); } while (0)
- EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT = (0x0 << 4),
- EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM = (0x1 << 4),
- EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT = (0x2 << 4),
- EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT = (0x3 << 4),
- EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT = (0x4 << 4),
- EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP = (0x5 << 4),
- EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT = (0x6 << 4),
- EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT = (0x7 << 4)
-} Edje_Text_Effect;
-
-typedef void (*Edje_Text_Change_Cb) (void *data, Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the object text callback.
- *
- * @param obj A valid Evas_Object handle
- * @param func The callback function to handle the text change
- * @param data The data associated to the callback function.
- *
- * This function sets the callback to be called when the text changes.
- */
-EAPI void edje_object_text_change_cb_set (Evas_Object *obj, Edje_Text_Change_Cb func, void *data);
-
-/**
- * @brief Sets the text for an object part
- *
- * @param obj A valid Evas Object handle
- * @param part The part name
- * @param text The text string
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- */
-EAPI Eina_Bool edje_object_part_text_set (Evas_Object *obj, const char *part, const char *text);
-
-/**
- * @brief Sets the text for an object part, but converts HTML escapes to UTF8
- *
- * This converts the given string @p text to UTF8 assuming it contains HTML
- * style escapes like "&" and "©" etc. IF the part is of type TEXT,
- * as opposed to TEXTBLOCK.
- *
- * @param obj A valid Evas Object handle
- * @param part The part name
- * @param text The text string
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
- *
- * @since 1.2
- */
-EAPI Eina_Bool edje_object_part_text_escaped_set (Evas_Object *obj, const char *part, const char *text);
-
-/**
- * @brief Return the text of the object part.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * @return The text string
- *
- * This function returns the text associated to the object part.
- *
- * @see edje_object_part_text_set().
- */
-EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the style of the
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param style The style to set (textblock conventions).
- *
- * This function sets the style associated with the textblock part.
- *
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_style_user_push(Evas_Object *obj, const char *part, const char *style);
-
-/**
- * @brief Return the text of the object part.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * @return The text string
- *
- * This function returns the style associated with the textblock part.
- *
- * @since 1.2.0
- */
-EAPI const char *edje_object_part_text_style_user_peek(const Evas_Object *obj, const char *part);
-
-/**
- * @brief Delete the top style form the user style stack.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_style_user_pop(Evas_Object *obj, const char *part);
-
-/**
- * @brief Sets the raw (non escaped) text for an object part.
- *
- * @param obj A valid Evas Object handle
- * @param part The part name
- * @param text_to_escape The text string
- *
- * This funciton will not do escape for you if it is a TEXTBLOCK part, that is,
- * if text contain tags, these tags will not be interpreted/parsed by TEXTBLOCK.
- *
- * @see edje_object_part_text_unescaped_get().
- */
-EAPI Eina_Bool edje_object_part_text_unescaped_set (Evas_Object *obj, const char *part, const char *text_to_escape);
-
-/**
- * @brief Returns the text of the object part, without escaping.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return The @b allocated text string without escaping, or NULL on
- * problems.
- *
- * This function is the counterpart of
- * edje_object_part_text_unescaped_set(). Please notice that the
- * result is newly allocated memory and should be released with free()
- * when done.
- *
- * @see edje_object_part_text_unescaped_set().
- */
-EAPI char *edje_object_part_text_unescaped_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Insert text for an object part.
- *
- * @param obj A valid Evas Object handle
- * @param part The part name
- * @param text The text string
- *
- * This function inserts the text for an object part just before the
- * cursor position.
- *
- */
-EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text);
-
-/**
- * @brief Insert text for an object part.
- *
- * @param obj A valid Evas Object handle
- * @param part The part name
- * @param text The text string
- *
- * This function inserts the text for an object part at the end; It does not
- * move the cursor.
- *
- * @since 1.1
- */
-EAPI void edje_object_part_text_append(Evas_Object *obj, const char *part, const char *text);
-
-/**
- * @brief Return a list of char anchor names.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * @return The list of anchors (const char *), do not modify!
- *
- * This function returns a list of char anchor names.
- *
- */
-EAPI const Eina_List *edje_object_part_text_anchor_list_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Return a list of Evas_Textblock_Rectangle anchor rectangles.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param anchor The anchor name
- *
- * @return The list of anchor rects (const Evas_Textblock_Rectangle
- * *), do not modify! Geometry is relative to entry part.
- *
- * This function return a list of Evas_Textblock_Rectangle anchor
- * rectangles.
- *
- */
-EAPI const Eina_List *edje_object_part_text_anchor_geometry_get (const Evas_Object *obj, const char *part, const char *anchor);
-
-/**
- * @brief Return a list of char item names.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * @return The list of items (const char *), do not modify!
- *
- * This function returns a list of char item names.
- *
- */
-EAPI const Eina_List *edje_object_part_text_item_list_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Return item geometry.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param item The item name
- * @param cx Item x return (relative to entry part)
- * @param cy Item y return (relative to entry part)
- * @param cw Item width return
- * @param ch Item height return
- *
- * @return 1 if item exists, 0 if not
- *
- * This function return a list of Evas_Textblock_Rectangle item
- * rectangles.
- *
- */
-EAPI Eina_Bool edje_object_part_text_item_geometry_get (const Evas_Object *obj, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
-
-/**
- * @brief This function inserts text as if the user has inserted it.
- *
- * This means it actually registers as a change and emits signals, triggers
- * callbacks as appropriate.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param text The text string
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_user_insert (const Evas_Object *obj, const char *part, const char *text);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Text_Selection Edje Text Selection
- *
- * @brief Functions that deal with selection in text parts
- *
- * Selection is a known functionality for texts in the whole computational
- * world. It is a block of text marked for further manipulation.
- *
- * Edje is responsible for handling this functionality through the
- * following functions.
- *
- * @ingroup Edje_Part_Text
- *
- * @{
- */
-
-/**
- * @brief Return the selection text of the object part.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return The text string
- *
- * This function returns selection text of the object part.
- *
- * @see edje_object_part_text_select_all()
- * @see edje_object_part_text_select_none()
- */
-EAPI const char *edje_object_part_text_selection_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the selection to be none.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * This function sets the selection text to be none.
- */
-EAPI void edje_object_part_text_select_none (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the selection to be everything.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * This function selects all text of the object of the part.
- */
-EAPI void edje_object_part_text_select_all (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Enables selection if the entry is an EXPLICIT selection mode
- * type.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param allow EINA_TRUE to enable, EINA_FALSE otherwise
- *
- * The default is to @b not allow selection. This function only affects user
- * selection, functions such as edje_object_part_text_select_all() and
- * edje_object_part_text_select_none() are not affected.
- */
-EAPI void edje_object_part_text_select_allow_set (const Evas_Object *obj, const char *part, Eina_Bool allow);
-
-/**
- * @brief Aborts any selection action on a part.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- */
-EAPI void edje_object_part_text_select_abort (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Starts selecting at current cursor position
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- */
-EAPI void edje_object_part_text_select_begin (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Extends the current selection to the current cursor position
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- */
-EAPI void edje_object_part_text_select_extend (const Evas_Object *obj, const char *part);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Text_Cursor Edje Text Cursor
- *
- * @brief Functions that deal with cursor in text parts
- *
- * Cursor is a known functionality for texts in the whole computational
- * world. It marks a position in the text from where one may want
- * to make a insertion, deletion or selection.
- *
- * Edje is responsible for handling this functionality through the
- * following functions.
- *
- * @ingroup Edje_Part_Text
- *
- * @{
- */
-
-typedef enum _Edje_Cursor
-{
- EDJE_CURSOR_MAIN,
- EDJE_CURSOR_SELECTION_BEGIN,
- EDJE_CURSOR_SELECTION_END,
- EDJE_CURSOR_PREEDIT_START,
- EDJE_CURSOR_PREEDIT_END,
- EDJE_CURSOR_USER,
- EDJE_CURSOR_USER_EXTRA,
- // more later
-} Edje_Cursor;
-
-/**
- * @brief Advances the cursor to the next cursor position.
- * @see evas_textblock_cursor_char_next
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur The edje cursor to advance
- */
-EAPI Eina_Bool edje_object_part_text_cursor_next (Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Moves the cursor to the previous char
- * @see evas_textblock_cursor_char_prev
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur the edje cursor to work on
- */
-EAPI Eina_Bool edje_object_part_text_cursor_prev (Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Move the cursor to the char above the current cursor position.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur the edje cursor to work on
- */
-EAPI Eina_Bool edje_object_part_text_cursor_up (Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Moves the cursor to the char below the current cursor position.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur the edje cursor to work on
- */
-EAPI Eina_Bool edje_object_part_text_cursor_down (Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Moves the cursor to the beginning of the text part
- * @see evas_textblock_cursor_paragraph_first
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur the edje cursor to work on
- */
-EAPI void edje_object_part_text_cursor_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Moves the cursor to the end of the text part.
- * @see evas_textblock_cursor_paragraph_last
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur the edje cursor to work on
- */
-EAPI void edje_object_part_text_cursor_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Copy the cursor to another cursor.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param src the cursor to copy from
- * @param dst the cursor to copy to
- */
-EAPI void edje_object_part_text_cursor_copy (Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst);
-
-/**
- * @brief Move the cursor to the beginning of the line.
- * @see evas_textblock_cursor_line_char_first
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur the edje cursor to work on
- */
-EAPI void edje_object_part_text_cursor_line_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Move the cursor to the end of the line.
- * @see evas_textblock_cursor_line_char_last
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur the edje cursor to work on
- */
-EAPI void edje_object_part_text_cursor_line_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * Position the given cursor to a X,Y position.
- *
- * This is frequently used with the user cursor.
- *
- * @param obj An Edje object.
- * @param part The part containing the object.
- * @param cur The cursor to adjust.
- * @param x X Coordinate.
- * @param y Y Coordinate.
- * @return True on success, false on error.
- */
-EAPI Eina_Bool edje_object_part_text_cursor_coord_set (Evas_Object *obj, const char *part, Edje_Cursor cur, Evas_Coord x, Evas_Coord y);
-
-/**
- * @brief Returns whether the cursor points to a format.
- * @see evas_textblock_cursor_is_format
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur The cursor to adjust.
- * @return EINA_TRUE if it's true, EINA_FALSE otherwise.
- */
-EAPI Eina_Bool edje_object_part_text_cursor_is_format_get (const Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Return true if the cursor points to a visible format
- * For example \\t, \\n, item and etc.
- * @see evas_textblock_cursor_format_is_visible_get
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur The cursor to adjust.
- */
-EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Returns the content (char) at the cursor position.
- * @see evas_textblock_cursor_content_get
- *
- * You must free the return (if not NULL) after you are done with it.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur The cursor to use
- * @return The character string pointed to (may be a multi-byte utf8 sequence) terminated by a nul byte.
- */
-EAPI char *edje_object_part_text_cursor_content_get (const Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Sets the cursor position to the given value
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur The cursor to move
- * @param pos the position of the cursor
- * @since 1.1.0
- */
-EAPI void edje_object_part_text_cursor_pos_set (Evas_Object *obj, const char *part, Edje_Cursor cur, int pos);
-
-/**
- * @brief Retrieves the current position of the cursor
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cur The cursor to get the position
- * @return The cursor position
- * @since 1.1.0
- */
-EAPI int edje_object_part_text_cursor_pos_get (const Evas_Object *obj, const char *part, Edje_Cursor cur);
-
-/**
- * @brief Returns the cursor geometry of the part relative to the edje
- * object.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param x Cursor X position
- * @param y Cursor Y position
- * @param w Cursor width
- * @param h Cursor height
- *
- */
-EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Text_Entry Edje Text Entry
- *
- * @brief Functions that deal with text entries
- *
- * In Edje it's possible to use a text part as a entry so the user is
- * able to make inputs of text. To do so, the text part must be set
- * with a input panel taht will work as a virtual keyboard.
- *
- * Some of effects can be applied to the entered text and also plenty
- * actions can be performed after any input.
- *
- * Use the functions of this section to handle the user input of text.
- *
- * @ingroup Edje_Part_Text
- *
- * @{
- */
-
-struct _Edje_Entry_Change_Info
-{
- union {
- struct {
- const char *content;
- size_t pos;
- size_t plain_length; /* Number of cursor positions represented
- in content. */
- } insert;
- struct {
- const char *content;
- size_t start, end;
- } del;
- } change;
- Eina_Bool insert : 1; /**< True if the "change" union's "insert" is valid */
- Eina_Bool merge : 1; /**< True if can be merged with the previous one. Used for example with insertion when something is already selected. */
-};
-
-/**
- * @since 1.1.0
- */
-typedef struct _Edje_Entry_Change_Info Edje_Entry_Change_Info;
-
-typedef enum _Edje_Text_Filter_Type
-{
- EDJE_TEXT_FILTER_TEXT = 0,
- EDJE_TEXT_FILTER_FORMAT = 1,
- EDJE_TEXT_FILTER_MARKUP = 2
-} Edje_Text_Filter_Type;
-
-typedef enum _Edje_Text_Autocapital_Type
-{
- EDJE_TEXT_AUTOCAPITAL_TYPE_NONE,
- EDJE_TEXT_AUTOCAPITAL_TYPE_WORD,
- EDJE_TEXT_AUTOCAPITAL_TYPE_SENTENCE,
- EDJE_TEXT_AUTOCAPITAL_TYPE_ALLCHARACTER
-} Edje_Text_Autocapital_Type;
-
-typedef enum _Edje_Input_Panel_Lang
-{
- EDJE_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic @since 1.2 */
- EDJE_INPUT_PANEL_LANG_ALPHABET /**< Alphabet @since 1.2 */
-} Edje_Input_Panel_Lang;
-
-typedef enum _Edje_Input_Panel_Return_Key_Type
-{
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT, /**< Default @since 1.2 */
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DONE, /**< Done @since 1.2 */
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_GO, /**< Go @since 1.2 */
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_JOIN, /**< Join @since 1.2 */
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN, /**< Login @since 1.2 */
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_NEXT, /**< Next @since 1.2 */
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH, /**< Search or magnifier icon @since 1.2 */
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SEND, /**< Send @since 1.2 */
- EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN /**< Sign-in @since 1.8 */
-} Edje_Input_Panel_Return_Key_Type;
-
-typedef enum _Edje_Input_Panel_Layout
-{
- EDJE_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */
- EDJE_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
- EDJE_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
- EDJE_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
- EDJE_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout */
- EDJE_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
- EDJE_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
- EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */
- EDJE_INPUT_PANEL_LAYOUT_INVALID, /**< Never use this */
- EDJE_INPUT_PANEL_LAYOUT_HEX, /**< Hexadecimal layout @since 1.2 */
- EDJE_INPUT_PANEL_LAYOUT_TERMINAL, /**< Command-line terminal layout including esc, alt, ctrl key, so on (no auto-correct, no auto-capitalization) @since 1.2 */
- EDJE_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. @since 1.2 */
-} Edje_Input_Panel_Layout;
-
-enum
-{
- EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL,
- EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED,
- EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL,
- EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL
-};
-
-typedef void (*Edje_Text_Filter_Cb) (void *data, Evas_Object *obj, const char *part, Edje_Text_Filter_Type type, char **text);
-typedef void (*Edje_Markup_Filter_Cb) (void *data, Evas_Object *obj, const char *part, char **text);
-typedef Evas_Object *(*Edje_Item_Provider_Cb) (void *data, Evas_Object *obj, const char *part, const char *item);
-
-/**
- * @brief Show last character in password mode.
- *
- * @param password_show_last If TRUE enable last character show in password mode.
- *
- * This function enables last input to be visible when in password mode for few seconds
- * or until the next input is entered.
- *
- * The time out value is obtained by edje_password_show_last_timeout_set function.
- *
- * @see edje_password_show_last_timeout_set().
- */
-EAPI void edje_password_show_last_set(Eina_Bool password_show_last);
-
-/**
- * @brief Set's the timeout value in last show password mode.
- *
- * @param password_show_last_timeout The timeout value.
- *
- * This functions sets the time out value for which the last input entered in password
- * mode will be visible.
- *
- * This value can be used only when last show mode is set in password mode.
- *
- * @see edje_password_show_last_set().
- *
- */
-EAPI void edje_password_show_last_timeout_set(double password_show_last_timeout);
-
-/**
- * @brief Set the RTL orientation for this object.
- *
- * @param obj A handle to an Edje object.
- * @param rtl new value of flag EINA_TRUE/EINA_FALSE
- * @since 1.1.0
- */
-EAPI void edje_object_mirrored_set (Evas_Object *obj, Eina_Bool rtl);
-
-/**
- * @brief Get the RTL orientation for this object.
- *
- * You can RTL orientation explicitly with edje_object_mirrored_set.
- *
- * @param obj A handle to an Edje object.
- * @return @c EINA_TRUE if the flag is set or @c EINA_FALSE if not.
- * @since 1.1.0
- */
-EAPI Eina_Bool edje_object_mirrored_get (const Evas_Object *obj);
-
-/**
- * @brief Set the function that provides item objects for named items in an edje entry text
- *
- * @param obj A valid Evas Object handle
- * @param func The function to call (or NULL to disable) to get item objects
- * @param data The data pointer to pass to the @p func callback
- *
- * Item objects may be deleted any time by Edje, and will be deleted when the
- * Edje object is deleted (or file is set to a new file).
- */
-EAPI void edje_object_item_provider_set (Evas_Object *obj, Edje_Item_Provider_Cb func, void *data);
-
-/**
- * @brief Reset the input method context if needed.
- *
- * This can be necessary in the case where modifying the buffer would confuse on-going input method behavior
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_imf_context_reset (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Get the input method context in entry.
- *
- * If ecore_imf was not available when edje was compiled, this function returns NULL
- * otherwise, the returned pointer is an Ecore_IMF *
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * @return The input method context (Ecore_IMF_Context *) in entry
- * @since 1.2.0
- */
-EAPI void *edje_object_part_text_imf_context_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the layout of the input panel.
- *
- * The layout of the input panel or virtual keyboard can make it easier or
- * harder to enter content. This allows you to hint what kind of input you
- * are expecting to enter and thus have the input panel automatically
- * come up with the right mode.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param layout layout type
- * @since 1.1
- */
-EAPI void edje_object_part_text_input_panel_layout_set (Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout);
-
-/**
- * @brief Get the layout of the input panel.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * @return Layout type of the input panel
- *
- * @see edje_object_part_text_input_panel_layout_set
- * @since 1.1
- */
-EAPI Edje_Input_Panel_Layout edje_object_part_text_input_panel_layout_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the layout variation of the input panel.
- *
- * The layout variation of the input panel or virtual keyboard can make it easier or
- * harder to enter content. This allows you to hint what kind of input you
- * are expecting to enter and thus have the input panel automatically
- * come up with the right mode.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param variation layout variation type
- * @since 1.8
- */
-EAPI void edje_object_part_text_input_panel_layout_variation_set(Evas_Object *obj, const char *part, int variation);
-
-/**
- * @brief Get the layout variation of the input panel.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * @return Layout variation type of the input panel
- *
- * @see edje_object_part_text_input_panel_layout_variation_set
- * @since 1.8
- */
-EAPI int edje_object_part_text_input_panel_layout_variation_get(const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the autocapitalization type on the immodule.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param autocapital_type The type of autocapitalization
- * @since 1.1.0
- */
-EAPI void edje_object_part_text_autocapital_type_set (Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type);
-
-/**
- * @brief Retrieves the autocapitalization type
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return The autocapitalization type
- * @since 1.1.0
- */
-EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set whether the prediction is allowed or not.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param prediction If true, the prediction feature is allowed.
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_prediction_allow_set (Evas_Object *obj, const char *part, Eina_Bool prediction);
-
-/**
- * @brief Get whether the prediction is allowed or not.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return EINA_TRUE if prediction feature is allowed.
- * @since 1.2.0
- */
-EAPI Eina_Bool edje_object_part_text_prediction_allow_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Sets the attribute to show the input panel automatically.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param enabled If true, the input panel is appeared when entry is clicked or has a focus
- * @since 1.1.0
- */
-EAPI void edje_object_part_text_input_panel_enabled_set (Evas_Object *obj, const char *part, Eina_Bool enabled);
-
-/**
- * @brief Retrieve the attribute to show the input panel automatically.
- * @see edje_object_part_text_input_panel_enabled_set
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return EINA_TRUE if it supports or EINA_FALSE otherwise
- * @since 1.1.0
- */
-EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Show the input panel (virtual keyboard) based on the input panel property such as layout, autocapital types, and so on.
- *
- * Note that input panel is shown or hidden automatically according to the focus state.
- * This API can be used in the case of manually controlling by using edje_object_part_text_input_panel_enabled_set.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_input_panel_show(const Evas_Object *obj, const char *part);
-
-/**
- * @brief Hide the input panel (virtual keyboard).
- * @see edje_object_part_text_input_panel_show
- *
- * Note that input panel is shown or hidden automatically according to the focus state.
- * This API can be used in the case of manually controlling by using edje_object_part_text_input_panel_enabled_set.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_input_panel_hide(const Evas_Object *obj, const char *part);
-
-/**
- * Set the language mode of the input panel.
- *
- * This API can be used if you want to show the Alphabet keyboard.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param lang the language to be set to the input panel.
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_input_panel_language_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Lang lang);
-
-/**
- * Get the language mode of the input panel.
- *
- * See @ref edje_object_part_text_input_panel_language_set for more details.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return input panel language type
- * @since 1.2.0
- */
-EAPI Edje_Input_Panel_Lang edje_object_part_text_input_panel_language_get(const Evas_Object *obj, const char *part);
-
-/**
- * Set the input panel-specific data to deliver to the input panel.
- *
- * This API is used by applications to deliver specific data to the input panel.
- * The data format MUST be negotiated by both application and the input panel.
- * The size and format of data are defined by the input panel.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param data The specific data to be set to the input panel.
- * @param len the length of data, in bytes, to send to the input panel
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const char *part, const void *data, int len);
-
-/**
- * Get the specific data of the current active input panel.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param data The specific data to be got from the input panel
- * @param len The length of data
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, const char *part, void *data, int *len);
-
-/**
- * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
- *
- * An input panel displays the string or icon associated with this type
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param return_key_type The type of "return" key on the input panel
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Return_Key_Type return_key_type);
-
-/**
- * Get the "return" key type.
- *
- * @see edje_object_part_text_input_panel_return_key_type_set() for more details
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return The type of "return" key on the input panel
- * @since 1.2.0
- */
-EAPI Edje_Input_Panel_Return_Key_Type edje_object_part_text_input_panel_return_key_type_get(const Evas_Object *obj, const char *part);
-
-/**
- * Set the return key on the input panel to be disabled.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param disabled The state
- * @since 1.2.0
- */
-EAPI void edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object *obj, const char *part, Eina_Bool disabled);
-
-/**
- * Get whether the return key on the input panel should be disabled or not.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return EINA_TRUE if it should be disabled
- * @since 1.2.0
- */
-EAPI Eina_Bool edje_object_part_text_input_panel_return_key_disabled_get(const Evas_Object *obj, const char *part);
-
-/**
- * Add a filter function for newly inserted text.
- *
- * Whenever text is inserted (not the same as set) into the given @p part,
- * the list of filter functions will be called to decide if and how the new
- * text will be accepted.
- * There are three types of filters, EDJE_TEXT_FILTER_TEXT,
- * EDJE_TEXT_FILTER_FORMAT and EDJE_TEXT_FILTER_MARKUP.
- * The text parameter in the @p func filter can be modified by the user and
- * it's up to him to free the one passed if he's to change the pointer. If
- * doing so, the newly set text should be malloc'ed, as once all the filters
- * are called Edje will free it.
- * If the text is to be rejected, freeing it and setting the pointer to NULL
- * will make Edje break out of the filter cycle and reject the inserted
- * text.
- *
- * @warning This function will be deprecated because of difficulty in use.
- * The type(format, text, or markup) of text should be always
- * checked in the filter function for correct filtering.
- * Please use edje_object_text_markup_filter_callback_add() instead. There
- * is no need to check the type of text in the filter function
- * because the text is always markup.
- * @warning If you use this function with
- * edje_object_text_markup_filter_callback_add() together, all
- * Edje_Text_Filter_Cb functions and Edje_Markup_Filter_Cb functions
- * will be executed, and then filtered text will be inserted.
- *
- * @see edje_object_text_insert_filter_callback_del
- * @see edje_object_text_insert_filter_callback_del_full
- * @see edje_object_text_markup_filter_callback_add
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param func The callback function that will act as filter
- * @param data User provided data to pass to the filter function
- */
-EAPI void edje_object_text_insert_filter_callback_add (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
-
-/**
- * Delete a function from the filter list.
- *
- * Delete the given @p func filter from the list in @p part. Returns
- * the user data pointer given when added.
- *
- * @see edje_object_text_insert_filter_callback_add
- * @see edje_object_text_insert_filter_callback_del_full
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param func The function callback to remove
- *
- * @return The user data pointer if successful, or NULL otherwise
- */
-EAPI void *edje_object_text_insert_filter_callback_del (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func);
-
-/**
- * Delete a function and matching user data from the filter list.
- *
- * Delete the given @p func filter and @p data user data from the list
- * in @p part.
- * Returns the user data pointer given when added.
- *
- * @see edje_object_text_insert_filter_callback_add
- * @see edje_object_text_insert_filter_callback_del
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param func The function callback to remove
- * @param data The data passed to the callback function
- *
- * @return The same data pointer if successful, or NULL otherwise
- */
-EAPI void *edje_object_text_insert_filter_callback_del_full (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
-
-/**
- * Add a markup filter function for newly inserted text.
- *
- * Whenever text is inserted (not the same as set) into the given @p part,
- * the list of markup filter functions will be called to decide if and how
- * the new text will be accepted.
- * The text parameter in the @p func filter is always markup. It can be
- * modified by the user and it's up to him to free the one passed if he's to
- * change the pointer. If doing so, the newly set text should be malloc'ed,
- * as once all the filters are called Edje will free it.
- * If the text is to be rejected, freeing it and setting the pointer to NULL
- * will make Edje break out of the filter cycle and reject the inserted
- * text.
- * This function is different from edje_object_text_insert_filter_callback_add()
- * in that the text parameter in the @p fucn filter is always markup.
- *
- * @warning If you use this function with
- * edje_object_text_insert_filter_callback_add() togehter, all
- * Edje_Text_Filter_Cb functions and Edje_Markup_Filter_Cb functions
- * will be executed, and then filtered text will be inserted.
- *
- * @see edje_object_text_markup_filter_callback_del
- * @see edje_object_text_markup_filter_callback_del_full
- * @see edje_object_text_insert_filter_callback_add
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param func The callback function that will act as markup filter
- * @param data User provided data to pass to the filter function
- * @since 1.2.0
- */
-EAPI void edje_object_text_markup_filter_callback_add(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data);
-
-/**
- * Delete a function from the markup filter list.
- *
- * Delete the given @p func filter from the list in @p part. Returns
- * the user data pointer given when added.
- *
- * @see edje_object_text_markup_filter_callback_add
- * @see edje_object_text_markup_filter_callback_del_full
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param func The function callback to remove
- *
- * @return The user data pointer if successful, or NULL otherwise
- * @since 1.2.0
- */
-EAPI void *edje_object_text_markup_filter_callback_del(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func);
-
-/**
- * Delete a function and matching user data from the markup filter list.
- *
- * Delete the given @p func filter and @p data user data from the list
- * in @p part.
- * Returns the user data pointer given when added.
- *
- * @see edje_object_text_markup_filter_callback_add
- * @see edje_object_text_markup_filter_callback_del
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param func The function callback to remove
- * @param data The data passed to the callback function
- *
- * @return The same data pointer if successful, or NULL otherwise
- * @since 1.2.0
- */
-EAPI void *edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Part_Swallow Edje Swallow Part
- *
- * @brief Functions that deal with parts of type swallow and swallowed objects.
- *
- * A important feature of Edje is to be able to create Evas_Objects
- * in code and place them in a layout. And that is what swallowing
- * is all about.
- *
- * Swallow parts are place holders defined in the EDC file for
- * objects that one may want to include in the layout later, or for
- * objects that are not native of Edje. In this last case, Edje will
- * only treat the Evas_Object properties of the swallowed objects.
- *
- * @ingroup Edje_Object_Part
- *
- * @{
- */
-
-typedef enum _Edje_Aspect_Control
-{
- EDJE_ASPECT_CONTROL_NONE = 0,
- EDJE_ASPECT_CONTROL_NEITHER = 1,
- EDJE_ASPECT_CONTROL_HORIZONTAL = 2,
- EDJE_ASPECT_CONTROL_VERTICAL = 3,
- EDJE_ASPECT_CONTROL_BOTH = 4
-} Edje_Aspect_Control;
-
-/**
- * @brief Set the object minimum size.
- *
- * @param obj A valid Evas_Object handle
- * @param minw The minimum width
- * @param minh The minimum height
- *
- * This sets the minimum size restriction for the object.
- */
-EAPI void edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh);
-
-/**
- * @brief Set the object maximum size.
- *
- * @param obj A valid Evas_Object handle
- * @param maxw The maximum width
- * @param maxh The maximum height
- *
- * This sets the maximum size restriction for the object.
- */
-EAPI void edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh);
-
-/**
- * @brief Set the object aspect size.
- *
- * @param obj A valid Evas_Object handle
- * @param aspect The aspect control axes
- * @param aw The aspect radio width
- * @param ah The aspect ratio height
- *
- * This sets the desired aspect ratio to keep an object that will be
- * swallowed by Edje. The width and height define a preferred size
- * ASPECT and the object may be scaled to be larger or smaller, but
- * retaining the relative scale of both aspect width and height.
- */
-EAPI void edje_extern_object_aspect_set (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah);
-
-/**
- * @brief "Swallows" an object into one of the Edje object @c SWALLOW
- * parts.
- *
- * @param obj A valid Edje object handle
- * @param part The swallow part's name
- * @param obj_swallow The object to occupy that part
- *
- * Swallowing an object into an Edje object is, for a given part of
- * type @c SWALLOW in the EDC group which gave life to @a obj, to set
- * an external object to be controlled by @a obj, being displayed
- * exactly over that part's region inside the whole Edje object's
- * viewport.
- *
- * From this point on, @a obj will have total control over @a
- * obj_swallow's geometry and visibility. For instance, if @a obj is
- * visible, as in @c evas_object_show(), the swallowed object will be
- * visible too -- if the given @c SWALLOW part it's in is also
- * visible. Other actions on @a obj will also reflect on the swallowed
- * object as well (e.g. resizing, moving, raising/lowering, etc.).
- *
- * Finally, all internal changes to @a part, specifically, will
- * reflect on the displaying of @a obj_swallow, for example state
- * changes leading to different visibility states, geometries,
- * positions, etc.
- *
- * If an object has already been swallowed into this part, then it
- * will first be unswallowed (as in edje_object_part_unswallow())
- * before the new object is swallowed.
- *
- * @note @a obj @b won't delete the swallowed object once it is
- * deleted -- @a obj_swallow will get to an unparented state again.
- *
- * For more details on EDC @c SWALLOW parts, see @ref edcref "syntax
- * reference".
- */
-EAPI Eina_Bool edje_object_part_swallow (Evas_Object *obj, const char *part, Evas_Object *obj_swallow);
-
-/**
- * @brief Unswallow an object.
- *
- * @param obj A valid Evas_Object handle
- * @param obj_swallow The swallowed object
- *
- * Causes the edje to regurgitate a previously swallowed object. :)
- *
- * @note @p obj_swallow will @b not be deleted or hidden.
- * @note @p obj_swallow may appear shown on the evas depending on its state when
- * it got unswallowed. Make sure you delete it or hide it if you do not want it to.
- */
-EAPI void edje_object_part_unswallow (Evas_Object *obj, Evas_Object *obj_swallow);
-
-/**
- * @brief Get the object currently swallowed by a part.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @return The swallowed object, or NULL if there is none.
- */
-EAPI Evas_Object *edje_object_part_swallow_get (const Evas_Object *obj, const char *part);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Part_Drag Edje Drag
- *
- * @brief Functions that deal with dragable parts.
- *
- * To create a movable part it must be declared as dragable
- * in EDC file. To do so, one must define a "dragable" block inside
- * the "part" block.
- *
- * These functions are used to set dragging properties to a
- * part or get dragging information about it.
- *
- * @see @ref tutorial_edje_drag
- *
- * @ingroup Edje_Object_Part
- *
- * @{
- */
-
-typedef enum _Edje_Drag_Dir
-{
- EDJE_DRAG_DIR_NONE = 0,
- EDJE_DRAG_DIR_X = 1,
- EDJE_DRAG_DIR_Y = 2,
- EDJE_DRAG_DIR_XY = 3
-} Edje_Drag_Dir;
-
-/**
- * @brief Determine dragable directions.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- *
- * The dragable directions are defined in the EDC file, inside the @c dragable
- * section, by the attributes @c x and @c y. See the @ref edcref for more
- * information.
- *
- * @return #EDJE_DRAG_DIR_NONE: Not dragable\n
- * #EDJE_DRAG_DIR_X: Dragable in X direction\n
- * #EDJE_DRAG_DIR_Y: Dragable in Y direction\n
- * #EDJE_DRAG_DIR_XY: Dragable in X & Y directions
- */
-EAPI Edje_Drag_Dir edje_object_part_drag_dir_get (const Evas_Object *obj, const char *part);
-
-/**
- * @brief Set the dragable object location.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dx The x value
- * @param dy The y value
- *
- * Places the dragable object at the given location.
- *
- * Values for @p dx and @p dy are real numbers that range from 0 to 1,
- * representing the relative position to the dragable area on that axis.
- *
- * This value means, for the vertical axis, that 0.0 will be at the top if the
- * first parameter of @c y in the dragable part theme is 1, and at bottom if it
- * is -1.
- *
- * For the horizontal axis, 0.0 means left if the first parameter of @c x in the
- * dragable part theme is 1, and right if it is -1.
- *
- * @see edje_object_part_drag_value_get()
- */
-EAPI Eina_Bool edje_object_part_drag_value_set (Evas_Object *obj, const char *part, double dx, double dy);
-
-/**
- * @brief Get the dragable object location.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dx The X value pointer
- * @param dy The Y value pointer
- *
- * Values for @p dx and @p dy are real numbers that range from 0 to 1,
- * representing the relative position to the dragable area on that axis.
- *
- * @see edje_object_part_drag_value_set()
- *
- * Gets the drag location values.
- */
-EAPI Eina_Bool edje_object_part_drag_value_get (const Evas_Object *obj, const char *part, double *dx, double *dy);
-
-/**
- * @brief Set the dragable object size.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dw The drag width
- * @param dh The drag height
- *
- * Values for @p dw and @p dh are real numbers that range from 0 to 1,
- * representing the relative size of the dragable area on that axis.
- *
- * Sets the size of the dragable object.
- *
- * @see edje_object_part_drag_size_get()
- */
-EAPI Eina_Bool edje_object_part_drag_size_set (Evas_Object *obj, const char *part, double dw, double dh);
-
-/**
- * @brief Get the dragable object size.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dw The drag width pointer
- * @param dh The drag height pointer
- *
- * Gets the dragable object size.
- *
- * @see edje_object_part_drag_size_set()
- */
-EAPI Eina_Bool edje_object_part_drag_size_get (const Evas_Object *obj, const char *part, double *dw, double *dh);
-
-/**
- * @brief Sets the drag step increment.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dx The x step amount
- * @param dy The y step amount
- *
- * Sets the x,y step increments for a dragable object.
- *
- * Values for @p dx and @p dy are real numbers that range from 0 to 1,
- * representing the relative size of the dragable area on that axis by which the
- * part will be moved.
- *
- * @see edje_object_part_drag_step_get()
- */
-EAPI Eina_Bool edje_object_part_drag_step_set (Evas_Object *obj, const char *part, double dx, double dy);
-
-/**
- * @brief Gets the drag step increment values.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part
- * @param dx The x step increment pointer
- * @param dy The y step increment pointer
- *
- * Gets the x and y step increments for the dragable object.
- *
- *
- * @see edje_object_part_drag_step_set()
- */
-EAPI Eina_Bool edje_object_part_drag_step_get (const Evas_Object *obj, const char *part, double *dx, double *dy);
-
-/**
- * @brief Sets the page step increments.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dx The x page step increment
- * @param dy The y page step increment
- *
- * Sets the x,y page step increment values.
- *
- * Values for @p dx and @p dy are real numbers that range from 0 to 1,
- * representing the relative size of the dragable area on that axis by which the
- * part will be moved.
- *
- * @see edje_object_part_drag_page_get()
- */
-EAPI Eina_Bool edje_object_part_drag_page_set (Evas_Object *obj, const char *part, double dx, double dy);
-
-/**
- * @brief Gets the page step increments.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dx The dx page increment pointer
- * @param dy The dy page increment pointer
- *
- * Gets the x,y page step increments for the dragable object.
- *
- * @see edje_object_part_drag_page_set()
- */
-EAPI Eina_Bool edje_object_part_drag_page_get (const Evas_Object *obj, const char *part, double *dx, double *dy);
-
-/**
- * @brief Steps the dragable x,y steps.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dx The x step
- * @param dy The y step
- *
- * Steps x,y where the step increment is the amount set by
- * edje_object_part_drag_step_set.
- *
- * Values for @p dx and @p dy are real numbers that range from 0 to 1.
- *
- * @see edje_object_part_drag_page()
- */
-EAPI Eina_Bool edje_object_part_drag_step (Evas_Object *obj, const char *part, double dx, double dy);
-
-/**
- * @brief Pages x,y steps.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param dx The x step
- * @param dy The y step
- *
- * Pages x,y where the increment is defined by
- * edje_object_part_drag_page_set.
- *
- * Values for @p dx and @p dy are real numbers that range from 0 to 1.
- *
- * @warning Paging is bugged!
- *
- * @see edje_object_part_drag_step()
- */
-EAPI Eina_Bool edje_object_part_drag_page (Evas_Object *obj, const char *part, double dx, double dy);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Part_Box Edje Box Part
- *
- * @brief Functions that deal with parts of type box.
- *
- * Box is a container type for parts, that means it can contain
- * other parts.
- *
- * @ingroup Edje_Object_Part
- *
- * @{
- */
-
-/**
- * @brief Registers a custom layout to be used in edje boxes.
- *
- * @param name The name of the layout
- * @param func The function defining the layout
- * @param layout_data_get This function gets the custom data pointer
- * for func
- * @param layout_data_free Passed to func to free its private data
- * when needed
- * @param free_data Frees data
- * @param data Private pointer passed to layout_data_get
- *
- * This function registers custom layouts that can be referred from
- * themes by the registered name. The Evas_Object_Box_Layout
- * functions receive two pointers for internal use, one being private
- * data, and the other the function to free that data when it's not
- * longer needed. From Edje, this private data will be retrieved by
- * calling layout_data_get, and layout_data_free will be the free
- * function passed to func. layout_data_get will be called with data
- * as its parameter, and this one will be freed by free_data whenever
- * the layout is unregistered from Edje.
- */
-EAPI void edje_box_layout_register (const char *name, Evas_Object_Box_Layout func, void *(*layout_data_get)(void *), void (*layout_data_free)(void *), void (*free_data)(void *), void *data);
-
-/**
- * @brief Appends an object to the box.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param child The object to append
- *
- * @return @c EINA_TRUE: Successfully added.\n
- * @c EINA_FALSE: An error occurred.
- *
- * Appends child to the box indicated by part.
- *
- * @see edje_object_part_box_prepend()
- * @see edje_object_part_box_insert_before()
- * @see edje_object_part_box_insert_at()
- */
-EAPI Eina_Bool edje_object_part_box_append (Evas_Object *obj, const char *part, Evas_Object *child);
-
-/**
- * @brief Prepends an object to the box.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param child The object to prepend
- *
- * @return @c EINA_TRUE: Successfully added.\n
- * @c EINA_FALSE: An error occurred.
- *
- * Prepends child to the box indicated by part.
- *
- * @see edje_object_part_box_append()
- * @see edje_object_part_box_insert_before()
- * @see edje_object_part_box_insert_at()
- */
-EAPI Eina_Bool edje_object_part_box_prepend (Evas_Object *obj, const char *part, Evas_Object *child);
-
-/**
- * @brief Adds an object to the box.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param child The object to insert
- * @param reference The object to be used as reference
- *
- * @return @c EINA_TRUE: Successfully added.\n
- * @c EINA_FALSE: An error occurred.
- *
- * Inserts child in the box given by part, in the position marked by
- * reference.
- *
- * @see edje_object_part_box_append()
- * @see edje_object_part_box_prepend()
- * @see edje_object_part_box_insert_at()
- */
-EAPI Eina_Bool edje_object_part_box_insert_before (Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference);
-
-/**
- * @brief Inserts an object to the box.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param child The object to insert
- * @param pos The position where to insert child
- *
- * @return @c EINA_TRUE: Successfully added.\n
- * @c EINA_FALSE: An error occurred.
- *
- * Adds child to the box indicated by part, in the position given by
- * pos.
- *
- * @see edje_object_part_box_append()
- * @see edje_object_part_box_prepend()
- * @see edje_object_part_box_insert_before()
- */
-EAPI Eina_Bool edje_object_part_box_insert_at (Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos);
-
-/**
- * @brief Removes an object from the box.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param child The object to remove
- *
- * @return Pointer to the object removed, or @c NULL.
- *
- * Removes child from the box indicated by part.
- *
- * @see edje_object_part_box_remove_at()
- * @see edje_object_part_box_remove_all()
- */
-EAPI Evas_Object *edje_object_part_box_remove (Evas_Object *obj, const char *part, Evas_Object *child);
-
-/**
- * @brief Removes an object from the box.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param pos The position index of the object (starts counting from 0)
- *
- * @return Pointer to the object removed, or @c NULL.
- *
- * Removes from the box indicated by part, the object in the position
- * pos.
- *
- * @see edje_object_part_box_remove()
- * @see edje_object_part_box_remove_all()
- */
-EAPI Evas_Object *edje_object_part_box_remove_at (Evas_Object *obj, const char *part, unsigned int pos);
-
-/**
- * @brief Removes all elements from the box.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param clear Delete objects on removal
- *
- * @return 1: Successfully cleared.\n
- * 0: An error occurred.
- *
- * Removes all the external objects from the box indicated by part.
- * Elements created from the theme will not be removed.
- *
- * @see edje_object_part_box_remove()
- * @see edje_object_part_box_remove_at()
- */
-EAPI Eina_Bool edje_object_part_box_remove_all (Evas_Object *obj, const char *part, Eina_Bool clear);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Part_Table Edje Table Part
- *
- * @brief Functions that deal with parts of type table.
- *
- * Table is a container type for parts, that means it can contain
- * other parts.
- *
- * @ingroup Edje_Object_Part
- *
- * @{
- */
-
-typedef enum _Edje_Object_Table_Homogeneous_Mode
-{
- EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE = 0,
- EDJE_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1,
- EDJE_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2
-} Edje_Object_Table_Homogeneous_Mode;
-
-/**
- * @brief Retrieve a child from a table
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param col The column of the child to get
- * @param row The row of the child to get
- * @return The child Evas_Object
- */
-EAPI Evas_Object *edje_object_part_table_child_get (const Evas_Object *obj, const char *part, unsigned int col, unsigned int row);
-
-/**
- * @brief Packs an object into the table.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param child_obj The object to pack in
- * @param col The column to place it in
- * @param row The row to place it in
- * @param colspan Columns the child will take
- * @param rowspan Rows the child will take
- *
- * @return @c EINA_TRUE object was added, @c EINA_FALSE on failure
- *
- * Packs an object into the table indicated by part.
- */
-EAPI Eina_Bool edje_object_part_table_pack (Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
-
-/**
- * @brief Removes an object from the table.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param child_obj The object to pack in
- *
- * @return @c EINA_TRUE object removed, @c EINA_FALSE on failure
- *
- * Removes an object from the table indicated by part.
- */
-EAPI Eina_Bool edje_object_part_table_unpack (Evas_Object *obj, const char *part, Evas_Object *child_obj);
-
-/**
- * @brief Gets the number of columns and rows the table has.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param cols Pointer where to store number of columns (can be NULL)
- * @param rows Pointer where to store number of rows (can be NULL)
- *
- * @return @c EINA_TRUE get some data, @c EINA_FALSE on failure
- *
- * Retrieves the size of the table in number of columns and rows.
- */
-EAPI Eina_Bool edje_object_part_table_col_row_size_get (const Evas_Object *obj, const char *part, int *cols, int *rows);
-
-/**
- * @brief Removes all object from the table.
- *
- * @param obj A valid Evas_Object handle
- * @param part The part name
- * @param clear If set, will delete subobjs on remove
- *
- * @return @c EINA_TRUE clear the table, @c EINA_FALSE on failure
- *
- * Removes all object from the table indicated by part, except the
- * internal ones set from the theme.
- */
-EAPI Eina_Bool edje_object_part_table_clear (Evas_Object *obj, const char *part, Eina_Bool clear);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Object_Communication_Interface_Message Edje Communication Interface: Message
- *
- * @brief Functions that deal with messages.
- *
- * Edje has two communication interfaces between @b code and @b theme.
- * Signals and messages.
- *
- * Edje messages are one of the communication interfaces between
- * @b code and a given Edje object's @b theme. With messages, one can
- * communicate values like strings, float numbers and integer
- * numbers. Moreover, messages can be identified by integer
- * numbers. See #Edje_Message_Type for the full list of message types.
- *
- * @note Messages must be handled by scripts.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-/**
- * Identifiers of Edje message types, which can be sent back and forth
- * code and a given Edje object's theme file/group.
- *
- * @see edje_object_message_send()
- * @see edje_object_message_handler_set()
- */
-typedef enum _Edje_Message_Type
-{
- EDJE_MESSAGE_NONE = 0,
-
- EDJE_MESSAGE_SIGNAL = 1, /* DONT USE THIS */
-
- EDJE_MESSAGE_STRING = 2, /**< A message with a string as value. Use #Edje_Message_String structs as message body, for this type. */
- EDJE_MESSAGE_INT = 3, /**< A message with an integer number as value. Use #Edje_Message_Int structs as message body, for this type. */
- EDJE_MESSAGE_FLOAT = 4, /**< A message with a floating pointer number as value. Use #Edje_Message_Float structs as message body, for this type. */
-
- EDJE_MESSAGE_STRING_SET = 5, /**< A message with a list of strings as value. Use #Edje_Message_String_Set structs as message body, for this type. */
- EDJE_MESSAGE_INT_SET = 6, /**< A message with a list of integer numbers as value. Use #Edje_Message_Int_Set structs as message body, for this type. */
- EDJE_MESSAGE_FLOAT_SET = 7, /**< A message with a list of floating point numbers as value. Use #Edje_Message_Float_Set structs as message body, for this type. */
-
- EDJE_MESSAGE_STRING_INT = 8, /**< A message with a struct containing a string and an integer number as value. Use #Edje_Message_String_Int structs as message body, for this type. */
- EDJE_MESSAGE_STRING_FLOAT = 9, /**< A message with a struct containing a string and a floating point number as value. Use #Edje_Message_String_Float structs as message body, for this type. */
-
- EDJE_MESSAGE_STRING_INT_SET = 10, /**< A message with a struct containing a string and list of integer numbers as value. Use #Edje_Message_String_Int_Set structs as message body, for this type. */
- EDJE_MESSAGE_STRING_FLOAT_SET = 11 /**< A message with a struct containing a string and list of floating point numbers as value. Use #Edje_Message_String_Float_Set structs as message body, for this type. */
-} Edje_Message_Type;
-
-typedef struct _Edje_Message_String Edje_Message_String;
-typedef struct _Edje_Message_Int Edje_Message_Int;
-typedef struct _Edje_Message_Float Edje_Message_Float;
-typedef struct _Edje_Message_String_Set Edje_Message_String_Set;
-typedef struct _Edje_Message_Int_Set Edje_Message_Int_Set;
-typedef struct _Edje_Message_Float_Set Edje_Message_Float_Set;
-typedef struct _Edje_Message_String_Int Edje_Message_String_Int;
-typedef struct _Edje_Message_String_Float Edje_Message_String_Float;
-typedef struct _Edje_Message_String_Int_Set Edje_Message_String_Int_Set;
-typedef struct _Edje_Message_String_Float_Set Edje_Message_String_Float_Set;
-
-struct _Edje_Message_String
-{
- char *str; /**< The message's string pointer */
-}; /**< Structure passed as value on #EDJE_MESSAGE_STRING messages. The string in it is automatically freed Edje if passed to you by Edje */
-
-struct _Edje_Message_Int
-{
- int val; /**< The message's value */
-}; /**< Structure passed as value on #EDJE_MESSAGE_INT messages */
-
-struct _Edje_Message_Float
-{
- double val; /**< The message's value */
-}; /**< Structure passed as value on #EDJE_MESSAGE_FLOAT messages */
-
-struct _Edje_Message_String_Set
-{
- int count; /**< The size of the message's array (may be greater than 1) */
- char *str[1]; /**< The message's @b array of string pointers */
-}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_SET messages. The array in it is automatically freed if passed to you by Edje */
-
-struct _Edje_Message_Int_Set
-{
- int count; /**< The size of the message's array (may be greater than 1) */
- int val[1]; /**< The message's @b array of integers */
-}; /**< Structure passed as value on #EDJE_MESSAGE_INT_SET messages. The array in it is automatically freed if passed to you by Edje */
-
-struct _Edje_Message_Float_Set
-{
- int count; /**< The size of the message's array (may be greater than 1) */
- double val[1]; /**< The message's @b array of floats */
-}; /**< Structure passed as value on #EDJE_MESSAGE_FLOAT_SET messages. The array in it is automatically freed if passed to you by Edje */
-
-struct _Edje_Message_String_Int
-{
- char *str; /**< The message's string value */
- int val; /**< The message's integer value */
-}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_INT messages. The string in it is automatically freed if passed to you by Edje */
-
-struct _Edje_Message_String_Float
-{
- char *str; /**< The message's string value */
- double val; /**< The message's float value */
-}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_FLOAT messages. The string in it is automatically freed if passed to you by Edje */
-
-struct _Edje_Message_String_Int_Set
-{
- char *str; /**< The message's string value */
- int count; /**< The size of the message's array (may be greater than 1) */
- int val[1]; /**< The message's @b array of integers */
-}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_INT_SET messages. The array and string in it are automatically freed if passed to you by Edje */
-
-struct _Edje_Message_String_Float_Set
-{
- char *str; /**< The message's string value */
- int count; /**< The size of the message's array (may be greater than 1) */
- double val[1]; /**< The message's @b array of floats */
-}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_FLOAT_SET messages. The array and string in it are automatically freed if passed to you by Edje */
-
-typedef void (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg); /**< Edje message handler callback functions's prototype definition. @c data will have the auxiliary data pointer set at the time the callback registration. @c obj will be a pointer the Edje object where the message comes from. @c type will identify the type of the given message and @c msg will be a pointer the message's contents, de facto, which depend on @c type. */
-
-/**
- * @brief Send an (Edje) message to a given Edje object
- *
- * @param obj A handle to an Edje object
- * @param type The type of message to send to @p obj
- * @param id A identification number for the message to be sent
- * @param msg The message's body, a struct depending on @p type
- *
- * This function sends an Edje message to @p obj and to all of its
- * child objects, if it has any (swallowed objects are one kind of
- * child object). @p type and @p msg @b must be matched accordingly,
- * as documented in #Edje_Message_Type.
- *
- * The @p id argument as a form of code and theme defining a common
- * interface on message communication. One should define the same IDs
- * on both code and EDC declaration (see @ref edcref "the syntax" for
- * EDC files), to individualize messages (binding them to a given
- * context).
- *
- * The function to handle messages arriving @b from @b obj is set with
- * edje_object_message_handler_set().
- */
-EAPI void edje_object_message_send (Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
-
-/**
- * @brief Set an Edje message handler function for a given Edje object.
- *
- * @param obj A handle to an Edje object
- * @param func The function to handle messages @b coming from @p obj
- * @param data Auxiliary data to be passed to @p func
- *
- * For scriptable programs on an Edje object's defining EDC file which
- * send messages with the @c send_message() primitive, one can attach
- * handler functions, to be called in the code which creates
- * that object (see @ref edcref "the syntax" for EDC files).
- *
- * This function associates a message handler function and the
- * attached data pointer to the object @p obj.
- *
- * @see edje_object_message_send()
- */
-EAPI void edje_object_message_handler_set (Evas_Object *obj, Edje_Message_Handler_Cb func, void *data);
-
-/**
- * @brief Process an object's message queue.
- *
- * @param obj A handle to an Edje object.
- *
- * This function goes through the object message queue processing the
- * pending messages for @b this specific Edje object. Normally they'd
- * be processed only at idle time.
- *
- */
-EAPI void edje_object_message_signal_process (Evas_Object *obj);
-
-
-/**
- * @brief Process all queued up edje messages.
- *
- * This function triggers the processing of messages addressed to any
- * (alive) edje objects.
- *
- */
-EAPI void edje_message_signal_process (void);
-
-/**
- * @}
- */
-
-/**
- * @defgroup Edje_Perspective Edje Perspective
- *
- * @brief Functions that deal with 3D projection of an 2D object.
- *
- * Perspective is a graphical tool that makes objets represented in 2D
- * look like they have a 3D appearance.
- *
- * Edje allows us to use perspective on any edje object. This group of
- * functions deal with the use of perspective, by creating and configuring
- * a perspective object that must set to a edje object or a canvas,
- * affecting all the objects inside that have no particular perspective
- * set already.
- *
- * @ingroup Edje_Object_Group
- *
- * @{
- */
-
-/* perspective info for maps inside edje objects */
-typedef struct _Edje_Perspective Edje_Perspective;
-
-/**
- * Creates a new perspective in the given canvas.
- *
- * @param e The given canvas (Evas).
- * @return An @ref Edje_Perspective object for this canvas, or @c NULL on errors.
- *
- * This function creates a perspective object that can be set on an Edje
- * object, or globally to all Edje objects on this canvas.
- *
- * @see edje_perspective_set()
- * @see edje_perspective_free()
- */
-EAPI Edje_Perspective *edje_perspective_new (Evas *e);
-/**
- * Delete the given perspective object.
- *
- * @param ps A valid perspective object, or @c NULL.
- *
- * This function will delete the perspective object. If the perspective
- * effect was being applied to any Edje object or part, this effect won't be
- * applied anymore.
- *
- * @see edje_perspective_new()
- */
-EAPI void edje_perspective_free (Edje_Perspective *ps);
-/**
- * Setup the transform for this perspective object.
- *
- * This sets the parameters of the perspective transformation. X, Y and Z
- * values are used. The px and py points specify the "infinite distance" point
- * in the 3D conversion (where all lines converge to like when artists draw
- * 3D by hand). The @p z0 value specifies the z value at which there is a 1:1
- * mapping between spatial coordinates and screen coordinates. Any points
- * on this z value will not have their X and Y values modified in the transform.
- * Those further away (Z value higher) will shrink into the distance, and
- * those less than this value will expand and become bigger. The @p foc value
- * determines the "focal length" of the camera. This is in reality the distance
- * between the camera lens plane itself (at or closer than this rendering
- * results are undefined) and the "z0" z value. This allows for some "depth"
- * control and @p foc must be greater than 0.
- *
- * @param ps The perspective object
- * @param px The perspective distance X coordinate
- * @param py The perspective distance Y coordinate
- * @param z0 The "0" z plane value
- * @param foc The focal distance
- */
-EAPI void edje_perspective_set (Edje_Perspective *ps, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc);
-/**
- * Make this perspective object be global for its canvas.
- *
- * @param ps The given perspective object
- * @param global @c EINA_TRUE if the perspective should be global, @c
- * EINA_FALSE otherwise.
- *
- * The canvas which this perspective object is being set as global is the one
- * given as argument upon the object creation (the @p evas parameter on the
- * function @c edje_perspective_new(evas) ).
- *
- * There can be only one global perspective object set per canvas, and if
- * a perspective object is set to global when there was already another
- * global perspective set, the old one will be set as non-global.
- *
- * A global perspective just affects a part if its Edje object doesn't have a
- * perspective object set to it, and if the part doesn't point to another
- * part to be used as perspective.
- *
- * @see edje_object_perspective_set()
- * @see edje_perspective_global_get()
- * @see edje_perspective_new()
- */
-EAPI void edje_perspective_global_set (Edje_Perspective *ps, Eina_Bool global);
-/**
- * Get whether the given perspective object is global or not.
- *
- * @param ps The given perspective object.
- * @return @c EINA_TRUE if this perspective object is global, @c EINA_FALSE
- * otherwise.
- *
- * @see edje_perspective_global_set()
- */
-EAPI Eina_Bool edje_perspective_global_get (const Edje_Perspective *ps);
-/**
- * Get the global perspective object set for this canvas.
- *
- * @param e The given canvas (Evas).
- * @return The perspective object set as global for this canvas. Or @c NULL
- * if there is no global perspective set and on errors.
- *
- * This function will return the perspective object that was set as global
- * with edje_perspective_global_set().
- *
- * @see edje_perspective_global_set()
- * @see edje_perspective_global_get()
- */
-EAPI const Edje_Perspective *edje_evas_global_perspective_get(const Evas *e);
-/**
- * Set the given perspective object on this Edje object.
- *
- * @param obj The Edje object on the perspective will be set.
- * @param ps The perspective object that will be used.
- *
- * Make the given perspective object be the default perspective for this Edje
- * object.
- *
- * There can be only one perspective object per Edje object, and if a
- * previous one was set, it will be removed and the new perspective object
- * will be used.
- *
- * An Edje perspective will only affect a part if it doesn't point to another
- * part to be used as perspective.
- *
- * @see edje_object_perspective_new()
- * @see edje_object_perspective_get()
- * @see edje_perspective_set()
- */
-EAPI void edje_object_perspective_set (Evas_Object *obj, Edje_Perspective *ps);
-/**
- * Get the current perspective used on this Edje object.
- *
- * @param obj the given Edje object.
- * @return The perspective object being used on this Edje object. Or @c NULL
- * if there was none, and on errors.
- *
- * @see edje_object_perspective_set()
- */
-EAPI const Edje_Perspective *edje_object_perspective_get (const Evas_Object *obj);
-
-/**
- * @}
- */
+#include "Edje_Common.h"
+#ifndef EFL_NOLEGACY_API_SUPPORT
+#include "Edje_Legacy.h"
+#endif
+#ifdef EFL_EO_API_SUPPORT
+#include "Edje_Eo.h"
+#endif
#ifdef __cplusplus
}
diff --git a/src/lib/edje/Edje_Common.h b/src/lib/edje/Edje_Common.h
new file mode 100644
index 0000000000..751248499c
--- /dev/null
+++ b/src/lib/edje/Edje_Common.h
@@ -0,0 +1,1971 @@
+/**
+ * @internal
+ *
+ * @typedef Edje_Version
+ * Type for edje version
+ *
+ * @ingroup Edje_General_Group
+ */
+typedef struct _Edje_Version
+{
+ int major;
+ int minor;
+ int micro;
+ int revision;
+} Edje_Version;
+
+EAPI extern Edje_Version *edje_version;
+
+
+/**
+ * @defgroup Edje_Object_Communication_Interface_Signal Edje Communication Interface: Signal
+ *
+ * @brief Functions that deal with signals.
+ *
+ * Edje has two communication interfaces between @b code and @b theme.
+ * Signals and messages.
+ *
+ * This group has functions that deal with signals. One can either
+ * emit a signal from @b code to a @b theme or create handles for
+ * the ones emitted from @b themes. Signals are identified by strings.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+typedef void (*Edje_Signal_Cb) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Edje signal callback functions's prototype definition. @c data will have the auxiliary data pointer set at the time the callback registration. @c obj will be a pointer the Edje object where the signal comes from. @c emission will identify the exact signal's emission string and @c source the exact signal's source one. */
+
+/**
+ * @brief Get extra data passed to callbacks.
+ *
+ * @return the extra data for that callback.
+ *
+ * Some callbacks pass extra information. This function gives access to that
+ * extra information. It's somehow like event_info in smart callbacks.
+ *
+ * @see edje_object_signal_callback_add() for more on Edje signals.
+ * @since 1.1.0
+ */
+EAPI void * edje_object_signal_callback_extra_data_get(void);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_General_Group Edje General
+ * @ingroup Edje
+ *
+ * @brief This group discusses functions that have general purposes or affect Edje as a whole.
+ *
+ * Besides containing the initialize and shutdown functions of the library, which should
+ * always be called when we are using Edje, this module contains some other utilities that
+ * could be used in many contexts or should do their jobs independent of the context inside Edje.
+ *
+ * @{
+ */
+
+/**
+ * @brief Initialize the Edje library.
+ *
+ * @return The new init count. The initial value is zero.
+ *
+ * This function initializes the Edje library, making the proper calls
+ * to internal initialization functions. It will also initialize its
+ * @b dependencies, making calls to @c eina_init(), @c ecore_init(),
+ * @c embryo_init() and @c eet_init(). So, there is no need to call
+ * those functions again, in your code. To shutdown Edje there is the
+ * function edje_shutdown().
+ *
+ * @see edje_shutdown()
+ * @see eina_init()
+ * @see ecore_init()
+ * @see embryo_init()
+ * @see eet_init()
+ *
+ */
+EAPI int edje_init (void);
+
+/**
+ * @brief Shutdown the Edje library.
+ *
+ * @return The number of times the library has been initialised
+ * without being shutdown.
+ *
+ * This function shuts down the Edje library. It will also call the
+ * shutdown functions of its @b dependencies, which are @c
+ * eina_shutdown(), @c ecore_shutdown(), @c embryo_shutdown() and @c
+ * eet_shutdown(), so there is no need to call these functions again,
+ * in your code.
+ *
+ * @see edje_init()
+ * @see eina_shutdown()
+ * @see ecore_shutdown()
+ * @see embryo_shutdown()
+ * @see eet_shutdown()
+ *
+ */
+EAPI int edje_shutdown (void);
+
+/**
+ * @brief Set the edje append fontset.
+ *
+ * @param fonts The fontset to append.
+ *
+ * This function sets the edje append fontset.
+ *
+ */
+EAPI void edje_fontset_append_set (const char *fonts);
+
+/**
+ * Get data from the file level data block of an edje file
+ * @param file The path to the .edj file
+ * @param key The data key
+ * @return The string value of the data or NULL if no key is found.
+ * Must be freed by the user when no longer needed.
+ *
+ * If an edje file test.edj is built from the following edc:
+ *
+ * data {
+ * item: "key1" "value1";
+ * item: "key2" "value2";
+ * }
+ * collections { ... }
+ *
+ * Then, edje_file_data_get("test.edj", "key1") will return "value1"
+ */
+EAPI char *edje_file_data_get (const char *file, const char *key);
+
+/**
+ * @brief Load a new module in Edje.
+ * @param module The name of the module that will be added to Edje.
+ * @return EINA_TRUE if the module was successfully loaded. Otherwise, EINA_FALSE.
+ *
+ * Modules are used to add functionality to Edje.
+ * So, when a module is loaded, its functionality should be available for use.
+ *
+ */
+EAPI Eina_Bool edje_module_load (const char *module);
+
+/**
+ * @brief Retrieves all modules that can be loaded.
+ * @return A list of all loadable modules.
+ *
+ * This function retrieves all modules that can be loaded by edje_module_load().
+ *
+ * @see edje_module_load().
+ *
+ */
+EAPI const Eina_List *edje_available_modules_get (void);
+
+/**
+ * @brief Get the edje append fontset.
+ *
+ * @return The edje append fontset.
+ *
+ * This function returns the edje append fontset set by
+ * edje_fontset_append_set() function.
+ *
+ * @see edje_fontset_append_set().
+ *
+ */
+EAPI const char *edje_fontset_append_get (void);
+
+/**
+ * @brief Set the file cache size.
+ *
+ * @param count The file cache size in edje file units. Default is 16.
+ *
+ * This function sets the file cache size. Edje keeps this cache in
+ * order to prevent duplicates of edje file entries in memory. The
+ * file cache size can be retrieved with edje_file_cache_get().
+ *
+ * @see edje_file_cache_get()
+ * @see edje_file_cache_flush()
+ *
+ */
+EAPI void edje_file_cache_set (int count);
+
+/**
+ * @brief Return the file cache size.
+ *
+ * @return The file cache size in edje file units. Default is 16.
+ *
+ * This function returns the file cache size set by
+ * edje_file_cache_set().
+ *
+ * @see edje_file_cache_set()
+ * @see edje_file_cache_flush()
+ *
+ */
+EAPI int edje_file_cache_get (void);
+
+/**
+ * @brief Clean the file cache.
+ *
+ * This function cleans the file cache entries, but keeps this cache's
+ * size to the last value set.
+ *
+ * @see edje_file_cache_set()
+ * @see edje_file_cache_get()
+ *
+ */
+EAPI void edje_file_cache_flush (void);
+
+/**
+ * @brief Set the collection cache size.
+ *
+ * @param count The collection cache size, in edje object units. Default is 16.
+ *
+ * This function sets the collection cache size. Edje keeps this cache
+ * in order to prevent duplicates of edje {collection,group,part}
+ * entries in memory. The collection cache size can be retrieved with
+ * edje_collection_cache_get().
+ *
+ * @see edje_collection_cache_get()
+ * @see edje_collection_cache_flush()
+ *
+ */
+EAPI void edje_collection_cache_set (int count);
+
+/**
+ * @brief Return the collection cache size.
+ *
+ * @return The collection cache size, in edje object units. Default is 16.
+ *
+ * This function returns the collection cache size set by
+ * edje_collection_cache_set().
+ *
+ * @see edje_collection_cache_set()
+ * @see edje_collection_cache_flush()
+ *
+ */
+EAPI int edje_collection_cache_get (void);
+
+/**
+ * @brief Clean the collection cache.
+ *
+ * This function cleans the collection cache, but keeps this cache's
+ * size to the last value set.
+ *
+ * @see edje_collection_cache_set()
+ * @see edje_collection_cache_get()
+ *
+ */
+EAPI void edje_collection_cache_flush (void);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_External_Group Edje External
+ * @ingroup Edje
+ *
+ * @brief This group discusses functions of the external section of Edje.
+ *
+ * The programmer can create new types for parts, that will be called generically
+ * EXTERNALS as they are not native of Edje. The developer must also create
+ * plugins that will define the meaning of each extra properties carried by
+ * these parts of type EXTERNAL.
+ *
+ * As long as there are new types properly registered with the plugins created,
+ * the user can use the parts of type EXTERNAL as all the parts of native types.
+ *
+ * @{
+ */
+
+/**
+ * The possible types the parameters of an EXTERNAL part can be.
+ */
+typedef enum _Edje_External_Param_Type
+{
+ EDJE_EXTERNAL_PARAM_TYPE_INT, /**< Parameter value is an integer. */
+ EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, /**< Parameter value is a double. */
+ EDJE_EXTERNAL_PARAM_TYPE_STRING, /**< Parameter value is a string. */
+ EDJE_EXTERNAL_PARAM_TYPE_BOOL, /**< Parameter value is boolean. */
+ EDJE_EXTERNAL_PARAM_TYPE_CHOICE, /**< Parameter value is one of a set of
+ predefined string choices. */
+ EDJE_EXTERNAL_PARAM_TYPE_MAX /**< Sentinel. Don't use. */
+} Edje_External_Param_Type;
+
+/**
+ * Flags that determine how a parameter may be accessed in different
+ * circumstances.
+ */
+typedef enum _Edje_External_Param_Flags
+{
+ EDJE_EXTERNAL_PARAM_FLAGS_NONE = 0, /**< Property is incapable of operations, this is used to catch bogus flags. */
+ EDJE_EXTERNAL_PARAM_FLAGS_GET = (1 << 0), /**< Property can be read/get. */
+ EDJE_EXTERNAL_PARAM_FLAGS_SET = (1 << 1), /**< Property can be written/set. This only enables edje_object_part_external_param_set() and Embryo scripts. To enable the parameter being set from state description whenever it changes state, use #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */
+ EDJE_EXTERNAL_PARAM_FLAGS_STATE = (1 << 2), /**< Property can be set from state description. */
+ EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR = (1 << 3), /**< This property is only set once when the object is constructed using its value from "default" 0.0 state description. Setting this overrides #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */
+ EDJE_EXTERNAL_PARAM_FLAGS_REGULAR = (EDJE_EXTERNAL_PARAM_FLAGS_GET |
+ EDJE_EXTERNAL_PARAM_FLAGS_SET |
+ EDJE_EXTERNAL_PARAM_FLAGS_STATE) /**< Convenience flag that sets property as GET, SET and STATE. */
+} Edje_External_Param_Flags;
+
+/**
+ * @brief Converts type identifier to string nicer representation.
+ *
+ * This may be used to debug or other informational purposes.
+ *
+ * @param type the identifier to convert.
+ * @return the string with the string representation, or @c "(unknown)".
+ */
+EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type) EINA_PURE;
+
+/**
+ * Struct that holds parameters for parts of type EXTERNAL.
+ */
+struct _Edje_External_Param
+{
+ const char *name; /**< The name of the parameter. */
+ Edje_External_Param_Type type; /**< The type of the parameter. This defines
+ which of the next three variables holds
+ the value for it. */
+ // XXX these could be in a union, but eet doesn't support them (or does it?)
+ int i; /**< Used by both integer and boolean */
+ double d; /**< Used by double */
+ const char *s; /**< Used by both string and choice */
+};
+/**
+ * Struct that holds parameters for parts of type EXTERNAL.
+ */
+typedef struct _Edje_External_Param Edje_External_Param;
+
+/**
+ * Helper macro to indicate an EXTERNAL's integer parameter is undefined.
+ */
+#define EDJE_EXTERNAL_INT_UNSET INT_MAX
+/**
+ * Helper macro to indicate an EXTERNAL's double parameter is undefined.
+ */
+#define EDJE_EXTERNAL_DOUBLE_UNSET DBL_MAX
+
+/**
+ * Struct holding information about an EXTERNAL part's parameters.
+ *
+ * When creating types to use with EXTERNAL parts, an array of this type is
+ * used to describe the different parameters the object uses.
+ *
+ * This struct holds the name, type and flags that define how and when the
+ * parameter is used, as well as information specific to each type, like the
+ * maximum or minimum value, that can be used by editors to restrict the
+ * range of values to set for each parameter.
+ */
+typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
+
+/**
+ * Struct holding information about an EXTERNAL part's parameters.
+ *
+ * When creating types to use with EXTERNAL parts, an array of this type is
+ * used to describe the different parameters the object uses.
+ *
+ * This struct holds the name, type and flags that define how and when the
+ * parameter is used, as well as information specific to each type, like the
+ * maximum or minimum value, that can be used by editors to restrict the
+ * range of values to set for each parameter.
+ */
+struct _Edje_External_Param_Info
+{
+ const char *name; /**< Name of the parameter. */
+ Edje_External_Param_Type type; /**< Type of the parameter. */
+ Edje_External_Param_Flags flags; /**< Flags indicating how this parameter is
+ used. */
+ union {
+ struct {
+ int def, /**< Default value for the parameter. */
+ min, /**< Minimum value it can have. */
+ max, /**< Maximum value it can have. */
+ step; /**< Values will be a multiple of this. */
+ } i; /**< Info about integer type parameters. Use #EDJE_EXTERNAL_INT_UNSET
+ on any of them to indicate they are not defined.*/
+ struct {
+ double def, /**< Default value for the parameter. */
+ min, /**< Minimum value it can have. */
+ max, /**< Maximum value it can have. */
+ step; /**< Values will be a multiple of this. */
+ } d; /**< Info about double type parameters. Use
+#EDJE_EXTERNAL_DOUBLE_UNSET on any of them to indicate they are not defined.*/
+ struct {
+ const char *def; /**< Default value. */
+ const char *accept_fmt; /**< Not implemented. */
+ const char *deny_fmt; /**< Not implemented */
+ } s; /**< Info about string type parameters. NULL indicates undefined. */
+ struct {
+ int def; /**< Default value. */
+ const char *false_str; /**< String shown by editors to indicate the false state. */
+ const char *true_str; /**< String shown by editors to indicate the true state. */
+ } b; /**< Info about boolean type parameters.*/
+ struct {
+ const char *def; /**< Default value. */
+ const char **choices; /* Array of strings, each represents a
+ valid value for this parameter. The
+ last element of the array must be
+ NULL. */
+ char *(*def_get)(void *data, const Edje_External_Param_Info *info); /** return malloc() memory with the default choice, should be used if def is NULL. First parameter is Edje_External_Type::data */
+ char **(*query)(void *data, const Edje_External_Param_Info *info); /** NULL terminated array of strings, memory is dynamically allocated and should be freed with free() for array and each element. First parameter is Edje_External_Type::data */
+ } c; /**< Info about choice type parameters. */
+ } info;
+};
+
+#define EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, flags) \
+ {name, EDJE_EXTERNAL_PARAM_TYPE_INT, flags, {.i = {def, min, max, step}}}
+#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, flags) \
+ {name, EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, flags, {.d = {def, min, max, step}}}
+#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, flags) \
+ {name, EDJE_EXTERNAL_PARAM_TYPE_STRING, flags, {.s = {def, accept, deny}}}
+#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, flags) \
+ {name, EDJE_EXTERNAL_PARAM_TYPE_BOOL, flags, {.b = {def, false_str, true_str}}}
+#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, flags) \
+ {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {def, choices, NULL, NULL}}}
+#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, flags) \
+ {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {NULL, NULL, def_get, query}}}
+
+#define EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, min, max, step) \
+ EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
+#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, min, max, step) \
+ EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
+#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, accept, deny) \
+ EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
+#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, false_str, true_str) \
+ EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
+#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL(name, def, choices) \
+ EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
+#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL(name, def_get, query) \
+ EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
+
+#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, def) \
+ EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET)
+#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, def) \
+ EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET)
+#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, def) \
+ EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, NULL, NULL)
+#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, def) \
+ EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, "false", "true")
+
+#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, def, flags) \
+ EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, flags)
+#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, def, flags) \
+ EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, flags)
+#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, def, flags) \
+ EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, NULL, NULL, flags)
+#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, def, flags) \
+ EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, "false", "true", flags)
+
+#define EDJE_EXTERNAL_PARAM_INFO_INT(name) \
+ EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, 0)
+#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE(name) \
+ EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, 0.0)
+#define EDJE_EXTERNAL_PARAM_INFO_STRING(name) \
+ EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, NULL)
+#define EDJE_EXTERNAL_PARAM_INFO_BOOL(name) \
+ EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, 0)
+
+#define EDJE_EXTERNAL_PARAM_INFO_INT_FLAGS(name, flags) \
+ EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, 0, flags)
+#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FLAGS(name, flags) \
+ EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, 0.0, flags)
+#define EDJE_EXTERNAL_PARAM_INFO_STRING_FLAGS(name, flags) \
+ EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, NULL, flags)
+#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FLAGS(name, flags) \
+ EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, 0, flags)
+
+#define EDJE_EXTERNAL_PARAM_INFO_SENTINEL {NULL, 0, 0, {.s = {NULL, NULL, NULL}}}
+
+#define EDJE_EXTERNAL_TYPE_ABI_VERSION (3)
+
+/**
+ * @struct _Edje_External_Type
+ *
+ * @brief Information about an external type to be used.
+ *
+ * This structure provides information on how to display and modify a
+ * third party Evas_Object in Edje.
+ *
+ * Some function pointers are not really used by Edje, but provide
+ * means for Edje users to better interact with such objects. For
+ * instance, an editor may use label_get() and icon_get() to list all
+ * registered external types.
+ *
+ * @note The function pointers provided in this structure must check
+ * for errors and invalid or out-of-range values as for
+ * performance reasons Edje will not enforce hints provided as
+ * #Edje_External_Param_Info in the member parameters_info.
+ */
+struct _Edje_External_Type
+{
+ unsigned int abi_version; /**< always use:
+ * - #EDJE_EXTERNAL_TYPE_ABI_VERSION to declare.
+ * - edje_external_type_abi_version_get() to check.
+ */
+ const char *module; /**< Name of the module that holds these definitions,
+ as used in the externals {} block of a theme
+ definition. */
+ const char *module_name; /**< Canonical name of the module, for displaying
+ in edition programs, for example. */
+ Evas_Object *(*add) (void *data, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name); /**< Creates the object to be used by Edje as the part. @p part_name is the name of the part that holds the object and can be used to forward callbacks from the object as signals from Edje. @p params is the list of #Edje_External_Param, not parsed, from the default state of the part. Parameters of type #EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR should be set on
+ the object here. */
+ void (*state_set) (void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos); /**< Called upon state changes, including the initial "default" 0.0 state. Parameters are the value returned by params_parse(). The @p pos parameter is a value between 0.0 and 1.0 indicating the position in time within the state transition. */
+ void (*signal_emit) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Feed a signal emitted with emission originally set as part_name:signal to this object (without the "part_name:" prefix) */
+ Eina_Bool (*param_set) (void *data, Evas_Object *obj, const Edje_External_Param *param); /**< Dynamically change a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success */
+ Eina_Bool (*param_get) (void *data, const Evas_Object *obj, Edje_External_Param *param); /**< Dynamically fetch a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success. (Must check parameter name and type!) */
+ Evas_Object *(*content_get) (void *data, const Evas_Object *obj, const char *content); /**< Dynamically fetch a sub object of this external, called by scripts and user code. Returns @c Evas_Object * on success. (Must check parameter name and type!) */
+ void *(*params_parse) (void *data, Evas_Object *obj, const Eina_List *params); /**< Parses the list of parameters, converting into a friendly representation. Used with state_set() */
+ void (*params_free) (void *params); /**< Free parameters parsed with params_parse() */
+
+ /* The following callbacks aren't used by Edje itself, but by UI design
+ tools instead */
+ const char *(*label_get) (void *data); /**< Get a label to use to identify this EXTERNAL. (For editors) */
+ const char *(*description_get) (void *data); /**< Get a user friendly description of this EXTERNAL. (For editors) */
+ Evas_Object *(*icon_add) (void *data, Evas *e); /**< Get an icon to use to identify this EXTERNAL. (For editors) */
+ Evas_Object *(*preview_add) (void *data, Evas *e); /**< Get a preview of the EXTERNAL object in use. (For editors) */
+ const char *(*translate) (void *data, const char *orig); /**< called to translate parameters_info name properties for use in user interfaces that support internationalization (i18n) (For editors) */
+
+ Edje_External_Param_Info *parameters_info; /**< An array of #Edje_External_Param_Info describing the different parameters this EXTERNAL may have. The last element in the array must be #EDJE_EXTERNAL_PARAM_INFO_SENTINEL. */
+ void *data; /**< Private user data that will be passed to all of the class functions. */
+};
+typedef struct _Edje_External_Type Edje_External_Type;
+
+/**
+ * Convenience struct used to mass-register types of EXTERNAL objects.
+ *
+ * Used with edje_external_type_array_register().
+ */
+struct _Edje_External_Type_Info
+{
+ const char *name; /**< The name of the type to register. */
+ const Edje_External_Type *info; /**< The type definition. */
+};
+
+typedef struct _Edje_External_Type_Info Edje_External_Type_Info;
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_External_Plugin_Development_Group Edje Development of External Plugins
+ *
+ * @brief Functions to register, unregister EXTERNAL types and develop the plugins.
+ *
+ * This group dicusses functions useful for the development of new plugins.
+ * These functions deal with the newly EXTERNAL types by registering, unregistering and manipulating them.
+ *
+ * @ingroup Edje_External_Group
+ *
+ * @{
+ */
+
+/**
+ * Register a type to be used by EXTERNAL parts.
+ *
+ * Parts of type EXTERNAL will call user defined functions
+ * to create and manipulate the object that's allocated in that part. This is
+ * done by expecifying in the @c source property of the part the name of the
+ * external to use, which must be one registered with this function.
+ *
+ * @param type_name name to register and be known by edje's "source:"
+ * parameter of "type: EXTERNAL" parts.
+ * @param type_info meta-information describing how to interact with it.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
+ * type already registered).
+ *
+ * @see edje_external_type_array_register()
+ */
+EAPI Eina_Bool edje_external_type_register (const char *type_name, const Edje_External_Type *type_info);
+
+/**
+ * Unregister a previously registered EXTERNAL type.
+ *
+ * @param type_name name to unregister. It should have been registered with
+ * edje_external_type_register() before.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
+ * type_name did not exist).
+ *
+ * @see edje_external_type_array_unregister()
+ */
+EAPI Eina_Bool edje_external_type_unregister (const char *type_name);
+
+/**
+ * Register a batch of types and their information.
+ *
+ * When several types will be registered it is recommended to use this
+ * function instead of several calls to edje_external_type_register(), as it
+ * is faster.
+ *
+ * @note The contents of the array will be referenced directly for as long as
+ * the type remains registered, so both the @c name and @c info in the
+ * @p array must be kept alive during all this period (usually, the entire
+ * program lifetime). The most common case would be to keep the array as a
+ * @c static @c const type anyway.
+ *
+ * @param array @c NULL terminated array with type name and
+ * information. Note that type name or information are
+ * referenced directly, so they must be kept alive after
+ * this function returns!
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like
+ * type already registered).
+ *
+ * @see edje_external_type_register()
+ */
+EAPI void edje_external_type_array_register (const Edje_External_Type_Info *array);
+
+/**
+ * Unregister a batch of given external type previously registered.
+ *
+ * @param array @c NULL terminated array, should be the same as the
+ * one used to register with edje_external_type_array_register()
+ *
+ * @see edje_external_type_unregister()
+ */
+EAPI void edje_external_type_array_unregister (const Edje_External_Type_Info *array);
+
+/**
+ * Return the current ABI version for Edje_External_Type structure.
+ *
+ * Always check this number before accessing Edje_External_Type in
+ * your own software. If the number is not the same, your software may
+ * access invalid memory and crash, or just get garbage values.
+ *
+ * @warning @b NEVER, EVER define your own Edje_External_Type using the
+ * return of this function as it will change as Edje library
+ * (libedje.so) changes, but your type definition will
+ * not. Instead, use #EDJE_EXTERNAL_TYPE_ABI_VERSION.
+ *
+ * Summary:
+ * - use edje_external_type_abi_version_get() to check.
+ * - use #EDJE_EXTERNAL_TYPE_ABI_VERSION to define/declare.
+ *
+ * @return The external ABI version the Edje library was compiled with. That
+ * is, the value #EDJE_EXTERNAL_TYPE_ABI_VERSION had at that moment.
+ */
+EAPI unsigned int edje_external_type_abi_version_get (void) EINA_CONST;
+
+/**
+ * Returns an interator of all the registered EXTERNAL types.
+ *
+ * Each item in the iterator is an @c Eina_Hash_Tuple which has the type
+ * of the external in the @c key and #Edje_External_Type as @c data.
+ *
+ * @code
+ * const Eina_Hash_Tuple *tuple;
+ * Eina_Iterator *itr;
+ * const Eina_List *l, *modules;
+ * const char *s;
+ *
+ * modules = edje_available_modules_get();
+ * EINA_LIST_FOREACH(modules, l, s)
+ * {
+ * if (!edje_module_load(s))
+ * printf("Error loading edje module: %s\n", s);
+ * }
+ *
+ * itr = edje_external_iterator_get();
+ * EINA_ITERATOR_FOREACH(itr, tuple)
+ * {
+ * const char *name = tuple->key;
+ * const Edje_External_Type *type = tuple->data;
+ *
+ * if ((!type) ||
+ * (type->abi_version != edje_external_type_abi_version_get()))
+ * {
+ * printf("Error: invalid type %p (abi: %d, expected: %d)\n",
+ * type, type ? type->abi_version : 0,
+ * edje_external_type_abi_version_get());
+ * continue;
+ * }
+ *
+ * printf("%s: %s (%s) label='%s' desc='%s'\n",
+ * name, type->module, type->module_name,
+ * type->label_get ? type->label_get(type->data) : "",
+ * type->description_get ? type->description_get(type->data) : "");
+ * }
+ *
+ * @endcode
+ */
+EAPI Eina_Iterator *edje_external_iterator_get (void);
+
+/**
+ * Conevenience function to find a specific parameter in a list of them.
+ *
+ * @param params The list of parameters for the external
+ * @param key The parameter to look for
+ *
+ * @return The matching #Edje_External_Param or NULL if it's not found.
+ */
+EAPI Edje_External_Param *edje_external_param_find (const Eina_List *params, const char *key);
+
+/**
+ * Get the value of the given parameter of integer type.
+ *
+ * Look for the @p key parameter in the @p params list and return its value in
+ * @p ret. If the parameter is found and is of type
+ * #EDJE_EXTERNAL_PARAM_TYPE_INT, its value will be stored in the int pointed
+ * by @p ret, returning EINA_TRUE. In any other case, the function returns
+ * EINA_FALSE.
+ *
+ * @param params List of parameters where to look
+ * @param key Name of the parameter to fetch
+ * @param ret Int pointer where to store the value, must not be NULL.
+ *
+ * @return EINA_TRUE if the parameter was found and is of integer type,
+ * EINA_FALSE otherwise.
+ */
+EAPI Eina_Bool edje_external_param_int_get (const Eina_List *params, const char *key, int *ret);
+
+/**
+ * Get the value of the given parameter of double type.
+ *
+ * Look for the @p key parameter in the @p params list and return its value in
+ * @p ret. If the parameter is found and is of type
+ * #EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, its value will be stored in the double
+ * pointed by @p ret, returning EINA_TRUE. In any other case, the function
+ * returns EINA_FALSE.
+ *
+ * @param params List of parameters where to look
+ * @param key Name of the parameter to fetch
+ * @param ret Double pointer where to store the value, must not be NULL.
+ *
+ * @return EINA_TRUE if the parameter was found and is of double type,
+ * EINA_FALSE otherwise.
+ */
+EAPI Eina_Bool edje_external_param_double_get (const Eina_List *params, const char *key, double *ret);
+
+/**
+ * Get the value of the given parameter of string type.
+ *
+ * Look for the @p key parameter in the @p params list and return its value in
+ * @p ret. If the parameter is found and is of type
+ * #EDJE_EXTERNAL_PARAM_TYPE_STRING, its value will be stored in the pointer
+ * pointed by @p ret, returning EINA_TRUE. In any other case, the function
+ * returns EINA_FALSE.
+ *
+ * The string stored in @p ret must not be freed or modified.
+ *
+ * @param params List of parameters where to look
+ * @param key Name of the parameter to fetch
+ * @param ret String pointer where to store the value, must not be NULL.
+ *
+ * @return EINA_TRUE if the parameter was found and is of string type,
+ * EINA_FALSE otherwise.
+ */
+EAPI Eina_Bool edje_external_param_string_get (const Eina_List *params, const char *key, const char **ret);
+
+/**
+ * Get the value of the given parameter of boolean type.
+ *
+ * Look for the @p key parameter in the @p params list and return its value in
+ * @p ret. If the parameter is found and is of type
+ * #EDJE_EXTERNAL_PARAM_TYPE_BOOL, its value will be stored in the Eina_Bool
+ * pointed by @p ret, returning EINA_TRUE. In any other case, the function
+ * returns EINA_FALSE.
+ *
+ * @param params List of parameters where to look
+ * @param key Name of the parameter to fetch
+ * @param ret Eina_Bool pointer where to store the value, must not be NULL.
+ *
+ * @return EINA_TRUE if the parameter was found and is of boolean type,
+ * EINA_FALSE otherwise.
+ */
+EAPI Eina_Bool edje_external_param_bool_get (const Eina_List *params, const char *key, Eina_Bool *ret);
+
+/**
+ * Get the value of the given parameter of choice type.
+ *
+ * Look for the @p key parameter in the @p params list and return its value in
+ * @p ret. If the parameter is found and is of type
+ * #EDJE_EXTERNAL_PARAM_TYPE_CHOICE, its value will be stored in the string
+ * pointed by @p ret, returning EINA_TRUE. In any other case, the function
+ * returns EINA_FALSE.
+ *
+ * The string stored in @p ret must not be freed or modified.
+ *
+ * @param params List of parameters where to look
+ * @param key Name of the parameter to fetch
+ * @param ret String pointer where to store the value, must not be NULL.
+ *
+ * @return EINA_TRUE if the parameter was found and is of integer type,
+ * EINA_FALSE otherwise.
+ */
+EAPI Eina_Bool edje_external_param_choice_get (const Eina_List *params, const char *key, const char **ret);
+
+/**
+ * Get the array of parameters information about a type given its name.
+ *
+ * @note the type names and other strings are static, that means they are
+ * @b NOT translated. One must use
+ * Edje_External_Type::translate() to translate those.
+ *
+ * @return the NULL terminated array, or @c NULL if type is unknown or
+ * it does not have any parameter information.
+ *
+ * @see edje_external_type_get()
+ */
+EAPI const Edje_External_Param_Info *edje_external_param_info_get (const char *type_name);
+
+/**
+ * Get the #Edje_External_Type that defines an EXTERNAL type registered with
+ * the name @p type_name.
+ */
+EAPI const Edje_External_Type *edje_external_type_get (const char *type_name);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_Group Edje Object
+ * @ingroup Edje
+ *
+ * @brief This group discusses functions that deal with Edje layouts and its components
+ *
+ * An important thing to know about this group is that there is no
+ * Edje_Object in @b code. What we refer here as object are layouts (or themes)
+ * defined by groups, and parts, both declared in EDC files. They are of
+ * type Evas_Object as the other native objects of Evas, but they only exist
+ * in Edje, so that is why we are calling them "edje objects".
+ *
+ * With the Edje Object Group functions we can deal with layouts by managing
+ * its aspect, content, message and signal exchange and animation, among others.
+ *
+ * @{
+ */
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_Scale Edje Scale
+ *
+ * @brief Functions that deal with scaling objects
+ *
+ * Edje allows one to build scalable interfaces. Scaling factors,
+ * which are set to neutral (@c 1.0) values by default (no scaling,
+ * actual sizes), are of two types: @b global and @b individual.
+ *
+ * Scaling affects the values of minimum/maximum @b part sizes, which
+ * are @b multiplied by it. Font sizes are scaled, too.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+/**
+ * @brief Set Edje's global scaling factor.
+ *
+ * @param scale The global scaling factor (the default value is @c 1.0)
+ *
+ * Edje's global scaling factor will affect all its objects which
+ * hadn't their individual scaling factors altered from the default
+ * value (which is zero). If they had it set differently, by
+ * edje_object_scale_set(), that factor will @b override the global
+ * one.
+ *
+ * @warning Only parts which, at EDC level, had the @c "scale"
+ * property set to @c 1, will be affected by this function. Check the
+ * complete @ref edcref "syntax reference" for EDC files.
+ *
+ * @see edje_scale_get().
+ */
+EAPI void edje_scale_set (double scale);
+
+/**
+ * @brief Retrieve Edje's global scaling factor.
+ *
+ * @return The global scaling factor
+ *
+ * This function returns Edje's global scaling factor.
+ *
+ * @see edje_scale_set() for more details
+ *
+ */
+EAPI double edje_scale_get (void);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Text_Entry Edje Text Entry
+ *
+ * @brief Functions that deal with text entries
+ *
+ * In Edje it's possible to use a text part as a entry so the user is
+ * able to make inputs of text. To do so, the text part must be set
+ * with a input panel taht will work as a virtual keyboard.
+ *
+ * Some of effects can be applied to the entered text and also plenty
+ * actions can be performed after any input.
+ *
+ * Use the functions of this section to handle the user input of text.
+ *
+ * @ingroup Edje_Part_Text
+ *
+ * @{
+ */
+
+struct _Edje_Entry_Change_Info
+{
+ union {
+ struct {
+ const char *content;
+ size_t pos;
+ size_t plain_length; /* Number of cursor positions represented
+ in content. */
+ } insert;
+ struct {
+ const char *content;
+ size_t start, end;
+ } del;
+ } change;
+ Eina_Bool insert : 1; /**< True if the "change" union's "insert" is valid */
+ Eina_Bool merge : 1; /**< True if can be merged with the previous one. Used for example with insertion when something is already selected. */
+};
+
+/**
+ * @since 1.1.0
+ */
+typedef struct _Edje_Entry_Change_Info Edje_Entry_Change_Info;
+
+typedef enum _Edje_Text_Filter_Type
+{
+ EDJE_TEXT_FILTER_TEXT = 0,
+ EDJE_TEXT_FILTER_FORMAT = 1,
+ EDJE_TEXT_FILTER_MARKUP = 2
+} Edje_Text_Filter_Type;
+
+typedef enum _Edje_Text_Autocapital_Type
+{
+ EDJE_TEXT_AUTOCAPITAL_TYPE_NONE,
+ EDJE_TEXT_AUTOCAPITAL_TYPE_WORD,
+ EDJE_TEXT_AUTOCAPITAL_TYPE_SENTENCE,
+ EDJE_TEXT_AUTOCAPITAL_TYPE_ALLCHARACTER
+} Edje_Text_Autocapital_Type;
+
+typedef enum _Edje_Input_Panel_Lang
+{
+ EDJE_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic @since 1.2 */
+ EDJE_INPUT_PANEL_LANG_ALPHABET /**< Alphabet @since 1.2 */
+} Edje_Input_Panel_Lang;
+
+typedef enum _Edje_Input_Panel_Return_Key_Type
+{
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT, /**< Default @since 1.2 */
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DONE, /**< Done @since 1.2 */
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_GO, /**< Go @since 1.2 */
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_JOIN, /**< Join @since 1.2 */
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN, /**< Login @since 1.2 */
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_NEXT, /**< Next @since 1.2 */
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH, /**< Search or magnifier icon @since 1.2 */
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SEND, /**< Send @since 1.2 */
+ EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN /**< Sign-in @since 1.8 */
+} Edje_Input_Panel_Return_Key_Type;
+
+typedef enum _Edje_Input_Panel_Layout
+{
+ EDJE_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */
+ EDJE_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
+ EDJE_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
+ EDJE_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
+ EDJE_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout */
+ EDJE_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
+ EDJE_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
+ EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */
+ EDJE_INPUT_PANEL_LAYOUT_INVALID, /**< Never use this */
+ EDJE_INPUT_PANEL_LAYOUT_HEX, /**< Hexadecimal layout @since 1.2 */
+ EDJE_INPUT_PANEL_LAYOUT_TERMINAL, /**< Command-line terminal layout including esc, alt, ctrl key, so on (no auto-correct, no auto-capitalization) @since 1.2 */
+ EDJE_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. @since 1.2 */
+} Edje_Input_Panel_Layout;
+
+enum
+{
+ EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL,
+ EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED,
+ EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL,
+ EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL
+};
+
+typedef void (*Edje_Text_Filter_Cb) (void *data, Evas_Object *obj, const char *part, Edje_Text_Filter_Type type, char **text);
+typedef void (*Edje_Markup_Filter_Cb) (void *data, Evas_Object *obj, const char *part, char **text);
+typedef Evas_Object *(*Edje_Item_Provider_Cb) (void *data, Evas_Object *obj, const char *part, const char *item);
+
+/**
+ * @brief Show last character in password mode.
+ *
+ * @param password_show_last If TRUE enable last character show in password mode.
+ *
+ * This function enables last input to be visible when in password mode for few seconds
+ * or until the next input is entered.
+ *
+ * The time out value is obtained by edje_password_show_last_timeout_set function.
+ *
+ * @see edje_password_show_last_timeout_set().
+ */
+EAPI void edje_password_show_last_set(Eina_Bool password_show_last);
+
+/**
+ * @brief Set's the timeout value in last show password mode.
+ *
+ * @param password_show_last_timeout The timeout value.
+ *
+ * This functions sets the time out value for which the last input entered in password
+ * mode will be visible.
+ *
+ * This value can be used only when last show mode is set in password mode.
+ *
+ * @see edje_password_show_last_set().
+ *
+ */
+EAPI void edje_password_show_last_timeout_set(double password_show_last_timeout);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_Color_Class Edje Class: Color
+ *
+ * @brief Functions that deal with Color Classes
+ *
+ * Sometimes we want to change the color of two or more parts equally and
+ * that's when we use color classes.
+ *
+ * If one or more parts are assigned with a color class, when we set color
+ * values to this class it will cause all these parts to have their colors
+ * multiplied by the values. Setting values to a color class at a process level
+ * will affect all parts with that color class, while at a object level will
+ * affect only the parts inside an specified object.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+/**
+ * @brief Set Edje color class.
+ *
+ * @param color_class
+ * @param r Object Red value
+ * @param g Object Green value
+ * @param b Object Blue value
+ * @param a Object Alpha value
+ * @param r2 Outline Red value
+ * @param g2 Outline Green value
+ * @param b2 Outline Blue value
+ * @param a2 Outline Alpha value
+ * @param r3 Shadow Red value
+ * @param g3 Shadow Green value
+ * @param b3 Shadow Blue value
+ * @param a3 Shadow Alpha value
+ *
+ * This function sets the color values for a process level color
+ * class. This will cause all edje parts in the current process that
+ * have the specified color class to have their colors multiplied by
+ * these values. (Object level color classes set by
+ * edje_object_color_class_set() will override the values set by this
+ * function).
+ *
+ * The first color is the object, the second is the text outline, and
+ * the third is the text shadow. (Note that the second two only apply
+ * to text parts).
+ *
+ * Setting color emits a signal "color_class,set" with source being
+ * the given color class in all objects.
+ *
+ * @see edje_color_class_set().
+ *
+ * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
+ * half-transparent white is 255 255 255 128.
+ */
+EAPI Eina_Bool edje_color_class_set (const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
+
+/**
+ * @brief Get Edje color class.
+ *
+ * @param color_class
+ * @param r Object Red value
+ * @param g Object Green value
+ * @param b Object Blue value
+ * @param a Object Alpha value
+ * @param r2 Outline Red value
+ * @param g2 Outline Green value
+ * @param b2 Outline Blue value
+ * @param a2 Outline Alpha value
+ * @param r3 Shadow Red value
+ * @param g3 Shadow Green value
+ * @param b3 Shadow Blue value
+ * @param a3 Shadow Alpha value
+ *
+ * @return EINA_TRUE if found or EINA_FALSE if not found and all
+ * values are zeroed.
+ *
+ * This function gets the color values for a process level color
+ * class. This value is the globally set and not per-object, that is,
+ * the value that would be used by objects if they did not override with
+ * edje_object_color_class_set().
+ *
+ * The first color is the object, the second is the text outline, and
+ * the third is the text shadow. (Note that the second two only apply
+ * to text parts).
+ *
+ * @see edje_color_class_set().
+ *
+ * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
+ * half-transparent white is 255 255 255 128.
+ */
+EAPI Eina_Bool edje_color_class_get (const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
+
+/**
+ * @brief Delete edje color class.
+ *
+ * @param color_class
+ *
+ * This function deletes any values at the process level for the
+ * specified color class.
+ * @note Deleting the color class will revert it to the
+ * values defined in the theme file.
+ *
+ * Deleting the color class will emit the signal "color_class,del"
+ * to all the Edje objects in the running program.
+ */
+EAPI void edje_color_class_del (const char *color_class);
+
+/**
+ * @brief Lists color classes.
+ *
+ * @return A list of color class names (strings). These strings and
+ * the list must be free()'d by the caller.
+ *
+ * This function lists all color classes known about by the current
+ * process.
+ *
+ */
+EAPI Eina_List *edje_color_class_list (void);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_Part Edje Part
+ *
+ * @brief Functions that deal with layout components
+ *
+ * Parts are layout components, but as a layout, they are objects too.
+ *
+ * There are several types of parts, these types can be divided into two
+ * main categories, the first being containers. Containers are parts
+ * that are in effect a group of elements. The second group is that of
+ * the elements, these part types may not contain others.
+ *
+ * This section has some functions specific for some types and others that
+ * could be applied to any type.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+typedef enum _Edje_Part_Type
+{
+ EDJE_PART_TYPE_NONE = 0,
+ EDJE_PART_TYPE_RECTANGLE = 1,
+ EDJE_PART_TYPE_TEXT = 2,
+ EDJE_PART_TYPE_IMAGE = 3,
+ EDJE_PART_TYPE_SWALLOW = 4,
+ EDJE_PART_TYPE_TEXTBLOCK = 5,
+ EDJE_PART_TYPE_GRADIENT = 6,
+ EDJE_PART_TYPE_GROUP = 7,
+ EDJE_PART_TYPE_BOX = 8,
+ EDJE_PART_TYPE_TABLE = 9,
+ EDJE_PART_TYPE_EXTERNAL = 10,
+ EDJE_PART_TYPE_PROXY = 11,
+ EDJE_PART_TYPE_SPACER = 12, /**< @since 1.7 */
+ EDJE_PART_TYPE_LAST = 13
+} Edje_Part_Type;
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Part_Text Edje Text Part
+ *
+ * @brief Functions that deal with parts of type text
+ *
+ * Text is an element type for parts. It's basic functionality is to
+ * display a string on the layout, but a lot more things can be done
+ * with texts, like string selection, setting the cursor and include
+ * a input panel, where one can set a virtual keyboard to handle
+ * keyboard entry easily.
+ *
+ * @ingroup Edje_Object_Part
+ *
+ * @{
+ */
+
+typedef enum _Edje_Text_Effect
+{
+#define EDJE_TEXT_EFFECT_MASK_BASIC 0xf
+#define EDJE_TEXT_EFFECT_BASIC_SET(x, s) \
+ do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_BASIC) | (s); } while (0)
+ EDJE_TEXT_EFFECT_NONE = 0,
+ EDJE_TEXT_EFFECT_PLAIN = 1,
+ EDJE_TEXT_EFFECT_OUTLINE = 2,
+ EDJE_TEXT_EFFECT_SOFT_OUTLINE = 3,
+ EDJE_TEXT_EFFECT_SHADOW = 4,
+ EDJE_TEXT_EFFECT_SOFT_SHADOW = 5,
+ EDJE_TEXT_EFFECT_OUTLINE_SHADOW = 6,
+ EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW = 7,
+ EDJE_TEXT_EFFECT_FAR_SHADOW = 8,
+ EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW = 9,
+ EDJE_TEXT_EFFECT_GLOW = 10,
+
+ EDJE_TEXT_EFFECT_LAST = 11,
+
+#define EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION (0x7 << 4)
+#define EDJE_TEXT_EFFECT_SHADOW_DIRECTION_SET(x, s) \
+ do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) | (s); } while (0)
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT = (0x0 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM = (0x1 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT = (0x2 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT = (0x3 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT = (0x4 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP = (0x5 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT = (0x6 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT = (0x7 << 4)
+} Edje_Text_Effect;
+
+typedef void (*Edje_Text_Change_Cb) (void *data, Evas_Object *obj, const char *part);
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Text_Selection Edje Text Selection
+ *
+ * @brief Functions that deal with selection in text parts
+ *
+ * Selection is a known functionality for texts in the whole computational
+ * world. It is a block of text marked for further manipulation.
+ *
+ * Edje is responsible for handling this functionality through the
+ * following functions.
+ *
+ * @ingroup Edje_Part_Text
+ *
+ * @{
+ */
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Text_Cursor Edje Text Cursor
+ *
+ * @brief Functions that deal with cursor in text parts
+ *
+ * Cursor is a known functionality for texts in the whole computational
+ * world. It marks a position in the text from where one may want
+ * to make a insertion, deletion or selection.
+ *
+ * Edje is responsible for handling this functionality through the
+ * following functions.
+ *
+ * @ingroup Edje_Part_Text
+ *
+ * @{
+ */
+
+typedef enum _Edje_Cursor
+{
+ EDJE_CURSOR_MAIN,
+ EDJE_CURSOR_SELECTION_BEGIN,
+ EDJE_CURSOR_SELECTION_END,
+ EDJE_CURSOR_PREEDIT_START,
+ EDJE_CURSOR_PREEDIT_END,
+ EDJE_CURSOR_USER,
+ EDJE_CURSOR_USER_EXTRA,
+ // more later
+} Edje_Cursor;
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Part_Swallow Edje Swallow Part
+ *
+ * @brief Functions that deal with parts of type swallow and swallowed objects.
+ *
+ * A important feature of Edje is to be able to create Evas_Objects
+ * in code and place them in a layout. And that is what swallowing
+ * is all about.
+ *
+ * Swallow parts are place holders defined in the EDC file for
+ * objects that one may want to include in the layout later, or for
+ * objects that are not native of Edje. In this last case, Edje will
+ * only treat the Evas_Object properties of the swallowed objects.
+ *
+ * @ingroup Edje_Object_Part
+ *
+ * @{
+ */
+
+typedef enum _Edje_Aspect_Control
+{
+ EDJE_ASPECT_CONTROL_NONE = 0,
+ EDJE_ASPECT_CONTROL_NEITHER = 1,
+ EDJE_ASPECT_CONTROL_HORIZONTAL = 2,
+ EDJE_ASPECT_CONTROL_VERTICAL = 3,
+ EDJE_ASPECT_CONTROL_BOTH = 4
+} Edje_Aspect_Control;
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_Geometry_Group Edje Object Geometry
+ *
+ * @brief Functions that deal with object's geometry.
+ *
+ * By geometry we mean size and position. So in this groups there are
+ * functions to manipulate object's geometry or retrieve information
+ * about it.
+ *
+ * Keep in mind that by changing an object's geometry, it may affect
+ * the appearance in the screen of the parts inside. Most times
+ * that is what you want.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Part_Drag Edje Drag
+ *
+ * @brief Functions that deal with dragable parts.
+ *
+ * To create a movable part it must be declared as dragable
+ * in EDC file. To do so, one must define a "dragable" block inside
+ * the "part" block.
+ *
+ * These functions are used to set dragging properties to a
+ * part or get dragging information about it.
+ *
+ * @see @ref tutorial_edje_drag
+ *
+ * @ingroup Edje_Object_Part
+ *
+ * @{
+ */
+
+typedef enum _Edje_Drag_Dir
+{
+ EDJE_DRAG_DIR_NONE = 0,
+ EDJE_DRAG_DIR_X = 1,
+ EDJE_DRAG_DIR_Y = 2,
+ EDJE_DRAG_DIR_XY = 3
+} Edje_Drag_Dir;
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Part_Box Edje Box Part
+ *
+ * @brief Functions that deal with parts of type box.
+ *
+ * Box is a container type for parts, that means it can contain
+ * other parts.
+ *
+ * @ingroup Edje_Object_Part
+ *
+ * @{
+ */
+
+/**
+ * @brief Registers a custom layout to be used in edje boxes.
+ *
+ * @param name The name of the layout
+ * @param func The function defining the layout
+ * @param layout_data_get This function gets the custom data pointer
+ * for func
+ * @param layout_data_free Passed to func to free its private data
+ * when needed
+ * @param free_data Frees data
+ * @param data Private pointer passed to layout_data_get
+ *
+ * This function registers custom layouts that can be referred from
+ * themes by the registered name. The Evas_Object_Box_Layout
+ * functions receive two pointers for internal use, one being private
+ * data, and the other the function to free that data when it's not
+ * longer needed. From Edje, this private data will be retrieved by
+ * calling layout_data_get, and layout_data_free will be the free
+ * function passed to func. layout_data_get will be called with data
+ * as its parameter, and this one will be freed by free_data whenever
+ * the layout is unregistered from Edje.
+ */
+EAPI void edje_box_layout_register (const char *name, Evas_Object_Box_Layout func, void *(*layout_data_get)(void *), void (*layout_data_free)(void *), void (*free_data)(void *), void *data);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Part_Table Edje Table Part
+ *
+ * @brief Functions that deal with parts of type table.
+ *
+ * Table is a container type for parts, that means it can contain
+ * other parts.
+ *
+ * @ingroup Edje_Object_Part
+ *
+ * @{
+ */
+
+typedef enum _Edje_Object_Table_Homogeneous_Mode
+{
+ EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE = 0,
+ EDJE_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1,
+ EDJE_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2
+} Edje_Object_Table_Homogeneous_Mode;
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_Text_Class Edje Class: Text
+ *
+ * @brief Functions that deal with Text Classes
+ *
+ * Sometimes we want to change the text of two or more parts equally and
+ * that's when we use text classes.
+ *
+ * If one or more parts are assigned with a text class, when we set font
+ * attributes to this class will update all these parts with the new font
+ * attributes. Setting values to a text class at a process level will affect
+ * all parts with that text class, while at object level will affect only
+ * the parts inside an specified object.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+/**
+ * @brief Set the Edje text class.
+ *
+ * @param text_class The text class name
+ * @param font The font name
+ * @param size The font size
+ *
+ * @return @c EINA_TRUE, on success or @c EINA_FALSE, on error
+ *
+ * This function updates all Edje members at the process level which
+ * belong to this text class with the new font attributes.
+ * If the @p size is 0 then the font size will be kept with the previous size.
+ * If the @p size is less then 0 then the font size will be calculated in the
+ * percentage. For example, if the @p size is -50, then the font size will be
+ * scaled to half of the original size and if the @p size is -10 then the font
+ * size will be scaled as much as 0.1x.
+ *
+ * @see edje_text_class_get().
+ *
+ */
+EAPI Eina_Bool edje_text_class_set (const char *text_class, const char *font, Evas_Font_Size size);
+
+/**
+ * @brief Delete the text class.
+ *
+ * @param text_class The text class name string
+ *
+ * This function deletes any values at the process level for the
+ * specified text class.
+ *
+ */
+EAPI void edje_text_class_del (const char *text_class);
+
+/**
+ * @brief List text classes.
+ *
+ * @return A list of text class names (strings). These strings are
+ * stringshares and the list must be free()'d by the caller.
+ *
+ * This function lists all text classes known about by the current
+ * process.
+ *
+ */
+EAPI Eina_List *edje_text_class_list (void);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_File Edje Object File
+ *
+ * @brief Functions to deals with EDJ files.
+ *
+ * Layouts in Edje are usually called themes and they are
+ * created using the EDC language. The EDC language is declarative
+ * and must be compiled before being used. The output of this
+ * compilation is an EDJ file, this file can be loaded by Edje,
+ * and the result is a edje object.
+ *
+ * This groups of functions interact with these EDJ files,
+ * either by loading them or retrieving information of the EDC
+ * file about objects.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+typedef enum _Edje_Load_Error
+{
+ EDJE_LOAD_ERROR_NONE = 0, /**< No error happened, the loading was successful */
+ EDJE_LOAD_ERROR_GENERIC = 1, /**< A generic error happened during the loading */
+ EDJE_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< The file pointed to did not exist */
+ EDJE_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission to read the given file was denied */
+ EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Resource allocation failed during the loading */
+ EDJE_LOAD_ERROR_CORRUPT_FILE = 5, /**< The file pointed to was corrupt */
+ EDJE_LOAD_ERROR_UNKNOWN_FORMAT = 6, /**< The file pointed to had an unknown format */
+ EDJE_LOAD_ERROR_INCOMPATIBLE_FILE = 7, /**< The file pointed to is incompatible, i.e., it doesn't match the library's current version's format */
+ EDJE_LOAD_ERROR_UNKNOWN_COLLECTION = 8, /**< The group/collection set to load from was @b not found in the file */
+ EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = 9 /**< The group/collection set to load from had recursive references on its components */
+} Edje_Load_Error; /**< Edje file loading error codes one can get - see edje_load_error_str() too. */
+
+/**
+ * Get a list of groups in an edje file
+ * @param file The path to the edje file
+ *
+ * @return The Eina_List of group names (char *)
+ *
+ * Note: the list must be freed using edje_file_collection_list_free()
+ * when you are done with it.
+ */
+EAPI Eina_List *edje_file_collection_list (const char *file);
+
+/**
+ * Free file collection list
+ * @param lst The Eina_List of groups
+ *
+ * Frees the list returned by edje_file_collection_list().
+ */
+EAPI void edje_file_collection_list_free (Eina_List *lst);
+
+/**
+ * Determine whether a group matching glob exists in an edje file.
+ * @param file The file path
+ * @param glob A glob to match on
+ *
+ * @return 1 if a match is found, 0 otherwise
+ */
+EAPI Eina_Bool edje_file_group_exists (const char *file, const char *glob);
+
+/**
+ * Converts the given Edje file load error code into a string
+ * describing it in English.
+ *
+ * @param error the error code, a value in ::Edje_Load_Error.
+ * @return Always returns a valid string. If the given @p error is not
+ * supported, "Unknown error"
is returned.
+ *
+ * edje_object_file_set() is a function which sets an error value,
+ * afterwards, which can be fetched with
+ * edje_object_load_error_get(). The function in question is meant
+ * to be used in conjunction with the latter, for pretty-printing any
+ * possible error cause.
+ */
+EAPI const char *edje_load_error_str (Edje_Load_Error error);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_Animation Edje Object Animation
+ *
+ * @brief Functions that deal with animations.
+ *
+ * Edje has the ability to animate objects. One can start, stop, play,
+ * pause, freeze and thaw edje animations using the functions of this section.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+typedef enum _Edje_Tween_Mode
+{
+ EDJE_TWEEN_MODE_NONE = 0,
+ EDJE_TWEEN_MODE_LINEAR = 1,
+ EDJE_TWEEN_MODE_SINUSOIDAL = 2,
+ EDJE_TWEEN_MODE_ACCELERATE = 3,
+ EDJE_TWEEN_MODE_DECELERATE = 4,
+ EDJE_TWEEN_MODE_ACCELERATE_FACTOR = 5,
+ EDJE_TWEEN_MODE_DECELERATE_FACTOR = 6,
+ EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR = 7,
+ EDJE_TWEEN_MODE_DIVISOR_INTERP = 8,
+ EDJE_TWEEN_MODE_BOUNCE = 9,
+ EDJE_TWEEN_MODE_SPRING = 10,
+ EDJE_TWEEN_MODE_LAST = 11,
+ EDJE_TWEEN_MODE_MASK = 0xff,
+ EDJE_TWEEN_MODE_OPT_FROM_CURRENT = (1 << 31)
+} Edje_Tween_Mode;
+
+typedef enum _Edje_Action_Type
+{
+ EDJE_ACTION_TYPE_NONE = 0,
+ EDJE_ACTION_TYPE_STATE_SET = 1,
+ EDJE_ACTION_TYPE_ACTION_STOP = 2,
+ EDJE_ACTION_TYPE_SIGNAL_EMIT = 3,
+ EDJE_ACTION_TYPE_DRAG_VAL_SET = 4,
+ EDJE_ACTION_TYPE_DRAG_VAL_STEP = 5,
+ EDJE_ACTION_TYPE_DRAG_VAL_PAGE = 6,
+ EDJE_ACTION_TYPE_SCRIPT = 7,
+ EDJE_ACTION_TYPE_FOCUS_SET = 8,
+ EDJE_ACTION_TYPE_RESERVED00 = 9,
+ EDJE_ACTION_TYPE_FOCUS_OBJECT = 10,
+ EDJE_ACTION_TYPE_PARAM_COPY = 11,
+ EDJE_ACTION_TYPE_PARAM_SET = 12,
+ EDJE_ACTION_TYPE_SOUND_SAMPLE = 13, /**< @since 1.1 */
+ EDJE_ACTION_TYPE_SOUND_TONE = 14, /**< @since 1.1 */
+ EDJE_ACTION_TYPE_PHYSICS_IMPULSE = 15, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_PHYSICS_TORQUE_IMPULSE = 16, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_PHYSICS_FORCE = 17, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_PHYSICS_TORQUE = 18, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_PHYSICS_FORCES_CLEAR = 19, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_PHYSICS_VEL_SET = 20, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_PHYSICS_ANG_VEL_SET = 21, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_PHYSICS_STOP = 22, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_PHYSICS_ROT_SET = 23, /**< @since 1.8 */
+ EDJE_ACTION_TYPE_LAST = 24
+} Edje_Action_Type;
+
+/**
+ * @brief Set edje trasitions' frame time.
+ *
+ * @param t The frame time, in seconds. Default value is 1/30.
+ *
+ * This function sets the edje built-in animations' frame time (thus,
+ * affecting their resolution) by calling
+ * ecore_animator_frametime_set(). This frame time can be retrieved
+ * with edje_frametime_get().
+ *
+ * @see edje_frametime_get()
+ *
+ */
+EAPI void edje_frametime_set (double t);
+
+/**
+ * @brief Get edje trasitions' frame time.
+ *
+ * @return The frame time, in seconds.
+ *
+ * This function returns the edje frame time set by
+ * edje_frametime_set() or the default value 1/30.
+ *
+ * @see edje_frametime_set()
+ *
+ */
+EAPI double edje_frametime_get (void);
+
+/**
+ * @brief Freeze Edje objects.
+ *
+ * This function freezes all Edje animations in the current process.
+ *
+ * @note: for freeze a specific object @see edje_object_freeze().
+ *
+ * @see edje_thaw()
+ *
+ */
+EAPI void edje_freeze (void);
+
+/**
+ * @brief Thaw Edje objects.
+ *
+ * This function thaws all Edje animations in the current process.
+ *
+ * @note for thaw a specific object @see edje_object_thaw().
+ *
+ * @see edje_freeze()
+ *
+ */
+EAPI void edje_thaw (void);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Object_Communication_Interface_Message Edje Communication Interface: Message
+ *
+ * @brief Functions that deal with messages.
+ *
+ * Edje has two communication interfaces between @b code and @b theme.
+ * Signals and messages.
+ *
+ * Edje messages are one of the communication interfaces between
+ * @b code and a given Edje object's @b theme. With messages, one can
+ * communicate values like strings, float numbers and integer
+ * numbers. Moreover, messages can be identified by integer
+ * numbers. See #Edje_Message_Type for the full list of message types.
+ *
+ * @note Messages must be handled by scripts.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+/**
+ * Identifiers of Edje message types, which can be sent back and forth
+ * code and a given Edje object's theme file/group.
+ *
+ * @see edje_object_message_send()
+ * @see edje_object_message_handler_set()
+ */
+typedef enum _Edje_Message_Type
+{
+ EDJE_MESSAGE_NONE = 0,
+
+ EDJE_MESSAGE_SIGNAL = 1, /* DONT USE THIS */
+
+ EDJE_MESSAGE_STRING = 2, /**< A message with a string as value. Use #Edje_Message_String structs as message body, for this type. */
+ EDJE_MESSAGE_INT = 3, /**< A message with an integer number as value. Use #Edje_Message_Int structs as message body, for this type. */
+ EDJE_MESSAGE_FLOAT = 4, /**< A message with a floating pointer number as value. Use #Edje_Message_Float structs as message body, for this type. */
+
+ EDJE_MESSAGE_STRING_SET = 5, /**< A message with a list of strings as value. Use #Edje_Message_String_Set structs as message body, for this type. */
+ EDJE_MESSAGE_INT_SET = 6, /**< A message with a list of integer numbers as value. Use #Edje_Message_Int_Set structs as message body, for this type. */
+ EDJE_MESSAGE_FLOAT_SET = 7, /**< A message with a list of floating point numbers as value. Use #Edje_Message_Float_Set structs as message body, for this type. */
+
+ EDJE_MESSAGE_STRING_INT = 8, /**< A message with a struct containing a string and an integer number as value. Use #Edje_Message_String_Int structs as message body, for this type. */
+ EDJE_MESSAGE_STRING_FLOAT = 9, /**< A message with a struct containing a string and a floating point number as value. Use #Edje_Message_String_Float structs as message body, for this type. */
+
+ EDJE_MESSAGE_STRING_INT_SET = 10, /**< A message with a struct containing a string and list of integer numbers as value. Use #Edje_Message_String_Int_Set structs as message body, for this type. */
+ EDJE_MESSAGE_STRING_FLOAT_SET = 11 /**< A message with a struct containing a string and list of floating point numbers as value. Use #Edje_Message_String_Float_Set structs as message body, for this type. */
+} Edje_Message_Type;
+
+typedef struct _Edje_Message_String Edje_Message_String;
+typedef struct _Edje_Message_Int Edje_Message_Int;
+typedef struct _Edje_Message_Float Edje_Message_Float;
+typedef struct _Edje_Message_String_Set Edje_Message_String_Set;
+typedef struct _Edje_Message_Int_Set Edje_Message_Int_Set;
+typedef struct _Edje_Message_Float_Set Edje_Message_Float_Set;
+typedef struct _Edje_Message_String_Int Edje_Message_String_Int;
+typedef struct _Edje_Message_String_Float Edje_Message_String_Float;
+typedef struct _Edje_Message_String_Int_Set Edje_Message_String_Int_Set;
+typedef struct _Edje_Message_String_Float_Set Edje_Message_String_Float_Set;
+
+struct _Edje_Message_String
+{
+ char *str; /**< The message's string pointer */
+}; /**< Structure passed as value on #EDJE_MESSAGE_STRING messages. The string in it is automatically freed Edje if passed to you by Edje */
+
+struct _Edje_Message_Int
+{
+ int val; /**< The message's value */
+}; /**< Structure passed as value on #EDJE_MESSAGE_INT messages */
+
+struct _Edje_Message_Float
+{
+ double val; /**< The message's value */
+}; /**< Structure passed as value on #EDJE_MESSAGE_FLOAT messages */
+
+struct _Edje_Message_String_Set
+{
+ int count; /**< The size of the message's array (may be greater than 1) */
+ char *str[1]; /**< The message's @b array of string pointers */
+}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_SET messages. The array in it is automatically freed if passed to you by Edje */
+
+struct _Edje_Message_Int_Set
+{
+ int count; /**< The size of the message's array (may be greater than 1) */
+ int val[1]; /**< The message's @b array of integers */
+}; /**< Structure passed as value on #EDJE_MESSAGE_INT_SET messages. The array in it is automatically freed if passed to you by Edje */
+
+struct _Edje_Message_Float_Set
+{
+ int count; /**< The size of the message's array (may be greater than 1) */
+ double val[1]; /**< The message's @b array of floats */
+}; /**< Structure passed as value on #EDJE_MESSAGE_FLOAT_SET messages. The array in it is automatically freed if passed to you by Edje */
+
+struct _Edje_Message_String_Int
+{
+ char *str; /**< The message's string value */
+ int val; /**< The message's integer value */
+}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_INT messages. The string in it is automatically freed if passed to you by Edje */
+
+struct _Edje_Message_String_Float
+{
+ char *str; /**< The message's string value */
+ double val; /**< The message's float value */
+}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_FLOAT messages. The string in it is automatically freed if passed to you by Edje */
+
+struct _Edje_Message_String_Int_Set
+{
+ char *str; /**< The message's string value */
+ int count; /**< The size of the message's array (may be greater than 1) */
+ int val[1]; /**< The message's @b array of integers */
+}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_INT_SET messages. The array and string in it are automatically freed if passed to you by Edje */
+
+struct _Edje_Message_String_Float_Set
+{
+ char *str; /**< The message's string value */
+ int count; /**< The size of the message's array (may be greater than 1) */
+ double val[1]; /**< The message's @b array of floats */
+}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_FLOAT_SET messages. The array and string in it are automatically freed if passed to you by Edje */
+
+typedef void (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg); /**< Edje message handler callback functions's prototype definition. @c data will have the auxiliary data pointer set at the time the callback registration. @c obj will be a pointer the Edje object where the message comes from. @c type will identify the type of the given message and @c msg will be a pointer the message's contents, de facto, which depend on @c type. */
+
+/**
+ * @brief Process all queued up edje messages.
+ *
+ * This function triggers the processing of messages addressed to any
+ * (alive) edje objects.
+ *
+ */
+EAPI void edje_message_signal_process (void);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup Edje_Perspective Edje Perspective
+ *
+ * @brief Functions that deal with 3D projection of an 2D object.
+ *
+ * Perspective is a graphical tool that makes objets represented in 2D
+ * look like they have a 3D appearance.
+ *
+ * Edje allows us to use perspective on any edje object. This group of
+ * functions deal with the use of perspective, by creating and configuring
+ * a perspective object that must set to a edje object or a canvas,
+ * affecting all the objects inside that have no particular perspective
+ * set already.
+ *
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+/* perspective info for maps inside edje objects */
+typedef struct _Edje_Perspective Edje_Perspective;
+
+/**
+ * Creates a new perspective in the given canvas.
+ *
+ * @param e The given canvas (Evas).
+ * @return An @ref Edje_Perspective object for this canvas, or @c NULL on errors.
+ *
+ * This function creates a perspective object that can be set on an Edje
+ * object, or globally to all Edje objects on this canvas.
+ *
+ * @see edje_perspective_set()
+ * @see edje_perspective_free()
+ */
+EAPI Edje_Perspective *edje_perspective_new (Evas *e);
+/**
+ * Delete the given perspective object.
+ *
+ * @param ps A valid perspective object, or @c NULL.
+ *
+ * This function will delete the perspective object. If the perspective
+ * effect was being applied to any Edje object or part, this effect won't be
+ * applied anymore.
+ *
+ * @see edje_perspective_new()
+ */
+EAPI void edje_perspective_free (Edje_Perspective *ps);
+/**
+ * Setup the transform for this perspective object.
+ *
+ * This sets the parameters of the perspective transformation. X, Y and Z
+ * values are used. The px and py points specify the "infinite distance" point
+ * in the 3D conversion (where all lines converge to like when artists draw
+ * 3D by hand). The @p z0 value specifies the z value at which there is a 1:1
+ * mapping between spatial coordinates and screen coordinates. Any points
+ * on this z value will not have their X and Y values modified in the transform.
+ * Those further away (Z value higher) will shrink into the distance, and
+ * those less than this value will expand and become bigger. The @p foc value
+ * determines the "focal length" of the camera. This is in reality the distance
+ * between the camera lens plane itself (at or closer than this rendering
+ * results are undefined) and the "z0" z value. This allows for some "depth"
+ * control and @p foc must be greater than 0.
+ *
+ * @param ps The perspective object
+ * @param px The perspective distance X coordinate
+ * @param py The perspective distance Y coordinate
+ * @param z0 The "0" z plane value
+ * @param foc The focal distance
+ */
+EAPI void edje_perspective_set (Edje_Perspective *ps, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc);
+/**
+ * Make this perspective object be global for its canvas.
+ *
+ * @param ps The given perspective object
+ * @param global @c EINA_TRUE if the perspective should be global, @c
+ * EINA_FALSE otherwise.
+ *
+ * The canvas which this perspective object is being set as global is the one
+ * given as argument upon the object creation (the @p evas parameter on the
+ * function @c edje_perspective_new(evas) ).
+ *
+ * There can be only one global perspective object set per canvas, and if
+ * a perspective object is set to global when there was already another
+ * global perspective set, the old one will be set as non-global.
+ *
+ * A global perspective just affects a part if its Edje object doesn't have a
+ * perspective object set to it, and if the part doesn't point to another
+ * part to be used as perspective.
+ *
+ * @see edje_object_perspective_set()
+ * @see edje_perspective_global_get()
+ * @see edje_perspective_new()
+ */
+EAPI void edje_perspective_global_set (Edje_Perspective *ps, Eina_Bool global);
+/**
+ * Get whether the given perspective object is global or not.
+ *
+ * @param ps The given perspective object.
+ * @return @c EINA_TRUE if this perspective object is global, @c EINA_FALSE
+ * otherwise.
+ *
+ * @see edje_perspective_global_set()
+ */
+EAPI Eina_Bool edje_perspective_global_get (const Edje_Perspective *ps);
+/**
+ * Get the global perspective object set for this canvas.
+ *
+ * @param e The given canvas (Evas).
+ * @return The perspective object set as global for this canvas. Or @c NULL
+ * if there is no global perspective set and on errors.
+ *
+ * This function will return the perspective object that was set as global
+ * with edje_perspective_global_set().
+ *
+ * @see edje_perspective_global_set()
+ * @see edje_perspective_global_get()
+ */
+EAPI const Edje_Perspective *edje_evas_global_perspective_get(const Evas *e);
+/**
+ * @}
+ */
diff --git a/src/lib/edje/Edje_Eo.h b/src/lib/edje/Edje_Eo.h
new file mode 100644
index 0000000000..956a716496
--- /dev/null
+++ b/src/lib/edje/Edje_Eo.h
@@ -0,0 +1,2220 @@
+#include
+
+#define EDJE_OBJ_CLASS edje_object_class_get()
+
+const Eo_Class *edje_object_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EDJE_OBJ_BASE_ID;
+
+enum
+{
+ EDJE_OBJ_SUB_ID_SCALE_SET,
+ EDJE_OBJ_SUB_ID_SCALE_GET,
+ EDJE_OBJ_SUB_ID_MIRRORED_GET,
+ EDJE_OBJ_SUB_ID_MIRRORED_SET,
+ EDJE_OBJ_SUB_ID_DATA_GET,
+ EDJE_OBJ_SUB_ID_FREEZE,
+ EDJE_OBJ_SUB_ID_THAW,
+ EDJE_OBJ_SUB_ID_COLOR_CLASS_SET,
+ EDJE_OBJ_SUB_ID_COLOR_CLASS_GET,
+ EDJE_OBJ_SUB_ID_TEXT_CLASS_SET,
+ EDJE_OBJ_SUB_ID_PART_EXISTS,
+ EDJE_OBJ_SUB_ID_PART_OBJECT_GET,
+ EDJE_OBJ_SUB_ID_PART_GEOMETRY_GET,
+ EDJE_OBJ_SUB_ID_ITEM_PROVIDER_SET,
+ EDJE_OBJ_SUB_ID_TEXT_CHANGE_CB_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PUSH,
+ EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_POP,
+ EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PEEK,
+ EDJE_OBJ_SUB_ID_PART_TEXT_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_ESCAPED_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_SELECTION_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_NONE,
+ EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALL,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INSERT,
+ EDJE_OBJ_SUB_ID_PART_TEXT_APPEND,
+ EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_LIST_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_GEOMETRY_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_LIST_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_GEOMETRY_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_GEOMETRY_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_USER_INSERT,
+ EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALLOW_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ABORT,
+ EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_BEGIN,
+ EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_EXTEND,
+ EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_NEXT,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_PREV,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_UP,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_DOWN,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_BEGIN_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_END_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COPY,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_BEGIN_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_END_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COORD_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_FORMAT_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_VISIBLE_FORMAT_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_CONTENT_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_RESET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_SHOW,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_HIDE,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_GET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_SET,
+ EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_GET,
+ EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_ADD,
+ EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL,
+ EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL_FULL,
+ EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_ADD,
+ EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL,
+ EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL_FULL,
+ EDJE_OBJ_SUB_ID_PART_SWALLOW,
+ EDJE_OBJ_SUB_ID_PART_UNSWALLOW,
+ EDJE_OBJ_SUB_ID_PART_SWALLOW_GET,
+ EDJE_OBJ_SUB_ID_SIZE_MIN_GET,
+ EDJE_OBJ_SUB_ID_SIZE_MAX_GET,
+ EDJE_OBJ_SUB_ID_CALC_FORCE,
+ EDJE_OBJ_SUB_ID_SIZE_MIN_CALC,
+ EDJE_OBJ_SUB_ID_PARTS_EXTENDS_CALC,
+ EDJE_OBJ_SUB_ID_SIZE_MIN_RESTRICTED_CALC,
+ EDJE_OBJ_SUB_ID_PART_STATE_GET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_DIR_GET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_SET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_GET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_SET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_GET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_STEP_SET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_STEP_GET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_SET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_GET,
+ EDJE_OBJ_SUB_ID_PART_DRAG_STEP,
+ EDJE_OBJ_SUB_ID_PART_DRAG_PAGE,
+ EDJE_OBJ_SUB_ID_PART_BOX_APPEND,
+ EDJE_OBJ_SUB_ID_PART_BOX_PREPEND,
+ EDJE_OBJ_SUB_ID_PART_BOX_INSERT_BEFORE,
+ EDJE_OBJ_SUB_ID_PART_BOX_INSERT_AT,
+ EDJE_OBJ_SUB_ID_PART_BOX_REMOVE,
+ EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_AT,
+ EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_ALL,
+ EDJE_OBJ_SUB_ID_ACCESS_PART_LIST_GET,
+ EDJE_OBJ_SUB_ID_PART_TABLE_CHILD_GET,
+ EDJE_OBJ_SUB_ID_PART_TABLE_PACK,
+ EDJE_OBJ_SUB_ID_PART_TABLE_UNPACK,
+ EDJE_OBJ_SUB_ID_PART_TABLE_COL_ROW_SIZE_GET,
+ EDJE_OBJ_SUB_ID_PART_TABLE_CLEAR,
+ EDJE_OBJ_SUB_ID_PERSPECTIVE_SET,
+ EDJE_OBJ_SUB_ID_PERSPECTIVE_GET,
+ EDJE_OBJ_SUB_ID_PRELOAD,
+ EDJE_OBJ_SUB_ID_UPDATE_HINTS_SET,
+ EDJE_OBJ_SUB_ID_UPDATE_HINTS_GET,
+
+ EDJE_OBJ_SUB_ID_PART_EXTERNAL_OBJECT_GET,
+ EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_SET,
+ EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_GET,
+ EDJE_OBJ_SUB_ID_PART_EXTERNAL_CONTENT_GET,
+ EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_TYPE_GET,
+
+ EDJE_OBJ_SUB_ID_FILE_SET,
+ EDJE_OBJ_SUB_ID_FILE_GET,
+ EDJE_OBJ_SUB_ID_LOAD_ERROR_GET,
+
+ EDJE_OBJ_SUB_ID_MESSAGE_SEND,
+ EDJE_OBJ_SUB_ID_MESSAGE_HANDLER_SET,
+ EDJE_OBJ_SUB_ID_MESSAGE_SIGNAL_PROCESS,
+
+ EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_ADD,
+ EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_DEL,
+ EDJE_OBJ_SUB_ID_SIGNAL_EMIT,
+ EDJE_OBJ_SUB_ID_PLAY_SET,
+ EDJE_OBJ_SUB_ID_PLAY_GET,
+ EDJE_OBJ_SUB_ID_ANIMATION_SET,
+ EDJE_OBJ_SUB_ID_ANIMATION_GET,
+
+ EDJE_OBJ_SUB_ID_LAST
+};
+
+#define EDJE_OBJ_ID(sub_id) (EDJE_OBJ_BASE_ID + sub_id)
+
+/**
+ * @ingroup Edje_Object_Scale
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_scale_set
+ * @since 1.8
+ *
+ * @brief Set the scaling factor for a given Edje object.
+ *
+ * @param[in] scale
+ * @param[out] ret
+ *
+ * @see edje_object_scale_set
+ */
+#define edje_obj_scale_set(scale, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SCALE_SET), EO_TYPECHECK(double, scale), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_scale_get
+ * @since 1.8
+ *
+ * @brief Get a given Edje object's scaling factor.
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_scale_get
+ */
+#define edje_obj_scale_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SCALE_GET), EO_TYPECHECK(double *, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Text_Entry
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_mirrored_get
+ * @since 1.8
+ *
+ * @brief Get the RTL orientation for this object.
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_mirrored_get
+ */
+#define edje_obj_mirrored_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MIRRORED_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_mirrored_set
+ * @since 1.8
+ *
+ * @brief Set the RTL orientation for this object.
+ *
+ * @param[in] rtl
+ *
+ * @see edje_object_mirrored_set
+ */
+#define edje_obj_mirrored_set(rtl) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MIRRORED_SET), EO_TYPECHECK(Eina_Bool, rtl)
+
+/**
+ * @def edje_obj_item_provider_set
+ * @since 1.8
+ *
+ * @brief Set the function that provides item objects for named items in an edje entry text
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see edje_object_item_provider_set
+ */
+#define edje_obj_item_provider_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ITEM_PROVIDER_SET), EO_TYPECHECK(Edje_Item_Provider_Cb, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def edje_obj_part_text_imf_context_reset
+ * @since 1.8
+ *
+ * @brief Reset the input method context if needed.
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_imf_context_reset
+ */
+#define edje_obj_part_text_imf_context_reset(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_RESET), EO_TYPECHECK(const char *, part)
+
+/**
+ * @def edje_obj_part_text_imf_context_get
+ * @since 1.8
+ *
+ * @brief Get the input method context in entry.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_imf_context_get
+ */
+#define edje_obj_part_text_imf_context_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_IMF_CONTEXT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(void **, ret)
+
+/**
+ * @def edje_obj_part_text_input_panel_layout_set
+ * @since 1.8
+ *
+ * @brief Set the layout of the input panel.
+ *
+ * @param[in] part
+ * @param[in] layout
+ *
+ * @see edje_object_part_text_input_panel_layout_set
+ */
+#define edje_obj_part_text_input_panel_layout_set(part, layout) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Layout, layout)
+
+/**
+ * @def edje_obj_part_text_input_panel_layout_get
+ * @since 1.8
+ *
+ * @brief Get the layout of the input panel.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_input_panel_layout_get
+ */
+#define edje_obj_part_text_input_panel_layout_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LAYOUT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Layout *, ret)
+
+/**
+ * @def edje_obj_part_text_autocapital_type_set
+ * @since 1.8
+ *
+ * @brief Set the autocapitalization type on the immodule.
+ *
+ * @param[in] part
+ * @param[in] autocapital_type
+ *
+ * @see edje_object_part_text_autocapital_type_set
+ */
+#define edje_obj_part_text_autocapital_type_set(part, autocapital_type) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Autocapital_Type, autocapital_type)
+
+/**
+ * @def edje_obj_part_text_autocapital_type_get
+ * @since 1.8
+ *
+ * @brief Retrieves the autocapitalization type
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_autocapital_type_get
+ */
+#define edje_obj_part_text_autocapital_type_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_AUTOCAPITAL_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Autocapital_Type *, ret)
+
+/**
+ * @def edje_obj_part_text_prediction_allow_set
+ * @since 1.8
+ *
+ * @brief Set whether the prediction is allowed or not.
+ *
+ * @param[in] part
+ * @param[in] prediction
+ *
+ * @see edje_object_part_text_prediction_allow_set
+ */
+#define edje_obj_part_text_prediction_allow_set(part, prediction) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, prediction)
+
+/**
+ * @def edje_obj_part_text_prediction_allow_get
+ * @since 1.8
+ *
+ * @brief Get whether the prediction is allowed or not.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_prediction_allow_get
+ */
+#define edje_obj_part_text_prediction_allow_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_PREDICTION_ALLOW_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_input_panel_enabled_set
+ * @since 1.8
+ *
+ * @brief Sets the attribute to show the input panel automatically.
+ *
+ * @param[in] part
+ * @param[in] enabled
+ *
+ * @see edje_object_part_text_input_panel_enabled_set
+ */
+#define edje_obj_part_text_input_panel_enabled_set(part, enabled) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, enabled)
+
+/**
+ * @def edje_obj_part_text_input_panel_enabled_get
+ * @since 1.8
+ *
+ * @brief Retrieve the attribute to show the input panel automatically.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_input_panel_enabled_get
+ */
+#define edje_obj_part_text_input_panel_enabled_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_ENABLED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_input_panel_show
+ * @since 1.8
+ *
+ * @brief Show the input panel (virtual keyboard) based on the input panel property such as layout, autocapital types, and so on.
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_input_panel_show
+ */
+#define edje_obj_part_text_input_panel_show(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_SHOW), EO_TYPECHECK(const char *, part)
+
+/**
+ * @def edje_obj_part_text_input_panel_hide
+ * @since 1.8
+ *
+ * @brief Hide the input panel (virtual keyboard).
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_input_panel_hide
+ */
+#define edje_obj_part_text_input_panel_hide(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_HIDE), EO_TYPECHECK(const char *, part)
+
+/**
+ * @def edje_obj_part_text_input_panel_language_set
+ * @since 1.8
+ *
+ * Set the language mode of the input panel.
+ *
+ * @param[in] part
+ * @param[in] lang
+ *
+ * @see edje_object_part_text_input_panel_language_set
+ */
+#define edje_obj_part_text_input_panel_language_set(part, lang) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Lang, lang)
+
+/**
+ * @def edje_obj_part_text_input_panel_language_get
+ * @since 1.8
+ *
+ * Get the language mode of the input panel.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_input_panel_language_get
+ */
+#define edje_obj_part_text_input_panel_language_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_LANGUAGE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Lang *, ret)
+
+/**
+ * @def edje_obj_part_text_input_panel_imdata_set
+ * @since 1.8
+ *
+ * Set the input panel-specific data to deliver to the input panel.
+ *
+ * @param[in] part
+ * @param[in] data
+ * @param[in] len
+ *
+ * @see edje_object_part_text_input_panel_imdata_set
+ */
+#define edje_obj_part_text_input_panel_imdata_set(part, data, len) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const void *, data), EO_TYPECHECK(int, len)
+
+/**
+ * @def edje_obj_part_text_input_panel_imdata_get
+ * @since 1.8
+ *
+ * Get the specific data of the current active input panel.
+ *
+ * @param[in] part
+ * @param[in] data
+ * @param[in] len
+ *
+ * @see edje_object_part_text_input_panel_imdata_get
+ */
+#define edje_obj_part_text_input_panel_imdata_get(part, data, len) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_IMDATA_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(void *, data), EO_TYPECHECK(int *, len)
+
+/**
+ * @def edje_obj_part_text_input_panel_return_key_type_set
+ * @since 1.8
+ *
+ * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
+ *
+ * @param[in] part
+ * @param[out] return_key_type
+ *
+ * @see edje_object_part_text_input_panel_return_key_type_set
+ */
+#define edje_obj_part_text_input_panel_return_key_type_set(part, return_key_type) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Return_Key_Type, return_key_type)
+
+/**
+ * @def edje_obj_part_text_input_panel_return_key_type_get
+ * @since 1.8
+ *
+ * Get the "return" key type.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_input_panel_return_key_type_get
+ */
+#define edje_obj_part_text_input_panel_return_key_type_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Input_Panel_Return_Key_Type *, ret)
+
+/**
+ * @def edje_obj_part_text_input_panel_return_key_disabled_set
+ * @since 1.8
+ *
+ * Set the return key on the input panel to be disabled.
+ *
+ * @param[in] part
+ * @param[in] disabled
+ *
+ * @see edje_object_part_text_input_panel_return_key_disabled_set
+ */
+#define edje_obj_part_text_input_panel_return_key_disabled_set(part, disabled) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, disabled)
+
+/**
+ * @def edje_obj_part_text_input_panel_return_key_disabled_get
+ * @since 1.8
+ *
+ * Get whether the return key on the input panel should be disabled or not.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_input_panel_return_key_disabled_get
+ */
+#define edje_obj_part_text_input_panel_return_key_disabled_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INPUT_PANEL_RETURN_KEY_DISABLED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_text_insert_filter_callback_add
+ * @since 1.8
+ *
+ * Add a filter function for newly inserted text.
+ *
+ * @param[in] part
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see edje_object_text_insert_filter_callback_add
+ */
+#define edje_obj_text_insert_filter_callback_add(part, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_ADD), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def edje_obj_text_insert_filter_callback_del
+ * @since 1.8
+ *
+ * Delete a function from the filter list.
+ *
+ * @param[in] part
+ * @param[in] func
+ * @param[out] ret
+ *
+ * @see edje_object_text_insert_filter_callback_del
+ */
+#define edje_obj_text_insert_filter_callback_del(part, func, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void **, ret)
+
+/**
+ * @def edje_obj_text_insert_filter_callback_del_full
+ * @since 1.8
+ *
+ * Delete a function and matching user data from the filter list.
+ *
+ * @param[in] part
+ * @param[in] func
+ * @param[in] data
+ * @param[out] ret
+ *
+ * @see edje_object_text_insert_filter_callback_del_full
+ */
+#define edje_obj_text_insert_filter_callback_del_full(part, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_INSERT_FILTER_CALLBACK_DEL_FULL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Text_Filter_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
+
+/**
+ * @def edje_obj_text_markup_filter_callback_add
+ * @since 1.8
+ *
+ * Add a markup filter function for newly inserted text.
+ *
+ * @param[in] part
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see edje_object_text_markup_filter_callback_add
+ */
+#define edje_obj_text_markup_filter_callback_add(part, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_ADD), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def edje_obj_text_markup_filter_callback_del
+ * @since 1.8
+ *
+ * Delete a function from the markup filter list.
+ *
+ * @param[in] part
+ * @param[in] func
+ * @param[out] ret
+ *
+ * @see edje_object_text_markup_filter_callback_del
+ */
+#define edje_obj_text_markup_filter_callback_del(part, func, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void **, ret)
+
+/**
+ * @def edje_obj_text_markup_filter_callback_del_full
+ * @since 1.8
+ *
+ * Delete a function and matching user data from the markup filter list.
+ *
+ * @param[in] part
+ * @param[in] func
+ * @param[in] data
+ * @param[out] ret
+ *
+ * @see edje_object_text_markup_filter_callback_del_full
+ */
+#define edje_obj_text_markup_filter_callback_del_full(part, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_MARKUP_FILTER_CALLBACK_DEL_FULL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Markup_Filter_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_File
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_data_get
+ * @since 1.8
+ *
+ * @brief Retrieve an EDC data field's value from a given Edje.
+ *
+ * @param[in] key
+ * @param[out] ret
+ *
+ * @see edje_object_data_get
+ */
+#define edje_obj_data_get(key, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_DATA_GET), EO_TYPECHECK(const char *, key), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def edje_obj_file_set
+ * @since 1.8
+ *
+ * @param[in] file in
+ * @param[in] group in
+ * @param[in] nested in
+ * @param[out] ret out
+ *
+ * @see edje_object_file_set
+ */
+#define edje_obj_file_set(file, group, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FILE_SET), EO_TYPECHECK(const char*, file), EO_TYPECHECK(const char *, group), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_file_get
+ * @since 1.8
+ *
+ * @brief Get the file and group name that a given Edje object is bound to
+ *
+ * @param[out] file
+ * @param[out] group
+ *
+ * @see edje_object_file_get
+ */
+#define edje_obj_file_get(file, group) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, group)
+
+/**
+ * @def edje_obj_load_error_get
+ * @since 1.8
+ *
+ * @brief Gets the (last) file loading error for a given Edje object
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_load_error_get
+ */
+#define edje_obj_load_error_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_LOAD_ERROR_GET), EO_TYPECHECK(Edje_Load_Error *, ret)
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Animation
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_play_set
+ * @since 1.8
+ *
+ * @brief Set the Edje object to playing or paused states.
+ *
+ * @param[in] play
+ *
+ * @see edje_object_play_set
+ */
+#define edje_obj_play_set(play) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PLAY_SET), EO_TYPECHECK(Eina_Bool, play)
+
+/**
+ * @def edje_obj_play_get
+ * @since 1.8
+ *
+ * @brief Get the Edje object's state.
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_play_get
+ */
+#define edje_obj_play_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PLAY_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_animation_set
+ * @since 1.8
+ *
+ * @brief Set the object's animation state.
+ *
+ * @param[in] on
+ *
+ * @see edje_object_animation_set
+ */
+#define edje_obj_animation_set(on) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ANIMATION_SET), EO_TYPECHECK(Eina_Bool, on)
+
+/**
+ * @def edje_obj_animation_get
+ * @since 1.8
+ *
+ * @brief Get the Edje object's animation state.
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_animation_get
+ */
+#define edje_obj_animation_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ANIMATION_GET), EO_TYPECHECK(Eina_Bool *, ret)
+/**
+ * @def edje_obj_freeze
+ * @since 1.8
+ *
+ * @brief Freezes the Edje object.
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_freeze
+ */
+#define edje_obj_freeze(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_FREEZE), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def edje_obj_thaw
+ * @since 1.8
+ *
+ * @brief Thaws the Edje object.
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_thaw
+ */
+#define edje_obj_thaw(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_THAW), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def edje_obj_part_state_get
+ * @since 1.8
+ *
+ * @brief Returns the state of the Edje part.
+ *
+ * @param[in] part
+ * @param[out] val_ret
+ * @param[out] ret
+ *
+ * @see edje_object_part_state_get
+ */
+#define edje_obj_part_state_get(part, val_ret, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_STATE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, val_ret), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Color_Class
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_color_class_set
+ * @since 1.8
+ *
+ * @brief Sets the object color class.
+ *
+ * @param[in] color_class
+ * @param[in] r
+ * @param[in] g
+ * @param[in] b
+ * @param[in] a
+ * @param[in] r2
+ * @param[in] g2
+ * @param[in] b2
+ * @param[in] a2
+ * @param[in] r3
+ * @param[in] g3
+ * @param[in] b3
+ * @param[in] a3
+ * @param[out] ret
+ *
+ * @see edje_object_color_class_set
+ */
+#define edje_obj_color_class_set(color_class, r, g, b, a, r2, g2, b2, a2, r3, g3, b3, a3, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_COLOR_CLASS_SET), EO_TYPECHECK(const char *, color_class), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a), EO_TYPECHECK(int, r2), EO_TYPECHECK(int, g2), EO_TYPECHECK(int, b2), EO_TYPECHECK(int, a2), EO_TYPECHECK(int, r3), EO_TYPECHECK(int, g3), EO_TYPECHECK(int, b3), EO_TYPECHECK(int, a3), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_color_class_get
+ * @since 1.8
+ *
+ * @brief Gets the object color class.
+ *
+ * @param[in] color_class
+ * @param[out] r
+ * @param[out] g
+ * @param[out] b
+ * @param[out] a
+ * @param[out] r2
+ * @param[out] g2
+ * @param[out] b2
+ * @param[out] a2
+ * @param[out] r3
+ * @param[out] g3
+ * @param[out] b3
+ * @param[out] a3
+ * @param[out] ret
+ *
+ * @see edje_object_color_class_get
+ */
+#define edje_obj_color_class_get(color_class, r, g, b, a, r2, g2, b2, a2, r3, g3, b3, a3, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_COLOR_CLASS_GET), EO_TYPECHECK(const char *, color_class), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a), EO_TYPECHECK(int *, r2), EO_TYPECHECK(int *, g2), EO_TYPECHECK(int *, b2), EO_TYPECHECK(int *, a2), EO_TYPECHECK(int *, r3), EO_TYPECHECK(int *, g3), EO_TYPECHECK(int *, b3), EO_TYPECHECK(int *, a3), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Text_Class
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_text_class_set
+ * @since 1.8
+ *
+ * @brief Sets Edje text class.
+ *
+ * @param[in] text_class
+ * @param[in] font
+ * @param[in] size
+ * @param[out] ret
+ *
+ * @see edje_object_text_class_set
+ */
+#define edje_obj_text_class_set(text_class, font, size, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_CLASS_SET), EO_TYPECHECK(const char *, text_class), EO_TYPECHECK(const char *, font), EO_TYPECHECK(Evas_Font_Size, size), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Part
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_part_exists
+ * @since 1.8
+ *
+ * @brief Check if an Edje part exists in a given Edje object's group
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_exists
+ */
+#define edje_obj_part_exists(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXISTS), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_object_get
+ * @since 1.8
+ *
+ * @brief Get a handle to the Evas object implementing a given Edje
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_object_get
+ */
+#define edje_obj_part_object_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_OBJECT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Evas_Object **, ret)
+
+/**
+ * @def edje_obj_part_geometry_get
+ * @since 1.8
+ *
+ * @brief Retrieve the geometry of a given Edje part, in a given Edje
+ *
+ * @param[in] part
+ * @param[out] x
+ * @param[out] y
+ * @param[out] w
+ * @param[out] h
+ * @param[out] ret
+ *
+ * @see edje_object_part_geometry_get
+ */
+#define edje_obj_part_geometry_get(part, x, y, w, h, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_access_part_list_get
+ * @since 1.8
+ *
+ * @brief Retrieve a list all accessibility part names
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_access_part_list_get
+ */
+#define edje_obj_access_part_list_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_ACCESS_PART_LIST_GET), EO_TYPECHECK(Eina_List **, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Text
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_text_change_cb_set
+ * @since 1.8
+ *
+ * @brief Set the object text callback.
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see edje_object_text_change_cb_set
+ */
+#define edje_obj_text_change_cb_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_TEXT_CHANGE_CB_SET), EO_TYPECHECK(Edje_Text_Change_Cb, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def edje_obj_part_text_style_user_push
+ * @since 1.8
+ *
+ * @brief Set the style of the part.
+ *
+ * @param[in] part
+ * @param[in] style
+ *
+ * @see edje_object_part_text_style_user_push
+ */
+#define edje_obj_part_text_style_user_push(part, style) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PUSH), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, style)
+
+/**
+ * @def edje_obj_part_text_style_user_pop
+ * @since 1.8
+ *
+ * @brief Delete the top style form the user style stack.
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_style_user_pop
+ */
+#define edje_obj_part_text_style_user_pop(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_POP), EO_TYPECHECK(const char *, part)
+
+/**
+ * @def edje_obj_part_text_style_user_peek
+ * @since 1.8
+ *
+ * @brief Return the text of the object part.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_style_user_peek
+ */
+#define edje_obj_part_text_style_user_peek(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_STYLE_USER_PEEK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def edje_obj_part_text_set
+ * @since 1.8
+ *
+ * @brief Sets the text for an object part
+ *
+ * @param[in] part
+ * @param[in] text
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_set
+ */
+#define edje_obj_part_text_set(part, text, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_get
+ * @since 1.8
+ *
+ * @brief Return the text of the object part.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_get
+ */
+#define edje_obj_part_text_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def edje_obj_part_text_escaped_set
+ * @since 1.8
+ *
+ * @brief Sets the text for an object part, but converts HTML escapes to UTF8
+ *
+ * @param[in] part
+ * @param[in] text
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_escaped_set
+ */
+#define edje_obj_part_text_escaped_set(part, text, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ESCAPED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_unescaped_set
+ * @since 1.8
+ *
+ * @brief Sets the raw (non escaped) text for an object part.
+ *
+ * @param[in] part
+ * @param[in] text_to_escape
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_unescaped_set
+ */
+#define edje_obj_part_text_unescaped_set(part, text_to_escape, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text_to_escape), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_unescaped_get
+ * @since 1.8
+ *
+ * @brief Returns the text of the object part, without escaping.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_unescaped_get
+ */
+#define edje_obj_part_text_unescaped_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_UNESCAPED_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(char **, ret)
+
+/**
+ * @def edje_obj_part_text_insert
+ * @since 1.8
+ *
+ * @brief Insert text for an object part.
+ *
+ * @param[in] part
+ * @param[in] text
+ *
+ * @see edje_object_part_text_insert
+ */
+#define edje_obj_part_text_insert(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_INSERT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
+
+/**
+ * @def edje_obj_part_text_append
+ * @since 1.8
+ *
+ * @brief Insert text for an object part.
+ *
+ * @param[in] part
+ * @param[in] text
+ *
+ * @see edje_object_part_text_append
+ */
+#define edje_obj_part_text_append(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_APPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
+
+/**
+ * @def edje_obj_part_text_anchor_list_get
+ * @since 1.8
+ *
+ * @brief Return a list of char anchor names.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_anchor_list_get
+ */
+#define edje_obj_part_text_anchor_list_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_LIST_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Eina_List **, ret)
+
+/**
+ * @def edje_obj_part_text_anchor_geometry_get
+ * @since 1.8
+ *
+ * @brief Return a list of Evas_Textblock_Rectangle anchor rectangles.
+ *
+ * @param[in] part
+ * @param[in] anchor
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_anchor_geometry_get
+ */
+#define edje_obj_part_text_anchor_geometry_get(part, anchor, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ANCHOR_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, anchor), EO_TYPECHECK(const Eina_List **, ret)
+
+/**
+ * @def edje_obj_part_text_item_list_get
+ * @since 1.8
+ *
+ * @brief Return a list of char item names.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_item_list_get
+ */
+#define edje_obj_part_text_item_list_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_LIST_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Eina_List **, ret)
+
+/**
+ * @def edje_obj_part_text_item_geometry_get
+ * @since 1.8
+ *
+ * @brief Return item geometry.
+ *
+ * @param[in] part
+ * @param[in] item
+ * @param[out] cx
+ * @param[out] cy
+ * @param[out] cw
+ * @param[out] ch
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_item_geometry_get
+ */
+#define edje_obj_part_text_item_geometry_get(part, item, cx, cy, cw, ch, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_ITEM_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, item), EO_TYPECHECK(Evas_Coord *, cx), EO_TYPECHECK(Evas_Coord *, cy), EO_TYPECHECK(Evas_Coord *, cw), EO_TYPECHECK(Evas_Coord *, ch), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_user_insert
+ * @since 1.8
+ *
+ * @brief This function inserts text as if the user has inserted it.
+ *
+ * @param[in] part
+ * @param[in] text
+ *
+ * @see edje_object_part_text_user_insert
+ */
+#define edje_obj_part_text_user_insert(part, text) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_USER_INSERT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, text)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Text_Selection
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_part_text_selection_get
+ * @since 1.8
+ *
+ * @brief Return the selection text of the object part.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_selection_get
+ */
+#define edje_obj_part_text_selection_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECTION_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char **, ret)
+
+/**
+ * @def edje_obj_part_text_select_none
+ * @since 1.8
+ *
+ * @brief Set the selection to be none.
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_select_none
+ */
+#define edje_obj_part_text_select_none(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_NONE), EO_TYPECHECK(const char *, part)
+
+/**
+ * @def edje_obj_part_text_select_all
+ * @since 1.8
+ *
+ * @brief Set the selection to be everything.
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_select_all
+ */
+#define edje_obj_part_text_select_all(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALL), EO_TYPECHECK(const char *, part)
+
+/**
+ * @def edje_obj_part_text_select_allow_set
+ * @since 1.8
+ *
+ * @brief Enables selection if the entry is an EXPLICIT selection mode
+ *
+ * @param[in] part
+ * @param[in] allow
+ *
+ * @see edje_object_part_text_select_allow_set
+ */
+#define edje_obj_part_text_select_allow_set(part, allow) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ALLOW_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, allow)
+
+/**
+ * @def edje_obj_part_text_select_abort
+ * @since 1.8
+ *
+ * @brief Aborts any selection action on a part.
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_select_abort
+ */
+#define edje_obj_part_text_select_abort(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_ABORT), EO_TYPECHECK(const char *, part)
+
+/**
+ * @def edje_obj_part_text_select_begin
+ * @since 1.8
+ *
+ * @brief Starts selecting at current cursor position
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_select_begin
+ */
+#define edje_obj_part_text_select_begin(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_BEGIN), EO_TYPECHECK(const char *, part)
+
+/**
+ * @def edje_obj_part_text_select_extend
+ * @since 1.8
+ *
+ * @brief Extends the current selection to the current cursor position
+ *
+ * @param[in] part
+ *
+ * @see edje_object_part_text_select_extend
+ */
+#define edje_obj_part_text_select_extend(part) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_SELECT_EXTEND), EO_TYPECHECK(const char *, part)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Text_Cursor
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_part_text_cursor_next
+ * @since 1.8
+ *
+ * @brief Advances the cursor to the next cursor position.
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_next
+ */
+#define edje_obj_part_text_cursor_next(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_NEXT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_prev
+ * @since 1.8
+ *
+ * @brief Moves the cursor to the previous char
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_prev
+ */
+#define edje_obj_part_text_cursor_prev(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_PREV), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_up
+ * @since 1.8
+ *
+ * @brief Move the cursor to the char above the current cursor position.
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_up
+ */
+#define edje_obj_part_text_cursor_up(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_UP), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_down
+ * @since 1.8
+ *
+ * @brief Moves the cursor to the char below the current cursor position.
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_down
+ */
+#define edje_obj_part_text_cursor_down(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_DOWN), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_begin_set
+ * @since 1.8
+ *
+ * @brief Moves the cursor to the beginning of the text part
+ *
+ * @param[in] part
+ * @param[in] cur
+ *
+ * @see edje_object_part_text_cursor_begin_set
+ */
+#define edje_obj_part_text_cursor_begin_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_BEGIN_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
+
+/**
+ * @def edje_obj_part_text_cursor_end_set
+ * @since 1.8
+ *
+ * @brief Moves the cursor to the end of the text part.
+ *
+ * @param[in] part
+ * @param[in] cur
+ *
+ * @see edje_object_part_text_cursor_end_set
+ */
+#define edje_obj_part_text_cursor_end_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_END_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
+
+/**
+ * @def edje_obj_part_text_cursor_copy
+ * @since 1.8
+ *
+ * @brief Copy the cursor to another cursor.
+ *
+ * @param[in] part
+ * @param[in] src
+ * @param[in] dst
+ *
+ * @see edje_object_part_text_cursor_copy
+ */
+#define edje_obj_part_text_cursor_copy(part, src, dst) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COPY), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, src), EO_TYPECHECK(Edje_Cursor, dst)
+
+/**
+ * @def edje_obj_part_text_cursor_line_begin_set
+ * @since 1.8
+ *
+ * @brief Move the cursor to the beginning of the line.
+ *
+ * @param[in] part
+ * @param[in] cur
+ *
+ * @see edje_object_part_text_cursor_line_begin_set
+ */
+#define edje_obj_part_text_cursor_line_begin_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_BEGIN_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
+
+/**
+ * @def edje_obj_part_text_cursor_line_end_set
+ * @since 1.8
+ *
+ * @brief Move the cursor to the end of the line.
+ *
+ * @param[in] part
+ * @param[in] cur
+ *
+ * @see edje_object_part_text_cursor_line_end_set
+ */
+#define edje_obj_part_text_cursor_line_end_set(part, cur) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_LINE_END_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur)
+
+/**
+ * @def edje_obj_part_text_cursor_coord_set
+ * @since 1.8
+ *
+ * Position the given cursor to a X,Y position.
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[in] x
+ * @param[in] y
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_coord_set
+ */
+#define edje_obj_part_text_cursor_coord_set(part, cur, x, y, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_COORD_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_is_format_get
+ * @since 1.8
+ *
+ * @brief Returns whether the cursor points to a format.
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_is_format_get
+ */
+#define edje_obj_part_text_cursor_is_format_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_FORMAT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_is_visible_format_get
+ * @since 1.8
+ *
+ * @brief Return true if the cursor points to a visible format
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_is_visible_format_get
+ */
+#define edje_obj_part_text_cursor_is_visible_format_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_IS_VISIBLE_FORMAT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_content_get
+ * @since 1.8
+ *
+ * @brief Returns the content (char) at the cursor position.
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_content_get
+ */
+#define edje_obj_part_text_cursor_content_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_CONTENT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(char **, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_pos_set
+ * @since 1.8
+ *
+ * @brief Sets the cursor position to the given value
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[in] pos
+ *
+ * @see edje_object_part_text_cursor_pos_set
+ */
+#define edje_obj_part_text_cursor_pos_set(part, cur, pos) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(int, pos)
+
+/**
+ * @def edje_obj_part_text_cursor_pos_get
+ * @since 1.8
+ *
+ * @brief Retrieves the current position of the cursor
+ *
+ * @param[in] part
+ * @param[in] cur
+ * @param[out] ret
+ *
+ * @see edje_object_part_text_cursor_pos_get
+ */
+#define edje_obj_part_text_cursor_pos_get(part, cur, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_POS_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Cursor, cur), EO_TYPECHECK(int *, ret)
+
+/**
+ * @def edje_obj_part_text_cursor_geometry_get
+ * @since 1.8
+ *
+ * @brief Returns the cursor geometry of the part relative to the edje
+ *
+ * @param[in] part
+ * @param[out] x
+ * @param[out] y
+ * @param[out] w
+ * @param[out] h
+ *
+ * @see edje_object_part_text_cursor_geometry_get
+ */
+#define edje_obj_part_text_cursor_geometry_get(part, x, y, w, h) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TEXT_CURSOR_GEOMETRY_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Swallow
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_part_swallow
+ * @since 1.8
+ *
+ * @brief "Swallows" an object into one of the Edje object SWALLOW
+ *
+ * @param[in] part
+ * @param[in] obj_swallow
+ * @param[out] ret
+ *
+ * @see edje_object_part_swallow
+ */
+#define edje_obj_part_swallow(part, obj_swallow, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_SWALLOW), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, obj_swallow), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_unswallow
+ * @since 1.8
+ *
+ * @brief Unswallow an object.
+ *
+ * @param[in] obj_swallow
+ *
+ * @see edje_object_part_unswallow
+ */
+#define edje_obj_part_unswallow(obj_swallow) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_UNSWALLOW), EO_TYPECHECK(Evas_Object *, obj_swallow)
+
+/**
+ * @def edje_obj_part_swallow_get
+ * @since 1.8
+ *
+ * @brief Get the object currently swallowed by a part.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_swallow_get
+ */
+#define edje_obj_part_swallow_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_SWALLOW_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Geometry_Group
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_size_min_get
+ * @since 1.8
+ *
+ * @brief Get the minimum size specified -- as an EDC property -- for a
+ * given Edje object
+ *
+ * @param[out] minw
+ * @param[out] minh
+ *
+ * @see edje_object_size_min_get
+ */
+#define edje_obj_size_min_get(minw, minh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_GET), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh)
+
+/**
+ * @def edje_obj_update_hints_set
+ * @since 1.8
+ *
+ * @brief Edje will automatically update the size hints on itself.
+ *
+ * @param[in] update
+ *
+ * @see edje_object_update_hints_set
+ */
+#define edje_obj_update_hints_set(update) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_UPDATE_HINTS_SET), EO_TYPECHECK(Eina_Bool, update)
+
+/**
+ * @def edje_obj_update_hints_get
+ * @since 1.8
+ *
+ * @brief Wether or not Edje will update size hints on itself.
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_update_hints_get
+ */
+#define edje_obj_update_hints_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_UPDATE_HINTS_GET), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_size_max_get
+ * @since 1.8
+ *
+ * @brief Get the maximum size specified -- as an EDC property -- for a
+ * given Edje object
+ *
+ * @param[out] maxw
+ * @param[out] maxh
+ *
+ * @see edje_object_size_max_get
+ */
+#define edje_obj_size_max_get(maxw, maxh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MAX_GET), EO_TYPECHECK(Evas_Coord *, maxw), EO_TYPECHECK(Evas_Coord *, maxh)
+
+/**
+ * @def edje_obj_calc_force
+ * @since 1.8
+ *
+ * @brief Force a Size/Geometry calculation.
+ *
+ *
+ * @see edje_object_calc_force
+ */
+#define edje_obj_calc_force() EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_CALC_FORCE)
+
+/**
+ * @def edje_obj_size_min_calc
+ * @since 1.8
+ *
+ * @brief Calculate the minimum required size for a given Edje object.
+ *
+ * @param[out] minw
+ * @param[out] minh
+ *
+ * @see edje_object_size_min_calc
+ */
+#define edje_obj_size_min_calc(minw, minh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_CALC), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh)
+
+/**
+ * @def edje_obj_parts_extends_calc
+ * @since 1.8
+ *
+ * Calculate the geometry of the region, relative to a given Edje
+ *
+ * @param[out] x
+ * @param[out] y
+ * @param[out] w
+ * @param[out] h
+ * @param[out] ret
+ *
+ * @see edje_object_parts_extends_calc
+ */
+#define edje_obj_parts_extends_calc(x, y, w, h, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PARTS_EXTENDS_CALC), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_size_min_restricted_calc
+ * @since 1.8
+ *
+ * @brief Calculate the minimum required size for a given Edje object.
+ *
+ * @param[out] minw
+ * @param[out] minh
+ * @param[in] restrictedw
+ * @param[in] restrictedh
+ *
+ * @see edje_object_size_min_restricted_calc
+ */
+#define edje_obj_size_min_restricted_calc(minw, minh, restrictedw, restrictedh) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIZE_MIN_RESTRICTED_CALC), EO_TYPECHECK(Evas_Coord *, minw), EO_TYPECHECK(Evas_Coord *, minh), EO_TYPECHECK(Evas_Coord, restrictedw), EO_TYPECHECK(Evas_Coord, restrictedh)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Drag
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_part_drag_dir_get
+ * @since 1.8
+ *
+ * @brief Determine dragable directions.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_dir_get
+ */
+#define edje_obj_part_drag_dir_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_DIR_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_Drag_Dir *, ret)
+
+/**
+ * @def edje_obj_part_drag_value_set
+ * @since 1.8
+ *
+ * @brief Set the dragable object location.
+ *
+ * @param[in] part
+ * @param[in] dx
+ * @param[in] dy
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_value_set
+ */
+#define edje_obj_part_drag_value_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_value_get
+ * @since 1.8
+ *
+ * @brief Get the dragable object location.
+ *
+ * @param[in] part
+ * @param[out] dx
+ * @param[out] dy
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_value_get
+ */
+#define edje_obj_part_drag_value_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_VALUE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_size_set
+ * @since 1.8
+ *
+ * @brief Set the dragable object size.
+ *
+ * @param[in] part
+ * @param[in] dw
+ * @param[in] dh
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_size_set
+ */
+#define edje_obj_part_drag_size_set(part, dw, dh, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dw), EO_TYPECHECK(double, dh), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_size_get
+ * @since 1.8
+ *
+ * @brief Get the dragable object size.
+ *
+ * @param[in] part
+ * @param[out] dw
+ * @param[out] dh
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_size_get
+ */
+#define edje_obj_part_drag_size_get(part, dw, dh, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_SIZE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dw), EO_TYPECHECK(double *, dh), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_step_set
+ * @since 1.8
+ *
+ * @brief Sets the drag step increment.
+ *
+ * @param[in] part
+ * @param[in] dx
+ * @param[in] dy
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_step_set
+ */
+#define edje_obj_part_drag_step_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_step_get
+ * @since 1.8
+ *
+ * @brief Gets the drag step increment values.
+ *
+ * @param[in] part
+ * @param[out] dx
+ * @param[out] dy
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_step_get
+ */
+#define edje_obj_part_drag_step_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_page_set
+ * @since 1.8
+ *
+ * @brief Sets the page step increments.
+ *
+ * @param[in] part
+ * @param[in] dx
+ * @param[in] dy
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_page_set
+ */
+#define edje_obj_part_drag_page_set(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_page_get
+ * @since 1.8
+ *
+ * @brief Gets the page step increments.
+ *
+ * @param[in] part
+ * @param[out] dx
+ * @param[out] dy
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_page_get
+ */
+#define edje_obj_part_drag_page_get(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double *, dx), EO_TYPECHECK(double *, dy), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_step
+ * @since 1.8
+ *
+ * @brief Steps the dragable x,y steps.
+ *
+ * @param[in] part
+ * @param[in] dx
+ * @param[in] dy
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_step
+ */
+#define edje_obj_part_drag_step(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_STEP), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_drag_page
+ * @since 1.8
+ *
+ * @brief Pages x,y steps.
+ *
+ * @param[in] part
+ * @param[in] dx
+ * @param[in] dy
+ * @param[out] ret
+ *
+ * @see edje_object_part_drag_page
+ */
+#define edje_obj_part_drag_page(part, dx, dy, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_DRAG_PAGE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(double, dx), EO_TYPECHECK(double, dy), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Box
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_part_box_append
+ * @since 1.8
+ *
+ * @brief Appends an object to the box.
+ *
+ * @param[in] part
+ * @param[in] child
+ * @param[out] ret
+ *
+ * @see edje_object_part_box_append
+ */
+#define edje_obj_part_box_append(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_APPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_box_prepend
+ * @since 1.8
+ *
+ * @brief Prepends an object to the box.
+ *
+ * @param[in] part
+ * @param[in] child
+ * @param[out] ret
+ *
+ * @see edje_object_part_box_prepend
+ */
+#define edje_obj_part_box_prepend(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_PREPEND), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_box_insert_before
+ * @since 1.8
+ *
+ * @brief Adds an object to the box.
+ *
+ * @param[in] part
+ * @param[in] child
+ * @param[in] reference
+ * @param[out] ret
+ *
+ * @see edje_object_part_box_insert_before
+ */
+#define edje_obj_part_box_insert_before(part, child, reference, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_INSERT_BEFORE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(const Evas_Object *, reference), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_box_insert_at
+ * @since 1.8
+ *
+ * @brief Inserts an object to the box.
+ *
+ * @param[in] part
+ * @param[in] child
+ * @param[in] pos
+ * @param[out] ret
+ *
+ * @see edje_object_part_box_insert_at
+ */
+#define edje_obj_part_box_insert_at(part, child, pos, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_INSERT_AT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_box_remove
+ * @since 1.8
+ *
+ * @brief Removes an object from the box.
+ *
+ * @param[in] part
+ * @param[in] child
+ * @param[out] ret
+ *
+ * @see edje_object_part_box_remove
+ */
+#define edje_obj_part_box_remove(part, child, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def edje_obj_part_box_remove_at
+ * @since 1.8
+ *
+ * @brief Removes an object from the box.
+ *
+ * @param[in] part
+ * @param[in] pos
+ * @param[out] ret
+ *
+ * @see edje_object_part_box_remove_at
+ */
+#define edje_obj_part_box_remove_at(part, pos, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_AT), EO_TYPECHECK(const char *, part), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def edje_obj_part_box_remove_all
+ * @since 1.8
+ *
+ * @brief Removes all elements from the box.
+ *
+ * @param[in] part
+ * @param[in] clear
+ * @param[out] ret
+ *
+ * @see edje_object_part_box_remove_all
+ */
+#define edje_obj_part_box_remove_all(part, clear, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_BOX_REMOVE_ALL), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, clear), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Table
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_part_table_child_get
+ * @since 1.8
+ *
+ * @brief Retrieve a child from a table
+ *
+ * @param[in] part
+ * @param[in] col
+ * @param[in] row
+ * @param[out] ret
+ *
+ * @see edje_object_part_table_child_get
+ */
+#define edje_obj_part_table_child_get(part, col, row, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_CHILD_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(unsigned int, col), EO_TYPECHECK(unsigned int, row), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def edje_obj_part_table_pack
+ * @since 1.8
+ *
+ * @brief Packs an object into the table.
+ *
+ * @param[in] part
+ * @param[in] child_obj
+ * @param[in] col
+ * @param[in] row
+ * @param[in] colspan
+ * @param[in] rowspan
+ * @param[out] ret
+ *
+ * @see edje_object_part_table_pack
+ */
+#define edje_obj_part_table_pack(part, child_obj, col, row, colspan, rowspan, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_PACK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child_obj), EO_TYPECHECK(unsigned short, col), EO_TYPECHECK(unsigned short, row), EO_TYPECHECK(unsigned short, colspan), EO_TYPECHECK(unsigned short, rowspan), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_table_unpack
+ * @since 1.8
+ *
+ * @brief Removes an object from the table.
+ *
+ * @param[in] part
+ * @param[in] child_obj
+ * @param[out] ret
+ *
+ * @see edje_object_part_table_unpack
+ */
+#define edje_obj_part_table_unpack(part, child_obj, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_UNPACK), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object *, child_obj), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_table_col_row_size_get
+ * @since 1.8
+ *
+ * @brief Gets the number of columns and rows the table has.
+ *
+ * @param[in] part
+ * @param[out] cols
+ * @param[out] rows
+ * @param[out] ret
+ *
+ * @see edje_object_part_table_col_row_size_get
+ */
+#define edje_obj_part_table_col_row_size_get(part, cols, rows, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_COL_ROW_SIZE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(int *, cols), EO_TYPECHECK(int *, rows), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_table_clear
+ * @since 1.8
+ *
+ * @brief Removes all object from the table.
+ *
+ * @param[in] part
+ * @param[in] clear
+ * @param[out] ret
+ *
+ * @see edje_object_part_table_clear
+ */
+#define edje_obj_part_table_clear(part, clear, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_TABLE_CLEAR), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Eina_Bool, clear), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Perspective
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_perspective_set
+ * @since 1.8
+ *
+ * Set the given perspective object on this Edje object.
+ *
+ * @param[in] ps
+ *
+ * @see edje_object_perspective_set
+ */
+#define edje_obj_perspective_set(ps) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PERSPECTIVE_SET), EO_TYPECHECK(Edje_Perspective *, ps)
+
+/**
+ * @def edje_obj_perspective_get
+ * @since 1.8
+ *
+ * Get the current perspective used on this Edje object.
+ *
+ * @param[out] ret
+ *
+ * @see edje_object_perspective_get
+ */
+#define edje_obj_perspective_get(ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PERSPECTIVE_GET), EO_TYPECHECK(const Edje_Perspective **, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_preload
+ * @since 1.8
+ *
+ * @brief Preload the images on the Edje Object in the background.
+ *
+ * @param[in] cancel
+ * @param[out] ret
+ *
+ * @see edje_object_preload
+ */
+#define edje_obj_preload(cancel, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PRELOAD), EO_TYPECHECK(Eina_Bool, cancel), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_External_Group
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_part_external_object_get
+ * @since 1.8
+ *
+ * @brief Get the object created by this external part.
+ *
+ * @param[in] part
+ * @param[out] ret
+ *
+ * @see edje_object_part_external_object_get
+ */
+#define edje_obj_part_external_object_get(part, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_OBJECT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def edje_obj_part_external_param_set
+ * @since 1.8
+ *
+ * @brief Set the parameter for the external part.
+ *
+ * @param[in] part
+ * @param[in] param
+ * @param[out] ret
+ *
+ * @see edje_object_part_external_param_set
+ */
+#define edje_obj_part_external_param_set(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_SET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const Edje_External_Param *, param), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_external_param_get
+ * @since 1.8
+ *
+ * @brief Get the parameter for the external part.
+ *
+ * @param[in] part
+ * @param[out] param
+ * @param[out] ret
+ *
+ * @see edje_object_part_external_param_get
+ */
+#define edje_obj_part_external_param_get(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(Edje_External_Param *, param), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def edje_obj_part_external_content_get
+ * @since 1.8
+ *
+ * @brief Get an object contained in an part of type EXTERNAL
+ *
+ * @param[in] part
+ * @param[out] content
+ * @param[out] ret
+ *
+ * @see edje_object_part_external_content_get
+ */
+#define edje_obj_part_external_content_get(part, content, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_CONTENT_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, content), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def edje_obj_part_external_param_type_get
+ * @since 1.8
+ *
+ * Facility to query the type of the given parameter of the given part.
+ *
+ * @param[in] part
+ * @param[out] param
+ * @param[out] ret
+ *
+ * @see edje_object_part_external_param_type_get
+ */
+#define edje_obj_part_external_param_type_get(part, param, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_PART_EXTERNAL_PARAM_TYPE_GET), EO_TYPECHECK(const char *, part), EO_TYPECHECK(const char *, param), EO_TYPECHECK(Edje_External_Param_Type *, ret)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Communication_Interface_Message
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_message_send
+ * @since 1.8
+ *
+ * @brief Send an (Edje) message to a given Edje object
+ *
+ * @param[in] type
+ * @param[in] id
+ * @param[in] msg
+ *
+ * @see edje_object_message_send
+ */
+#define edje_obj_message_send(type, id, msg) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_SEND), EO_TYPECHECK(Edje_Message_Type, type), EO_TYPECHECK(int, id), EO_TYPECHECK(void *, msg)
+
+/**
+ * @def edje_obj_message_handler_set
+ * @since 1.8
+ *
+ * @brief Set an Edje message handler function for a given Edje object.
+ *
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see edje_object_message_handler_set
+ */
+#define edje_obj_message_handler_set(func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_HANDLER_SET), EO_TYPECHECK(Edje_Message_Handler_Cb, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def edje_obj_message_signal_process
+ * @since 1.8
+ *
+ * @brief Process an object's message queue.
+ *
+ *
+ * @see edje_object_message_signal_process
+ */
+#define edje_obj_message_signal_process() EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_MESSAGE_SIGNAL_PROCESS)
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Communication_Interface_Signal
+ *
+ * @{
+ */
+
+/**
+ * @def edje_obj_signal_callback_add
+ * @since 1.8
+ *
+ * @brief Add a callback for an arriving Edje signal, emitted by
+ * a given Ejde object.
+ *
+ * @param[in] emission
+ * @param[in] source
+ * @param[in] func
+ * @param[in] data
+ *
+ * @see edje_object_signal_callback_add
+ */
+#define edje_obj_signal_callback_add(emission, source, func, data) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_ADD), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source), EO_TYPECHECK(Edje_Signal_Cb, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def edje_obj_signal_callback_del
+ * @since 1.8
+ *
+ * @brief Remove a signal-triggered callback from an object.
+ *
+ * @param[in] emission
+ * @param[in] source
+ * @param[in] func
+ * @param[out] ret
+ *
+ * @see edje_object_signal_callback_del
+ */
+#define edje_obj_signal_callback_del(emission, source, func, data, ret) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_CALLBACK_DEL), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source), EO_TYPECHECK(Edje_Signal_Cb, func), EO_TYPECHECK(void *, data), EO_TYPECHECK(void **, ret)
+
+/**
+ * @def edje_obj_signal_emit
+ * @since 1.8
+ *
+ * @brief Send/emit an Edje signal to a given Edje object
+ *
+ * @param[in] emission
+ * @param[in] source
+ *
+ * @see edje_object_signal_emit
+ */
+#define edje_obj_signal_emit(emission, source) EDJE_OBJ_ID(EDJE_OBJ_SUB_ID_SIGNAL_EMIT), EO_TYPECHECK(const char *, emission), EO_TYPECHECK(const char *, source)
+
+/**
+ * @}
+ */
+
+#define EDJE_EDIT_CLASS edje_edit_class_get()
+
+const Eo_Class *edje_edit_class_get(void) EINA_CONST;
diff --git a/src/lib/edje/Edje_Legacy.h b/src/lib/edje/Edje_Legacy.h
new file mode 100644
index 0000000000..3b0ccabb3c
--- /dev/null
+++ b/src/lib/edje/Edje_Legacy.h
@@ -0,0 +1,2614 @@
+/**
+ * @defgroup Edje_External_Part_Group Edje Use of External Parts
+ *
+ * @brief Functions to manipulate parts of type EXTERNAL.
+ *
+ * Edje supports parts of type EXTERNAL, which will call plugins defined by the user
+ * to create and manipulate the object that's allocated in that part.
+ *
+ * Parts of type external may carry extra properties that have meanings defined
+ * by the external plugin. For instance, it may be a string that defines a button
+ * label and setting this property will change that label on the fly.
+ *
+ * @ingroup Edje_External_Group
+ *
+ * @{
+ */
+
+/**
+ * @brief Get the object created by this external part.
+ *
+ * Parts of type external creates the part object using information
+ * provided by external plugins. It's somehow like "swallow"
+ * (edje_object_part_swallow()), but it's all set automatically.
+ *
+ * This function returns the part created by such external plugins and
+ * being currently managed by this Edje.
+ *
+ * @note Almost all swallow rules apply: you should not move, resize,
+ * hide, show, set the color or clipper of such part. It's a bit
+ * more restrictive as one must @b never delete this object!
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return The externally created object, or NULL if there is none or
+ * part is not an external.
+ */
+EAPI Evas_Object *edje_object_part_external_object_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set the parameter for the external part.
+ *
+ * Parts of type external may carry extra properties that have
+ * meanings defined by the external plugin. For instance, it may be a
+ * string that defines a button label and setting this property will
+ * change that label on the fly.
+ *
+ * @note external parts have parameters set when they change
+ * states. Those parameters will never be changed by this
+ * function. The interpretation of how state_set parameters and
+ * param_set will interact is up to the external plugin.
+ *
+ * @note this function will not check if parameter value is valid
+ * using #Edje_External_Param_Info minimum, maximum, valid
+ * choices and others. However these should be checked by the
+ * underlying implementation provided by the external
+ * plugin. This is done for performance reasons.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param param the parameter details, including its name, type and
+ * actual value. This pointer should be valid, and the
+ * parameter must exist in
+ * #Edje_External_Type::parameters_info, with the exact type,
+ * otherwise the operation will fail and @c EINA_FALSE will be
+ * returned.
+ *
+ * @return @c EINA_TRUE if everything went fine, @c EINA_FALSE on errors.
+ */
+EAPI Eina_Bool edje_object_part_external_param_set (Evas_Object *obj, const char *part, const Edje_External_Param *param);
+
+/**
+ * @brief Get the parameter for the external part.
+ *
+ * Parts of type external may carry extra properties that have
+ * meanings defined by the external plugin. For instance, it may be a
+ * string that defines a button label. This property can be modified by
+ * state parameters, by explicit calls to
+ * edje_object_part_external_param_set() or getting the actual object
+ * with edje_object_part_external_object_get() and calling native
+ * functions.
+ *
+ * This function asks the external plugin what is the current value,
+ * independent on how it was set.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+
+ * @param param the parameter details. It is used as both input and
+ * output variable. This pointer should be valid, and the
+ * parameter must exist in
+ * #Edje_External_Type::parameters_info, with the exact type,
+ * otherwise the operation will fail and @c EINA_FALSE will be
+ * returned.
+ *
+ * @return @c EINA_TRUE if everything went fine and @p param members
+ * are filled with information, @c EINA_FALSE on errors and @p
+ * param member values are not set or valid.
+ */
+EAPI Eina_Bool edje_object_part_external_param_get (const Evas_Object *obj, const char *part, Edje_External_Param *param);
+
+/**
+ * @brief Get an object contained in an part of type EXTERNAL
+ *
+ * The @p content string must not be NULL. Its actual value depends on the
+ * code providing the EXTERNAL.
+ *
+ * @param obj The Edje object
+ * @param part The name of the part holding the EXTERNAL
+ * @param content A string identifying which content from the EXTERNAL to get
+ */
+EAPI Evas_Object *edje_object_part_external_content_get (const Evas_Object *obj, const char *part, const char *content);
+
+/**
+ * Facility to query the type of the given parameter of the given part.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param param the parameter name to use.
+ *
+ * @return @c EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value
+ * from #Edje_External_Param_Type on success.
+ */
+EAPI Edje_External_Param_Type edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Geometry_Group
+ *
+ * @{
+ */
+
+/**
+ * @brief Get the minimum size specified -- as an EDC property -- for a
+ * given Edje object
+ *
+ * @param obj A handle to an Edje object
+ * @param minw Pointer to a variable where to store the minimum width
+ * @param minh Pointer to a variable where to store the minimum height
+ *
+ * This function retrieves the @p obj object's minimum size values,
+ * as declared in its EDC group definition. Minimum size of
+ * groups have the following syntax
+ * @code
+ * collections {
+ * group {
+ * name: "a_group";
+ * min: 100 100;
+ * }
+ * }
+ * @endcode
+ *
+ * where one declares a minimum size of 100 pixels both for width and
+ * height. Those are (hint) values which should be respected when the
+ * given object/group is to be controlled by a given container object
+ * (e.g. an Edje object being "swallowed" into a given @c SWALLOW
+ * typed part, as in edje_object_part_swallow()). Check the complete
+ * @ref edcref "syntax reference" for EDC files.
+ *
+ * @note If the @c min EDC property was not declared for @p obj, this
+ * call will return the value 0, for each axis.
+ *
+ * @note On failure, this function will make all non-@c NULL size
+ * pointers' pointed variables be set to zero.
+ *
+ * @see edje_object_size_max_get()
+ */
+EAPI void edje_object_size_min_get (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
+
+/**
+ * @brief Edje will automatically update the size hints on itself.
+ *
+ * @param obj A handle to an Edje object.
+ * @param update Wether or not update the size hints.
+ *
+ * By default edje doesn't set size hints on itself. With this function
+ * call, it will do so if update is true. Be carefully, it cost a lot to
+ * trigger this feature as it will recalc the object every time it make
+ * sense to be sure that's its minimal size hint is always accurate.
+ */
+EAPI void edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update);
+
+/**
+ * @brief Wether or not Edje will update size hints on itself.
+ *
+ * @param obj A handle to an Edje object.
+ * @return @c true if does, @c false if it doesn't.
+ */
+EAPI Eina_Bool edje_object_update_hints_get(Evas_Object *obj);
+
+/**
+ * @brief Get the maximum size specified -- as an EDC property -- for a
+ * given Edje object
+ *
+ * @param obj A handle to an Edje object
+ * @param maxw Pointer to a variable where to store the maximum width
+ * @param maxh Pointer to a variable where to store the maximum height
+ *
+ * This function retrieves the @p obj object's maximum size values,
+ * as declared in its EDC group definition. Maximum size of
+ * groups have the following syntax
+ * @code
+ * collections {
+ * group {
+ * name: "a_group";
+ * max: 100 100;
+ * }
+ * }
+ * @endcode
+ *
+ * where one declares a maximum size of 100 pixels both for width and
+ * height. Those are (hint) values which should be respected when the
+ * given object/group is to be controlled by a given container object
+ * (e.g. an Edje object being "swallowed" into a given @c SWALLOW
+ * typed part, as in edje_object_part_swallow()). Check the complete
+ * @ref edcref "syntax reference" for EDC files.
+ *
+ * @note If the @c max EDC property was not declared for @p obj, this
+ * call will return the maximum size a given Edje object may have, for
+ * each axis.
+ *
+ * @note On failure, this function will make all non-@c NULL size
+ * pointers' pointed variables be set to zero.
+ *
+ * @see edje_object_size_min_get()
+ */
+EAPI void edje_object_size_max_get (const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh);
+
+/**
+ * @brief Force a Size/Geometry calculation.
+ *
+ * @param obj A valid Evas_Object handle
+ *
+ * Forces the object @p obj to recalculation layout regardless of
+ * freeze/thaw.
+ */
+EAPI void edje_object_calc_force (Evas_Object *obj);
+
+/**
+ * @brief Calculate the minimum required size for a given Edje object.
+ *
+ * @param obj A handle to an Edje object
+ * @param minw Pointer to a variable where to store the minimum
+ * required width
+ * @param minh Pointer to a variable where to store the minimum
+ * required height
+ *
+ * This call works exactly as edje_object_size_min_restricted_calc(),
+ * with the last two arguments set to 0. Please refer to its
+ * documentation, then.
+ */
+EAPI void edje_object_size_min_calc (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
+
+/**
+ * Calculate the geometry of the region, relative to a given Edje
+ * object's area, occupied by all parts in the object
+ *
+ * @param obj A handle to an Edje object
+ * @param x A pointer to a variable where to store the parts region's
+ * x coordinate
+ * @param y A pointer to a variable where to store the parts region's
+ * y coordinate
+ * @param w A pointer to a variable where to store the parts region's
+ * width
+ * @param h A pointer to a variable where to store the parts region's
+ * height
+ *
+ * This function gets the geometry of the rectangle equal to the area
+ * required to group all parts in @p obj's group/collection. The @p x
+ * and @p y coordinates are relative to the top left corner of the
+ * whole @p obj object's area. Parts placed out of the group's
+ * boundaries will also be taken in account, so that @p x and @p y
+ * may be negative.
+ *
+ * @note Use @c NULL pointers on the geometry components you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @note On failure, this function will make all non-@c NULL geometry
+ * pointers' pointed variables be set to zero.
+ */
+EAPI Eina_Bool edje_object_parts_extends_calc (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Calculate the minimum required size for a given Edje object.
+ *
+ * @param obj A handle to an Edje object
+ * @param minw Pointer to a variable where to store the minimum
+ * required width
+ * @param minh Pointer to a variable where to store the minimum
+ * required height
+ * @param restrictedw Do not allow object's calculated (minimum) width
+ * to be less than this value
+ * @param restrictedh Do not allow object's calculated (minimum)
+ * height to be less than this value
+ *
+ * This call will trigger an internal recalculation of all parts of
+ * the @p obj object, in order to return its minimum required
+ * dimensions for width and height. The user might choose to @b impose
+ * those minimum sizes, making the resulting calculation to get to values
+ * equal or bigger than @p restrictedw and @p restrictedh, for width and
+ * height, respectively.
+ *
+ * @note At the end of this call, @p obj @b won't be automatically
+ * resized to new dimensions, but just return the calculated
+ * sizes. The caller is the one up to change its geometry or not.
+ *
+ * @warning Be advised that invisible parts in @p obj @b will be taken
+ * into account in this calculation.
+ */
+EAPI void edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Scale
+ *
+ * @{
+ */
+
+/**
+ * @brief Set the scaling factor for a given Edje object.
+ *
+ * @param obj A handle to an Edje object
+ * @param scale The scaling factor (the default value is @c 0.0,
+ * meaning individual scaling @b not set)
+ *
+ * This function sets an @b individual scaling factor on the @a obj
+ * Edje object. This property (or Edje's global scaling factor, when
+ * applicable), will affect this object's part sizes. If @p scale is
+ * not zero, than the individual scaling will @b override any global
+ * scaling set, for the object @p obj's parts. Put it back to zero to
+ * get the effects of the global scaling again.
+ *
+ * @warning Only parts which, at EDC level, had the @c "scale"
+ * property set to @c 1, will be affected by this function. Check the
+ * complete @ref edcref "syntax reference" for EDC files.
+ *
+ * @see edje_object_scale_get()
+ * @see edje_scale_get() for more details
+ */
+EAPI Eina_Bool edje_object_scale_set (Evas_Object *obj, double scale);
+
+/**
+ * @brief Get a given Edje object's scaling factor.
+ *
+ * @param obj A handle to an Edje object
+ *
+ * This function returns the @c individual scaling factor set on the
+ * @a obj Edje object.
+ *
+ * @see edje_object_scale_set() for more details
+ *
+ */
+EAPI double edje_object_scale_get (const Evas_Object *obj);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Part
+ *
+ * @{
+ */
+
+/**
+ * @brief Check if an Edje part exists in a given Edje object's group
+ * definition.
+ *
+ * @param obj A handle to an Edje object
+ * @param part The part's name to check for existence in @p obj's
+ * group
+ * @return @c EINA_TRUE, if the Edje part exists in @p obj's group or
+ * @c EINA_FALSE, otherwise (and on errors)
+ *
+ * This function returns if a given part exists in the Edje group
+ * bound to object @p obj (with edje_object_file_set()).
+ *
+ * This call is useful, for example, when one could expect or not a
+ * given GUI element, depending on the @b theme applied to @p obj.
+ */
+EAPI Eina_Bool edje_object_part_exists (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Get a handle to the Evas object implementing a given Edje
+ * part, in an Edje object.
+ *
+ * @param obj A handle to an Edje object
+ * @param part The Edje part's name
+ * @return A pointer to the Evas object implementing the given part,
+ * or @c NULL on failure (e.g. the given part doesn't exist)
+ *
+ * This function gets a pointer of the Evas object corresponding to a
+ * given part in the @p obj object's group.
+ *
+ * You should @b never modify the state of the returned object (with
+ * @c evas_object_move() or @c evas_object_hide() for example),
+ * because it's meant to be managed by Edje, solely. You are safe to
+ * query information about its current state (with @c
+ * evas_object_visible_get() or @c evas_object_color_get() for
+ * example), though.
+ */
+EAPI const Evas_Object *edje_object_part_object_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Retrieve the geometry of a given Edje part, in a given Edje
+ * object's group definition, relative to the object's area
+ *
+ * @param obj A handle to an Edje object
+ * @param part The Edje part's name
+ * @param x A pointer to a variable where to store the part's x
+ * coordinate
+ * @param y A pointer to a variable where to store the part's y
+ * coordinate
+ * @param w A pointer to a variable where to store the part's width
+ * @param h A pointer to a variable where to store the part's height
+ *
+ * This function gets the geometry of an Edje part within its
+ * group. The @p x and @p y coordinates are relative to the top left
+ * corner of the whole @p obj object's area.
+ *
+ * @note Use @c NULL pointers on the geometry components you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @note On failure, this function will make all non-@c NULL geometry
+ * pointers' pointed variables be set to zero.
+ */
+EAPI Eina_Bool edje_object_part_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @brief Retrieve a list all accessibility part names
+ *
+ * @param obj A valid Evas_Object handle
+ * @return A list all accessibility part names on @p obj
+ * @since 1.7.0
+ */
+EAPI Eina_List *edje_object_access_part_list_get (const Evas_Object *obj);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Text
+ *
+ * @{
+ */
+
+/**
+ * @brief Set the object text callback.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param func The callback function to handle the text change
+ * @param data The data associated to the callback function.
+ *
+ * This function sets the callback to be called when the text changes.
+ */
+EAPI void edje_object_text_change_cb_set (Evas_Object *obj, Edje_Text_Change_Cb func, void *data);
+
+/**
+ * @brief Sets the text for an object part
+ *
+ * @param obj A valid Evas Object handle
+ * @param part The part name
+ * @param text The text string
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ */
+EAPI Eina_Bool edje_object_part_text_set (Evas_Object *obj, const char *part, const char *text);
+
+/**
+ * @brief Sets the text for an object part, but converts HTML escapes to UTF8
+ *
+ * This converts the given string @p text to UTF8 assuming it contains HTML
+ * style escapes like "&" and "©" etc. IF the part is of type TEXT,
+ * as opposed to TEXTBLOCK.
+ *
+ * @param obj A valid Evas Object handle
+ * @param part The part name
+ * @param text The text string
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @since 1.2
+ */
+EAPI Eina_Bool edje_object_part_text_escaped_set (Evas_Object *obj, const char *part, const char *text);
+
+/**
+ * @brief Return the text of the object part.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * @return The text string
+ *
+ * This function returns the text associated to the object part.
+ *
+ * @see edje_object_part_text_set().
+ */
+EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set the style of the
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param style The style to set (textblock conventions).
+ *
+ * This function sets the style associated with the textblock part.
+ *
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_style_user_push(Evas_Object *obj, const char *part, const char *style);
+
+/**
+ * @brief Return the text of the object part.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * @return The text string
+ *
+ * This function returns the style associated with the textblock part.
+ *
+ * @since 1.2.0
+ */
+EAPI const char *edje_object_part_text_style_user_peek(const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Delete the top style form the user style stack.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_style_user_pop(Evas_Object *obj, const char *part);
+
+/**
+ * @brief Sets the raw (non escaped) text for an object part.
+ *
+ * @param obj A valid Evas Object handle
+ * @param part The part name
+ * @param text_to_escape The text string
+ *
+ * This funciton will not do escape for you if it is a TEXTBLOCK part, that is,
+ * if text contain tags, these tags will not be interpreted/parsed by TEXTBLOCK.
+ *
+ * @see edje_object_part_text_unescaped_get().
+ */
+EAPI Eina_Bool edje_object_part_text_unescaped_set (Evas_Object *obj, const char *part, const char *text_to_escape);
+
+/**
+ * @brief Returns the text of the object part, without escaping.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return The @b allocated text string without escaping, or NULL on
+ * problems.
+ *
+ * This function is the counterpart of
+ * edje_object_part_text_unescaped_set(). Please notice that the
+ * result is newly allocated memory and should be released with free()
+ * when done.
+ *
+ * @see edje_object_part_text_unescaped_set().
+ */
+EAPI char *edje_object_part_text_unescaped_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Insert text for an object part.
+ *
+ * @param obj A valid Evas Object handle
+ * @param part The part name
+ * @param text The text string
+ *
+ * This function inserts the text for an object part just before the
+ * cursor position.
+ *
+ */
+EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text);
+
+/**
+ * @brief Insert text for an object part.
+ *
+ * @param obj A valid Evas Object handle
+ * @param part The part name
+ * @param text The text string
+ *
+ * This function inserts the text for an object part at the end; It does not
+ * move the cursor.
+ *
+ * @since 1.1
+ */
+EAPI void edje_object_part_text_append(Evas_Object *obj, const char *part, const char *text);
+
+/**
+ * @brief Return a list of char anchor names.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * @return The list of anchors (const char *), do not modify!
+ *
+ * This function returns a list of char anchor names.
+ *
+ */
+EAPI const Eina_List *edje_object_part_text_anchor_list_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Return a list of Evas_Textblock_Rectangle anchor rectangles.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param anchor The anchor name
+ *
+ * @return The list of anchor rects (const Evas_Textblock_Rectangle
+ * *), do not modify! Geometry is relative to entry part.
+ *
+ * This function return a list of Evas_Textblock_Rectangle anchor
+ * rectangles.
+ *
+ */
+EAPI const Eina_List *edje_object_part_text_anchor_geometry_get (const Evas_Object *obj, const char *part, const char *anchor);
+
+/**
+ * @brief Return a list of char item names.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * @return The list of items (const char *), do not modify!
+ *
+ * This function returns a list of char item names.
+ *
+ */
+EAPI const Eina_List *edje_object_part_text_item_list_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Return item geometry.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param item The item name
+ * @param cx Item x return (relative to entry part)
+ * @param cy Item y return (relative to entry part)
+ * @param cw Item width return
+ * @param ch Item height return
+ *
+ * @return 1 if item exists, 0 if not
+ *
+ * This function return a list of Evas_Textblock_Rectangle item
+ * rectangles.
+ *
+ */
+EAPI Eina_Bool edje_object_part_text_item_geometry_get (const Evas_Object *obj, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
+
+/**
+ * @brief This function inserts text as if the user has inserted it.
+ *
+ * This means it actually registers as a change and emits signals, triggers
+ * callbacks as appropriate.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param text The text string
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_user_insert (const Evas_Object *obj, const char *part, const char *text);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Text_Selection
+ *
+ * @{
+ */
+
+/**
+ * @brief Return the selection text of the object part.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return The text string
+ *
+ * This function returns selection text of the object part.
+ *
+ * @see edje_object_part_text_select_all()
+ * @see edje_object_part_text_select_none()
+ */
+EAPI const char *edje_object_part_text_selection_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set the selection to be none.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * This function sets the selection text to be none.
+ */
+EAPI void edje_object_part_text_select_none (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set the selection to be everything.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * This function selects all text of the object of the part.
+ */
+EAPI void edje_object_part_text_select_all (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Enables selection if the entry is an EXPLICIT selection mode
+ * type.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param allow EINA_TRUE to enable, EINA_FALSE otherwise
+ *
+ * The default is to @b not allow selection. This function only affects user
+ * selection, functions such as edje_object_part_text_select_all() and
+ * edje_object_part_text_select_none() are not affected.
+ */
+EAPI void edje_object_part_text_select_allow_set (const Evas_Object *obj, const char *part, Eina_Bool allow);
+
+/**
+ * @brief Aborts any selection action on a part.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ */
+EAPI void edje_object_part_text_select_abort (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Starts selecting at current cursor position
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ */
+EAPI void edje_object_part_text_select_begin (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Extends the current selection to the current cursor position
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ */
+EAPI void edje_object_part_text_select_extend (const Evas_Object *obj, const char *part);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Text_Cursor
+ *
+ * @{
+ */
+
+/**
+ * @brief Advances the cursor to the next cursor position.
+ * @see evas_textblock_cursor_char_next
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur The edje cursor to advance
+ */
+EAPI Eina_Bool edje_object_part_text_cursor_next (Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Moves the cursor to the previous char
+ * @see evas_textblock_cursor_char_prev
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur the edje cursor to work on
+ */
+EAPI Eina_Bool edje_object_part_text_cursor_prev (Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Move the cursor to the char above the current cursor position.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur the edje cursor to work on
+ */
+EAPI Eina_Bool edje_object_part_text_cursor_up (Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Moves the cursor to the char below the current cursor position.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur the edje cursor to work on
+ */
+EAPI Eina_Bool edje_object_part_text_cursor_down (Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Moves the cursor to the beginning of the text part
+ * @see evas_textblock_cursor_paragraph_first
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur the edje cursor to work on
+ */
+EAPI void edje_object_part_text_cursor_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Moves the cursor to the end of the text part.
+ * @see evas_textblock_cursor_paragraph_last
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur the edje cursor to work on
+ */
+EAPI void edje_object_part_text_cursor_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Copy the cursor to another cursor.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param src the cursor to copy from
+ * @param dst the cursor to copy to
+ */
+EAPI void edje_object_part_text_cursor_copy (Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst);
+
+/**
+ * @brief Move the cursor to the beginning of the line.
+ * @see evas_textblock_cursor_line_char_first
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur the edje cursor to work on
+ */
+EAPI void edje_object_part_text_cursor_line_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Move the cursor to the end of the line.
+ * @see evas_textblock_cursor_line_char_last
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur the edje cursor to work on
+ */
+EAPI void edje_object_part_text_cursor_line_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * Position the given cursor to a X,Y position.
+ *
+ * This is frequently used with the user cursor.
+ *
+ * @param obj An Edje object.
+ * @param part The part containing the object.
+ * @param cur The cursor to adjust.
+ * @param x X Coordinate.
+ * @param y Y Coordinate.
+ * @return True on success, false on error.
+ */
+EAPI Eina_Bool edje_object_part_text_cursor_coord_set (Evas_Object *obj, const char *part, Edje_Cursor cur, Evas_Coord x, Evas_Coord y);
+
+/**
+ * @brief Returns whether the cursor points to a format.
+ * @see evas_textblock_cursor_is_format
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur The cursor to adjust.
+ * @return EINA_TRUE if it's true, EINA_FALSE otherwise.
+ */
+EAPI Eina_Bool edje_object_part_text_cursor_is_format_get (const Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Return true if the cursor points to a visible format
+ * For example \\t, \\n, item and etc.
+ * @see evas_textblock_cursor_format_is_visible_get
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur The cursor to adjust.
+ */
+EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Returns the content (char) at the cursor position.
+ * @see evas_textblock_cursor_content_get
+ *
+ * You must free the return (if not NULL) after you are done with it.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur The cursor to use
+ * @return The character string pointed to (may be a multi-byte utf8 sequence) terminated by a nul byte.
+ */
+EAPI char *edje_object_part_text_cursor_content_get (const Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Sets the cursor position to the given value
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur The cursor to move
+ * @param pos the position of the cursor
+ * @since 1.1.0
+ */
+EAPI void edje_object_part_text_cursor_pos_set (Evas_Object *obj, const char *part, Edje_Cursor cur, int pos);
+
+/**
+ * @brief Retrieves the current position of the cursor
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cur The cursor to get the position
+ * @return The cursor position
+ * @since 1.1.0
+ */
+EAPI int edje_object_part_text_cursor_pos_get (const Evas_Object *obj, const char *part, Edje_Cursor cur);
+
+/**
+ * @brief Returns the cursor geometry of the part relative to the edje
+ * object.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param x Cursor X position
+ * @param y Cursor Y position
+ * @param w Cursor width
+ * @param h Cursor height
+ *
+ */
+EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Text_Entry
+ *
+ * @{
+ */
+
+/**
+ * @brief Set the RTL orientation for this object.
+ *
+ * @param obj A handle to an Edje object.
+ * @param rtl new value of flag EINA_TRUE/EINA_FALSE
+ * @since 1.1.0
+ */
+EAPI void edje_object_mirrored_set (Evas_Object *obj, Eina_Bool rtl);
+
+/**
+ * @brief Get the RTL orientation for this object.
+ *
+ * You can RTL orientation explicitly with edje_object_mirrored_set.
+ *
+ * @param obj A handle to an Edje object.
+ * @return @c EINA_TRUE if the flag is set or @c EINA_FALSE if not.
+ * @since 1.1.0
+ */
+EAPI Eina_Bool edje_object_mirrored_get (const Evas_Object *obj);
+
+/**
+ * @brief Set the function that provides item objects for named items in an edje entry text
+ *
+ * @param obj A valid Evas Object handle
+ * @param func The function to call (or NULL to disable) to get item objects
+ * @param data The data pointer to pass to the @p func callback
+ *
+ * Item objects may be deleted any time by Edje, and will be deleted when the
+ * Edje object is deleted (or file is set to a new file).
+ */
+EAPI void edje_object_item_provider_set (Evas_Object *obj, Edje_Item_Provider_Cb func, void *data);
+
+/**
+ * @brief Reset the input method context if needed.
+ *
+ * This can be necessary in the case where modifying the buffer would confuse on-going input method behavior
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_imf_context_reset (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Get the input method context in entry.
+ *
+ * If ecore_imf was not available when edje was compiled, this function returns NULL
+ * otherwise, the returned pointer is an Ecore_IMF *
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * @return The input method context (Ecore_IMF_Context *) in entry
+ * @since 1.2.0
+ */
+EAPI void *edje_object_part_text_imf_context_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set the layout of the input panel.
+ *
+ * The layout of the input panel or virtual keyboard can make it easier or
+ * harder to enter content. This allows you to hint what kind of input you
+ * are expecting to enter and thus have the input panel automatically
+ * come up with the right mode.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param layout layout type
+ * @since 1.1
+ */
+EAPI void edje_object_part_text_input_panel_layout_set (Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout);
+
+/**
+ * @brief Get the layout of the input panel.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * @return Layout type of the input panel
+ *
+ * @see edje_object_part_text_input_panel_layout_set
+ * @since 1.1
+ */
+EAPI Edje_Input_Panel_Layout edje_object_part_text_input_panel_layout_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set the layout variation of the input panel.
+ *
+ * The layout variation of the input panel or virtual keyboard can make it easier or
+ * harder to enter content. This allows you to hint what kind of input you
+ * are expecting to enter and thus have the input panel automatically
+ * come up with the right mode.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param variation layout variation type
+ * @since 1.8
+ */
+EAPI void edje_object_part_text_input_panel_layout_variation_set(Evas_Object *obj, const char *part, int variation);
+
+/**
+ * @brief Get the layout variation of the input panel.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * @return Layout variation type of the input panel
+ *
+ * @see edje_object_part_text_input_panel_layout_variation_set
+ * @since 1.8
+ */
+EAPI int edje_object_part_text_input_panel_layout_variation_get(const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set the autocapitalization type on the immodule.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param autocapital_type The type of autocapitalization
+ * @since 1.1.0
+ */
+EAPI void edje_object_part_text_autocapital_type_set (Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type);
+
+/**
+ * @brief Retrieves the autocapitalization type
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return The autocapitalization type
+ * @since 1.1.0
+ */
+EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set whether the prediction is allowed or not.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param prediction If true, the prediction feature is allowed.
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_prediction_allow_set (Evas_Object *obj, const char *part, Eina_Bool prediction);
+
+/**
+ * @brief Get whether the prediction is allowed or not.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return EINA_TRUE if prediction feature is allowed.
+ * @since 1.2.0
+ */
+EAPI Eina_Bool edje_object_part_text_prediction_allow_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Sets the attribute to show the input panel automatically.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param enabled If true, the input panel is appeared when entry is clicked or has a focus
+ * @since 1.1.0
+ */
+EAPI void edje_object_part_text_input_panel_enabled_set (Evas_Object *obj, const char *part, Eina_Bool enabled);
+
+/**
+ * @brief Retrieve the attribute to show the input panel automatically.
+ * @see edje_object_part_text_input_panel_enabled_set
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return EINA_TRUE if it supports or EINA_FALSE otherwise
+ * @since 1.1.0
+ */
+EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Show the input panel (virtual keyboard) based on the input panel property such as layout, autocapital types, and so on.
+ *
+ * Note that input panel is shown or hidden automatically according to the focus state.
+ * This API can be used in the case of manually controlling by using edje_object_part_text_input_panel_enabled_set.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_input_panel_show(const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Hide the input panel (virtual keyboard).
+ * @see edje_object_part_text_input_panel_show
+ *
+ * Note that input panel is shown or hidden automatically according to the focus state.
+ * This API can be used in the case of manually controlling by using edje_object_part_text_input_panel_enabled_set.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_input_panel_hide(const Evas_Object *obj, const char *part);
+
+/**
+ * Set the language mode of the input panel.
+ *
+ * This API can be used if you want to show the Alphabet keyboard.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param lang the language to be set to the input panel.
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_input_panel_language_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Lang lang);
+
+/**
+ * Get the language mode of the input panel.
+ *
+ * See @ref edje_object_part_text_input_panel_language_set for more details.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return input panel language type
+ * @since 1.2.0
+ */
+EAPI Edje_Input_Panel_Lang edje_object_part_text_input_panel_language_get(const Evas_Object *obj, const char *part);
+
+/**
+ * Set the input panel-specific data to deliver to the input panel.
+ *
+ * This API is used by applications to deliver specific data to the input panel.
+ * The data format MUST be negotiated by both application and the input panel.
+ * The size and format of data are defined by the input panel.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param data The specific data to be set to the input panel.
+ * @param len the length of data, in bytes, to send to the input panel
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const char *part, const void *data, int len);
+
+/**
+ * Get the specific data of the current active input panel.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param data The specific data to be got from the input panel
+ * @param len The length of data
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, const char *part, void *data, int *len);
+
+/**
+ * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
+ *
+ * An input panel displays the string or icon associated with this type
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param return_key_type The type of "return" key on the input panel
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Return_Key_Type return_key_type);
+
+/**
+ * Get the "return" key type.
+ *
+ * @see edje_object_part_text_input_panel_return_key_type_set() for more details
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return The type of "return" key on the input panel
+ * @since 1.2.0
+ */
+EAPI Edje_Input_Panel_Return_Key_Type edje_object_part_text_input_panel_return_key_type_get(const Evas_Object *obj, const char *part);
+
+/**
+ * Set the return key on the input panel to be disabled.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param disabled The state
+ * @since 1.2.0
+ */
+EAPI void edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object *obj, const char *part, Eina_Bool disabled);
+
+/**
+ * Get whether the return key on the input panel should be disabled or not.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return EINA_TRUE if it should be disabled
+ * @since 1.2.0
+ */
+EAPI Eina_Bool edje_object_part_text_input_panel_return_key_disabled_get(const Evas_Object *obj, const char *part);
+
+/**
+ * Add a filter function for newly inserted text.
+ *
+ * Whenever text is inserted (not the same as set) into the given @p part,
+ * the list of filter functions will be called to decide if and how the new
+ * text will be accepted.
+ * There are three types of filters, EDJE_TEXT_FILTER_TEXT,
+ * EDJE_TEXT_FILTER_FORMAT and EDJE_TEXT_FILTER_MARKUP.
+ * The text parameter in the @p func filter can be modified by the user and
+ * it's up to him to free the one passed if he's to change the pointer. If
+ * doing so, the newly set text should be malloc'ed, as once all the filters
+ * are called Edje will free it.
+ * If the text is to be rejected, freeing it and setting the pointer to NULL
+ * will make Edje break out of the filter cycle and reject the inserted
+ * text.
+ *
+ * @warning This function will be deprecated because of difficulty in use.
+ * The type(format, text, or markup) of text should be always
+ * checked in the filter function for correct filtering.
+ * Please use edje_object_text_markup_filter_callback_add() instead. There
+ * is no need to check the type of text in the filter function
+ * because the text is always markup.
+ * @warning If you use this function with
+ * edje_object_text_markup_filter_callback_add() together, all
+ * Edje_Text_Filter_Cb functions and Edje_Markup_Filter_Cb functions
+ * will be executed, and then filtered text will be inserted.
+ *
+ * @see edje_object_text_insert_filter_callback_del
+ * @see edje_object_text_insert_filter_callback_del_full
+ * @see edje_object_text_markup_filter_callback_add
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param func The callback function that will act as filter
+ * @param data User provided data to pass to the filter function
+ */
+EAPI void edje_object_text_insert_filter_callback_add (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
+
+/**
+ * Delete a function from the filter list.
+ *
+ * Delete the given @p func filter from the list in @p part. Returns
+ * the user data pointer given when added.
+ *
+ * @see edje_object_text_insert_filter_callback_add
+ * @see edje_object_text_insert_filter_callback_del_full
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param func The function callback to remove
+ *
+ * @return The user data pointer if successful, or NULL otherwise
+ */
+EAPI void *edje_object_text_insert_filter_callback_del (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func);
+
+/**
+ * Delete a function and matching user data from the filter list.
+ *
+ * Delete the given @p func filter and @p data user data from the list
+ * in @p part.
+ * Returns the user data pointer given when added.
+ *
+ * @see edje_object_text_insert_filter_callback_add
+ * @see edje_object_text_insert_filter_callback_del
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param func The function callback to remove
+ * @param data The data passed to the callback function
+ *
+ * @return The same data pointer if successful, or NULL otherwise
+ */
+EAPI void *edje_object_text_insert_filter_callback_del_full (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
+
+/**
+ * Add a markup filter function for newly inserted text.
+ *
+ * Whenever text is inserted (not the same as set) into the given @p part,
+ * the list of markup filter functions will be called to decide if and how
+ * the new text will be accepted.
+ * The text parameter in the @p func filter is always markup. It can be
+ * modified by the user and it's up to him to free the one passed if he's to
+ * change the pointer. If doing so, the newly set text should be malloc'ed,
+ * as once all the filters are called Edje will free it.
+ * If the text is to be rejected, freeing it and setting the pointer to NULL
+ * will make Edje break out of the filter cycle and reject the inserted
+ * text.
+ * This function is different from edje_object_text_insert_filter_callback_add()
+ * in that the text parameter in the @p fucn filter is always markup.
+ *
+ * @warning If you use this function with
+ * edje_object_text_insert_filter_callback_add() togehter, all
+ * Edje_Text_Filter_Cb functions and Edje_Markup_Filter_Cb functions
+ * will be executed, and then filtered text will be inserted.
+ *
+ * @see edje_object_text_markup_filter_callback_del
+ * @see edje_object_text_markup_filter_callback_del_full
+ * @see edje_object_text_insert_filter_callback_add
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param func The callback function that will act as markup filter
+ * @param data User provided data to pass to the filter function
+ * @since 1.2.0
+ */
+EAPI void edje_object_text_markup_filter_callback_add(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data);
+
+/**
+ * Delete a function from the markup filter list.
+ *
+ * Delete the given @p func filter from the list in @p part. Returns
+ * the user data pointer given when added.
+ *
+ * @see edje_object_text_markup_filter_callback_add
+ * @see edje_object_text_markup_filter_callback_del_full
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param func The function callback to remove
+ *
+ * @return The user data pointer if successful, or NULL otherwise
+ * @since 1.2.0
+ */
+EAPI void *edje_object_text_markup_filter_callback_del(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func);
+
+/**
+ * Delete a function and matching user data from the markup filter list.
+ *
+ * Delete the given @p func filter and @p data user data from the list
+ * in @p part.
+ * Returns the user data pointer given when added.
+ *
+ * @see edje_object_text_markup_filter_callback_add
+ * @see edje_object_text_markup_filter_callback_del
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param func The function callback to remove
+ * @param data The data passed to the callback function
+ *
+ * @return The same data pointer if successful, or NULL otherwise
+ * @since 1.2.0
+ */
+EAPI void *edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Swallow
+ *
+ * @{
+ */
+
+/**
+ * @brief Set the object minimum size.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param minw The minimum width
+ * @param minh The minimum height
+ *
+ * This sets the minimum size restriction for the object.
+ */
+EAPI void edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh);
+
+/**
+ * @brief Set the object maximum size.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param maxw The maximum width
+ * @param maxh The maximum height
+ *
+ * This sets the maximum size restriction for the object.
+ */
+EAPI void edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh);
+
+/**
+ * @brief Set the object aspect size.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param aspect The aspect control axes
+ * @param aw The aspect radio width
+ * @param ah The aspect ratio height
+ *
+ * This sets the desired aspect ratio to keep an object that will be
+ * swallowed by Edje. The width and height define a preferred size
+ * ASPECT and the object may be scaled to be larger or smaller, but
+ * retaining the relative scale of both aspect width and height.
+ */
+EAPI void edje_extern_object_aspect_set (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah);
+
+/**
+ * @brief "Swallows" an object into one of the Edje object @c SWALLOW
+ * parts.
+ *
+ * @param obj A valid Edje object handle
+ * @param part The swallow part's name
+ * @param obj_swallow The object to occupy that part
+ *
+ * Swallowing an object into an Edje object is, for a given part of
+ * type @c SWALLOW in the EDC group which gave life to @a obj, to set
+ * an external object to be controlled by @a obj, being displayed
+ * exactly over that part's region inside the whole Edje object's
+ * viewport.
+ *
+ * From this point on, @a obj will have total control over @a
+ * obj_swallow's geometry and visibility. For instance, if @a obj is
+ * visible, as in @c evas_object_show(), the swallowed object will be
+ * visible too -- if the given @c SWALLOW part it's in is also
+ * visible. Other actions on @a obj will also reflect on the swallowed
+ * object as well (e.g. resizing, moving, raising/lowering, etc.).
+ *
+ * Finally, all internal changes to @a part, specifically, will
+ * reflect on the displaying of @a obj_swallow, for example state
+ * changes leading to different visibility states, geometries,
+ * positions, etc.
+ *
+ * If an object has already been swallowed into this part, then it
+ * will first be unswallowed (as in edje_object_part_unswallow())
+ * before the new object is swallowed.
+ *
+ * @note @a obj @b won't delete the swallowed object once it is
+ * deleted -- @a obj_swallow will get to an unparented state again.
+ *
+ * For more details on EDC @c SWALLOW parts, see @ref edcref "syntax
+ * reference".
+ */
+EAPI Eina_Bool edje_object_part_swallow (Evas_Object *obj, const char *part, Evas_Object *obj_swallow);
+
+/**
+ * @brief Unswallow an object.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param obj_swallow The swallowed object
+ *
+ * Causes the edje to regurgitate a previously swallowed object. :)
+ *
+ * @note @p obj_swallow will @b not be deleted or hidden.
+ * @note @p obj_swallow may appear shown on the evas depending on its state when
+ * it got unswallowed. Make sure you delete it or hide it if you do not want it to.
+ */
+EAPI void edje_object_part_unswallow (Evas_Object *obj, Evas_Object *obj_swallow);
+
+/**
+ * @brief Get the object currently swallowed by a part.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @return The swallowed object, or NULL if there is none.
+ */
+EAPI Evas_Object *edje_object_part_swallow_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Drag
+ *
+ * @{
+ */
+
+/**
+ * @brief Determine dragable directions.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ *
+ * The dragable directions are defined in the EDC file, inside the @c dragable
+ * section, by the attributes @c x and @c y. See the @ref edcref for more
+ * information.
+ *
+ * @return #EDJE_DRAG_DIR_NONE: Not dragable\n
+ * #EDJE_DRAG_DIR_X: Dragable in X direction\n
+ * #EDJE_DRAG_DIR_Y: Dragable in Y direction\n
+ * #EDJE_DRAG_DIR_XY: Dragable in X & Y directions
+ */
+EAPI Edje_Drag_Dir edje_object_part_drag_dir_get (const Evas_Object *obj, const char *part);
+
+/**
+ * @brief Set the dragable object location.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dx The x value
+ * @param dy The y value
+ *
+ * Places the dragable object at the given location.
+ *
+ * Values for @p dx and @p dy are real numbers that range from 0 to 1,
+ * representing the relative position to the dragable area on that axis.
+ *
+ * This value means, for the vertical axis, that 0.0 will be at the top if the
+ * first parameter of @c y in the dragable part theme is 1, and at bottom if it
+ * is -1.
+ *
+ * For the horizontal axis, 0.0 means left if the first parameter of @c x in the
+ * dragable part theme is 1, and right if it is -1.
+ *
+ * @see edje_object_part_drag_value_get()
+ */
+EAPI Eina_Bool edje_object_part_drag_value_set (Evas_Object *obj, const char *part, double dx, double dy);
+
+/**
+ * @brief Get the dragable object location.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dx The X value pointer
+ * @param dy The Y value pointer
+ *
+ * Values for @p dx and @p dy are real numbers that range from 0 to 1,
+ * representing the relative position to the dragable area on that axis.
+ *
+ * @see edje_object_part_drag_value_set()
+ *
+ * Gets the drag location values.
+ */
+EAPI Eina_Bool edje_object_part_drag_value_get (const Evas_Object *obj, const char *part, double *dx, double *dy);
+
+/**
+ * @brief Set the dragable object size.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dw The drag width
+ * @param dh The drag height
+ *
+ * Values for @p dw and @p dh are real numbers that range from 0 to 1,
+ * representing the relative size of the dragable area on that axis.
+ *
+ * Sets the size of the dragable object.
+ *
+ * @see edje_object_part_drag_size_get()
+ */
+EAPI Eina_Bool edje_object_part_drag_size_set (Evas_Object *obj, const char *part, double dw, double dh);
+
+/**
+ * @brief Get the dragable object size.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dw The drag width pointer
+ * @param dh The drag height pointer
+ *
+ * Gets the dragable object size.
+ *
+ * @see edje_object_part_drag_size_set()
+ */
+EAPI Eina_Bool edje_object_part_drag_size_get (const Evas_Object *obj, const char *part, double *dw, double *dh);
+
+/**
+ * @brief Sets the drag step increment.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dx The x step amount
+ * @param dy The y step amount
+ *
+ * Sets the x,y step increments for a dragable object.
+ *
+ * Values for @p dx and @p dy are real numbers that range from 0 to 1,
+ * representing the relative size of the dragable area on that axis by which the
+ * part will be moved.
+ *
+ * @see edje_object_part_drag_step_get()
+ */
+EAPI Eina_Bool edje_object_part_drag_step_set (Evas_Object *obj, const char *part, double dx, double dy);
+
+/**
+ * @brief Gets the drag step increment values.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part
+ * @param dx The x step increment pointer
+ * @param dy The y step increment pointer
+ *
+ * Gets the x and y step increments for the dragable object.
+ *
+ *
+ * @see edje_object_part_drag_step_set()
+ */
+EAPI Eina_Bool edje_object_part_drag_step_get (const Evas_Object *obj, const char *part, double *dx, double *dy);
+
+/**
+ * @brief Sets the page step increments.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dx The x page step increment
+ * @param dy The y page step increment
+ *
+ * Sets the x,y page step increment values.
+ *
+ * Values for @p dx and @p dy are real numbers that range from 0 to 1,
+ * representing the relative size of the dragable area on that axis by which the
+ * part will be moved.
+ *
+ * @see edje_object_part_drag_page_get()
+ */
+EAPI Eina_Bool edje_object_part_drag_page_set (Evas_Object *obj, const char *part, double dx, double dy);
+
+/**
+ * @brief Gets the page step increments.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dx The dx page increment pointer
+ * @param dy The dy page increment pointer
+ *
+ * Gets the x,y page step increments for the dragable object.
+ *
+ * @see edje_object_part_drag_page_set()
+ */
+EAPI Eina_Bool edje_object_part_drag_page_get (const Evas_Object *obj, const char *part, double *dx, double *dy);
+
+/**
+ * @brief Steps the dragable x,y steps.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dx The x step
+ * @param dy The y step
+ *
+ * Steps x,y where the step increment is the amount set by
+ * edje_object_part_drag_step_set.
+ *
+ * Values for @p dx and @p dy are real numbers that range from 0 to 1.
+ *
+ * @see edje_object_part_drag_page()
+ */
+EAPI Eina_Bool edje_object_part_drag_step (Evas_Object *obj, const char *part, double dx, double dy);
+
+/**
+ * @brief Pages x,y steps.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param dx The x step
+ * @param dy The y step
+ *
+ * Pages x,y where the increment is defined by
+ * edje_object_part_drag_page_set.
+ *
+ * Values for @p dx and @p dy are real numbers that range from 0 to 1.
+ *
+ * @warning Paging is bugged!
+ *
+ * @see edje_object_part_drag_step()
+ */
+EAPI Eina_Bool edje_object_part_drag_page (Evas_Object *obj, const char *part, double dx, double dy);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_File
+ *
+ * @{
+ */
+
+/**
+ * @brief Retrive an EDC data field's value from a given Edje
+ * object's group.
+ *
+ * @param obj A handle to an Edje object
+ * @param key The data field's key string
+ * @return The data's value string. Must not be freed.
+ *
+ * This function fetches an EDC data field's value, which is declared
+ * on the objects building EDC file, under its group. EDC data
+ * blocks are most commonly used to pass arbitrary parameters from an
+ * application's theme to its code.
+ *
+ * They look like the following:
+ *
+ * @code
+ * collections {
+ * group {
+ * name: "a_group";
+ * data {
+ * item: "key1" "value1";
+ * item: "key2" "value2";
+ * }
+ * }
+ * }
+ * @endcode
+ *
+ * EDC data fields always hold @b strings as values, hence the return
+ * type of this function. Check the complete @ref edcref "syntax reference"
+ * for EDC files.
+ *
+ * @warning Do not confuse this call with edje_file_data_get(), which
+ * queries for a @b global EDC data field on an EDC declaration file.
+ *
+ * @see edje_object_file_set()
+ */
+EAPI const char *edje_object_data_get (const Evas_Object *obj, const char *key);
+
+/**
+ * @brief Sets the @b EDJ file (and group within it) to load an Edje
+ * object's contents from
+ *
+ * @param obj A handle to an Edje object
+ * @param file The path to the EDJ file to load @p from
+ * @param group The name of the group, in @p file, which implements an
+ * Edje object
+ * @return @c EINA_TRUE, on success or @c EINA_FALSE, on errors (check
+ * edje_object_load_error_get() after this call to get errors causes)
+ *
+ * Edje expects EDJ files, which are theming objects' descriptions and
+ * resources packed together in an EET file, to read Edje object
+ * definitions from. They usually are created with the @c .edj
+ * extension. EDJ files, in turn, are assembled from @b textual object
+ * description files, where one describes Edje objects declaratively
+ * -- the EDC files (see @ref edcref "the syntax" for those files).
+ *
+ * Those description files were designed so that many Edje object
+ * definitions -- also called @b groups (or collections) -- could be
+ * packed together in the same EDJ file, so that a whole
+ * application's theme could be packed in one file only. This is the
+ * reason for the @p group argument.
+ *
+ * Use this function after you instantiate a new Edje object, so that
+ * you can "give him life", telling where to get its contents from.
+ *
+ * @see edje_object_add()
+ * @see edje_object_file_get()
+ */
+EAPI Eina_Bool edje_object_file_set (Evas_Object *obj, const char *file, const char *group);
+
+/**
+ * @brief Get the file and group name that a given Edje object is bound to
+ *
+ * @param obj A handle to an Edje object
+ * @param file A pointer to a variable whero to store the file's
+ * path
+ * @param group A pointer to a variable where to store the group
+ * name in
+ *
+ * This gets the EDJ file's path, with the respective group set for
+ * the given Edje object. If @a obj is either not an Edje file, or has
+ * not had its file/group set previously, by edje_object_file_set(),
+ * then both @p file and @p group will be set to @c NULL, indicating
+ * an error.
+ *
+ * @see edje_object_file_set()
+ *
+ * @note Use @c NULL pointers on the file/group components you're not
+ * interested in: they'll be ignored by the function.
+ */
+EAPI void edje_object_file_get (const Evas_Object *obj, const char **file, const char **group);
+
+/**
+ * @brief Gets the (last) file loading error for a given Edje object
+ *
+ * @param obj A handlet to an Edje object
+ *
+ * @return The Edje loading error, one of:
+ * - #EDJE_LOAD_ERROR_NONE
+ * - #EDJE_LOAD_ERROR_GENERIC
+ * - #EDJE_LOAD_ERROR_DOES_NOT_EXIST
+ * - #EDJE_LOAD_ERROR_PERMISSION_DENIED
+ * - #EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED
+ * - #EDJE_LOAD_ERROR_CORRUPT_FILE
+ * - #EDJE_LOAD_ERROR_UNKNOWN_FORMAT
+ * - #EDJE_LOAD_ERROR_INCOMPATIBLE_FILE
+ * - #EDJE_LOAD_ERROR_UNKNOWN_COLLECTION
+ * - #EDJE_LOAD_ERROR_RECURSIVE_REFERENCE
+ *
+ * This function is meant to be used after an Edje EDJ file
+ * loading, what takes place with the edje_object_file_set()
+ * function. If that function does not return @c EINA_TRUE, one should
+ * check for the reason of failure with this one.
+ *
+ * @see edje_load_error_str()
+ */
+EAPI Edje_Load_Error edje_object_load_error_get (const Evas_Object *obj);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Animation
+ *
+ * @{
+ */
+
+/**
+ * @brief Set the Edje object to playing or paused states.
+ *
+ * @param obj A handle to an Edje object.
+ * @param play Object state (@c EINA_TRUE to playing,
+ * @c EINA_FALSE to paused).
+ *
+ * This function sets the Edje object @a obj to playing or paused
+ * states, depending on the parameter @a play. This has no effect if
+ * the object was already at that state.
+ *
+ * @see edje_object_play_get().
+ *
+ */
+EAPI void edje_object_play_set (Evas_Object *obj, Eina_Bool play);
+
+/**
+ * @brief Get the Edje object's state.
+ *
+ * @param obj A handle to an Edje object.
+ * @return @c EINA_FALSE if the object is not connected, its @c delete_me flag
+ * is set, or it is at paused state; @c EINA_TRUE if the object is at playing
+ * state.
+ *
+ * This function tells if an Edje object is playing or not. This state
+ * is set by edje_object_play_set().
+ *
+ * @see edje_object_play_set().
+ *
+ */
+EAPI Eina_Bool edje_object_play_get (const Evas_Object *obj);
+
+/**
+ * @brief Set the object's animation state.
+ *
+ * @param obj A handle to an Edje object.
+ * @param on The animation state. @c EINA_TRUE to starts or
+ * @c EINA_FALSE to stops.
+ *
+ * This function starts or stops an Edje object's animation. The
+ * information if it's stopped can be retrieved by
+ * edje_object_animation_get().
+ *
+ * @see edje_object_animation_get()
+ *
+ */
+EAPI void edje_object_animation_set (Evas_Object *obj, Eina_Bool on);
+
+/**
+ * @brief Get the Edje object's animation state.
+ *
+ * @param obj A handle to an Edje object.
+ * @return @c EINA_FALSE on error or if object is not animated;
+ * @c EINA_TRUE if animated.
+ *
+ * This function returns if the animation is stopped or not. The
+ * animation state is set by edje_object_animation_set().
+ *
+ * @see edje_object_animation_set().
+ *
+ */
+EAPI Eina_Bool edje_object_animation_get (const Evas_Object *obj);
+
+/**
+ * @brief Freezes the Edje object.
+ *
+ * @param obj A handle to an Edje object.
+ * @return The frozen state or 0 on Error
+ *
+ * This function puts all changes on hold. Successive freezes will
+ * nest, requiring an equal number of thaws.
+ *
+ * @see edje_object_thaw()
+ */
+EAPI int edje_object_freeze (Evas_Object *obj);
+
+/**
+ * @brief Thaws the Edje object.
+ *
+ * @param obj A handle to an Edje object.
+ * @return The frozen state or 0 if the object is not frozen or on error.
+ *
+ * This function thaws the given Edje object.
+ *
+ * @note: If sucessives freezes were done, an equal number of
+ * thaws will be required.
+ *
+ * @see edje_object_freeze()
+ */
+EAPI int edje_object_thaw (Evas_Object *obj);
+
+/**
+ * @brief Returns the state of the Edje part.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param val_ret
+ *
+ * @return The part state:\n
+ * "default" for the default state\n
+ * "" for other states
+ */
+EAPI const char *edje_object_part_state_get (const Evas_Object *obj, const char *part, double *val_ret);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Color_Class
+ *
+ * @{
+ */
+
+/**
+ * @brief Sets the object color class.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param color_class
+ * @param r Object Red value
+ * @param g Object Green value
+ * @param b Object Blue value
+ * @param a Object Alpha value
+ * @param r2 Outline Red value
+ * @param g2 Outline Green value
+ * @param b2 Outline Blue value
+ * @param a2 Outline Alpha value
+ * @param r3 Shadow Red value
+ * @param g3 Shadow Green value
+ * @param b3 Shadow Blue value
+ * @param a3 Shadow Alpha value
+ *
+ * This function sets the color values for an object level color
+ * class. This will cause all edje parts in the specified object that
+ * have the specified color class to have their colors multiplied by
+ * these values.
+ *
+ * The first color is the object, the second is the text outline, and
+ * the third is the text shadow. (Note that the second two only apply
+ * to text parts).
+ *
+ * Setting color emits a signal "color_class,set" with source being
+ * the given color.
+ *
+ * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
+ * half-transparent white is 255 255 255 128.
+ */
+EAPI Eina_Bool edje_object_color_class_set (Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
+
+/**
+ * @brief Gets the object color class.
+ *
+ * @param o A valid Evas_Object handle
+ * @param color_class
+ * @param r Object Red value
+ * @param g Object Green value
+ * @param b Object Blue value
+ * @param a Object Alpha value
+ * @param r2 Outline Red value
+ * @param g2 Outline Green value
+ * @param b2 Outline Blue value
+ * @param a2 Outline Alpha value
+ * @param r3 Shadow Red value
+ * @param g3 Shadow Green value
+ * @param b3 Shadow Blue value
+ * @param a3 Shadow Alpha value
+ *
+ * @return EINA_TRUE if found or EINA_FALSE if not found and all
+ * values are zeroed.
+ *
+ * This function gets the color values for an object level color
+ * class. If no explicit object color is set, then global values will
+ * be used.
+ *
+ * The first color is the object, the second is the text outline, and
+ * the third is the text shadow. (Note that the second two only apply
+ * to text parts).
+ *
+ * @note unlike Evas, Edje colors are @b not pre-multiplied. That is,
+ * half-transparent white is 255 255 255 128.
+ */
+EAPI Eina_Bool edje_object_color_class_get (const Evas_Object *o, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
+
+/**
+ * @brief Delete the object color class.
+ *
+ * @param obj The edje object's reference.
+ * @param color_class The color class to be deleted.
+ *
+ * This function deletes any values at the object level for the
+ * specified object and color class.
+ * @note Deleting the color class will revert it to the values
+ * defined by edje_color_class_set() or the color class
+ * defined in the theme file.
+ *
+ * Deleting the color class will emit the signal "color_class,del"
+ * for the given Edje object.
+ */
+ EAPI void edje_object_color_class_del (Evas_Object *obj, const char *color_class);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Box
+ *
+ * @{
+ */
+
+/**
+ * @brief Appends an object to the box.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param child The object to append
+ *
+ * @return @c EINA_TRUE: Successfully added.\n
+ * @c EINA_FALSE: An error occurred.
+ *
+ * Appends child to the box indicated by part.
+ *
+ * @see edje_object_part_box_prepend()
+ * @see edje_object_part_box_insert_before()
+ * @see edje_object_part_box_insert_at()
+ */
+EAPI Eina_Bool edje_object_part_box_append (Evas_Object *obj, const char *part, Evas_Object *child);
+
+/**
+ * @brief Prepends an object to the box.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param child The object to prepend
+ *
+ * @return @c EINA_TRUE: Successfully added.\n
+ * @c EINA_FALSE: An error occurred.
+ *
+ * Prepends child to the box indicated by part.
+ *
+ * @see edje_object_part_box_append()
+ * @see edje_object_part_box_insert_before()
+ * @see edje_object_part_box_insert_at()
+ */
+EAPI Eina_Bool edje_object_part_box_prepend (Evas_Object *obj, const char *part, Evas_Object *child);
+
+/**
+ * @brief Adds an object to the box.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param child The object to insert
+ * @param reference The object to be used as reference
+ *
+ * @return @c EINA_TRUE: Successfully added.\n
+ * @c EINA_FALSE: An error occurred.
+ *
+ * Inserts child in the box given by part, in the position marked by
+ * reference.
+ *
+ * @see edje_object_part_box_append()
+ * @see edje_object_part_box_prepend()
+ * @see edje_object_part_box_insert_at()
+ */
+EAPI Eina_Bool edje_object_part_box_insert_before (Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference);
+
+/**
+ * @brief Inserts an object to the box.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param child The object to insert
+ * @param pos The position where to insert child
+ *
+ * @return @c EINA_TRUE: Successfully added.\n
+ * @c EINA_FALSE: An error occurred.
+ *
+ * Adds child to the box indicated by part, in the position given by
+ * pos.
+ *
+ * @see edje_object_part_box_append()
+ * @see edje_object_part_box_prepend()
+ * @see edje_object_part_box_insert_before()
+ */
+EAPI Eina_Bool edje_object_part_box_insert_at (Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos);
+
+/**
+ * @brief Removes an object from the box.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param child The object to remove
+ *
+ * @return Pointer to the object removed, or @c NULL.
+ *
+ * Removes child from the box indicated by part.
+ *
+ * @see edje_object_part_box_remove_at()
+ * @see edje_object_part_box_remove_all()
+ */
+EAPI Evas_Object *edje_object_part_box_remove (Evas_Object *obj, const char *part, Evas_Object *child);
+
+/**
+ * @brief Removes an object from the box.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param pos The position index of the object (starts counting from 0)
+ *
+ * @return Pointer to the object removed, or @c NULL.
+ *
+ * Removes from the box indicated by part, the object in the position
+ * pos.
+ *
+ * @see edje_object_part_box_remove()
+ * @see edje_object_part_box_remove_all()
+ */
+EAPI Evas_Object *edje_object_part_box_remove_at (Evas_Object *obj, const char *part, unsigned int pos);
+
+/**
+ * @brief Removes all elements from the box.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param clear Delete objects on removal
+ *
+ * @return 1: Successfully cleared.\n
+ * 0: An error occurred.
+ *
+ * Removes all the external objects from the box indicated by part.
+ * Elements created from the theme will not be removed.
+ *
+ * @see edje_object_part_box_remove()
+ * @see edje_object_part_box_remove_at()
+ */
+EAPI Eina_Bool edje_object_part_box_remove_all (Evas_Object *obj, const char *part, Eina_Bool clear);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Part_Table
+ *
+ * @{
+ */
+
+/**
+ * @brief Retrieve a child from a table
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param col The column of the child to get
+ * @param row The row of the child to get
+ * @return The child Evas_Object
+ */
+EAPI Evas_Object *edje_object_part_table_child_get (const Evas_Object *obj, const char *part, unsigned int col, unsigned int row);
+
+/**
+ * @brief Packs an object into the table.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param child_obj The object to pack in
+ * @param col The column to place it in
+ * @param row The row to place it in
+ * @param colspan Columns the child will take
+ * @param rowspan Rows the child will take
+ *
+ * @return @c EINA_TRUE object was added, @c EINA_FALSE on failure
+ *
+ * Packs an object into the table indicated by part.
+ */
+EAPI Eina_Bool edje_object_part_table_pack (Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
+
+/**
+ * @brief Removes an object from the table.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param child_obj The object to pack in
+ *
+ * @return @c EINA_TRUE object removed, @c EINA_FALSE on failure
+ *
+ * Removes an object from the table indicated by part.
+ */
+EAPI Eina_Bool edje_object_part_table_unpack (Evas_Object *obj, const char *part, Evas_Object *child_obj);
+
+/**
+ * @brief Gets the number of columns and rows the table has.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param cols Pointer where to store number of columns (can be NULL)
+ * @param rows Pointer where to store number of rows (can be NULL)
+ *
+ * @return @c EINA_TRUE get some data, @c EINA_FALSE on failure
+ *
+ * Retrieves the size of the table in number of columns and rows.
+ */
+EAPI Eina_Bool edje_object_part_table_col_row_size_get (const Evas_Object *obj, const char *part, int *cols, int *rows);
+
+/**
+ * @brief Removes all object from the table.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param part The part name
+ * @param clear If set, will delete subobjs on remove
+ *
+ * @return @c EINA_TRUE clear the table, @c EINA_FALSE on failure
+ *
+ * Removes all object from the table indicated by part, except the
+ * internal ones set from the theme.
+ */
+EAPI Eina_Bool edje_object_part_table_clear (Evas_Object *obj, const char *part, Eina_Bool clear);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Text_Class
+ *
+ * @{
+ */
+
+/**
+ * @brief Sets Edje text class.
+ *
+ * @param obj A valid Evas_Object handle
+ * @param text_class The text class name
+ * @param font Font name
+ * @param size Font Size
+ *
+ * @return @c EINA_TRUE, on success or @c EINA_FALSE, on error
+ *
+ * This function sets the text class for the Edje.
+ *
+ */
+EAPI Eina_Bool edje_object_text_class_set (Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Perspective
+ *
+ * @{
+ */
+
+/**
+ * Set the given perspective object on this Edje object.
+ *
+ * @param obj The Edje object on the perspective will be set.
+ * @param ps The perspective object that will be used.
+ *
+ * Make the given perspective object be the default perspective for this Edje
+ * object.
+ *
+ * There can be only one perspective object per Edje object, and if a
+ * previous one was set, it will be removed and the new perspective object
+ * will be used.
+ *
+ * An Edje perspective will only affect a part if it doesn't point to another
+ * part to be used as perspective.
+ *
+ * @see edje_object_perspective_new()
+ * @see edje_object_perspective_get()
+ * @see edje_perspective_set()
+ */
+EAPI void edje_object_perspective_set (Evas_Object *obj, Edje_Perspective *ps);
+
+/**
+ * Get the current perspective used on this Edje object.
+ *
+ * @param obj the given Edje object.
+ * @return The perspective object being used on this Edje object. Or @c NULL
+ * if there was none, and on errors.
+ *
+ * @see edje_object_perspective_set()
+ */
+EAPI const Edje_Perspective *edje_object_perspective_get (const Evas_Object *obj);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Group
+ *
+ * @{
+ */
+
+/**
+ * @brief Instantiate a new Edje object
+ *
+ * @param evas A valid Evas handle, the canvas to place the new object
+ * in
+ * @return A handle to the new object created or @c NULL, on errors.
+ *
+ * This function creates a new Edje smart object, returning its @c
+ * Evas_Object handle. An Edje object is useless without a (source)
+ * file set to it, so you'd most probably call edje_object_file_set()
+ * afterwards, like in:
+ * @code
+ * Evas_Object *edje;
+ *
+ * edje = edje_object_add(canvas);
+ * if (!edje)
+ * {
+ * fprintf(stderr, "could not create edje object!\n");
+ * return NULL;
+ * }
+ *
+ * if (!edje_object_file_set(edje, "theme.edj", "group_name"))
+ * {
+ * int err = edje_object_load_error_get(edje);
+ * const char *errmsg = edje_load_error_str(err);
+ * fprintf(stderr, "could not load 'group_name' from theme.edj: %s",
+ * errmsg);
+ *
+ * evas_object_del(edje);
+ * return NULL;
+ * }
+ *
+ * @endcode
+ *
+ * @note You can get a callback every time edje re-calculates the object
+ * (either due to animation or some kind of signal or input). This is called
+ * in-line just after the recalculation has occurred. It is a good idea not
+ * to go and delete or alter the object inside this callbacks, simply make
+ * a note that the recalculation has taken place and then do something about
+ * it outside the callback. to register a callback use code like:
+ *
+ * @code
+ * evas_object_smart_callback_add(edje_obj, "recalc", my_cb, my_cb_data);
+ * @endcode
+ *
+ * @see evas_object_smart_callback_add()
+ *
+ * @note Before creating the first Edje object in your code, remember
+ * to initialize the library, with edje_init(), or unexpected behavior
+ * might occur.
+ */
+EAPI Evas_Object *edje_object_add (Evas *evas);
+
+/**
+ * @brief Preload the images on the Edje Object in the background.
+ *
+ * @param obj A handle to an Edje object
+ * @param cancel @c EINA_FALSE will add it the preloading work queue,
+ * @c EINA_TRUE will remove it (if it was issued before).
+ * @return @c EINA_FASLE if obj was not a valid Edje object
+ * otherwise @c EINA_TRUE
+ *
+ * This function requests the preload of all data images (on the given
+ * object) in the background. The work is queued before being processed
+ * (because there might be other pending requests of this type).
+ * It emits a signal "preload,done" when finished.
+ *
+ * @note Use @c EINA_TRUE on scenarios where you don't need
+ * the image data preloaded anymore.
+ */
+EAPI Eina_Bool edje_object_preload (Evas_Object *obj, Eina_Bool cancel);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Communication_Interface_Signal
+ *
+ * @{
+ */
+
+/**
+ * @brief Add a callback for an arriving Edje signal, emitted by
+ * a given Edje object.
+ *
+ * @param obj A handle to an Edje object
+ * @param emission The signal's "emission" string
+ * @param source The signal's "source" string
+ * @param func The callback function to be executed when the signal is
+ * emitted.
+ * @param data A pointer to data to pass in to @p func.
+ *
+ * Edje signals are one of the communication interfaces between
+ * @b code and a given Edje object's @b theme. With signals, one can
+ * communicate two string values at a time, which are:
+ * - "emission" value: the name of the signal, in general
+ * - "source" value: a name for the signal's context, in general
+ *
+ * Though there are those common uses for the two strings, one is free
+ * to use them however they like.
+ *
+ * This function adds a callback function to a signal emitted by @a obj, to
+ * be issued every time an EDC program like the following
+ * @code
+ * program {
+ * name: "emit_example";
+ * action: SIGNAL_EMIT "a_signal" "a_source";
+ * }
+ * @endcode
+ * is run, if @p emission and @p source are given those same values,
+ * here.
+ *
+ * Signal callback registration is powerful, in the way that @b blobs
+ * may be used to match multiple signals at once. All the @c
+ * "*?[\" set of @c fnmatch() operators can be used, both for @p
+ * emission and @p source.
+ *
+ * Edje has @b internal signals it will emit, automatically, on
+ * various actions taking place on group parts. For example, the mouse
+ * cursor being moved, pressed, released, etc., over a given part's
+ * area, all generate individual signals.
+ *
+ * By using something like
+ * @code
+ * edje_object_signal_callback_add(obj, "mouse,down,*", "button.*",
+ * signal_cb, NULL);
+ * @endcode
+ * being @c "button.*" the pattern for the names of parts implementing
+ * buttons on an interface, you'd be registering for notifications on
+ * events of mouse buttons being pressed down on either of those parts
+ * (those events all have the @c "mouse,down," common prefix on their
+ * names, with a suffix giving the button number). The actual emission
+ * and source strings of an event will be passed in as the @a emission
+ * and @a source parameters of the callback function (e.g. @c
+ * "mouse,down,2" and @c "button.close"), for each of those events.
+ *
+ * @note See @ref edcref "the syntax" for EDC files
+ * @see edje_object_signal_emit() on how to emits Edje signals from
+ * code to a an object
+ * @see edje_object_signal_callback_del_full()
+ */
+EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
+
+/**
+ * @brief Remove a signal-triggered callback from an object.
+ *
+ * @param obj A valid Evas_Object handle.
+ * @param emission The emission string.
+ * @param source The source string.
+ * @param func The callback function.
+ * @return The data pointer
+ *
+ * This function removes a callback, previously attached to the
+ * emittion of a signal, from the object @a obj. The parameters @a
+ * emission, @a source and @a func must match exactly those passed to
+ * a previous call to edje_object_signal_callback_add(). The data
+ * pointer that was passed to this call will be returned.
+ *
+ * @see edje_object_signal_callback_add().
+ * @see edje_object_signal_callback_del_full().
+ *
+ */
+EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
+
+/**
+ * @brief Unregister/delete a callback set for an arriving Edje
+ * signal, emitted by a given Edje object.
+ *
+ * @param obj A handle to an Edje object
+ * @param emission The signal's "emission" string
+ * @param source The signal's "source" string
+ * @param func The callback function passed on the callback's
+ * registration
+ * @param data The pointer given to be passed as data to @p func
+ * @return @p data, on success or @c NULL, on errors (or if @p data
+ * had this value)
+ *
+ * This function removes a callback, previously attached to the
+ * emittion of a signal, from the object @a obj. The parameters
+ * @a emission, @a source, @a func and @a data must match exactly those
+ * passed to a previous call to edje_object_signal_callback_add(). The
+ * data pointer that was passed to this call will be returned.
+ *
+ * @see edje_object_signal_callback_add().
+ * @see edje_object_signal_callback_del().
+ *
+ */
+EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
+
+/**
+ * @brief Send/emit an Edje signal to a given Edje object
+ *
+ * @param obj A handle to an Edje object
+ * @param emission The signal's "emission" string
+ * @param source The signal's "source" string
+ *
+ * This function sends a signal to the object @a obj. An Edje program,
+ * at @p obj's EDC specification level, can respond to a signal by
+ * having declared matching @c 'signal' and @c 'source' fields on its
+ * block (see @ref edcref "the syntax" for EDC files).
+ *
+ * As an example,
+ * @code
+ * edje_object_signal_emit(obj, "a_signal", "");
+ * @endcode
+ * would trigger a program which had an EDC declaration block like
+ * @code
+ * program {
+ * name: "a_program";
+ * signal: "a_signal";
+ * source: "";
+ * action: ...
+ * }
+ * @endcode
+ *
+ * @see edje_object_signal_callback_add() for more on Edje signals.
+ */
+EAPI void edje_object_signal_emit (Evas_Object *obj, const char *emission, const char *source);
+/**
+ * @}
+ */
+
+/**
+ * @ingroup Edje_Object_Communication_Interface_Message
+ *
+ * @{
+ */
+
+/**
+ * @brief Send an (Edje) message to a given Edje object
+ *
+ * @param obj A handle to an Edje object
+ * @param type The type of message to send to @p obj
+ * @param id A identification number for the message to be sent
+ * @param msg The message's body, a struct depending on @p type
+ *
+ * This function sends an Edje message to @p obj and to all of its
+ * child objects, if it has any (swallowed objects are one kind of
+ * child object). @p type and @p msg @b must be matched accordingly,
+ * as documented in #Edje_Message_Type.
+ *
+ * The @p id argument as a form of code and theme defining a common
+ * interface on message communication. One should define the same IDs
+ * on both code and EDC declaration (see @ref edcref "the syntax" for
+ * EDC files), to individualize messages (binding them to a given
+ * context).
+ *
+ * The function to handle messages arriving @b from @b obj is set with
+ * edje_object_message_handler_set().
+ */
+EAPI void edje_object_message_send (Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
+
+/**
+ * @brief Set an Edje message handler function for a given Edje object.
+ *
+ * @param obj A handle to an Edje object
+ * @param func The function to handle messages @b coming from @p obj
+ * @param data Auxiliary data to be passed to @p func
+ *
+ * For scriptable programs on an Edje object's defining EDC file which
+ * send messages with the @c send_message() primitive, one can attach
+ * handler functions, to be called in the code which creates
+ * that object (see @ref edcref "the syntax" for EDC files).
+ *
+ * This function associates a message handler function and the
+ * attached data pointer to the object @p obj.
+ *
+ * @see edje_object_message_send()
+ */
+EAPI void edje_object_message_handler_set (Evas_Object *obj, Edje_Message_Handler_Cb func, void *data);
+
+/**
+ * @brief Process an object's message queue.
+ *
+ * @param obj A handle to an Edje object.
+ *
+ * This function goes through the object message queue processing the
+ * pending messages for @b this specific Edje object. Normally they'd
+ * be processed only at idle time.
+ *
+ */
+EAPI void edje_object_message_signal_process (Evas_Object *obj);
+
+/**
+ * @}
+ */