src/lib/Edje.h

Go to the documentation of this file.
00001 #ifndef _EDJE_H
00002 #define _EDJE_H
00003 
00004 #ifndef _MSC_VER
00005 # include <stdint.h>
00006 #endif
00007 #include <math.h>
00008 #include <float.h>
00009 #include <limits.h>
00010 
00011 #include <Evas.h>
00012 
00013 #ifdef EAPI
00014 # undef EAPI
00015 #endif
00016 
00017 #ifdef _WIN32
00018 # ifdef EFL_EDJE_BUILD
00019 #  ifdef DLL_EXPORT
00020 #   define EAPI __declspec(dllexport)
00021 #  else
00022 #   define EAPI
00023 #  endif /* ! DLL_EXPORT */
00024 # else
00025 #  define EAPI __declspec(dllimport)
00026 # endif /* ! EFL_EDJE_BUILD */
00027 #else
00028 # ifdef __GNUC__
00029 #  if __GNUC__ >= 4
00030 #   define EAPI __attribute__ ((visibility("default")))
00031 #  else
00032 #   define EAPI
00033 #  endif
00034 # else
00035 #  define EAPI
00036 # endif
00037 #endif
00038 
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042    
00043 #define EDJE_VERSION_MAJOR 1
00044 #define EDJE_VERSION_MINOR 0
00045    
00046    typedef struct _Edje_Version
00047      {
00048         int major;
00049         int minor;
00050         int micro;
00051         int revision;
00052      } Edje_Version;
00053    
00054    EAPI extern Edje_Version *edje_version;
00055    
00063 typedef enum _Edje_Message_Type
00064 {
00065    EDJE_MESSAGE_NONE = 0,
00066 
00067    EDJE_MESSAGE_SIGNAL = 1, /* DONT USE THIS */
00068 
00069    EDJE_MESSAGE_STRING = 2,
00070    EDJE_MESSAGE_INT = 3,
00071    EDJE_MESSAGE_FLOAT = 4,
00072 
00073    EDJE_MESSAGE_STRING_SET = 5,
00074    EDJE_MESSAGE_INT_SET = 6,
00075    EDJE_MESSAGE_FLOAT_SET = 7,
00076 
00077    EDJE_MESSAGE_STRING_INT = 8,
00078    EDJE_MESSAGE_STRING_FLOAT = 9,
00079 
00080    EDJE_MESSAGE_STRING_INT_SET = 10,
00081    EDJE_MESSAGE_STRING_FLOAT_SET = 11
00082 } Edje_Message_Type;
00083 
00084 typedef enum _Edje_Aspect_Control
00085 {
00086    EDJE_ASPECT_CONTROL_NONE = 0,
00087    EDJE_ASPECT_CONTROL_NEITHER = 1,
00088    EDJE_ASPECT_CONTROL_HORIZONTAL = 2,
00089    EDJE_ASPECT_CONTROL_VERTICAL = 3,
00090    EDJE_ASPECT_CONTROL_BOTH = 4
00091 } Edje_Aspect_Control;
00092 
00093 typedef enum _Edje_Object_Table_Homogeneous_Mode
00094 {
00095    EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE = 0,
00096    EDJE_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1,
00097    EDJE_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2
00098 } Edje_Object_Table_Homogeneous_Mode;
00099 
00100 typedef enum _Edje_Part_Type
00101 {
00102    EDJE_PART_TYPE_NONE      = 0,
00103    EDJE_PART_TYPE_RECTANGLE = 1,
00104    EDJE_PART_TYPE_TEXT      = 2,
00105    EDJE_PART_TYPE_IMAGE     = 3,
00106    EDJE_PART_TYPE_SWALLOW   = 4,
00107    EDJE_PART_TYPE_TEXTBLOCK = 5,
00108    EDJE_PART_TYPE_GRADIENT  = 6,
00109    EDJE_PART_TYPE_GROUP     = 7,
00110    EDJE_PART_TYPE_BOX       = 8,
00111    EDJE_PART_TYPE_TABLE     = 9,
00112    EDJE_PART_TYPE_EXTERNAL  = 10,
00113    EDJE_PART_TYPE_LAST      = 11
00114 } Edje_Part_Type;
00115 
00116 typedef enum _Edje_Text_Effect
00117 {
00118    EDJE_TEXT_EFFECT_NONE                = 0,
00119    EDJE_TEXT_EFFECT_PLAIN               = 1,
00120    EDJE_TEXT_EFFECT_OUTLINE             = 2,
00121    EDJE_TEXT_EFFECT_SOFT_OUTLINE        = 3,
00122    EDJE_TEXT_EFFECT_SHADOW              = 4,
00123    EDJE_TEXT_EFFECT_SOFT_SHADOW         = 5,
00124    EDJE_TEXT_EFFECT_OUTLINE_SHADOW      = 6,
00125    EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW = 7,
00126    EDJE_TEXT_EFFECT_FAR_SHADOW          = 8,
00127    EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW     = 9,
00128    EDJE_TEXT_EFFECT_GLOW                = 10,
00129    EDJE_TEXT_EFFECT_LAST                = 11
00130 } Edje_Text_Effect;
00131 
00132 typedef enum _Edje_Action_Type
00133 {
00134    EDJE_ACTION_TYPE_NONE          = 0,
00135    EDJE_ACTION_TYPE_STATE_SET     = 1,
00136    EDJE_ACTION_TYPE_ACTION_STOP   = 2,
00137    EDJE_ACTION_TYPE_SIGNAL_EMIT   = 3,
00138    EDJE_ACTION_TYPE_DRAG_VAL_SET  = 4,
00139    EDJE_ACTION_TYPE_DRAG_VAL_STEP = 5,
00140    EDJE_ACTION_TYPE_DRAG_VAL_PAGE = 6,
00141    EDJE_ACTION_TYPE_SCRIPT        = 7,
00142    EDJE_ACTION_TYPE_FOCUS_SET     = 8,
00143    EDJE_ACTION_TYPE_RESERVED00    = 9,
00144    EDJE_ACTION_TYPE_FOCUS_OBJECT  = 10,
00145    EDJE_ACTION_TYPE_PARAM_COPY    = 11,
00146    EDJE_ACTION_TYPE_PARAM_SET     = 12,
00147    EDJE_ACTION_TYPE_LAST          = 13
00148 } Edje_Action_Type;
00149 
00150 typedef enum _Edje_Tween_Mode
00151 {
00152    EDJE_TWEEN_MODE_NONE       = 0,
00153    EDJE_TWEEN_MODE_LINEAR     = 1,
00154    EDJE_TWEEN_MODE_SINUSOIDAL = 2,
00155    EDJE_TWEEN_MODE_ACCELERATE = 3,
00156    EDJE_TWEEN_MODE_DECELERATE = 4,
00157    EDJE_TWEEN_MODE_LAST       = 5
00158 } Edje_Tween_Mode;
00159 
00160 typedef enum _Edje_Cursor
00161 {
00162    EDJE_CURSOR_MAIN,
00163    EDJE_CURSOR_SELECTION_BEGIN,
00164    EDJE_CURSOR_SELECTION_END,
00165    EDJE_CURSOR_PREEDIT_START,
00166    EDJE_CURSOR_PREEDIT_END,
00167    EDJE_CURSOR_USER,
00168    EDJE_CURSOR_USER_EXTRA,
00169    // more later
00170 } Edje_Cursor;
00171 
00172 typedef struct _Edje_Message_String           Edje_Message_String;
00173 typedef struct _Edje_Message_Int              Edje_Message_Int;
00174 typedef struct _Edje_Message_Float            Edje_Message_Float;
00175 typedef struct _Edje_Message_String_Set       Edje_Message_String_Set;
00176 typedef struct _Edje_Message_Int_Set          Edje_Message_Int_Set;
00177 typedef struct _Edje_Message_Float_Set        Edje_Message_Float_Set;
00178 typedef struct _Edje_Message_String_Int       Edje_Message_String_Int;
00179 typedef struct _Edje_Message_String_Float     Edje_Message_String_Float;
00180 typedef struct _Edje_Message_String_Int_Set   Edje_Message_String_Int_Set;
00181 typedef struct _Edje_Message_String_Float_Set Edje_Message_String_Float_Set;
00182 
00183 struct _Edje_Message_String
00184 {
00185    char *str;
00186 };
00187 
00188 struct _Edje_Message_Int
00189 {
00190    int val;
00191 };
00192 
00193 struct _Edje_Message_Float
00194 {
00195    double val;
00196 };
00197 
00198 struct _Edje_Message_String_Set
00199 {
00200    int count;
00201    char *str[1];
00202 };
00203 
00204 struct _Edje_Message_Int_Set
00205 {
00206    int count;
00207    int val[1];
00208 };
00209 
00210 struct _Edje_Message_Float_Set
00211 {
00212    int count;
00213    double val[1];
00214 };
00215 
00216 struct _Edje_Message_String_Int
00217 {
00218    char *str;
00219    int val;
00220 };
00221 
00222 struct _Edje_Message_String_Float
00223 {
00224    char *str;
00225    double val;
00226 };
00227 
00228 struct _Edje_Message_String_Int_Set
00229 {
00230    char *str;
00231    int count;
00232    int val[1];
00233 };
00234 
00235 struct _Edje_Message_String_Float_Set
00236 {
00237    char *str;
00238    int count;
00239    double val[1];
00240 };
00241 
00242 typedef enum _Edje_Drag_Dir
00243 {
00244    EDJE_DRAG_DIR_NONE = 0,
00245    EDJE_DRAG_DIR_X = 1,
00246    EDJE_DRAG_DIR_Y = 2,
00247    EDJE_DRAG_DIR_XY = 3
00248 } Edje_Drag_Dir;
00249 
00250 typedef enum _Edje_Load_Error
00251 {
00252    EDJE_LOAD_ERROR_NONE = 0,
00253    EDJE_LOAD_ERROR_GENERIC = 1,
00254    EDJE_LOAD_ERROR_DOES_NOT_EXIST = 2,
00255    EDJE_LOAD_ERROR_PERMISSION_DENIED = 3,
00256    EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4,
00257    EDJE_LOAD_ERROR_CORRUPT_FILE = 5,
00258    EDJE_LOAD_ERROR_UNKNOWN_FORMAT = 6,
00259    EDJE_LOAD_ERROR_INCOMPATIBLE_FILE = 7,
00260    EDJE_LOAD_ERROR_UNKNOWN_COLLECTION = 8,
00261    EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = 9
00262 } Edje_Load_Error;
00263 
00264 typedef enum _Edje_Text_Filter_Type
00265 {
00266    EDJE_TEXT_FILTER_TEXT = 0,
00267    EDJE_TEXT_FILTER_FORMAT = 1,
00268    EDJE_TEXT_FILTER_MARKUP = 2
00269 } Edje_Text_Filter_Type;
00270    
00271 typedef enum _Edje_External_Param_Type
00272 {
00273   EDJE_EXTERNAL_PARAM_TYPE_INT,
00274   EDJE_EXTERNAL_PARAM_TYPE_DOUBLE,
00275   EDJE_EXTERNAL_PARAM_TYPE_STRING,
00276   EDJE_EXTERNAL_PARAM_TYPE_BOOL,
00277   EDJE_EXTERNAL_PARAM_TYPE_CHOICE,
00278   EDJE_EXTERNAL_PARAM_TYPE_MAX
00279 } Edje_External_Param_Type;
00280 
00302 typedef enum _Edje_External_Param_Flags
00303 {
00304   EDJE_EXTERNAL_PARAM_FLAGS_NONE        = 0,
00305   EDJE_EXTERNAL_PARAM_FLAGS_GET         = (1 << 0),
00306   EDJE_EXTERNAL_PARAM_FLAGS_SET         = (1 << 1),
00307   EDJE_EXTERNAL_PARAM_FLAGS_STATE       = (1 << 2),
00308   EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR = (1 << 3),
00309   EDJE_EXTERNAL_PARAM_FLAGS_REGULAR     = (EDJE_EXTERNAL_PARAM_FLAGS_GET |
00310                                            EDJE_EXTERNAL_PARAM_FLAGS_SET |
00311                                            EDJE_EXTERNAL_PARAM_FLAGS_STATE)
00312 } Edje_External_Param_Flags;
00313 
00314 EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type) EINA_PURE;
00315 
00316 struct _Edje_External_Param
00317 {
00318    const char               *name;
00319    Edje_External_Param_Type  type;
00320    // XXX these could be in a union, but eet doesn't support them (or does it?)
00321    int                       i; 
00322    double                    d;
00323    const char               *s; 
00324 };
00325 typedef struct _Edje_External_Param Edje_External_Param;
00326 
00327 #define EDJE_EXTERNAL_INT_UNSET INT_MAX
00328 #define EDJE_EXTERNAL_DOUBLE_UNSET DBL_MAX
00329 
00330 typedef struct _Edje_External_Param_Info Edje_External_Param_Info;
00331 struct _Edje_External_Param_Info
00332 {
00333    const char               *name;
00334    Edje_External_Param_Type  type;
00335    Edje_External_Param_Flags flags;
00336    union {
00337       struct {
00338          int                 def, min, max, step;
00339       } i;
00340       struct {
00341          double              def, min, max, step;
00342       } d;
00343       struct {
00344          const char         *def;
00345          const char         *accept_fmt;
00346          const char         *deny_fmt;
00347       } s;
00348       struct {
00349          int                 def;
00350          const char         *false_str;
00351          const char         *true_str;
00352       } b;
00353       struct {
00354          const char         *def;
00355          const char        **choices; /* NULL terminated array */
00356          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 */
00357          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 */
00358       } c;
00359    } info;
00360 };
00361 
00362 #define EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, flags) \
00363   {name, EDJE_EXTERNAL_PARAM_TYPE_INT, flags, {.i = {def, min, max, step}}}
00364 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, flags) \
00365   {name, EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, flags, {.d = {def, min, max, step}}}
00366 #define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, flags) \
00367   {name, EDJE_EXTERNAL_PARAM_TYPE_STRING, flags, {.s = {def, accept, deny}}}
00368 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, flags) \
00369   {name, EDJE_EXTERNAL_PARAM_TYPE_BOOL, flags, {.b = {def, false_str, true_str}}}
00370 #define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, flags) \
00371   {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {def, choices, NULL, NULL}}}
00372 #define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, flags) \
00373   {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {NULL, NULL, def_get, query}}}
00374 
00375 #define EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, min, max, step) \
00376   EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00377 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, min, max, step) \
00378   EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00379 #define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, accept, deny) \
00380   EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00381 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, false_str, true_str) \
00382   EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00383 #define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL(name, def, choices) \
00384   EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00385 #define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL(name, def_get, query) \
00386   EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR)
00387 
00388 #define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, def) \
00389    EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET)
00390 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, def) \
00391    EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET)
00392 #define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, def) \
00393    EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, NULL, NULL)
00394 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, def) \
00395    EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, "false", "true")
00396 
00397 #define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, def, flags)    \
00398   EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, flags)
00399 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, def, flags) \
00400   EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, flags)
00401 #define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, def, flags) \
00402   EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, NULL, NULL, flags)
00403 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, def, flags)   \
00404   EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, "false", "true", flags)
00405 
00406 #define EDJE_EXTERNAL_PARAM_INFO_INT(name) \
00407    EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, 0)
00408 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE(name) \
00409    EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, 0.0)
00410 #define EDJE_EXTERNAL_PARAM_INFO_STRING(name) \
00411    EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, NULL)
00412 #define EDJE_EXTERNAL_PARAM_INFO_BOOL(name) \
00413    EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, 0)
00414 
00415 #define EDJE_EXTERNAL_PARAM_INFO_INT_FLAGS(name, flags) \
00416    EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, 0, flags)
00417 #define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FLAGS(name, flags) \
00418    EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, 0.0, flags)
00419 #define EDJE_EXTERNAL_PARAM_INFO_STRING_FLAGS(name, flags) \
00420    EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, NULL, flags)
00421 #define EDJE_EXTERNAL_PARAM_INFO_BOOL_FLAGS(name, flags) \
00422    EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, 0, flags)
00423 
00424 #define EDJE_EXTERNAL_PARAM_INFO_SENTINEL {NULL, 0, 0, {.s = {NULL, NULL, NULL}}}
00425 
00444 struct _Edje_External_Type
00445 {
00446 #define EDJE_EXTERNAL_TYPE_ABI_VERSION (3)
00447   unsigned int  abi_version; 
00451   const char    *module;
00452   const char    *module_name;
00453   Evas_Object *(*add) (void *data, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name); 
00454   void         (*state_set) (void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos); 
00455   void         (*signal_emit) (void *data, Evas_Object *obj, const char *emission, const char *source); 
00456   Eina_Bool    (*param_set) (void *data, Evas_Object *obj, const Edje_External_Param *param); 
00457   Eina_Bool    (*param_get) (void *data, const Evas_Object *obj, Edje_External_Param *param); 
00458   Evas_Object *(*content_get) (void *data, const Evas_Object *obj, const char *content); 
00459   void        *(*params_parse) (void *data, Evas_Object *obj, const Eina_List *params); 
00460   void         (*params_free) (void *params); 
00462   /* The following callbacks aren't used by Edje itself, but by UI design
00463      tools instead */
00464   const char  *(*label_get) (void *data);
00465   const char  *(*description_get) (void *data);
00466   Evas_Object *(*icon_add) (void *data, Evas *e);
00467   Evas_Object *(*preview_add) (void *data, Evas *e);
00468   const char  *(*translate) (void *data, const char *orig); 
00470   Edje_External_Param_Info *parameters_info;
00471   void                     *data;
00472 };
00473 typedef struct _Edje_External_Type Edje_External_Type;
00474 
00475 struct _Edje_External_Type_Info
00476 {
00477    const char               *name;
00478    const Edje_External_Type *info;
00479 };
00480 typedef struct _Edje_External_Type_Info Edje_External_Type_Info;
00481 
00482 typedef void         (*Edje_Signal_Cb)          (void *data, Evas_Object *obj, const char *emission, const char *source);
00483 typedef void         (*Edje_Text_Change_Cb)     (void *data, Evas_Object *obj, const char *part);
00484 typedef void         (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
00485 typedef void         (*Edje_Text_Filter_Cb)     (void *data, Evas_Object *obj, const char *part, Edje_Text_Filter_Type type, char **text);
00486 typedef Evas_Object *(*Edje_Item_Provider_Cb)   (void *data, Evas_Object *obj, const char *part, const char *item);
00487 
00488    /* edje_main.c */
00489    EAPI int          edje_init                       (void);
00490    EAPI int          edje_shutdown                   (void);
00491 
00492    /* edje_program.c */
00493    EAPI void         edje_frametime_set              (double t);
00494    EAPI double       edje_frametime_get              (void);
00495 
00496    /* edje_util.c */
00497    EAPI void         edje_freeze                     (void);
00498    EAPI void         edje_thaw                       (void);
00499    EAPI void         edje_fontset_append_set         (const char *fonts);
00500    EAPI const char  *edje_fontset_append_get         (void);
00501    EAPI void         edje_scale_set                  (double scale);
00502    EAPI double       edje_scale_get                  (void);
00503    EAPI Eina_Bool    edje_object_scale_set           (Evas_Object *obj, double scale);
00504    EAPI double       edje_object_scale_get           (const Evas_Object *obj);
00505 
00506    /* edje_load.c */
00507    EAPI Eina_List   *edje_file_collection_list       (const char *file);
00508    EAPI void         edje_file_collection_list_free  (Eina_List *lst);
00509    EAPI Eina_Bool    edje_file_group_exists          (const char *file, const char *glob);
00510    EAPI char        *edje_file_data_get              (const char *file, const char *key);
00511    EAPI void         edje_file_cache_set             (int count);
00512    EAPI int          edje_file_cache_get             (void);
00513    EAPI void         edje_file_cache_flush           (void);
00514    EAPI void         edje_collection_cache_set       (int count);
00515    EAPI int          edje_collection_cache_get       (void);
00516    EAPI void         edje_collection_cache_flush     (void);
00517 
00518    /* edje_util.c */
00519    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);
00520    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);
00521    EAPI void         edje_color_class_del            (const char *color_class);
00522    EAPI Eina_List   *edje_color_class_list           (void);
00523    EAPI Eina_Bool    edje_text_class_set             (const char *text_class, const char *font, Evas_Font_Size size);
00524    EAPI void         edje_text_class_del             (const char *text_class);
00525    EAPI Eina_List   *edje_text_class_list            (void);
00526    EAPI void         edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh);
00527    EAPI void         edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh);
00528    EAPI void         edje_extern_object_aspect_set   (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah);
00529    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);
00530 
00531    /* edje_smart.c */
00532    EAPI Evas_Object *edje_object_add                 (Evas *evas);
00533 
00534    /* edje_util.c */
00535    EAPI const char  *edje_object_data_get            (const Evas_Object *obj, const char *key);
00536 
00537    /* edje_load.c */
00538    EAPI Eina_Bool        edje_object_file_set        (Evas_Object *obj, const char *file, const char *group);
00539    EAPI void             edje_object_file_get        (const Evas_Object *obj, const char **file, const char **group);
00540    EAPI Edje_Load_Error  edje_object_load_error_get  (const Evas_Object *obj);
00541    EAPI const char      *edje_load_error_str         (Edje_Load_Error error);
00542 
00543    /* edje_util.c */
00544    EAPI Eina_Bool    edje_object_preload             (Evas_Object *obj, Eina_Bool cancel);
00545 
00546    /* edje_program.c */
00547    EAPI void         edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
00548    EAPI void        *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
00549    EAPI void        *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
00550    EAPI void         edje_object_signal_emit         (Evas_Object *obj, const char *emission, const char *source);
00551    EAPI void         edje_object_play_set            (Evas_Object *obj, Eina_Bool play);
00552    EAPI Eina_Bool    edje_object_play_get            (const Evas_Object *obj);
00553    EAPI void         edje_object_animation_set       (Evas_Object *obj, Eina_Bool on);
00554    EAPI Eina_Bool    edje_object_animation_get       (const Evas_Object *obj);
00555 
00556    /* edje_util.c */
00557    EAPI int          edje_object_freeze                  (Evas_Object *obj);
00558    EAPI int          edje_object_thaw                    (Evas_Object *obj);
00559    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);
00560    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);
00561    EAPI void         edje_object_color_class_del         (Evas_Object *obj, const char *color_class);
00562    EAPI Eina_Bool    edje_object_text_class_set          (Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size);
00563    EAPI void         edje_object_size_min_get            (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
00564    EAPI void         edje_object_size_max_get            (const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh);
00565    EAPI void         edje_object_calc_force              (Evas_Object *obj);
00566    EAPI void         edje_object_size_min_calc           (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh);
00567    EAPI Eina_Bool    edje_object_parts_extends_calc      (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
00568    EAPI void         edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh);
00569    EAPI Eina_Bool    edje_object_part_exists             (const Evas_Object *obj, const char *part);
00570    EAPI const Evas_Object *edje_object_part_object_get   (const Evas_Object *obj, const char *part);
00571    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);
00572    
00573    EAPI void         edje_object_item_provider_set       (Evas_Object *obj, Edje_Item_Provider_Cb func, void *data);
00574    
00575    EAPI void         edje_object_text_change_cb_set      (Evas_Object *obj, Edje_Text_Change_Cb func, void *data);
00576    
00577    EAPI Eina_Bool    edje_object_part_text_set           (Evas_Object *obj, const char *part, const char *text);
00578    EAPI const char  *edje_object_part_text_get           (const Evas_Object *obj, const char *part);
00579    EAPI Eina_Bool    edje_object_part_text_unescaped_set (Evas_Object *obj, const char *part, const char *text_to_escape);
00580    EAPI char        *edje_object_part_text_unescaped_get (const Evas_Object *obj, const char *part);
00581 
00582    EAPI const char      *edje_object_part_text_selection_get           (const Evas_Object *obj, const char *part);
00583    EAPI void             edje_object_part_text_select_none             (const Evas_Object *obj, const char *part);
00584    EAPI void             edje_object_part_text_select_all              (const Evas_Object *obj, const char *part);
00585    EAPI void             edje_object_part_text_insert                  (Evas_Object *obj, const char *part, const char *text);
00586    EAPI const Eina_List *edje_object_part_text_anchor_list_get         (const Evas_Object *obj, const char *part);
00587    EAPI const Eina_List *edje_object_part_text_anchor_geometry_get     (const Evas_Object *obj, const char *part, const char *anchor);
00588    EAPI const Eina_List *edje_object_part_text_item_list_get           (const Evas_Object *obj, const char *part);
00589    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);
00590    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);
00591    EAPI void             edje_object_part_text_select_allow_set        (const Evas_Object *obj, const char *part, Eina_Bool allow);
00592    EAPI void             edje_object_part_text_select_abort            (const Evas_Object *obj, const char *part);
00593    EAPI void             edje_object_part_text_select_begin            (const Evas_Object *obj, const char *part);
00594    EAPI void             edje_object_part_text_select_extend           (const Evas_Object *obj, const char *part);
00595        
00596    EAPI Eina_Bool        edje_object_part_text_cursor_next                 (Evas_Object *obj, const char *part, Edje_Cursor cur);
00597    EAPI Eina_Bool        edje_object_part_text_cursor_prev                 (Evas_Object *obj, const char *part, Edje_Cursor cur);
00598    EAPI Eina_Bool        edje_object_part_text_cursor_up                   (Evas_Object *obj, const char *part, Edje_Cursor cur);
00599    EAPI Eina_Bool        edje_object_part_text_cursor_down                 (Evas_Object *obj, const char *part, Edje_Cursor cur);
00600    EAPI void             edje_object_part_text_cursor_begin_set            (Evas_Object *obj, const char *part, Edje_Cursor cur);
00601    EAPI void             edje_object_part_text_cursor_end_set              (Evas_Object *obj, const char *part, Edje_Cursor cur);
00602    EAPI void             edje_object_part_text_cursor_copy                 (Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst);
00603    EAPI void             edje_object_part_text_cursor_line_begin_set       (Evas_Object *obj, const char *part, Edje_Cursor cur);
00604    EAPI void             edje_object_part_text_cursor_line_end_set         (Evas_Object *obj, const char *part, Edje_Cursor cur);
00605    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);
00606    EAPI Eina_Bool        edje_object_part_text_cursor_is_format_get        (const Evas_Object *obj, const char *part, Edje_Cursor cur);
00607    EAPI Eina_Bool        edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur);
00608    EAPI const char      *edje_object_part_text_cursor_content_get          (const Evas_Object *obj, const char *part, Edje_Cursor cur);
00609 
00610    EAPI void             edje_object_text_insert_filter_callback_add       (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
00611    EAPI void            *edje_object_text_insert_filter_callback_del       (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func);
00612    EAPI void            *edje_object_text_insert_filter_callback_del_full  (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
00613    
00614    EAPI Eina_Bool        edje_object_part_swallow        (Evas_Object *obj, const char *part, Evas_Object *obj_swallow);
00615    EAPI void             edje_object_part_unswallow      (Evas_Object *obj, Evas_Object *obj_swallow);
00616    EAPI Evas_Object     *edje_object_part_swallow_get    (const Evas_Object *obj, const char *part);
00617    EAPI const char      *edje_object_part_state_get      (const Evas_Object *obj, const char *part, double *val_ret);
00618    EAPI Edje_Drag_Dir    edje_object_part_drag_dir_get   (const Evas_Object *obj, const char *part);
00619    EAPI Eina_Bool        edje_object_part_drag_value_set (Evas_Object *obj, const char *part, double dx, double dy);
00620    EAPI Eina_Bool        edje_object_part_drag_value_get (const Evas_Object *obj, const char *part, double *dx, double *dy);
00621    EAPI Eina_Bool        edje_object_part_drag_size_set  (Evas_Object *obj, const char *part, double dw, double dh);
00622    EAPI Eina_Bool        edje_object_part_drag_size_get  (const Evas_Object *obj, const char *part, double *dw, double *dh);
00623    EAPI Eina_Bool        edje_object_part_drag_step_set  (Evas_Object *obj, const char *part, double dx, double dy);
00624    EAPI Eina_Bool        edje_object_part_drag_step_get  (const Evas_Object *obj, const char *part, double *dx, double *dy);
00625    EAPI Eina_Bool        edje_object_part_drag_page_set  (Evas_Object *obj, const char *part, double dx, double dy);
00626    EAPI Eina_Bool        edje_object_part_drag_page_get  (const Evas_Object *obj, const char *part, double *dx, double *dy);
00627    EAPI Eina_Bool        edje_object_part_drag_step      (Evas_Object *obj, const char *part, double dx, double dy);
00628    EAPI Eina_Bool        edje_object_part_drag_page      (Evas_Object *obj, const char *part, double dx, double dy);
00629 
00630    EAPI Evas_Object              *edje_object_part_external_object_get     (const Evas_Object *obj, const char *part);
00631    EAPI Eina_Bool                 edje_object_part_external_param_set      (Evas_Object *obj, const char *part, const Edje_External_Param *param);
00632    EAPI Eina_Bool                 edje_object_part_external_param_get      (const Evas_Object *obj, const char *part, Edje_External_Param *param);
00633    EAPI Evas_Object              *edje_object_part_external_content_get    (const Evas_Object *obj, const char *part, const char *content);
00634    EAPI Edje_External_Param_Type  edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param);
00635 
00636    EAPI Eina_Bool    edje_object_part_box_append             (Evas_Object *obj, const char *part, Evas_Object *child);
00637    EAPI Eina_Bool    edje_object_part_box_prepend            (Evas_Object *obj, const char *part, Evas_Object *child);
00638    EAPI Eina_Bool    edje_object_part_box_insert_before      (Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference);
00639    EAPI Eina_Bool    edje_object_part_box_insert_at          (Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos);
00640    EAPI Evas_Object *edje_object_part_box_remove             (Evas_Object *obj, const char *part, Evas_Object *child);
00641    EAPI Evas_Object *edje_object_part_box_remove_at          (Evas_Object *obj, const char *part, unsigned int pos);
00642    EAPI Eina_Bool    edje_object_part_box_remove_all         (Evas_Object *obj, const char *part, Eina_Bool clear);
00643    EAPI Evas_Object *edje_object_part_table_child_get        (Evas_Object *obj, const char *part, unsigned int col, unsigned int row);
00644    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);
00645    EAPI Eina_Bool    edje_object_part_table_unpack           (Evas_Object *obj, const char *part, Evas_Object *child_obj);
00646    EAPI Eina_Bool    edje_object_part_table_col_row_size_get (const Evas_Object *obj, const char *part, int *cols, int *rows);
00647    EAPI Eina_Bool    edje_object_part_table_clear            (Evas_Object *obj, const char *part, Eina_Bool clear);
00648 
00649    /* edje_message_queue.c */
00650    EAPI void         edje_object_message_send                (Evas_Object *obj, Edje_Message_Type type, int id, void *msg);
00651    EAPI void         edje_object_message_handler_set         (Evas_Object *obj, Edje_Message_Handler_Cb func, void *data);
00652    EAPI void         edje_object_message_signal_process      (Evas_Object *obj);
00653 
00654    EAPI void         edje_message_signal_process             (void);
00655 
00656    /* edje_external.c */
00657    EAPI Eina_Bool    edje_external_type_register             (const char *type_name, const Edje_External_Type *type_info);
00658    EAPI Eina_Bool    edje_external_type_unregister           (const char *type_name);
00659    
00660    EAPI void         edje_external_type_array_register       (const Edje_External_Type_Info *array);
00661    EAPI void         edje_external_type_array_unregister     (const Edje_External_Type_Info *array);
00662    
00663    EAPI unsigned int edje_external_type_abi_version_get      (void) EINA_CONST;
00664    
00665    
00666    EAPI Eina_Iterator                  *edje_external_iterator_get     (void);
00667    EAPI Edje_External_Param            *edje_external_param_find       (const Eina_List *params, const char *key);
00668    EAPI Eina_Bool                       edje_external_param_int_get    (const Eina_List *params, const char *key, int *ret);
00669    EAPI Eina_Bool                       edje_external_param_double_get (const Eina_List *params, const char *key, double *ret);
00670    EAPI Eina_Bool                       edje_external_param_string_get (const Eina_List *params, const char *key, const char **ret);
00671    EAPI Eina_Bool                       edje_external_param_bool_get   (const Eina_List *params, const char *key, Eina_Bool *ret);
00672    EAPI Eina_Bool                       edje_external_param_choice_get (const Eina_List *params, const char *key, const char **ret);
00673    EAPI const Edje_External_Param_Info *edje_external_param_info_get   (const char *type_name);
00674    EAPI const Edje_External_Type       *edje_external_type_get         (const char *type_name);
00675 
00676    /* edje_module.c */
00677    EAPI Eina_Bool               edje_module_load                (const char *module);
00678    EAPI const Eina_List        *edje_available_modules_get      (void);
00679 
00680    /* perspective info for maps inside edje objects */
00681    typedef struct _Edje_Perspective Edje_Perspective;
00682    
00683    EAPI Edje_Perspective       *edje_perspective_new            (Evas *e);
00684    EAPI void                    edje_perspective_free           (Edje_Perspective *ps);
00685    EAPI void                    edje_perspective_set            (Edje_Perspective *ps, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc);
00686    EAPI void                    edje_perspective_global_set     (Edje_Perspective *ps, Eina_Bool global);
00687    EAPI Eina_Bool               edje_perspective_global_get     (const Edje_Perspective *ps);
00688    EAPI const Edje_Perspective *edje_evas_global_perspective_get(const Evas *e);
00689    EAPI void                    edje_object_perspective_set     (Evas_Object *obj, Edje_Perspective *ps);
00690    EAPI const Edje_Perspective *edje_object_perspective_get     (const Evas_Object *obj);
00691    
00692 #ifdef __cplusplus
00693 }
00694 #endif
00695 
00696 #endif