src/lib/Edje.h

Go to the documentation of this file.
00001 
00432 #ifndef _EDJE_H
00433 #define _EDJE_H
00434 
00435 #ifndef _MSC_VER
00436 # include <stdint.h>
00437 #endif
00438 #include <math.h>
00439 #include <float.h>
00440 #include <limits.h>
00441 
00442 #include <Evas.h>
00443 
00444 #ifdef EAPI
00445 # undef EAPI
00446 #endif
00447 
00448 #ifdef _WIN32
00449 # ifdef EFL_EDJE_BUILD
00450 #  ifdef DLL_EXPORT
00451 #   define EAPI __declspec(dllexport)
00452 #  else
00453 #   define EAPI
00454 #  endif /* ! DLL_EXPORT */
00455 # else
00456 #  define EAPI __declspec(dllimport)
00457 # endif /* ! EFL_EDJE_BUILD */
00458 #else
00459 # ifdef __GNUC__
00460 #  if __GNUC__ >= 4
00461 #   define EAPI __attribute__ ((visibility("default")))
00462 #  else
00463 #   define EAPI
00464 #  endif
00465 # else
00466 #  define EAPI
00467 # endif
00468 #endif
00469 
00470 #ifdef __cplusplus
00471 extern "C" {
00472 #endif
00473 
00474 #define EDJE_VERSION_MAJOR 1
00475 #define EDJE_VERSION_MINOR 0
00476 
00477    typedef struct _Edje_Version
00478      {
00479         int major;
00480         int minor;
00481         int micro;
00482         int revision;
00483      } Edje_Version;
00484 
00485    EAPI extern Edje_Version *edje_version;
00486 
00501 typedef enum _Edje_Message_Type
00502 {
00503    EDJE_MESSAGE_NONE = 0,
00504 
00505    EDJE_MESSAGE_SIGNAL = 1, /* DONT USE THIS */
00506 
00507    EDJE_MESSAGE_STRING = 2, 
00508    EDJE_MESSAGE_INT = 3, 
00509    EDJE_MESSAGE_FLOAT = 4, 
00511    EDJE_MESSAGE_STRING_SET = 5, 
00512    EDJE_MESSAGE_INT_SET = 6, 
00513    EDJE_MESSAGE_FLOAT_SET = 7, 
00515    EDJE_MESSAGE_STRING_INT = 8, 
00516    EDJE_MESSAGE_STRING_FLOAT = 9, 
00518    EDJE_MESSAGE_STRING_INT_SET = 10, 
00519    EDJE_MESSAGE_STRING_FLOAT_SET = 11 
00520 } Edje_Message_Type;
00521 
00522 typedef enum _Edje_Aspect_Control
00523 {
00524    EDJE_ASPECT_CONTROL_NONE = 0,
00525    EDJE_ASPECT_CONTROL_NEITHER = 1,
00526    EDJE_ASPECT_CONTROL_HORIZONTAL = 2,
00527    EDJE_ASPECT_CONTROL_VERTICAL = 3,
00528    EDJE_ASPECT_CONTROL_BOTH = 4
00529 } Edje_Aspect_Control;
00530 
00531 typedef enum _Edje_Object_Table_Homogeneous_Mode
00532 {
00533    EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE = 0,
00534    EDJE_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1,
00535    EDJE_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2
00536 } Edje_Object_Table_Homogeneous_Mode;
00537 
00538 typedef enum _Edje_Part_Type
00539 {
00540    EDJE_PART_TYPE_NONE      = 0,
00541    EDJE_PART_TYPE_RECTANGLE = 1,
00542    EDJE_PART_TYPE_TEXT      = 2,
00543    EDJE_PART_TYPE_IMAGE     = 3,
00544    EDJE_PART_TYPE_SWALLOW   = 4,
00545    EDJE_PART_TYPE_TEXTBLOCK = 5,
00546    EDJE_PART_TYPE_GRADIENT  = 6,
00547    EDJE_PART_TYPE_GROUP     = 7,
00548    EDJE_PART_TYPE_BOX       = 8,
00549    EDJE_PART_TYPE_TABLE     = 9,
00550    EDJE_PART_TYPE_EXTERNAL  = 10,
00551    EDJE_PART_TYPE_PROXY     = 11,
00552    EDJE_PART_TYPE_LAST      = 12
00553 } Edje_Part_Type;
00554 
00555 typedef enum _Edje_Text_Effect
00556 {
00557 #define EDJE_TEXT_EFFECT_MASK_BASIC 0xf
00558 #define EDJE_TEXT_EFFECT_BASIC_SET(x, s) \
00559    do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_BASIC) | (s); } while (0)
00560    EDJE_TEXT_EFFECT_NONE                = 0,
00561    EDJE_TEXT_EFFECT_PLAIN               = 1,
00562    EDJE_TEXT_EFFECT_OUTLINE             = 2,
00563    EDJE_TEXT_EFFECT_SOFT_OUTLINE        = 3,
00564    EDJE_TEXT_EFFECT_SHADOW              = 4,
00565    EDJE_TEXT_EFFECT_SOFT_SHADOW         = 5,
00566    EDJE_TEXT_EFFECT_OUTLINE_SHADOW      = 6,
00567    EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW = 7,
00568    EDJE_TEXT_EFFECT_FAR_SHADOW          = 8,
00569    EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW     = 9,
00570    EDJE_TEXT_EFFECT_GLOW                = 10,
00571 
00572    EDJE_TEXT_EFFECT_LAST                = 11,
00573 
00574 #define EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION (0x7 << 4)
00575 #define EDJE_TEXT_EFFECT_SHADOW_DIRECTION_SET(x, s) \
00576    do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) | (s); } while (0)
00577    EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT = (0x0 << 4),
00578    EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM       = (0x1 << 4),
00579    EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT  = (0x2 << 4),
00580    EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT         = (0x3 << 4),
00581    EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT     = (0x4 << 4),
00582    EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP          = (0x5 << 4),
00583    EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT    = (0x6 << 4),
00584    EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT        = (0x7 << 4)
00585 } Edje_Text_Effect;
00586 
00587 typedef enum _Edje_Action_Type
00588 {
00589    EDJE_ACTION_TYPE_NONE                = 0,
00590    EDJE_ACTION_TYPE_STATE_SET           = 1,
00591    EDJE_ACTION_TYPE_ACTION_STOP         = 2,
00592    EDJE_ACTION_TYPE_SIGNAL_EMIT         = 3,
00593    EDJE_ACTION_TYPE_DRAG_VAL_SET        = 4,
00594    EDJE_ACTION_TYPE_DRAG_VAL_STEP       = 5,
00595    EDJE_ACTION_TYPE_DRAG_VAL_PAGE       = 6,
00596    EDJE_ACTION_TYPE_SCRIPT              = 7,
00597    EDJE_ACTION_TYPE_FOCUS_SET           = 8,
00598    EDJE_ACTION_TYPE_RESERVED00          = 9,
00599    EDJE_ACTION_TYPE_FOCUS_OBJECT        = 10,
00600    EDJE_ACTION_TYPE_PARAM_COPY          = 11,
00601    EDJE_ACTION_TYPE_PARAM_SET           = 12,
00602    EDJE_ACTION_TYPE_SOUND_SAMPLE        = 13, 
00603    EDJE_ACTION_TYPE_SOUND_TONE          = 14, 
00604    EDJE_ACTION_TYPE_LAST                = 15
00605 } Edje_Action_Type;
00606 
00607 typedef enum _Edje_Tween_Mode
00608 {
00609    EDJE_TWEEN_MODE_NONE              = 0,
00610    EDJE_TWEEN_MODE_LINEAR            = 1,
00611    EDJE_TWEEN_MODE_SINUSOIDAL        = 2,
00612    EDJE_TWEEN_MODE_ACCELERATE        = 3,
00613    EDJE_TWEEN_MODE_DECELERATE        = 4,
00614    EDJE_TWEEN_MODE_ACCELERATE_FACTOR = 5,
00615    EDJE_TWEEN_MODE_DECELERATE_FACTOR = 6,
00616    EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR = 7,
00617    EDJE_TWEEN_MODE_DIVISOR_INTERP    = 8,
00618    EDJE_TWEEN_MODE_BOUNCE            = 9,
00619    EDJE_TWEEN_MODE_SPRING            = 10,
00620    EDJE_TWEEN_MODE_LAST              = 11,
00621    EDJE_TWEEN_MODE_MASK              = 0xff,
00622    EDJE_TWEEN_MODE_OPT_FROM_CURRENT  = (1 << 31)
00623 } Edje_Tween_Mode;
00624 
00625 typedef enum _Edje_Cursor
00626 {
00627    EDJE_CURSOR_MAIN,
00628    EDJE_CURSOR_SELECTION_BEGIN,
00629    EDJE_CURSOR_SELECTION_END,
00630    EDJE_CURSOR_PREEDIT_START,
00631    EDJE_CURSOR_PREEDIT_END,
00632    EDJE_CURSOR_USER,
00633    EDJE_CURSOR_USER_EXTRA,
00634    // more later
00635 } Edje_Cursor;
00636 
00637 struct _Edje_Entry_Change_Info
00638 {
00639    union {
00640         struct {
00641              const char *content;
00642              size_t pos;
00643              size_t plain_length; /* Number of cursor positions represented
00644                                      in content. */
00645         } insert;
00646         struct {
00647              const char *content;
00648              size_t start, end;
00649         } del;
00650    } change;
00651    Eina_Bool insert : 1; 
00652    Eina_Bool merge : 1; 
00653 };
00654 
00658 typedef struct _Edje_Entry_Change_Info        Edje_Entry_Change_Info;
00659 
00660 typedef struct _Edje_Message_String           Edje_Message_String;
00661 typedef struct _Edje_Message_Int              Edje_Message_Int;
00662 typedef struct _Edje_Message_Float            Edje_Message_Float;
00663 typedef struct _Edje_Message_String_Set       Edje_Message_String_Set;
00664 typedef struct _Edje_Message_Int_Set          Edje_Message_Int_Set;
00665 typedef struct _Edje_Message_Float_Set        Edje_Message_Float_Set;
00666 typedef struct _Edje_Message_String_Int       Edje_Message_String_Int;
00667 typedef struct _Edje_Message_String_Float     Edje_Message_String_Float;
00668 typedef struct _Edje_Message_String_Int_Set   Edje_Message_String_Int_Set;
00669 typedef struct _Edje_Message_String_Float_Set Edje_Message_String_Float_Set;
00670 
00671 struct _Edje_Message_String
00672 {
00673    char *str; 
00674 }; 
00676 struct _Edje_Message_Int
00677 {
00678    int val; 
00679 }; 
00681 struct _Edje_Message_Float
00682 {
00683    double val; 
00684 }; 
00686 struct _Edje_Message_String_Set
00687 {
00688    int count; 
00689    char *str[1]; 
00690 }; 
00692 struct _Edje_Message_Int_Set
00693 {
00694    int count; 
00695    int val[1]; 
00696 }; 
00698 struct _Edje_Message_Float_Set
00699 {
00700    int count; 
00701    double val[1]; 
00702 }; 
00704 struct _Edje_Message_String_Int
00705 {
00706    char *str; 
00707    int val; 
00708 }; 
00710 struct _Edje_Message_String_Float
00711 {
00712    char *str; 
00713    double val; 
00714 }; 
00716 struct _Edje_Message_String_Int_Set
00717 {
00718    char *str; 
00719    int count; 
00720    int val[1]; 
00721 }; 
00723 struct _Edje_Message_String_Float_Set
00724 {
00725    char *str; 
00726    int count; 
00727    double val[1]; 
00728 }; 
00730 typedef enum _Edje_Drag_Dir
00731 {
00732    EDJE_DRAG_DIR_NONE = 0,
00733    EDJE_DRAG_DIR_X = 1,
00734    EDJE_DRAG_DIR_Y = 2,
00735    EDJE_DRAG_DIR_XY = 3
00736 } Edje_Drag_Dir;
00737 
00738 typedef enum _Edje_Load_Error
00739 {
00740    EDJE_LOAD_ERROR_NONE = 0, 
00741    EDJE_LOAD_ERROR_GENERIC = 1, 
00742    EDJE_LOAD_ERROR_DOES_NOT_EXIST = 2, 
00743    EDJE_LOAD_ERROR_PERMISSION_DENIED = 3, 
00744    EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, 
00745    EDJE_LOAD_ERROR_CORRUPT_FILE = 5, 
00746    EDJE_LOAD_ERROR_UNKNOWN_FORMAT = 6, 
00747    EDJE_LOAD_ERROR_INCOMPATIBLE_FILE = 7, 
00748    EDJE_LOAD_ERROR_UNKNOWN_COLLECTION = 8, 
00749    EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = 9 
00750 } Edje_Load_Error; 
00752 typedef enum _Edje_Text_Filter_Type
00753 {
00754    EDJE_TEXT_FILTER_TEXT = 0,
00755    EDJE_TEXT_FILTER_FORMAT = 1,
00756    EDJE_TEXT_FILTER_MARKUP = 2
00757 } Edje_Text_Filter_Type;
00758 
00759 typedef enum _Edje_Text_Autocapital_Type
00760 {
00761    EDJE_TEXT_AUTOCAPITAL_TYPE_NONE,
00762    EDJE_TEXT_AUTOCAPITAL_TYPE_WORD,
00763    EDJE_TEXT_AUTOCAPITAL_TYPE_SENTENCE,
00764    EDJE_TEXT_AUTOCAPITAL_TYPE_ALLCHARACTER
00765 } Edje_Text_Autocapital_Type;
00766 
00770 typedef enum _Edje_External_Param_Type
00771 {
00772    EDJE_EXTERNAL_PARAM_TYPE_INT, 
00773    EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, 
00774    EDJE_EXTERNAL_PARAM_TYPE_STRING, 
00775    EDJE_EXTERNAL_PARAM_TYPE_BOOL, 
00776    EDJE_EXTERNAL_PARAM_TYPE_CHOICE, 
00778    EDJE_EXTERNAL_PARAM_TYPE_MAX 
00779 } Edje_External_Param_Type;
00780 
00785 typedef enum _Edje_External_Param_Flags
00786 {
00787    EDJE_EXTERNAL_PARAM_FLAGS_NONE        = 0, 
00788    EDJE_EXTERNAL_PARAM_FLAGS_GET         = (1 << 0), 
00789    EDJE_EXTERNAL_PARAM_FLAGS_SET         = (1 << 1), 
00790    EDJE_EXTERNAL_PARAM_FLAGS_STATE       = (1 << 2), 
00791    EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR = (1 << 3), 
00792    EDJE_EXTERNAL_PARAM_FLAGS_REGULAR     = (EDJE_EXTERNAL_PARAM_FLAGS_GET |
00793                                             EDJE_EXTERNAL_PARAM_FLAGS_SET |
00794                                             EDJE_EXTERNAL_PARAM_FLAGS_STATE) 
00795 } Edje_External_Param_Flags;
00796 
00797 typedef enum
00798 {
00799    EDJE_INPUT_PANEL_LAYOUT_NORMAL,          
00800    EDJE_INPUT_PANEL_LAYOUT_NUMBER,          
00801    EDJE_INPUT_PANEL_LAYOUT_EMAIL,           
00802    EDJE_INPUT_PANEL_LAYOUT_URL,             
00803    EDJE_INPUT_PANEL_LAYOUT_PHONENUMBER,     
00804    EDJE_INPUT_PANEL_LAYOUT_IP,              
00805    EDJE_INPUT_PANEL_LAYOUT_MONTH,           
00806    EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY,      
00807    EDJE_INPUT_PANEL_LAYOUT_INVALID
00808 } Edje_Input_Panel_Layout;
00809 
00818 EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type) EINA_PURE;
00819 
00823 struct _Edje_External_Param
00824 {
00825    const char               *name; 
00826    Edje_External_Param_Type  type; 
00829    // XXX these could be in a union, but eet doesn't support them (or does it?)
00830    int                       i; 
00831    double                    d; 
00832    const char               *s; 
00833 };
00837 typedef struct _Edje_External_Param Edje_External_Param;
00838 
00842 #define EDJE_EXTERNAL_INT_UNSET INT_MAX
00843 
00846 #define EDJE_EXTERNAL_DOUBLE_UNSET DBL_MAX
00847 
00859 typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
00871 struct _Edje_External_Param_Info
00872 {
00873    const char               *name; 
00874    Edje_External_Param_Type  type; 
00875    Edje_External_Param_Flags flags; 
00877    union {
00878       struct {
00879          int                 def, 
00880                              min, 
00881                              max, 
00882                              step; 
00883       } i; 
00885       struct {
00886          double              def, 
00887                              min, 
00888                              max, 
00889                              step; 
00890       } d; 
00892       struct {
00893          const char         *def; 
00894          const char         *accept_fmt; 
00895          const char         *deny_fmt; 
00896       } s; 
00897       struct {
00898          int                 def; 
00899          const char         *false_str; 
00900          const char         *true_str; 
00901       } b; 
00902       struct {
00903          const char         *def; 
00904          const char        **choices; /* Array of strings, each represents a
00905                                          valid value for this parameter. The
00906                                          last element of the array must be
00907                                          NULL. */
00908          char               *(*def_get)(void *data, const Edje_External_Param_Info *info); 
00909          char              **(*query)(void *data, const Edje_External_Param_Info *info); 
00910       } c; 
00911    } info;
00912 };
00913 
00914 #define EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, flags) \
00915   {name, EDJE_EXTERNAL_PARAM_TYPE_INT, flags, {.i = {def, min, max, step}}}
00916 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, flags) \
00917   {name, EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, flags, {.d = {def, min, max, step}}}
00918 #define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, flags) \
00919   {name, EDJE_EXTERNAL_PARAM_TYPE_STRING, flags, {.s = {def, accept, deny}}}
00920 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, flags) \
00921   {name, EDJE_EXTERNAL_PARAM_TYPE_BOOL, flags, {.b = {def, false_str, true_str}}}
00922 #define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, flags) \
00923   {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {def, choices, NULL, NULL}}}
00924 #define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, flags) \
00925   {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {NULL, NULL, def_get, query}}}
00926 
00927 #define EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, min, max, step) \
00928   EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00929 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, min, max, step) \
00930   EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00931 #define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, accept, deny) \
00932   EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00933 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, false_str, true_str) \
00934   EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00935 #define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL(name, def, choices) \
00936   EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00937 #define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL(name, def_get, query) \
00938   EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00939 
00940 #define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, def) \
00941    EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET)
00942 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, def) \
00943    EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET)
00944 #define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, def) \
00945    EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, NULL, NULL)
00946 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, def) \
00947    EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, "false", "true")
00948 
00949 #define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, def, flags)    \
00950   EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, flags)
00951 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, def, flags) \
00952   EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, flags)
00953 #define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, def, flags) \
00954   EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, NULL, NULL, flags)
00955 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, def, flags)   \
00956   EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, "false", "true", flags)
00957 
00958 #define EDJE_EXTERNAL_PARAM_INFO_INT(name) \
00959    EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, 0)
00960 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE(name) \
00961    EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, 0.0)
00962 #define EDJE_EXTERNAL_PARAM_INFO_STRING(name) \
00963    EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, NULL)
00964 #define EDJE_EXTERNAL_PARAM_INFO_BOOL(name) \
00965    EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, 0)
00966 
00967 #define EDJE_EXTERNAL_PARAM_INFO_INT_FLAGS(name, flags) \
00968    EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, 0, flags)
00969 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FLAGS(name, flags) \
00970    EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, 0.0, flags)
00971 #define EDJE_EXTERNAL_PARAM_INFO_STRING_FLAGS(name, flags) \
00972    EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, NULL, flags)
00973 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_FLAGS(name, flags) \
00974    EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, 0, flags)
00975 
00976 #define EDJE_EXTERNAL_PARAM_INFO_SENTINEL {NULL, 0, 0, {.s = {NULL, NULL, NULL}}}
00977 
00996 struct _Edje_External_Type
00997 {
00998 #define EDJE_EXTERNAL_TYPE_ABI_VERSION (3)
00999   unsigned int  abi_version; 
01003   const char    *module; 
01006   const char    *module_name; 
01008   Evas_Object *(*add) (void *data, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name); 
01010   void         (*state_set) (void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos); 
01011   void         (*signal_emit) (void *data, Evas_Object *obj, const char *emission, const char *source); 
01012   Eina_Bool    (*param_set) (void *data, Evas_Object *obj, const Edje_External_Param *param); 
01013   Eina_Bool    (*param_get) (void *data, const Evas_Object *obj, Edje_External_Param *param); 
01014   Evas_Object *(*content_get) (void *data, const Evas_Object *obj, const char *content); 
01015   void        *(*params_parse) (void *data, Evas_Object *obj, const Eina_List *params); 
01016   void         (*params_free) (void *params); 
01018   /* The following callbacks aren't used by Edje itself, but by UI design
01019      tools instead */
01020   const char  *(*label_get) (void *data); 
01021   const char  *(*description_get) (void *data); 
01022   Evas_Object *(*icon_add) (void *data, Evas *e); 
01023   Evas_Object *(*preview_add) (void *data, Evas *e); 
01024   const char  *(*translate) (void *data, const char *orig); 
01026   Edje_External_Param_Info *parameters_info; 
01027   void                     *data; 
01028 };
01029 typedef struct _Edje_External_Type Edje_External_Type;
01030 
01036 struct _Edje_External_Type_Info
01037 {
01038    const char               *name; 
01039    const Edje_External_Type *info; 
01040 };
01041 typedef struct _Edje_External_Type_Info Edje_External_Type_Info;
01042 
01043 typedef void         (*Edje_Signal_Cb)          (void *data, Evas_Object *obj, const char *emission, const char *source); 
01044 typedef void         (*Edje_Text_Change_Cb)     (void *data, Evas_Object *obj, const char *part);
01045 typedef void         (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg); 
01046 typedef void         (*Edje_Text_Filter_Cb)     (void *data, Evas_Object *obj, const char *part, Edje_Text_Filter_Type type, char **text);
01047 typedef Evas_Object *(*Edje_Item_Provider_Cb)   (void *data, Evas_Object *obj, const char *part, const char *item);
01048 
01068 EAPI int          edje_init                       (void);
01069 
01089 EAPI int          edje_shutdown                   (void);
01090 
01104 EAPI void         edje_frametime_set              (double t);
01105 
01117 EAPI double       edje_frametime_get              (void);
01118 
01129 EAPI void         edje_freeze                     (void);
01130 
01141 EAPI void         edje_thaw                       (void);
01142 
01151 EAPI void         edje_fontset_append_set         (const char *fonts);
01152 
01164 EAPI const char  *edje_fontset_append_get         (void);
01165 
01189 EAPI void         edje_scale_set                  (double scale);
01190 
01201 EAPI double       edje_scale_get                  (void);
01202 
01215 EAPI void edje_password_show_last_set(Eina_Bool password_show_last);
01216 
01230 EAPI void edje_password_show_last_timeout_set(double password_show_last_timeout);
01231 
01253 EAPI Eina_Bool    edje_object_scale_set           (Evas_Object *obj, double scale);
01254 
01266 EAPI double       edje_object_scale_get           (const Evas_Object *obj);
01267 
01275 EAPI void         edje_object_mirrored_set        (Evas_Object *obj, Eina_Bool rtl);
01276 
01286 EAPI Eina_Bool    edje_object_mirrored_get        (const Evas_Object *obj);
01287 
01297 EAPI Eina_List   *edje_file_collection_list       (const char *file);
01298 
01305 EAPI void         edje_file_collection_list_free  (Eina_List *lst);
01306 
01314 EAPI Eina_Bool    edje_file_group_exists          (const char *file, const char *glob);
01315 
01333 EAPI char        *edje_file_data_get              (const char *file, const char *key);
01334 
01348 EAPI void         edje_file_cache_set             (int count);
01349 
01362 EAPI int          edje_file_cache_get             (void);
01363 
01374 EAPI void         edje_file_cache_flush           (void);
01375 
01390 EAPI void         edje_collection_cache_set       (int count);
01391 
01404 EAPI int          edje_collection_cache_get       (void);
01405 
01416 EAPI void         edje_collection_cache_flush     (void);
01417 
01454 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);
01455 
01490 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);
01491 
01505 EAPI void         edje_color_class_del            (const char *color_class);
01506 
01517 EAPI Eina_List   *edje_color_class_list           (void);
01518 
01534 EAPI Eina_Bool    edje_text_class_set             (const char *text_class, const char *font, Evas_Font_Size size);
01535 
01545 EAPI void         edje_text_class_del             (const char *text_class);
01546 
01557 EAPI Eina_List   *edje_text_class_list            (void);
01558 
01568 EAPI void         edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh);
01569 
01579 EAPI void         edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh);
01580 
01594 EAPI void         edje_extern_object_aspect_set   (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah);
01595 
01618 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);
01619 
01658 EAPI Evas_Object *edje_object_add                 (Evas *evas);
01659 
01696 EAPI const char  *edje_object_data_get            (const Evas_Object *obj, const char *key);
01697 
01728 EAPI Eina_Bool        edje_object_file_set        (Evas_Object *obj, const char *file, const char *group);
01729 
01750 EAPI void             edje_object_file_get        (const Evas_Object *obj, const char **file, const char **group);
01751 
01776 EAPI Edje_Load_Error  edje_object_load_error_get  (const Evas_Object *obj);
01777 
01792 EAPI const char      *edje_load_error_str         (Edje_Load_Error error);
01793 
01811 EAPI Eina_Bool        edje_object_preload         (Evas_Object *obj, Eina_Bool cancel);
01812 
01873 EAPI void         edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
01874 
01894 EAPI void        *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
01895 
01919 EAPI void        *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
01920 
01949 EAPI void         edje_object_signal_emit         (Evas_Object *obj, const char *emission, const char *source);
01950 
01962 EAPI void *       edje_object_signal_callback_extra_data_get(void);
01963 
01978 EAPI void         edje_object_play_set            (Evas_Object *obj, Eina_Bool play);
01979 
01994 EAPI Eina_Bool    edje_object_play_get            (const Evas_Object *obj);
01995 
02010 EAPI void         edje_object_animation_set       (Evas_Object *obj, Eina_Bool on);
02011 
02025 EAPI Eina_Bool    edje_object_animation_get       (const Evas_Object *obj);
02026 
02038 EAPI int          edje_object_freeze                  (Evas_Object *obj);
02039 
02053 EAPI int          edje_object_thaw                    (Evas_Object *obj);
02054 
02088 EAPI Eina_Bool    edje_object_color_class_set         (Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
02089 
02122 EAPI Eina_Bool    edje_object_color_class_get         (const Evas_Object *o, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3);
02123 
02139  EAPI void         edje_object_color_class_del         (Evas_Object *obj, const char *color_class);
02140 
02154 EAPI Eina_Bool    edje_object_text_class_set          (Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size);
02155 
02191 EAPI void         edje_object_size_min_get            (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
02192 
02229 EAPI void         edje_object_size_max_get            (const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh);
02230 
02239 EAPI void         edje_object_calc_force              (Evas_Object *obj);
02240 
02254 EAPI void         edje_object_size_min_calc           (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
02255 
02284 EAPI Eina_Bool    edje_object_parts_extends_calc      (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
02285 
02313 EAPI void         edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh);
02314 
02331 EAPI Eina_Bool    edje_object_part_exists             (const Evas_Object *obj, const char *part);
02332 
02352 EAPI const Evas_Object *edje_object_part_object_get   (const Evas_Object *obj, const char *part);
02353 
02377 EAPI Eina_Bool    edje_object_part_geometry_get       (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
02378 
02379 
02390 EAPI void         edje_object_item_provider_set       (Evas_Object *obj, Edje_Item_Provider_Cb func, void *data);
02391 
02392 
02402 EAPI void         edje_object_text_change_cb_set      (Evas_Object *obj, Edje_Text_Change_Cb func, void *data);
02403 
02411 EAPI Eina_Bool    edje_object_part_text_set           (Evas_Object *obj, const char *part, const char *text);
02412 
02425 EAPI const char  *edje_object_part_text_get           (const Evas_Object *obj, const char *part);
02426 
02439 EAPI Eina_Bool    edje_object_part_text_unescaped_set (Evas_Object *obj, const char *part, const char *text_to_escape);
02440 
02456 EAPI char        *edje_object_part_text_unescaped_get (const Evas_Object *obj, const char *part);
02457 
02470 EAPI const char      *edje_object_part_text_selection_get           (const Evas_Object *obj, const char *part);
02471 
02480 EAPI void             edje_object_part_text_select_none             (const Evas_Object *obj, const char *part);
02481 
02490 EAPI void             edje_object_part_text_select_all              (const Evas_Object *obj, const char *part);
02491 
02503 EAPI void             edje_object_part_text_insert                  (Evas_Object *obj, const char *part, const char *text);
02504 
02517 EAPI void             edje_object_part_text_append(Evas_Object *obj, const char *part, const char *text);
02518 
02530 EAPI const Eina_List *edje_object_part_text_anchor_list_get         (const Evas_Object *obj, const char *part);
02531 
02546 EAPI const Eina_List *edje_object_part_text_anchor_geometry_get     (const Evas_Object *obj, const char *part, const char *anchor);
02547 
02559 EAPI const Eina_List *edje_object_part_text_item_list_get           (const Evas_Object *obj, const char *part);
02560 
02578 EAPI Eina_Bool        edje_object_part_text_item_geometry_get       (const Evas_Object *obj, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
02579 
02592 EAPI void             edje_object_part_text_cursor_geometry_get     (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
02593 
02606 EAPI void             edje_object_part_text_select_allow_set        (const Evas_Object *obj, const char *part, Eina_Bool allow);
02607 
02614 EAPI void             edje_object_part_text_select_abort            (const Evas_Object *obj, const char *part);
02615 
02622 EAPI void             edje_object_part_text_select_begin            (const Evas_Object *obj, const char *part);
02623 
02630 EAPI void             edje_object_part_text_select_extend           (const Evas_Object *obj, const char *part);
02631 
02632 
02641 EAPI Eina_Bool        edje_object_part_text_cursor_next                 (Evas_Object *obj, const char *part, Edje_Cursor cur);
02642 
02651 EAPI Eina_Bool        edje_object_part_text_cursor_prev                 (Evas_Object *obj, const char *part, Edje_Cursor cur);
02652 
02660 EAPI Eina_Bool        edje_object_part_text_cursor_up                   (Evas_Object *obj, const char *part, Edje_Cursor cur);
02661 
02669 EAPI Eina_Bool        edje_object_part_text_cursor_down                 (Evas_Object *obj, const char *part, Edje_Cursor cur);
02670 
02679 EAPI void             edje_object_part_text_cursor_begin_set            (Evas_Object *obj, const char *part, Edje_Cursor cur);
02680 
02689 EAPI void             edje_object_part_text_cursor_end_set              (Evas_Object *obj, const char *part, Edje_Cursor cur);
02690 
02699 EAPI void             edje_object_part_text_cursor_copy                 (Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst);
02700 
02709 EAPI void             edje_object_part_text_cursor_line_begin_set       (Evas_Object *obj, const char *part, Edje_Cursor cur);
02710 
02719 EAPI void             edje_object_part_text_cursor_line_end_set         (Evas_Object *obj, const char *part, Edje_Cursor cur);
02720 
02733 EAPI Eina_Bool        edje_object_part_text_cursor_coord_set            (Evas_Object *obj, const char *part, Edje_Cursor cur, Evas_Coord x, Evas_Coord y);
02734 
02744 EAPI Eina_Bool        edje_object_part_text_cursor_is_format_get        (const Evas_Object *obj, const char *part, Edje_Cursor cur);
02745 
02755 EAPI Eina_Bool        edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur);
02756 
02765 EAPI const char      *edje_object_part_text_cursor_content_get          (const Evas_Object *obj, const char *part, Edje_Cursor cur);
02766 
02776 EAPI void             edje_object_part_text_cursor_pos_set              (Evas_Object *obj, const char *part, Edje_Cursor cur, int pos);
02777 
02787 EAPI int              edje_object_part_text_cursor_pos_get              (const Evas_Object *obj, const char *part, Edje_Cursor cur);
02788 
02802 EAPI void             edje_object_part_text_input_panel_layout_set (const Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout);
02803 
02815 EAPI Edje_Input_Panel_Layout edje_object_part_text_input_panel_layout_get (const Evas_Object *obj, const char *part);
02816 
02825 EAPI void         edje_object_part_text_autocapital_type_set        (const Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type);
02826 
02835 EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get (const Evas_Object *obj, const char *part);
02836 
02845 EAPI void             edje_object_part_text_input_panel_enabled_set (const Evas_Object *obj, const char *part, Eina_Bool enabled);
02846 
02856 EAPI Eina_Bool        edje_object_part_text_input_panel_enabled_get (const Evas_Object *obj, const char *part);
02857 
02882 EAPI void             edje_object_text_insert_filter_callback_add       (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
02883 
02899 EAPI void            *edje_object_text_insert_filter_callback_del       (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func);
02900 
02918 EAPI void            *edje_object_text_insert_filter_callback_del_full  (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
02919 
02934 EAPI Eina_Bool        edje_object_part_swallow        (Evas_Object *obj, const char *part, Evas_Object *obj_swallow);
02935 
02946 EAPI void             edje_object_part_unswallow      (Evas_Object *obj, Evas_Object *obj_swallow);
02947 
02955 EAPI Evas_Object     *edje_object_part_swallow_get    (const Evas_Object *obj, const char *part);
02956 
02968 EAPI const char      *edje_object_part_state_get      (const Evas_Object *obj, const char *part, double *val_ret);
02969 
02985 EAPI Edje_Drag_Dir    edje_object_part_drag_dir_get   (const Evas_Object *obj, const char *part);
02986 
03009 EAPI Eina_Bool        edje_object_part_drag_value_set (Evas_Object *obj, const char *part, double dx, double dy);
03010 
03026 EAPI Eina_Bool        edje_object_part_drag_value_get (const Evas_Object *obj, const char *part, double *dx, double *dy);
03027 
03043 EAPI Eina_Bool        edje_object_part_drag_size_set  (Evas_Object *obj, const char *part, double dw, double dh);
03044 
03057 EAPI Eina_Bool        edje_object_part_drag_size_get  (const Evas_Object *obj, const char *part, double *dw, double *dh);
03058 
03075 EAPI Eina_Bool        edje_object_part_drag_step_set  (Evas_Object *obj, const char *part, double dx, double dy);
03076 
03090 EAPI Eina_Bool        edje_object_part_drag_step_get  (const Evas_Object *obj, const char *part, double *dx, double *dy);
03091 
03108 EAPI Eina_Bool        edje_object_part_drag_page_set  (Evas_Object *obj, const char *part, double dx, double dy);
03109 
03122 EAPI Eina_Bool        edje_object_part_drag_page_get  (const Evas_Object *obj, const char *part, double *dx, double *dy);
03123 
03139 EAPI Eina_Bool        edje_object_part_drag_step      (Evas_Object *obj, const char *part, double dx, double dy);
03140 
03158 EAPI Eina_Bool        edje_object_part_drag_page      (Evas_Object *obj, const char *part, double dx, double dy);
03159 
03160 
03180 EAPI Evas_Object              *edje_object_part_external_object_get     (const Evas_Object *obj, const char *part);
03181 
03212 EAPI Eina_Bool                 edje_object_part_external_param_set      (Evas_Object *obj, const char *part, const Edje_External_Param *param);
03213 
03242 EAPI Eina_Bool                 edje_object_part_external_param_get      (const Evas_Object *obj, const char *part, Edje_External_Param *param);
03243 
03254 EAPI Evas_Object              *edje_object_part_external_content_get    (const Evas_Object *obj, const char *part, const char *content);
03255 
03266 EAPI Edje_External_Param_Type  edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param);
03267 
03268 
03285 EAPI Eina_Bool    edje_object_part_box_append             (Evas_Object *obj, const char *part, Evas_Object *child);
03286 
03303 EAPI Eina_Bool    edje_object_part_box_prepend            (Evas_Object *obj, const char *part, Evas_Object *child);
03304 
03323 EAPI Eina_Bool    edje_object_part_box_insert_before      (Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference);
03324 
03343 EAPI Eina_Bool    edje_object_part_box_insert_at          (Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos);
03344 
03359 EAPI Evas_Object *edje_object_part_box_remove             (Evas_Object *obj, const char *part, Evas_Object *child);
03360 
03376 EAPI Evas_Object *edje_object_part_box_remove_at          (Evas_Object *obj, const char *part, unsigned int pos);
03377 
03394 EAPI Eina_Bool    edje_object_part_box_remove_all         (Evas_Object *obj, const char *part, Eina_Bool clear);
03395 
03405 EAPI Evas_Object *edje_object_part_table_child_get        (Evas_Object *obj, const char *part, unsigned int col, unsigned int row);
03406 
03422 EAPI Eina_Bool    edje_object_part_table_pack             (Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
03423 
03435 EAPI Eina_Bool    edje_object_part_table_unpack           (Evas_Object *obj, const char *part, Evas_Object *child_obj);
03436 
03449 EAPI Eina_Bool    edje_object_part_table_col_row_size_get (const Evas_Object *obj, const char *part, int *cols, int *rows);
03450 
03463 EAPI Eina_Bool    edje_object_part_table_clear            (Evas_Object *obj, const char *part, Eina_Bool clear);
03464 
03487 EAPI void         edje_object_message_send                (Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
03488 
03513 EAPI void         edje_object_message_handler_set         (Evas_Object *obj, Edje_Message_Handler_Cb func, void *data);
03514 
03525 EAPI void         edje_object_message_signal_process      (Evas_Object *obj);
03526 
03527 
03535 EAPI void         edje_message_signal_process             (void);
03536 
03554 EAPI Eina_Bool    edje_external_type_register             (const char *type_name, const Edje_External_Type *type_info);
03555 
03567 EAPI Eina_Bool    edje_external_type_unregister           (const char *type_name);
03568 
03592 EAPI void         edje_external_type_array_register       (const Edje_External_Type_Info *array);
03593 
03602 EAPI void         edje_external_type_array_unregister     (const Edje_External_Type_Info *array);
03603 
03623 EAPI unsigned int edje_external_type_abi_version_get      (void) EINA_CONST;
03624 
03667 EAPI Eina_Iterator                  *edje_external_iterator_get     (void);
03668 
03677    EAPI Edje_External_Param            *edje_external_param_find       (const Eina_List *params, const char *key);
03694    EAPI Eina_Bool                       edje_external_param_int_get    (const Eina_List *params, const char *key, int *ret);
03711    EAPI Eina_Bool                       edje_external_param_double_get (const Eina_List *params, const char *key, double *ret);
03730    EAPI Eina_Bool                       edje_external_param_string_get (const Eina_List *params, const char *key, const char **ret);
03747    EAPI Eina_Bool                       edje_external_param_bool_get   (const Eina_List *params, const char *key, Eina_Bool *ret);
03766    EAPI Eina_Bool                       edje_external_param_choice_get (const Eina_List *params, const char *key, const char **ret);
03767 
03780 EAPI const Edje_External_Param_Info *edje_external_param_info_get   (const char *type_name);
03781 
03786    EAPI const Edje_External_Type       *edje_external_type_get         (const char *type_name);
03787 
03788    EAPI Eina_Bool               edje_module_load                (const char *module);
03789    EAPI const Eina_List        *edje_available_modules_get      (void);
03790 
03791    /* perspective info for maps inside edje objects */
03792    typedef struct _Edje_Perspective Edje_Perspective;
03793 
03806    EAPI Edje_Perspective       *edje_perspective_new            (Evas *e);
03818    EAPI void                    edje_perspective_free           (Edje_Perspective *ps);
03841    EAPI void                    edje_perspective_set            (Edje_Perspective *ps, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc);
03865    EAPI void                    edje_perspective_global_set     (Edje_Perspective *ps, Eina_Bool global);
03875    EAPI Eina_Bool               edje_perspective_global_get     (const Edje_Perspective *ps);
03889    EAPI const Edje_Perspective *edje_evas_global_perspective_get(const Evas *e);
03910    EAPI void                    edje_object_perspective_set     (Evas_Object *obj, Edje_Perspective *ps);
03920    EAPI const Edje_Perspective *edje_object_perspective_get     (const Evas_Object *obj);
03921 
03922 #ifdef __cplusplus
03923 }
03924 #endif
03925 
03926 #endif