efl/src/lib/edje/Edje_Common.h

2118 lines
74 KiB
C

#include "edje_types.eot.h"
/**
* @internal
* @ingroup Edje_General_Group
*
* @typedef Edje_Version
* Type for edje version
*
*/
typedef struct _Edje_Version
{
int major; /**< The major number of Edje version. */
int minor; /**< The minor number of Edje version. */
int micro; /**< The micro number of Edje version. */
int revision; /**< The revision of Edje version) */
} Edje_Version;
EAPI extern Edje_Version *edje_version;
#ifndef _EDJE_OBJECT_EO_CLASS_TYPE
#define _EDJE_OBJECT_EO_CLASS_TYPE
typedef Eo Edje_Object;
#endif
/**
* @typedef Edje_Color_Class
* Type for edje color class
*/
typedef struct _Edje_Color_Class Edje_Color_Class;
struct _Edje_Color_Class
{
const char *name;
unsigned char r, g, b, a;
unsigned char r2, g2, b2, a2;
unsigned char r3, g3, b3, a3;
Eina_Stringshare *desc;
};
/**
* @typedef Edje_Text_Class
* Type for edje text class
*
* @since 1.17
*/
typedef struct _Edje_Text_Class Edje_Text_Class;
struct _Edje_Text_Class
{
const char *name;
const char *font;
Evas_Font_Size size;
};
/**
* @typedef Edje_Size_Class
* Type for edje size class
*
* @since 1.17
*/
typedef struct _Edje_Size_Class Edje_Size_Class;
struct _Edje_Size_Class
{
Eina_Stringshare *name;
Evas_Coord minw;
Evas_Coord minh;
Evas_Coord maxw;
Evas_Coord maxh;
};
/**
* @defgroup Edje_Object_Communication_Interface_Signal Edje Communication Interface: Signal
* @ingroup Edje_Object_Group
*
* @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.
*
* @{
*/
typedef void (*Efl_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. */
typedef Efl_Signal_Cb Edje_Signal_Cb;
/**
* @brief Gets 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 Initializes 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 Shuts down the Edje library.
*
* @return The number of times the library has been initialized
* 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 Sets 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);
/**
* @brief Gets data from the file level data block of an edje mapped file.
* @param f The mapped edje file
* @param key The data key
* @return The string value of the data, or @c 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_mmap_data_get(const Eina_File *f, const char *key);
/**
* @brief Gets 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 @c 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"
*
* @see edje_mmap_data_get()
*/
EAPI char *edje_file_data_get (const char *file, const char *key);
/**
* @brief Loads a new module in Edje.
* @param module The name of the module that will be added to Edje.
* @return @c EINA_TRUE if the module was successfully loaded. Otherwise, @c 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 Gets 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 Sets 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 Returns 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 Cleans 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 Sets 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 Returns 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 Cleans 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.
*
* @ingroup Edje_External
*/
typedef enum
{
EDJE_EXTERNAL_PARAM_TYPE_INT = 0, /**< 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 value to indicate last enum field during iteration */
} 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;
/** Struct that holds parameters for parts of type EXTERNAL.
*/
typedef 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. */
int i; /**< Used by both integer and boolean */
double d; /**< Used by double */
const char *s; /**< Used by both string and choice */
} Edje_External_Param;
/**
* @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;
/**
* 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
* @ingroup Edje_External_Group
*
* @brief Functions to register, unregister EXTERNAL types and develop the plugins.
*
* This group discusses functions useful for the development of new plugins.
* These functions deal with the newly EXTERNAL types by registering, unregistering and manipulating them.
*
*
* @{
*/
/**
* @brief Registers 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);
/**
* @brief Unregisters 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);
/**
* @brief Registers 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);
/**
* @brief Unregisters 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);
/**
* @brief Returns 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;
/**
*
* @return An iterator 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);
/**
* @brief Convenience 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);
/**
* @brief Gets 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 @c EINA_TRUE if the parameter was found and is of integer type,
* @c EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_external_param_int_get (const Eina_List *params, const char *key, int *ret);
/**
* @brief Gets 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 @c EINA_TRUE if the parameter was found and is of double type,
* @c EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_external_param_double_get (const Eina_List *params, const char *key, double *ret);
/**
* @brief Gets 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 @c EINA_TRUE if the parameter was found and is of string type,
* @c EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_external_param_string_get (const Eina_List *params, const char *key, const char **ret);
/**
* @brief Gets 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 @c EINA_TRUE if the parameter was found and is of boolean type,
* @c EINA_FALSE otherwise.
*/
EAPI Eina_Bool edje_external_param_bool_get (const Eina_List *params, const char *key, Eina_Bool *ret);
/**
* @brief Gets 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);
/**
* @brief Gets 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.
*
* @param type_name Edje external type name
*
* @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);
/**
* @brief Gets 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
* @ingroup Edje_Object_Group
*
* @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.
*
*
* @{
*/
/**
* @brief Sets 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 Retrieves 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
* @ingroup Edje_Part_Text
*
* @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 that 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.
*
*
* @{
*/
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 Edje_Text_Filter_Type
*
* All Edje text filters type values.
*/
typedef enum _Edje_Text_Filter_Type
{
EDJE_TEXT_FILTER_TEXT = 0, /**< Text type filter */
EDJE_TEXT_FILTER_FORMAT = 1, /**< Format type filter */
EDJE_TEXT_FILTER_MARKUP = 2 /**< Markup type filter */
} Edje_Text_Filter_Type;
enum
{
EDJE_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL, /**< The plain normal layout @since 1.12 */
EDJE_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME, /**< Filename layout. Symbols such as '/' should be disabled. @since 1.12 */
EDJE_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_PERSON_NAME /**< The name of a person. @since 1.12 */
};
enum
{
EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL, /**< The plain normal number layout @since 1.8 */
EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED, /**< The number layout to allow a positive or negative sign at the start @since 1.8 */
EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL, /**< The number layout to allow decimal point to provide fractional value @since 1.8 */
EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL /**< The number layout to allow decimal point and negative sign @since 1.8 */
};
enum
{
EDJE_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NORMAL, /**< The normal password layout @since 1.12 */
EDJE_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY /**< The password layout to allow only number @since 1.12 */
};
/**
* @typedef (*Edje_Text_Filter_Cb)
* @brief Callback prototype for Edje_Text_Filter
* @param obj The Evas_Object to filter.
* @param type The filter type.
* @param text The text of the filter.
*/
typedef void (*Edje_Text_Filter_Cb) (void *data, Evas_Object *obj, const char *part, Edje_Text_Filter_Type type, char **text);
/**
* @typedef (*Edje_Markup_Filter_Cb)
* @brief Callback prototype for Edje_Text_Filter
* @param obj The Evas_Object to filter.
* @param part Edje part name.
* @param text The text of the filter.
*/
typedef void (*Edje_Markup_Filter_Cb) (void *data, Evas_Object *obj, const char *part, char **text);
/**
* @typedef (*Edje_Item_Provider_Cb)
* @brief Callback prototype for Edje_Item_Provider
* @param data some data provided by user
* @param obj The Evas_Object to filter.
* @param part Edje part name
* @param item Item of container
* @return Must be an Evas_Object.
*/
typedef Evas_Object *(*Edje_Item_Provider_Cb) (void *data, Evas_Object *obj, const char *part, const char *item);
/**
* @brief Shows 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 Sets 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. If the time out value is less than zero, the last input entered in password mode will be always 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
* @ingroup Edje_Object_Group
*
* @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.
*
* @{
*/
/**
* @brief Sets 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.
*
* @return Eina_Bool, @c EINA_TRUE on success and @c EINA_FALSE on failure.
*/
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 Gets 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 @c EINA_TRUE if found or @c 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 Deletes 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 Iterates over all the active class of an application.
*
* @return an iterator of Edje_Color_Class of the currently active color class
*
* This function only iterate over the Edje_Color_Class in use by
* an application.
*
* @since 1.14
*/
EAPI Eina_Iterator *edje_color_class_active_iterator_new(void);
/**
* @brief Iterates over all the color class provided by an Edje file.
*
* @param f The mapped edje file.
*
* @return an iterator of Edje_Color_Class provided by the Edje file.
*
* @since 1.14
*/
EAPI Eina_Iterator *edje_mmap_color_class_iterator_new(Eina_File *f);
/**
* @}
*/
/**
* @defgroup Edje_Object_Part Edje Part
* @ingroup Edje_Object_Group
*
* @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.
*
* @{
*/
/**
* @defgroup Edje_Part_Text Edje Text Part
* @ingroup Edje_Object_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.
*
* @{
*/
#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)
#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)
/**
* @typedef Edje_Text_Effect
*
* All possible text effects in Edje.
*/
typedef enum _Edje_Text_Effect
{
EDJE_TEXT_EFFECT_NONE = 0, /**< None text effect value */
EDJE_TEXT_EFFECT_PLAIN = 1, /**< Plain text effect value */
EDJE_TEXT_EFFECT_OUTLINE = 2, /**< Outline text effect value */
EDJE_TEXT_EFFECT_SOFT_OUTLINE = 3, /**< Soft outline text effect value */
EDJE_TEXT_EFFECT_SHADOW = 4, /**< Shadown text effect value */
EDJE_TEXT_EFFECT_SOFT_SHADOW = 5, /**< Soft shadow text effect value */
EDJE_TEXT_EFFECT_OUTLINE_SHADOW = 6, /**< Outline shadow text effect value */
EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW = 7, /**< Outline soft shadow text effect value */
EDJE_TEXT_EFFECT_FAR_SHADOW = 8, /**< Far shadow text effect value */
EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW = 9, /**< Far soft shadow text effect value */
EDJE_TEXT_EFFECT_GLOW = 10, /**< Glow text effect value */
EDJE_TEXT_EFFECT_LAST = 11, /**< Last text effect value */
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT = (0x0 << 4), /**< Bottom right shadow direction value */
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM = (0x1 << 4), /**< Bottom shadow direction value */
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT = (0x2 << 4), /**< Bottom left shadow direction value */
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT = (0x3 << 4), /**< Left shadow direction value */
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT = (0x4 << 4), /**< Top left shadow direction value */
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP = (0x5 << 4), /**< Top shadow direction value */
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT = (0x6 << 4), /**< Top right shadow direction value */
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT = (0x7 << 4) /**< right shadow direction value */
} Edje_Text_Effect;
/**
* @defgroup Edje_Text_Selection Edje Text Selection
* @ingroup Edje_Part_Text
*
* @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.
*
* @{
*/
/**
* @}
*/
/**
* @defgroup Edje_Text_Cursor Edje Text Cursor
* @ingroup Edje_Part_Text
*
* @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.
*
* @{
*/
/**
* @}
*/
/**
* @defgroup Edje_Part_Swallow Edje Swallow Part
* @ingroup Edje_Object_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.
*
*
* @{
*/
/**
* @typedef Edje_Aspect_Control
*
* All Edje aspect control values.
*
*/
typedef enum _Edje_Aspect_Control
{
EDJE_ASPECT_CONTROL_NONE = 0, /*< None aspect control value */
EDJE_ASPECT_CONTROL_NEITHER = 1, /*< Neither aspect control value */
EDJE_ASPECT_CONTROL_HORIZONTAL = 2, /*< Horizontal aspect control value */
EDJE_ASPECT_CONTROL_VERTICAL = 3, /*< Vertical aspect control value */
EDJE_ASPECT_CONTROL_BOTH = 4 /*< Both aspect control value */
} Edje_Aspect_Control;
/**
* @}
*/
/**
* @defgroup Edje_Object_Geometry_Group Edje Object Geometry
* @ingroup Edje_Object_Group
*
* @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.
*
* @{
*/
/**
* @}
*/
/**
* @defgroup Edje_Part_Box Edje Box Part
* @ingroup Edje_Object_Part
*
* @brief Functions that deal with parts of type box.
*
* Box is a container type for parts, that means it can contain
* other parts.
*
* @{
*/
/**
* @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
* @ingroup Edje_Object_Part
*
* @brief Functions that deal with parts of type table.
*
* Table is a container type for parts, that means it can contain
* other parts.
*
* @{
*/
/**
* @typedef Edje_Object_Table_Homogeneous_Mode
*
* Table homogeneous modes.
*
*/
typedef enum _Edje_Object_Table_Homogeneous_Mode
{
EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE = 0, /*< None homogeneous mode */
EDJE_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1, /*< Table homogeneous mode */
EDJE_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2 /*< Item homogeneous mode */
} Edje_Object_Table_Homogeneous_Mode;
/**
* @}
*/
/**
* @defgroup Edje_Object_Text_Class Edje Class: Text
* @ingroup Edje_Object_Group
* @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.
*
* @{
*/
/**
* @brief Sets 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 Gets the font and the font size from 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 gets the font and the font name from the specified Edje
* text class. The font string will only be valid until the text class is
* changed or edje is shut down.
* @see edje_text_class_set().
*
* @since 1.14
*/
EAPI Eina_Bool edje_text_class_get (const char *text_class, const char **font, Evas_Font_Size *size);
/**
* @brief Deletes 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 Lists 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 Iterate over all active classes of an application.
*
* @return an iterator of Edje_Text_Class of the currently active text class
*
* This function only iterates over the Edje_Text_Class in use by
* an application.
*
* @since 1.17
*
*/
EAPI Eina_Iterator *edje_text_class_active_iterator_new(void);
/**
* @brief Iterate over all text classes provided by an Edje file.
*
* @param f The mapped edje file.
*
* @return an iterator of Edje_Text_Class provided by the Edje file.
*
* @since 1.17
*
*/
EAPI Eina_Iterator *edje_mmap_text_class_iterator_new(Eina_File *f);
/**
* @}
*/
/**
* @defgroup Edje_Object_Size_Class Edje Class: Size
* @ingroup Edje_Object_Group
*
* @brief Functions that deal with Size Classes
*
* Sometimes we want to change the size of two or more parts equally and
* that's when we use size classes.
*
* If one or more parts are assigned with a size class, when we set attributes
* (minw etc.) to this class will update all these parts with the new attributes.
* Setting values to a size class at a process level will affect
* all parts with that size class, while at object level will affect only
* the parts inside an specified object.
*
* @{
*/
/**
* @brief Sets the Edje size class.
*
* @param size_class The size class name
* @param minw The min width
* @param minh The min height
* @param maxw The max width
* @param maxh The max height
*
* @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 size class with the new min and max attributes.
*
* @see edje_size_class_get().
*
* @since 1.17
*/
EAPI Eina_Bool edje_size_class_set (const char *size_class, Evas_Coord minw, Evas_Coord minh, Evas_Coord maxw, Evas_Coord maxh);
/**
* @brief Gets the Edje size class.
*
* @param size_class The size class name
* @param minw The min width
* @param minh The min height
* @param maxw The max width
* @param maxh The max height
*
* @return @c EINA_TRUE on success, or @c EINA_FALSE on error
*
* This function gets the min and max size from the specified Edje
* size class.
*
* @since 1.17
*/
EAPI Eina_Bool edje_size_class_get (const char *size_class, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord *maxw, Evas_Coord *maxh);
/**
* @brief Deletes the size class.
*
* @param size_class The size class name
*
* This function deletes any values at the process level for the
* specified size class.
*
* @since 1.17
*/
EAPI void edje_size_class_del (const char *size_class);
/**
* @brief Lists size classes.
*
* @return A list of size class names (strings). These strings are
* stringshares and the list must be eina_stringshare_del()'ed by the caller.
*
* This function lists all size classes known about by the current
* process.
*
* @since 1.17
*/
EAPI Eina_List *edje_size_class_list (void);
/**
* @brief Iterates over all active classes of an application.
*
* @return An iterator of Edje_Size_Class of the currently active size class
*
* This function only iterates over the Edje_Size_Class in use by
* an application.
*
* @since 1.17
*/
EAPI Eina_Iterator *edje_size_class_active_iterator_new(void);
/**
* @brief Iterates over all size classes provided by an Edje file.
*
* @param f The mapped edje file.
*
* @return an iterator of Edje_Size_Class provided by the Edje file.
*
* @since 1.17
*/
EAPI Eina_Iterator *edje_mmap_size_class_iterator_new(Eina_File *f);
/**
* @}
*/
/**
* @defgroup Edje_Object_File Edje Object File
* @ingroup Edje_Object_Group
*
* @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.
*
* @{
*/
/**
* @brief Gets a list of groups in an edje mapped file.
* @param f The mapped file
*
* @return The Eina_List of group names (char *)
*
* Note: the list must be freed using edje_mmap_collection_list_free()
* when you are done with it.
*/
EAPI Eina_List *edje_mmap_collection_list(Eina_File *f);
/**
* @brief Frees file collection list.
* @param lst The Eina_List of groups
*
* Frees the list returned by edje_mmap_collection_list().
*/
EAPI void edje_mmap_collection_list_free(Eina_List *lst);
/**
* @brief Determines whether a group matching glob exists in an edje mapped file.
* @param f The mapped file
* @param glob A glob to match on
*
* @return @c 1 if a match is found, @c 0 otherwise
*/
EAPI Eina_Bool edje_mmap_group_exists(Eina_File *f, const char *glob);
/**
* @brief Determines whether a group have 3D Scene.
* @param f The mapped file
* @param glob The group name
*
* @return @c 1 if a Scene is found is found, @c 0 otherwise
*
* @since 1.18
*/
EAPI Eina_Bool edje_mmap_3d_has(Eina_File *f, const char *group);
/**
* @brief Iterates over all the opened Edje file.
*
* @return an iterator of Eina_File currently opened Edje file.
*
* @since 1.14
*/
EAPI Eina_Iterator *edje_file_iterator_new(void);
/**
* @brief Gets a list of groups in an edje file.
* @param file The path to the edje file
*
* @return The Eina_List of group names (char *)
* @see edje_mmap_collection_list()
*
* Note: the list must be freed using edje_file_collection_list_free()
* when you are done with it.
*
* @see edje_mmap_group_exists()
*/
EAPI Eina_List *edje_file_collection_list (const char *file);
/**
* @brief Frees 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);
/**
* @brief Determines whether a group matching glob exists in an edje file.
* @param file The file path
* @param glob A glob to match on
*
* @return @c 1 if a match is found, @c 0 otherwise
*/
EAPI Eina_Bool edje_file_group_exists (const char *file, const char *glob);
/**
* @}
*/
/**
* @defgroup Edje_Object_Animation Edje Object Animation
* @ingroup Edje_Object_Group
* @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.
*
* @{
*/
/**
* @typedef Edje_Tween_Mode
*
* Available tween mode for edje animations.
*/
typedef enum _Edje_Tween_Mode
{
EDJE_TWEEN_MODE_NONE = 0, /**< None tween mode value */
EDJE_TWEEN_MODE_LINEAR = 1, /**< Linear tween mode value */
EDJE_TWEEN_MODE_SINUSOIDAL = 2, /**< Sinusoidal tween mode value */
EDJE_TWEEN_MODE_ACCELERATE = 3, /**< Accelerate tween mode value */
EDJE_TWEEN_MODE_DECELERATE = 4, /**< Decelerate tween mode value */
EDJE_TWEEN_MODE_ACCELERATE_FACTOR = 5, /**< Accelerate factor tween mode value */
EDJE_TWEEN_MODE_DECELERATE_FACTOR = 6, /**< Decelerate factor tween mode value */
EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR = 7, /**< Sinusoidal factgor tween mode value */
EDJE_TWEEN_MODE_DIVISOR_INTERP = 8, /**< Divisor iterp tween mode value */
EDJE_TWEEN_MODE_BOUNCE = 9, /**< Bounce tween mode value */
EDJE_TWEEN_MODE_SPRING = 10, /**< Spring tween mode value */
EDJE_TWEEN_MODE_CUBIC_BEZIER = 11, /**< Cubic Bezier tween mode value */
EDJE_TWEEN_MODE_LAST = 12, /**< Last tween mode value */
EDJE_TWEEN_MODE_MASK = 0xff, /**< Mask tween mode value */
EDJE_TWEEN_MODE_OPT_FROM_CURRENT = (1 << 31) /**< Options from current tween mode value */
} Edje_Tween_Mode;
/**
* @typedef Edje_Action_Type
*
* All actions available in Edje programs.
*
*/
typedef enum _Edje_Action_Type
{
EDJE_ACTION_TYPE_NONE = 0, /**< None action value */
EDJE_ACTION_TYPE_STATE_SET = 1, /**< State set action value */
EDJE_ACTION_TYPE_ACTION_STOP = 2, /**< Action stop action value */
EDJE_ACTION_TYPE_SIGNAL_EMIT = 3, /**< Signal emit action value */
EDJE_ACTION_TYPE_DRAG_VAL_SET = 4, /**< Drag val set action value */
EDJE_ACTION_TYPE_DRAG_VAL_STEP = 5, /**< Drag val step action value */
EDJE_ACTION_TYPE_DRAG_VAL_PAGE = 6, /**< Drag val page action value */
EDJE_ACTION_TYPE_SCRIPT = 7, /**< Script action value */
EDJE_ACTION_TYPE_FOCUS_SET = 8, /**< Focus set action value */
EDJE_ACTION_TYPE_RESERVED00 = 9, /**< Reversed do action value */
EDJE_ACTION_TYPE_FOCUS_OBJECT = 10, /**< Forcus object action value */
EDJE_ACTION_TYPE_PARAM_COPY = 11, /**< Param copy action value */
EDJE_ACTION_TYPE_PARAM_SET = 12, /**< Param set action value */
EDJE_ACTION_TYPE_SOUND_SAMPLE = 13, /**< @since 1.1 @brief Sound sample action value */
EDJE_ACTION_TYPE_SOUND_TONE = 14, /**< @since 1.1 @brief Sound tone action value */
EDJE_ACTION_TYPE_PHYSICS_IMPULSE = 15, /**< @since 1.8 @brief Physics impulse action value */
EDJE_ACTION_TYPE_PHYSICS_TORQUE_IMPULSE = 16, /**< @since 1.8 @brief Physics torque impulse action value */
EDJE_ACTION_TYPE_PHYSICS_FORCE = 17, /**< @since 1.8 @brief Physics force action value */
EDJE_ACTION_TYPE_PHYSICS_TORQUE = 18, /**< @since 1.8 @brief Physics torque action value */
EDJE_ACTION_TYPE_PHYSICS_FORCES_CLEAR = 19, /**< @since 1.8 @brief Physics forces clear action value */
EDJE_ACTION_TYPE_PHYSICS_VEL_SET = 20, /**< @since 1.8 @brief Physics velocity set action value */
EDJE_ACTION_TYPE_PHYSICS_ANG_VEL_SET = 21, /**< @since 1.8 @brief Physics angle velocity set action value */
EDJE_ACTION_TYPE_PHYSICS_STOP = 22, /**< @since 1.8 @brief Physics stop action value */
EDJE_ACTION_TYPE_PHYSICS_ROT_SET = 23, /**< @since 1.8 @brief Physics rotation set action value */
EDJE_ACTION_TYPE_VIBRATION_SAMPLE = 24, /**< @since 1.10 @brief vibration sample action value */
EDJE_ACTION_TYPE_MO = 25, /**< @since 1.15 @brief Mo action value */
EDJE_ACTION_TYPE_LAST = 26 /**< Last action value */
} Edje_Action_Type;
/**
* @brief Sets edje transitions' 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 Gets edje transitions' 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 Freezes 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 Thaws 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 Sets Edje language.
*
* @param locale The locale specifier.
*
* This function sets the given language.
*
* @note: emits signal edje,language,"locale".
*
* @since 1.15
*/
EAPI void edje_language_set (const char *locale);
/**
* @brief Sets edje transition duration factor.
*
* @param scale The edje transition's duration factor (the default value is @c 1.0)
*
* This function sets the edje transition duration factor
* It will affect the speed of transitions
* which had the @c use_duration_factor property set to @1.
* The default value of @c use_duration_factor property is @c zero,
* but can be changed by @p "USE_DURATION_FACTOR 1" or @p "USE_DURATION_FACTOR 0"
* as parameter of @c "TRANSITION" property at EDC level.
* If the parameter is @p "USE_DURATION_FACTOR 0" or not mentioned about @p "USE_DURATION_FACTOR",
* the duration of transition keeps original duration
*
* @warning The transition's duration factor cannot be set on each translation.
* If you use this function, it will affect transitions globally
*
* @see edje_transition_duration_factor_get()
*
* @since 1.15
*/
EAPI void edje_transition_duration_factor_set (double scale);
/**
* @brief Retrieves transitions duration factor.
*
* @return The edje transition duration factor
*
* This function returns the edje transition duration factor.
*
* @see edje_transition_duration_set() for more details
*
* @since 1.15
*
*/
EAPI double edje_transition_duration_factor_get (void);
/**
* @}
*/
/**
* @defgroup Edje_Object_Communication_Interface_Message Edje Communication Interface: Message
* @ingroup Edje_Object_Group
*
* @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.
*
* @{
*/
/**
* @brief Processes 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_Audio Edje Audio
* @ingroup Edje
*
* @brief Functions to manipulate audio abilities in edje.
*
* 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.
*
* @{
*/
/**
* Identifiers of Edje message types, which can be sent back and forth
* code and a given Edje object's theme file/group.
*
* @see edje_audio_channel_mute_set()
* @see edje_audio_channel_mute_get()
*
* @since 1.9
*/
typedef enum _Edje_Channel
{
EDJE_CHANNEL_EFFECT = 0, /**< Standard audio effects */
EDJE_CHANNEL_BACKGROUND = 1, /**< Background audio sounds */
EDJE_CHANNEL_MUSIC = 2, /**< Music audio */
EDJE_CHANNEL_FOREGROUND = 3, /**< Foreground audio sounds */
EDJE_CHANNEL_INTERFACE = 4, /**< Sounds related to the interface */
EDJE_CHANNEL_INPUT = 5, /**< Sounds related to regular input */
EDJE_CHANNEL_ALERT = 6, /**< Sounds for major alerts */
EDJE_CHANNEL_ALL = 7 /**< All audio channels (convenience) */
} Edje_Channel;
/**
* @brief Sets the mute state of audio for the process as a whole.
*
* @param channel The channel to set the mute state of
* @param mute The mute state
*
* This sets the mute (no output) state of audio for the given channel.
*
* @see edje_audio_channel_mute_get()
*
* @since 1.9
*/
EAPI void edje_audio_channel_mute_set(Edje_Channel channel, Eina_Bool mute);
/**
* @brief Gets the mute state of the given channel.
*
* @param channel The channel to get the mute state of
* @return The mute state of the channel
*
* @see edje_audio_channel_mute_set()
*
* @since 1.9
*/
EAPI Eina_Bool edje_audio_channel_mute_get(Edje_Channel channel);
/**
* @brief Gets the part name of an edje part object.
* @param obj An edje part object
* @return The name of the part, if the object is an edje part, or @c NULL
* @note If this function returns @c NULL, @p obj was not an Edje part object
* @see edje_object_part_object_get()
* @since 1.10
*/
EAPI const char *edje_object_part_object_name_get(const Evas_Object *obj);
#ifdef EFL_BETA_API_SUPPORT
/**
* @brief Creates scene and root node which contains all 3D parts of edje object.
* @param obj An edje part object
* @param root node to collect all 3D parts
* @param scene
* @return scene and root node which contains all 3D parts of edje object
* @note If this function returns @c EINA_FALSE, @p the scene or the root
* node wasn't made
* @since 1.18
*/
EAPI Eina_Bool edje_3d_object_add(Evas_Object *obj, Eo **root_node, Eo *scene);
#endif
/**
* @}
*/