2015-06-10 08:56:43 -07:00
# include "edje_types.eot.h"
2013-04-11 02:48:20 -07:00
/**
* @ internal
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_General_Group
2013-04-11 02:48:20 -07:00
*
* @ typedef Edje_Version
* Type for edje version
*
*/
typedef struct _Edje_Version
{
2014-10-17 05:31:03 -07:00
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) */
2013-04-11 02:48:20 -07:00
} Edje_Version ;
EAPI extern Edje_Version * edje_version ;
2015-04-21 02:07:17 -07:00
# ifndef _EDJE_OBJECT_EO_CLASS_TYPE
# define _EDJE_OBJECT_EO_CLASS_TYPE
2015-04-07 22:34:46 -07:00
typedef Eo Edje_Object ;
2015-04-21 02:07:17 -07:00
# endif
2015-03-30 18:32:35 -07:00
/**
* @ 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 ;
2015-04-02 12:20:21 -07:00
Eina_Stringshare * desc ;
2015-03-30 18:32:35 -07:00
} ;
2013-04-11 02:48:20 -07:00
2016-01-12 14:01:27 -08:00
/**
* @ 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 ;
} ;
2013-04-11 02:48:20 -07:00
/**
* @ defgroup Edje_Object_Communication_Interface_Signal Edje Communication Interface : Signal
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2013-04-11 02:48:20 -07:00
*
* @ 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 .
*
* @ {
*/
2017-08-03 01:23:21 -07:00
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 ;
2013-04-11 02:48:20 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets extra data passed to callbacks .
2013-04-11 02:48:20 -07:00
*
2017-02-16 10:16:49 -08:00
* @ return The extra data for that callback .
2013-04-11 02:48:20 -07:00
*
* 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 .
*
* @ {
*/
/**
2017-02-16 10:16:49 -08:00
* @ brief Initializes the Edje library .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Shuts down the Edje library .
2013-04-11 02:48:20 -07:00
*
2013-06-16 06:13:50 -07:00
* @ return The number of times the library has been initialized
2013-04-11 02:48:20 -07:00
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets the edje append fontset .
2013-04-11 02:48:20 -07:00
*
* @ param fonts The fontset to append .
*
* This function sets the edje append fontset .
*
*/
EAPI void edje_fontset_append_set ( const char * fonts ) ;
2013-10-31 18:58:33 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets data from the file level data block of an edje mapped file .
2014-01-06 18:27:15 -08:00
* @ param f The mapped edje file
2013-10-31 18:58:33 -07:00
* @ param key The data key
2017-02-16 10:16:49 -08:00
* @ return The string value of the data , or @ c NULL if no key is found .
2013-10-31 18:58:33 -07:00
* 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 "
*/
2013-11-03 18:28:29 -08:00
EAPI char * edje_mmap_data_get ( const Eina_File * f , const char * key ) ;
2013-10-31 18:58:33 -07:00
2013-04-11 02:48:20 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets data from the file level data block of an edje file .
2013-04-11 02:48:20 -07:00
* @ param file The path to the . edj file
* @ param key The data key
2017-02-16 10:16:49 -08:00
* @ return The string value of the data , or @ c NULL if no key is found .
2013-04-11 02:48:20 -07:00
* 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 "
2013-10-31 18:58:33 -07:00
*
* @ see edje_mmap_data_get ( )
2013-04-11 02:48:20 -07:00
*/
EAPI char * edje_file_data_get ( const char * file , const char * key ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Loads a new module in Edje .
2013-04-11 02:48:20 -07:00
* @ param module The name of the module that will be added to Edje .
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE if the module was successfully loaded . Otherwise , @ c EINA_FALSE .
2013-04-11 02:48:20 -07:00
*
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the edje append fontset .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets the file cache size .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Returns the file cache size .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Cleans the file cache .
2013-04-11 02:48:20 -07:00
*
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets the collection cache size .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Returns the collection cache size .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Cleans the collection cache .
2013-04-11 02:48:20 -07:00
*
* 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 .
*
* @ {
*/
2017-06-01 02:22:23 -07:00
/** 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 ;
2013-04-11 02:48:20 -07:00
/**
* 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 ;
2017-05-29 04:28:08 -07:00
/** 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 ;
2013-04-11 02:48:20 -07:00
/**
* @ 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_External_Group
2013-04-11 02:48:20 -07:00
*
* @ brief Functions to register , unregister EXTERNAL types and develop the plugins .
*
2017-02-16 10:16:49 -08:00
* This group discusses functions useful for the development of new plugins .
2013-04-11 02:48:20 -07:00
* These functions deal with the newly EXTERNAL types by registering , unregistering and manipulating them .
*
*
* @ {
*/
/**
2017-02-16 10:16:49 -08:00
* @ brief Registers a type to be used by EXTERNAL parts .
2013-04-11 02:48:20 -07:00
*
* 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 .
*
2017-02-16 10:16:49 -08:00
* @ param type_name Name to register and be known by edje ' s " source: "
2013-04-11 02:48:20 -07:00
* parameter of " type: EXTERNAL " parts .
2017-02-16 10:16:49 -08:00
* @ param type_info Meta - information describing how to interact with it .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Unregisters a previously registered EXTERNAL type .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Registers a batch of types and their information .
2013-04-11 02:48:20 -07:00
*
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Unregisters a batch of given external type previously registered .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Returns the current ABI version for Edje_External_Type structure .
2013-04-11 02:48:20 -07:00
*
* 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 ;
/**
2014-10-17 07:15:22 -07:00
*
2017-02-16 10:16:49 -08:00
* @ return An iterator of all the registered EXTERNAL types .
2013-04-11 02:48:20 -07:00
*
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Convenience function to find a specific parameter in a list of them .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the value of the given parameter of integer type .
2013-04-11 02:48:20 -07:00
*
* 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 .
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE if the parameter was found and is of integer type ,
* @ c EINA_FALSE otherwise .
2013-04-11 02:48:20 -07:00
*/
EAPI Eina_Bool edje_external_param_int_get ( const Eina_List * params , const char * key , int * ret ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the value of the given parameter of double type .
2013-04-11 02:48:20 -07:00
*
* 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 .
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE if the parameter was found and is of double type ,
* @ c EINA_FALSE otherwise .
2013-04-11 02:48:20 -07:00
*/
EAPI Eina_Bool edje_external_param_double_get ( const Eina_List * params , const char * key , double * ret ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the value of the given parameter of string type .
2013-04-11 02:48:20 -07:00
*
* 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 .
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE if the parameter was found and is of string type ,
* @ c EINA_FALSE otherwise .
2013-04-11 02:48:20 -07:00
*/
EAPI Eina_Bool edje_external_param_string_get ( const Eina_List * params , const char * key , const char * * ret ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the value of the given parameter of boolean type .
2013-04-11 02:48:20 -07:00
*
* 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 .
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE if the parameter was found and is of boolean type ,
* @ c EINA_FALSE otherwise .
2013-04-11 02:48:20 -07:00
*/
EAPI Eina_Bool edje_external_param_bool_get ( const Eina_List * params , const char * key , Eina_Bool * ret ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the value of the given parameter of choice type .
2013-04-11 02:48:20 -07:00
*
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the array of parameters information about a type given its name .
2013-04-11 02:48:20 -07:00
*
* @ 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 .
*
2014-10-17 07:15:22 -07:00
* @ param type_name Edje external type name
*
2013-04-11 02:48:20 -07:00
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the # Edje_External_Type that defines an EXTERNAL type registered with
2013-04-11 02:48:20 -07:00
* 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2013-04-11 02:48:20 -07:00
*
* @ 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 .
*
*
* @ {
*/
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets Edje ' s global scaling factor .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Retrieves Edje ' s global scaling factor .
2013-04-11 02:48:20 -07:00
*
2017-02-16 10:16:49 -08:00
* @ return The global scaling factor .
2013-04-11 02:48:20 -07:00
*
* 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Part_Text
2013-04-11 02:48:20 -07:00
*
* @ 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
2015-09-28 03:12:51 -07:00
* with a input panel that will work as a virtual keyboard .
2013-04-11 02:48:20 -07:00
*
* 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 ;
2014-10-17 07:15:22 -07:00
/**
* @ typedef Edje_Text_Filter_Type
2015-04-09 22:01:08 -07:00
*
2014-10-17 07:15:22 -07:00
* All Edje text filters type values .
*/
2013-04-11 02:48:20 -07:00
typedef enum _Edje_Text_Filter_Type
{
2014-10-17 07:15:22 -07:00
EDJE_TEXT_FILTER_TEXT = 0 , /**< Text type filter */
EDJE_TEXT_FILTER_FORMAT = 1 , /**< Format type filter */
EDJE_TEXT_FILTER_MARKUP = 2 /**< Markup type filter */
2013-04-11 02:48:20 -07:00
} Edje_Text_Filter_Type ;
enum
{
2014-10-17 05:34:08 -07:00
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 */
2013-04-11 02:48:20 -07:00
} ;
2014-10-17 05:31:03 -07:00
/**
* @ 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 .
*/
2013-04-11 02:48:20 -07:00
typedef void ( * Edje_Text_Filter_Cb ) ( void * data , Evas_Object * obj , const char * part , Edje_Text_Filter_Type type , char * * text ) ;
2014-10-17 05:31:03 -07:00
/**
* @ 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 .
*/
2013-04-11 02:48:20 -07:00
typedef void ( * Edje_Markup_Filter_Cb ) ( void * data , Evas_Object * obj , const char * part , char * * text ) ;
2014-10-17 05:31:03 -07:00
/**
* @ typedef ( * Edje_Item_Provider_Cb )
2014-10-17 07:15:22 -07:00
* @ brief Callback prototype for Edje_Item_Provider
* @ param data some data provided by user
2014-10-17 05:31:03 -07:00
* @ param obj The Evas_Object to filter .
2014-10-17 07:15:22 -07:00
* @ param part Edje part name
* @ param item Item of container
2017-02-16 10:16:49 -08:00
* @ return Must be an Evas_Object .
2014-10-17 05:31:03 -07:00
*/
2013-04-11 02:48:20 -07:00
typedef Evas_Object * ( * Edje_Item_Provider_Cb ) ( void * data , Evas_Object * obj , const char * part , const char * item ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Shows last character in password mode .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets the timeout value in last show password mode .
2013-04-11 02:48:20 -07:00
*
* @ param password_show_last_timeout The timeout value .
*
* This functions sets the time out value for which the last input entered in password
2014-03-03 04:29:34 -08:00
* mode will be visible . If the time out value is less than zero , the last input entered in password mode will be always visible .
2013-04-11 02:48:20 -07:00
*
* 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2013-04-11 02:48:20 -07:00
*
* @ 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 .
*
* @ {
*/
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets Edje color class .
2013-04-11 02:48:20 -07:00
*
* @ 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 ( ) .
*
2017-02-16 10:16:49 -08:00
* @ note Unlike Evas , Edje colors are @ b not pre - multiplied . That is ,
2013-04-11 02:48:20 -07:00
* half - transparent white is 255 255 255 128.
2014-10-17 05:31:03 -07:00
*
2017-02-16 10:16:49 -08:00
* @ return Eina_Bool , @ c EINA_TRUE on success and @ c EINA_FALSE on failure .
2013-04-11 02:48:20 -07:00
*/
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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets Edje color class .
2013-04-11 02:48:20 -07:00
*
* @ 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
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE if found or @ c EINA_FALSE if not found and all
2013-04-11 02:48:20 -07:00
* 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 ( ) .
*
2017-02-16 10:16:49 -08:00
* @ note Unlike Evas , Edje colors are @ b not pre - multiplied . That is ,
2013-04-11 02:48:20 -07:00
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Deletes edje color class .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
2015-03-30 19:24:48 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Iterates over all the active class of an application .
2015-03-30 19:24:48 -07:00
*
2015-03-31 12:57:23 -07:00
* @ return an iterator of Edje_Color_Class of the currently active color class
2015-03-30 19:24:48 -07:00
*
* This function only iterate over the Edje_Color_Class in use by
* an application .
2015-04-08 05:03:26 -07:00
*
* @ since 1.14
2015-03-30 19:24:48 -07:00
*/
EAPI Eina_Iterator * edje_color_class_active_iterator_new ( void ) ;
2015-03-31 12:57:23 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Iterates over all the color class provided by an Edje file .
2015-03-31 12:57:23 -07:00
*
2017-10-22 21:40:37 -07:00
* @ param f The mapped edje file .
*
2015-03-31 12:57:23 -07:00
* @ return an iterator of Edje_Color_Class provided by the Edje file .
2015-04-08 05:06:30 -07:00
*
* @ since 1.14
2015-03-31 12:57:23 -07:00
*/
2015-03-31 14:21:12 -07:00
EAPI Eina_Iterator * edje_mmap_color_class_iterator_new ( Eina_File * f ) ;
2015-03-31 12:57:23 -07:00
2013-04-11 02:48:20 -07:00
/**
* @ }
*/
/**
* @ defgroup Edje_Object_Part Edje Part
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2013-04-11 02:48:20 -07:00
*
* @ 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Part
2013-04-11 02:48:20 -07:00
*
* @ 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 )
2013-10-30 19:05:42 -07:00
# 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 )
2014-10-17 05:31:03 -07:00
/**
2014-10-17 07:15:22 -07:00
* @ typedef Edje_Text_Effect
2014-10-17 05:31:03 -07:00
*
2017-02-16 10:16:49 -08:00
* All possible text effects in Edje .
2014-10-17 05:31:03 -07:00
*/
2013-10-30 19:05:42 -07:00
typedef enum _Edje_Text_Effect
{
2014-10-17 05:31:03 -07:00
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 */
2013-04-11 02:48:20 -07:00
} Edje_Text_Effect ;
/**
* @ defgroup Edje_Text_Selection Edje Text Selection
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Part_Text
2013-04-11 02:48:20 -07:00
*
2017-02-16 10:16:49 -08:00
* @ brief Functions that deal with selection in text parts .
2013-04-11 02:48:20 -07:00
*
* 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Part_Text
2013-04-11 02:48:20 -07:00
*
2017-02-16 10:16:49 -08:00
* @ brief Functions that deal with cursor in text parts .
2013-04-11 02:48:20 -07:00
*
* 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Part
2013-04-11 02:48:20 -07:00
*
* @ 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 .
*
*
* @ {
*/
2014-10-17 05:31:03 -07:00
/**
* @ typedef Edje_Aspect_Control
*
2017-02-16 10:16:49 -08:00
* All Edje aspect control values .
2014-10-17 05:31:03 -07:00
*
*/
2013-04-11 02:48:20 -07:00
typedef enum _Edje_Aspect_Control
{
2014-10-17 05:31:03 -07:00
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 */
2013-04-11 02:48:20 -07:00
} Edje_Aspect_Control ;
/**
* @ }
*/
/**
* @ defgroup Edje_Object_Geometry_Group Edje Object Geometry
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2013-04-11 02:48:20 -07:00
*
* @ 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Part
2013-04-11 02:48:20 -07:00
*
* @ 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
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Part
2013-04-11 02:48:20 -07:00
*
* @ brief Functions that deal with parts of type table .
*
* Table is a container type for parts , that means it can contain
* other parts .
*
* @ {
*/
2014-10-17 05:31:03 -07:00
/**
* @ typedef Edje_Object_Table_Homogeneous_Mode
*
2017-02-16 10:16:49 -08:00
* Table homogeneous modes .
2014-10-17 05:31:03 -07:00
*
*/
2013-04-11 02:48:20 -07:00
typedef enum _Edje_Object_Table_Homogeneous_Mode
{
2014-10-17 05:31:03 -07:00
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 */
2013-04-11 02:48:20 -07:00
} Edje_Object_Table_Homogeneous_Mode ;
/**
* @ }
*/
/**
* @ defgroup Edje_Object_Text_Class Edje Class : Text
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
* @ brief Functions that deal with Text Classes .
2013-04-11 02:48:20 -07:00
*
* 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 .
*
* @ {
*/
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets the Edje text class .
2013-04-11 02:48:20 -07:00
*
* @ param text_class The text class name
* @ param font The font name
* @ param size The font size
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE on success , or @ c EINA_FALSE on error
2013-04-11 02:48:20 -07:00
*
* 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.1 x .
*
* @ see edje_text_class_get ( ) .
*
*/
EAPI Eina_Bool edje_text_class_set ( const char * text_class , const char * font , Evas_Font_Size size ) ;
2015-03-25 10:45:59 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the font and the font size from Edje text class .
2015-03-25 10:45:59 -07:00
*
* @ param text_class The text class name
* @ param font The font name
* @ param size The font size
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE on success , or @ c EINA_FALSE on error
2015-03-25 10:45:59 -07:00
*
* 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 ) ;
2013-04-11 02:48:20 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Deletes the text class .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Lists text classes .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
2015-12-23 22:55:17 -08:00
/**
* @ 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 .
*
2017-10-22 21:40:37 -07:00
* @ param f The mapped edje file .
*
2015-12-23 22:55:17 -08:00
* @ 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 ) ;
2015-12-07 19:15:48 -08:00
/**
* @ }
*/
/**
* @ defgroup Edje_Object_Size_Class Edje Class : Size
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2015-12-07 19:15:48 -08:00
*
* @ 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 .
*
* @ {
*/
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets the Edje size class .
2015-12-07 19:15:48 -08:00
*
* @ 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
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE on success , or @ c EINA_FALSE on error
2015-12-07 19:15:48 -08:00
*
* 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 ( ) .
*
2016-01-06 06:19:28 -08:00
* @ since 1.17
2015-12-07 19:15:48 -08:00
*/
EAPI Eina_Bool edje_size_class_set ( const char * size_class , Evas_Coord minw , Evas_Coord minh , Evas_Coord maxw , Evas_Coord maxh ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the Edje size class .
2015-12-07 19:15:48 -08:00
*
* @ 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
*
2017-02-16 10:16:49 -08:00
* @ return @ c EINA_TRUE on success , or @ c EINA_FALSE on error
2015-12-07 19:15:48 -08:00
*
* This function gets the min and max size from the specified Edje
* size class .
*
2016-01-06 06:19:28 -08:00
* @ since 1.17
2015-12-07 19:15:48 -08:00
*/
EAPI Eina_Bool edje_size_class_get ( const char * size_class , Evas_Coord * minw , Evas_Coord * minh , Evas_Coord * maxw , Evas_Coord * maxh ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Deletes the size class .
2015-12-07 19:15:48 -08:00
*
* @ param size_class The size class name
*
* This function deletes any values at the process level for the
* specified size class .
*
2016-01-06 06:19:28 -08:00
* @ since 1.17
2015-12-07 19:15:48 -08:00
*/
EAPI void edje_size_class_del ( const char * size_class ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Lists size classes .
2015-12-07 19:15:48 -08:00
*
* @ 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 .
*
2016-01-06 06:19:28 -08:00
* @ since 1.17
2015-12-07 19:15:48 -08:00
*/
EAPI Eina_List * edje_size_class_list ( void ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Iterates over all active classes of an application .
2015-12-07 19:15:48 -08:00
*
2017-02-16 10:16:49 -08:00
* @ return An iterator of Edje_Size_Class of the currently active size class
2015-12-07 19:15:48 -08:00
*
* This function only iterates over the Edje_Size_Class in use by
* an application .
*
2016-01-06 06:19:28 -08:00
* @ since 1.17
2015-12-07 19:15:48 -08:00
*/
EAPI Eina_Iterator * edje_size_class_active_iterator_new ( void ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Iterates over all size classes provided by an Edje file .
2015-12-07 19:15:48 -08:00
*
2017-10-22 21:40:37 -07:00
* @ param f The mapped edje file .
*
2015-12-07 19:15:48 -08:00
* @ return an iterator of Edje_Size_Class provided by the Edje file .
*
2016-01-06 06:19:28 -08:00
* @ since 1.17
2015-12-07 19:15:48 -08:00
*/
EAPI Eina_Iterator * edje_mmap_size_class_iterator_new ( Eina_File * f ) ;
2013-04-11 02:48:20 -07:00
/**
* @ }
*/
/**
* @ defgroup Edje_Object_File Edje Object File
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2013-04-11 02:48:20 -07:00
*
* @ 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 .
*
* @ {
*/
2013-10-31 18:58:33 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets a list of groups in an edje mapped file .
2014-01-06 18:27:15 -08:00
* @ param f The mapped file
2013-10-31 18:58:33 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Frees file collection list .
2013-10-31 18:58:33 -07:00
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Determines whether a group matching glob exists in an edje mapped file .
2014-01-06 18:27:15 -08:00
* @ param f The mapped file
2013-10-31 18:58:33 -07:00
* @ param glob A glob to match on
*
2017-02-16 10:16:49 -08:00
* @ return @ c 1 if a match is found , @ c 0 otherwise
2013-10-31 18:58:33 -07:00
*/
EAPI Eina_Bool edje_mmap_group_exists ( Eina_File * f , const char * glob ) ;
2016-07-08 10:13:14 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Determines whether a group have 3 D Scene .
2016-07-08 10:13:14 -07:00
* @ param f The mapped file
* @ param glob The group name
*
2017-02-16 10:16:49 -08:00
* @ return @ c 1 if a Scene is found is found , @ c 0 otherwise
2016-08-05 13:06:39 -07:00
*
* @ since 1.18
2016-07-08 10:13:14 -07:00
*/
EAPI Eina_Bool edje_mmap_3d_has ( Eina_File * f , const char * group ) ;
2015-03-31 14:23:32 -07:00
/**
2018-01-03 01:19:54 -08:00
* @ brief Iterates over all the opened Edje files .
2015-03-31 14:23:32 -07:00
*
2018-01-03 01:19:54 -08:00
* @ return an iterator of Eina_File for all currently open Edje files .
2015-04-08 05:06:42 -07:00
*
* @ since 1.14
2015-03-31 14:23:32 -07:00
*/
EAPI Eina_Iterator * edje_file_iterator_new ( void ) ;
2013-04-11 02:48:20 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets a list of groups in an edje file .
2013-04-11 02:48:20 -07:00
* @ param file The path to the edje file
*
* @ return The Eina_List of group names ( char * )
2013-10-31 18:58:33 -07:00
* @ see edje_mmap_collection_list ( )
2013-04-11 02:48:20 -07:00
*
* Note : the list must be freed using edje_file_collection_list_free ( )
* when you are done with it .
2013-10-31 18:58:33 -07:00
*
* @ see edje_mmap_group_exists ( )
2013-04-11 02:48:20 -07:00
*/
EAPI Eina_List * edje_file_collection_list ( const char * file ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Frees file collection list .
2013-04-11 02:48:20 -07:00
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Determines whether a group matching glob exists in an edje file .
2013-04-11 02:48:20 -07:00
* @ param file The file path
* @ param glob A glob to match on
*
2017-02-16 10:16:49 -08:00
* @ return @ c 1 if a match is found , @ c 0 otherwise
2013-04-11 02:48:20 -07:00
*/
EAPI Eina_Bool edje_file_group_exists ( const char * file , const char * glob ) ;
/**
* @ }
*/
/**
* @ defgroup Edje_Object_Animation Edje Object Animation
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2013-04-11 02:48:20 -07:00
* @ brief Functions that deal with animations .
*
* Edje has the ability to animate objects . One can start , stop , play ,
2017-02-16 10:16:49 -08:00
* pause , freeze , and thaw edje animations using the functions of this section .
2013-04-11 02:48:20 -07:00
*
* @ {
*/
2014-10-17 05:31:03 -07:00
/**
* @ typedef Edje_Tween_Mode
*
2017-02-16 10:16:49 -08:00
* Available tween mode for edje animations .
2014-10-17 05:31:03 -07:00
*/
2013-04-11 02:48:20 -07:00
typedef enum _Edje_Tween_Mode
{
2014-10-17 07:15:22 -07:00
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 */
2018-08-29 22:01:21 -07:00
EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR = 7 , /**< Sinusoidal factor tween mode value */
2014-10-17 07:15:22 -07:00
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 */
2013-04-11 02:48:20 -07:00
} Edje_Tween_Mode ;
2014-10-17 07:15:22 -07:00
/**
* @ typedef Edje_Action_Type
*
* All actions available in Edje programs .
*
*/
2013-04-11 02:48:20 -07:00
typedef enum _Edje_Action_Type
{
2014-10-17 07:15:22 -07:00
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: support seat on focus action and signals
Seat goes as an optional parameter for FOCUS_SET (if not
provided, act over default seat), and emit signals
with seat suffix:
* focus,in,$SEAT
* focus,out,$SEAT
* focus,part,in,$SEAT
* focus,part,out,$SEAT
2016-11-17 09:21:02 -08:00
EDJE_ACTION_TYPE_FOCUS_SET = 8 , /**< Focus set action value */
2014-10-17 07:15:22 -07:00
EDJE_ACTION_TYPE_RESERVED00 = 9 , /**< Reversed do action value */
2018-08-29 22:01:21 -07:00
EDJE_ACTION_TYPE_FOCUS_OBJECT = 10 , /**< Focus object action value */
2014-10-17 07:15:22 -07:00
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 */
2015-05-13 09:08:04 -07:00
EDJE_ACTION_TYPE_MO = 25 , /**< @since 1.15 @brief Mo action value */
EDJE_ACTION_TYPE_LAST = 26 /**< Last action value */
2013-04-11 02:48:20 -07:00
} Edje_Action_Type ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets edje transitions ' frame time .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets edje transitions ' frame time .
2013-04-11 02:48:20 -07:00
*
* @ 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Freezes Edje objects .
2013-04-11 02:48:20 -07:00
*
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Thaws Edje objects .
2013-04-11 02:48:20 -07:00
*
* 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 ) ;
2015-05-13 09:08:04 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets Edje language .
2015-05-13 09:08:04 -07:00
*
2017-10-22 21:40:37 -07:00
* @ param locale The locale specifier .
*
2015-05-13 09:08:04 -07:00
* This function sets the given language .
*
* @ note : emits signal edje , language , " locale " .
*
2015-07-23 03:00:01 -07:00
* @ since 1.15
2015-05-13 09:08:04 -07:00
*/
EAPI void edje_language_set ( const char * locale ) ;
2015-06-22 08:56:08 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets edje transition duration factor .
2015-06-22 08:56:08 -07:00
*
2017-02-16 10:16:49 -08:00
* @ param scale The edje transition ' s duration factor ( the default value is @ c 1.0 )
2015-06-22 08:56:08 -07:00
*
* 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 ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Retrieves transitions duration factor .
2015-06-22 08:56:08 -07:00
*
* @ 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 ) ;
2013-04-11 02:48:20 -07:00
/**
* @ }
*/
/**
* @ defgroup Edje_Object_Communication_Interface_Message Edje Communication Interface : Message
2017-02-16 10:16:49 -08:00
* @ ingroup Edje_Object_Group
2013-04-11 02:48:20 -07:00
*
* @ 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 .
*
* @ {
*/
/**
2017-02-16 10:16:49 -08:00
* @ brief Processes all queued up edje messages .
2013-04-11 02:48:20 -07:00
*
* This function triggers the processing of messages addressed to any
* ( alive ) edje objects .
*
*/
EAPI void edje_message_signal_process ( void ) ;
/**
* @ }
*/
2014-02-09 02:08:12 -08:00
/**
* @ defgroup Edje_Audio Edje Audio
2017-03-01 21:59:34 -08:00
* @ ingroup Edje
2014-02-09 02:08:12 -08:00
*
* @ brief Functions to manipulate audio abilities in edje .
*
2018-08-29 22:01:21 -07:00
* Perspective is a graphical tool that makes objects represented in 2 D
2014-02-09 02:08:12 -08:00
* look like they have a 3 D 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 ( )
2015-04-09 22:01:08 -07:00
*
2014-02-09 02:08:12 -08:00
* @ 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 ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Sets the mute state of audio for the process as a whole .
2014-10-17 05:31:03 -07:00
*
2014-02-09 02:08:12 -08:00
* @ param channel The channel to set the mute state of
* @ param mute The mute state
2014-10-17 05:31:03 -07:00
*
2014-02-09 02:08:12 -08:00
* This sets the mute ( no output ) state of audio for the given channel .
2014-10-17 05:31:03 -07:00
*
2014-02-09 02:08:12 -08:00
* @ see edje_audio_channel_mute_get ( )
2014-10-17 05:31:03 -07:00
*
2014-02-09 02:08:12 -08:00
* @ since 1.9
*/
EAPI void edje_audio_channel_mute_set ( Edje_Channel channel , Eina_Bool mute ) ;
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the mute state of the given channel .
2014-10-17 05:31:03 -07:00
*
2014-02-09 02:08:12 -08:00
* @ param channel The channel to get the mute state of
* @ return The mute state of the channel
2014-10-17 05:31:03 -07:00
*
2014-02-09 02:08:12 -08:00
* @ see edje_audio_channel_mute_set ( )
*
* @ since 1.9
*/
EAPI Eina_Bool edje_audio_channel_mute_get ( Edje_Channel channel ) ;
2014-03-31 08:22:36 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Gets the part name of an edje part object .
2014-03-31 08:22:36 -07:00
* @ 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 ) ;
2016-06-09 10:05:21 -07:00
2016-06-09 10:07:43 -07:00
# ifdef EFL_BETA_API_SUPPORT
2016-06-09 10:05:21 -07:00
/**
2017-02-16 10:16:49 -08:00
* @ brief Creates scene and root node which contains all 3 D parts of edje object .
2016-06-09 10:05:21 -07:00
* @ param obj An edje part object
* @ param root node to collect all 3 D parts
* @ param scene
* @ return scene and root node which contains all 3 D 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 ) ;
2016-06-09 10:07:43 -07:00
2018-05-08 10:26:36 -07:00
/**
* @ brief Gets seat data passed to callbacks .
*
* @ return The seat data for that callback .
*
* When a callback is initiated by an input event from a seat , we try to
* provide seat information with it .
*
* Signals fired as programmed responses to these signals will also try
* to carry the seat data along .
*
* This returns an opaque pointer to the seat data .
*
* @ see edje_object_signal_callback_add ( ) for more on Edje signals .
* @ since 1.21
*/
EAPI void * edje_object_signal_callback_seat_data_get ( void ) ;
2016-06-09 10:07:43 -07:00
# endif
2014-02-09 02:08:12 -08:00
/**
* @ }
*/