src/lib/edje_private.h

Go to the documentation of this file.
00001 #ifndef _EDJE_PRIVATE_H
00002 #define _EDJE_PRIVATE_H
00003 
00004 #ifdef HAVE_CONFIG_H
00005 # include <config.h>
00006 #endif
00007 
00008 #ifndef _WIN32
00009 # define _GNU_SOURCE
00010 #endif
00011 
00012 #ifdef STDC_HEADERS
00013 # include <stdlib.h>
00014 # include <stddef.h>
00015 #else
00016 # ifdef HAVE_STDLIB_H
00017 #  include <stdlib.h>
00018 # endif
00019 #endif
00020 #ifdef HAVE_ALLOCA_H
00021 # include <alloca.h>
00022 #elif !defined alloca
00023 # ifdef __GNUC__
00024 #  define alloca __builtin_alloca
00025 # elif defined _AIX
00026 #  define alloca __alloca
00027 # elif defined _MSC_VER
00028 #  include <malloc.h>
00029 #  define alloca _alloca
00030 # elif !defined HAVE_ALLOCA
00031 #  ifdef  __cplusplus
00032 extern "C"
00033 #  endif
00034 void *alloca (size_t);
00035 # endif
00036 #endif
00037 
00038 #include <string.h>
00039 #include <limits.h>
00040 #include <sys/stat.h>
00041 #include <time.h>
00042 #include <sys/time.h>
00043 #include <errno.h>
00044 
00045 #ifndef _MSC_VER
00046 # include <libgen.h>
00047 # include <unistd.h>
00048 #endif
00049 
00050 #include <fcntl.h>
00051 
00052 #include <lua.h>
00053 #include <lualib.h>
00054 #include <lauxlib.h>
00055 #include <setjmp.h>
00056 
00057 #ifdef HAVE_LOCALE_H
00058 # include <locale.h>
00059 #endif
00060 
00061 #ifdef HAVE_EVIL
00062 # include <Evil.h>
00063 #endif
00064 
00065 #include <Eina.h>
00066 #include <Eet.h>
00067 #include <Evas.h>
00068 #include <Ecore.h>
00069 #include <Ecore_Evas.h>
00070 #include <Ecore_File.h>
00071 #include <Ecore_Input.h>
00072 #ifdef HAVE_ECORE_IMF
00073 # include <Ecore_IMF.h>
00074 # include <Ecore_IMF_Evas.h>
00075 #endif
00076 #include <Embryo.h>
00077 
00078 #ifdef HAVE_EIO
00079 # include <Eio.h>
00080 #endif
00081 
00082 #ifdef HAVE_EPHYSICS
00083 # include <EPhysics.h>
00084 #endif
00085 
00086 #include "Edje.h"
00087 
00088 EAPI extern int _edje_default_log_dom ;
00089 
00090 #ifdef EDJE_DEFAULT_LOG_COLOR
00091 # undef EDJE_DEFAULT_LOG_COLOR
00092 #endif
00093 #define EDJE_DEFAULT_LOG_COLOR EINA_COLOR_CYAN
00094 #ifdef ERR
00095 # undef ERR
00096 #endif
00097 #define ERR(...) EINA_LOG_DOM_ERR(_edje_default_log_dom, __VA_ARGS__)
00098 #ifdef INF
00099 # undef INF
00100 #endif
00101 #define INF(...) EINA_LOG_DOM_INFO(_edje_default_log_dom, __VA_ARGS__)
00102 #ifdef WRN
00103 # undef WRN
00104 #endif
00105 #define WRN(...) EINA_LOG_DOM_WARN(_edje_default_log_dom, __VA_ARGS__)
00106 #ifdef CRIT
00107 # undef CRIT
00108 #endif
00109 #define CRIT(...) EINA_LOG_DOM_CRIT(_edje_default_log_dom, __VA_ARGS__)
00110 #ifdef DBG
00111 # undef DBG
00112 #endif
00113 #define DBG(...) EINA_LOG_DOM_DBG(_edje_default_log_dom, __VA_ARGS__)
00114 #ifdef __GNUC__
00115 # if __GNUC__ >= 4
00116 // BROKEN in gcc 4 on amd64
00117 //#  pragma GCC visibility push(hidden)
00118 # endif
00119 #endif
00120 
00121 #ifndef ABS
00122 #define ABS(x) ((x) < 0 ? -(x) : (x))
00123 #endif
00124 
00125 #ifndef CLAMP
00126 #define CLAMP(x, min, max) (((x) > (max)) ? (max) : (((x) < (min)) ? (min) : (x)))
00127 #endif
00128 
00129 #ifndef MIN
00130 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
00131 #endif
00132 
00133 
00134 #ifdef BUILD_EDJE_FP
00135 
00136 #define FLOAT_T Eina_F32p32
00137 #define EDJE_T_FLOAT EET_T_F32P32
00138 #define MUL(a, b) eina_f32p32_mul(a, b)
00139 #define SCALE(a, b) eina_f32p32_scale(a, b)
00140 #define DIV(a, b) eina_f32p32_div(a, b)
00141 #define DIV2(a) ((a) >> 1)
00142 #define ADD(a, b) eina_f32p32_add(a, b)
00143 #define SUB(a, b) eina_f32p32_sub(a, b)
00144 #define SQRT(a) eina_f32p32_sqrt(a)
00145 #define TO_DOUBLE(a) eina_f32p32_double_to(a)
00146 #define FROM_DOUBLE(a) eina_f32p32_double_from(a)
00147 #define FROM_INT(a) eina_f32p32_int_from(a)
00148 #define TO_INT(a) eina_f32p32_int_to(a)
00149 #define ZERO 0
00150 #define COS(a) eina_f32p32_cos(a)
00151 #define SIN(a) eina_f32p32_sin(a)
00152 #define PI EINA_F32P32_PI
00153 
00154 #else
00155 
00156 #define FLOAT_T double
00157 #define EDJE_T_FLOAT EET_T_DOUBLE
00158 #define MUL(a, b) ((a) * (b))
00159 #define SCALE(a, b) ((a) * (double)(b))
00160 #define DIV(a, b) ((a) / (b))
00161 #define DIV2(a) ((a) / 2.0)
00162 #define ADD(a, b) ((a) + (b))
00163 #define SUB(a, b) ((a) - (b))
00164 #define SQRT(a) sqrt(a)
00165 #define TO_DOUBLE(a) (double)(a)
00166 #define FROM_DOUBLE(a) (a)
00167 #define FROM_INT(a) (double)(a)
00168 #define TO_INT(a) (int)(a)
00169 #define ZERO 0.0
00170 #define COS(a) cos(a)
00171 #define SIN(a) sin(a)
00172 #define PI 3.14159265358979323846
00173 
00174 #endif
00175 
00176 /* Inheritable Edje Smart API. For now private so only Edje Edit makes
00177  * use of this, but who knows what will be possible in the future */
00178 #define EDJE_SMART_API_VERSION 1
00179 
00180 /* Basic macro to init the Edje Smart API */
00181 #define EDJE_SMART_API_INIT(smart_class_init) {smart_class_init, EDJE_SMART_API_VERSION, NULL}
00182 
00183 #define EDJE_SMART_API_INIT_NULL EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_NULL)
00184 #define EDJE_SMART_API_INIT_VERSION EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_VERSION)
00185 #define EDJE_SMART_API_INIT_NAME_VERSION(name) EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
00186 
00187 /* increment this when the EET data descriptors have changed and old
00188  * EETs cannot be loaded/used correctly anymore.
00189  */
00190 #define EDJE_FILE_VERSION 3
00191 /* increment this when you add new feature to edje file format without
00192  * breaking backward compatibility.
00193  */
00194 #define EDJE_FILE_MINOR 4
00195 
00196 /* FIXME:
00197  *
00198  * More example Edje files
00199  *
00200  * ? programs can do multiple actions from one signal
00201  * ? add containering (hbox, vbox, table, wrapping multi-line hbox & vbox)
00202  * ? text entry widget (single line only)
00203  *
00204  * ? recursions, unsafe callbacks outside Edje etc. with freeze, ref/unref and block/unblock and break_programs needs to be redesigned & fixed
00205  * ? all unsafe calls that may result in callbacks must be marked and dealt with
00206  */
00207 
00208 typedef enum
00209 {
00210    EDJE_ASPECT_PREFER_NONE,
00211    EDJE_ASPECT_PREFER_VERTICAL,
00212    EDJE_ASPECT_PREFER_HORIZONTAL,
00213    EDJE_ASPECT_PREFER_BOTH,
00214    EDJE_ASPECT_PREFER_SOURCE
00215 } Edje_Internal_Aspect;
00216 
00217 struct _Edje_Perspective
00218 {
00219    Evas_Object *obj;
00220    Evas        *e;
00221    Evas_Coord   px, py, z0, foc;
00222    Eina_List   *users;
00223    Eina_Bool    global : 1;
00224 };
00225 
00226 struct _Edje_Position_Scale
00227 {
00228    FLOAT_T x, y;
00229 };
00230 
00231 struct _Edje_Position
00232 {
00233    int x, y;
00234 };
00235 
00236 struct _Edje_Size
00237 {
00238    int w, h;
00239    Eina_Bool limit; /* should we limit ourself to the size of the source */
00240 };
00241 
00242 struct _Edje_Rectangle
00243 {
00244    int x, y, w, h;
00245 };
00246 
00247 struct _Edje_Color
00248 {
00249    unsigned char  r, g, b, a;
00250 };
00251 
00252 struct _Edje_Aspect_Prefer
00253 {
00254    FLOAT_T min, max;
00255    char prefer;
00256 };
00257 
00258 struct _Edje_Aspect
00259 {
00260    int w, h;
00261    Edje_Aspect_Control mode;
00262 };
00263 
00264 struct _Edje_String
00265 {
00266    const char *str;
00267    unsigned int id;
00268 };
00269 
00270 typedef struct _Edje_Position_Scale                  Edje_Alignment;
00271 typedef struct _Edje_Position_Scale                  Edje_Position_Scale;
00272 typedef struct _Edje_Position                        Edje_Position;
00273 typedef struct _Edje_Size                            Edje_Size;
00274 typedef struct _Edje_Rectangle                       Edje_Rectangle;
00275 typedef struct _Edje_Color                           Edje_Color;
00276 typedef struct _Edje_Aspect_Prefer                   Edje_Aspect_Prefer;
00277 typedef struct _Edje_Aspect                          Edje_Aspect;
00278 typedef struct _Edje_String                          Edje_String;
00279 
00280 typedef struct _Edje_File                            Edje_File;
00281 typedef struct _Edje_Style                           Edje_Style;
00282 typedef struct _Edje_Style_Tag                       Edje_Style_Tag;
00283 typedef struct _Edje_External_Directory              Edje_External_Directory;
00284 typedef struct _Edje_External_Directory_Entry        Edje_External_Directory_Entry;
00285 typedef struct _Edje_Font_Directory_Entry            Edje_Font_Directory_Entry;
00286 typedef struct _Edje_Image_Directory                 Edje_Image_Directory;
00287 typedef struct _Edje_Image_Directory_Entry           Edje_Image_Directory_Entry;
00288 typedef struct _Edje_Image_Directory_Set             Edje_Image_Directory_Set;
00289 typedef struct _Edje_Image_Directory_Set_Entry       Edje_Image_Directory_Set_Entry;
00290 typedef struct _Edje_Limit                           Edje_Limit;
00291 typedef struct _Edje_Sound_Sample                    Edje_Sound_Sample;
00292 typedef struct _Edje_Sound_Tone                      Edje_Sound_Tone;
00293 typedef struct _Edje_Sound_Directory                 Edje_Sound_Directory;
00294 typedef struct _Edje_Program                         Edje_Program;
00295 typedef struct _Edje_Program_Target                  Edje_Program_Target;
00296 typedef struct _Edje_Program_After                   Edje_Program_After;
00297 typedef struct _Edje_Part_Collection_Directory_Entry Edje_Part_Collection_Directory_Entry;
00298 typedef struct _Edje_Pack_Element                    Edje_Pack_Element;
00299 typedef struct _Edje_Part_Collection                 Edje_Part_Collection;
00300 typedef struct _Edje_Part                            Edje_Part;
00301 typedef struct _Edje_Part_Api                        Edje_Part_Api;
00302 typedef struct _Edje_Part_Dragable           Edje_Part_Dragable;
00303 typedef struct _Edje_Part_Image_Id                   Edje_Part_Image_Id;
00304 typedef struct _Edje_Part_Description_Image          Edje_Part_Description_Image;
00305 typedef struct _Edje_Part_Description_Proxy          Edje_Part_Description_Proxy;
00306 typedef struct _Edje_Part_Description_Text           Edje_Part_Description_Text;
00307 typedef struct _Edje_Part_Description_Box            Edje_Part_Description_Box;
00308 typedef struct _Edje_Part_Description_Table          Edje_Part_Description_Table;
00309 typedef struct _Edje_Part_Description_External       Edje_Part_Description_External;
00310 typedef struct _Edje_Part_Description_Common         Edje_Part_Description_Common;
00311 typedef struct _Edje_Part_Description_Spec_Fill      Edje_Part_Description_Spec_Fill;
00312 typedef struct _Edje_Part_Description_Spec_Border    Edje_Part_Description_Spec_Border;
00313 typedef struct _Edje_Part_Description_Spec_Image     Edje_Part_Description_Spec_Image;
00314 typedef struct _Edje_Part_Description_Spec_Proxy     Edje_Part_Description_Spec_Proxy;
00315 typedef struct _Edje_Part_Description_Spec_Text      Edje_Part_Description_Spec_Text;
00316 typedef struct _Edje_Part_Description_Spec_Box       Edje_Part_Description_Spec_Box;
00317 typedef struct _Edje_Part_Description_Spec_Table     Edje_Part_Description_Spec_Table;
00318 typedef struct _Edje_Patterns                        Edje_Patterns;
00319 typedef struct _Edje_Part_Box_Animation              Edje_Part_Box_Animation;
00320 typedef struct _Edje_Part_Limit                      Edje_Part_Limit;
00321 
00322 typedef struct _Edje Edje;
00323 typedef struct _Edje_Real_Part_Text Edje_Real_Part_Text;
00324 typedef struct _Edje_Real_Part_Swallow Edje_Real_Part_Swallow;
00325 typedef struct _Edje_Real_Part_Container Edje_Real_Part_Container;
00326 typedef struct _Edje_Real_Part_State Edje_Real_Part_State;
00327 typedef struct _Edje_Real_Part_Drag Edje_Real_Part_Drag;
00328 typedef struct _Edje_Real_Part_Set Edje_Real_Part_Set;
00329 typedef struct _Edje_Real_Part Edje_Real_Part;
00330 typedef struct _Edje_Running_Program Edje_Running_Program;
00331 typedef struct _Edje_Signal_Callback Edje_Signal_Callback;
00332 typedef struct _Edje_Calc_Params Edje_Calc_Params;
00333 typedef struct _Edje_Pending_Program Edje_Pending_Program;
00334 typedef struct _Edje_Text_Style Edje_Text_Style;
00335 typedef struct _Edje_Color_Class Edje_Color_Class;
00336 typedef struct _Edje_Text_Class Edje_Text_Class;
00337 typedef struct _Edje_Var Edje_Var;
00338 typedef struct _Edje_Var_Int Edje_Var_Int;
00339 typedef struct _Edje_Var_Float Edje_Var_Float;
00340 typedef struct _Edje_Var_String Edje_Var_String;
00341 typedef struct _Edje_Var_List Edje_Var_List;
00342 typedef struct _Edje_Var_Hash Edje_Var_Hash;
00343 typedef struct _Edje_Var_Animator Edje_Var_Animator;
00344 typedef struct _Edje_Var_Timer Edje_Var_Timer;
00345 typedef struct _Edje_Var_Pool Edje_Var_Pool;
00346 typedef struct _Edje_Signal_Source_Char Edje_Signal_Source_Char;
00347 typedef struct _Edje_Text_Insert_Filter_Callback Edje_Text_Insert_Filter_Callback;
00348 typedef struct _Edje_Markup_Filter_Callback Edje_Markup_Filter_Callback;
00349 
00350 #define EDJE_INF_MAX_W 100000
00351 #define EDJE_INF_MAX_H 100000
00352 
00353 #define EDJE_IMAGE_SOURCE_TYPE_NONE           0
00354 #define EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT 1
00355 #define EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY   2
00356 #define EDJE_IMAGE_SOURCE_TYPE_EXTERNAL       3
00357 #define EDJE_IMAGE_SOURCE_TYPE_LAST           4
00358 
00359 #define EDJE_SOUND_SOURCE_TYPE_NONE           0
00360 #define EDJE_SOUND_SOURCE_TYPE_INLINE_RAW     1
00361 #define EDJE_SOUND_SOURCE_TYPE_INLINE_COMP    2
00362 #define EDJE_SOUND_SOURCE_TYPE_INLINE_LOSSY   3
00363 #define EDJE_SOUND_SOURCE_TYPE_INLINE_AS_IS   4
00364 
00365 #define EDJE_VAR_NONE   0
00366 #define EDJE_VAR_INT    1
00367 #define EDJE_VAR_FLOAT  2
00368 #define EDJE_VAR_STRING 3
00369 #define EDJE_VAR_LIST   4
00370 #define EDJE_VAR_HASH   5
00371 
00372 #define EDJE_VAR_MAGIC_BASE 0x12fe84ba
00373 
00374 #define EDJE_STATE_PARAM_NONE            0
00375 #define EDJE_STATE_PARAM_ALIGNMENT       1
00376 #define EDJE_STATE_PARAM_MIN             2
00377 #define EDJE_STATE_PARAM_MAX             3
00378 #define EDJE_STATE_PARAM_STEP            4
00379 #define EDJE_STATE_PARAM_ASPECT          5
00380 #define EDJE_STATE_PARAM_ASPECT_PREF     6
00381 #define EDJE_STATE_PARAM_COLOR           7
00382 #define EDJE_STATE_PARAM_COLOR2          8
00383 #define EDJE_STATE_PARAM_COLOR3          9
00384 #define EDJE_STATE_PARAM_COLOR_CLASS    10
00385 #define EDJE_STATE_PARAM_REL1           11
00386 #define EDJE_STATE_PARAM_REL1_TO        12
00387 #define EDJE_STATE_PARAM_REL1_OFFSET    13
00388 #define EDJE_STATE_PARAM_REL2           14
00389 #define EDJE_STATE_PARAM_REL2_TO        15
00390 #define EDJE_STATE_PARAM_REL2_OFFSET    16
00391 #define EDJE_STATE_PARAM_IMAGE          17
00392 #define EDJE_STATE_PARAM_BORDER         18
00393 #define EDJE_STATE_PARAM_FILL_SMOOTH    19
00394 #define EDJE_STATE_PARAM_FILL_POS       20
00395 #define EDJE_STATE_PARAM_FILL_SIZE      21
00396 #define EDJE_STATE_PARAM_TEXT           22
00397 #define EDJE_STATE_PARAM_TEXT_CLASS     23
00398 #define EDJE_STATE_PARAM_TEXT_FONT      24
00399 #define EDJE_STATE_PARAM_TEXT_STYLE     25
00400 #define EDJE_STATE_PARAM_TEXT_SIZE      26
00401 #define EDJE_STATE_PARAM_TEXT_FIT       27
00402 #define EDJE_STATE_PARAM_TEXT_MIN       28
00403 #define EDJE_STATE_PARAM_TEXT_MAX       29
00404 #define EDJE_STATE_PARAM_TEXT_ALIGN     30
00405 #define EDJE_STATE_PARAM_VISIBLE        31
00406 #define EDJE_STATE_PARAM_MAP_ON         32
00407 #define EDJE_STATE_PARAM_MAP_PERSP      33
00408 #define EDJE_STATE_PARAM_MAP_LIGNT      34
00409 #define EDJE_STATE_PARAM_MAP_ROT_CENTER 35
00410 #define EDJE_STATE_PARAM_MAP_ROT_X      36
00411 #define EDJE_STATE_PARAM_MAP_ROT_Y      37
00412 #define EDJE_STATE_PARAM_MAP_ROT_Z      38
00413 #define EDJE_STATE_PARAM_MAP_BACK_CULL  39
00414 #define EDJE_STATE_PARAM_MAP_PERSP_ON   40
00415 #define EDJE_STATE_PARAM_PERSP_ZPLANE   41
00416 #define EDJE_STATE_PARAM_PERSP_FOCAL    42
00417 #define EDJE_STATE_PARAM_LAST           43
00418 
00419 #define EDJE_ENTRY_EDIT_MODE_NONE 0
00420 #define EDJE_ENTRY_EDIT_MODE_SELECTABLE 1
00421 #define EDJE_ENTRY_EDIT_MODE_EDITABLE 2
00422 #define EDJE_ENTRY_EDIT_MODE_PASSWORD 3
00423 
00424 #define EDJE_ENTRY_SELECTION_MODE_DEFAULT 0
00425 #define EDJE_ENTRY_SELECTION_MODE_EXPLICIT 1
00426 
00427 #define EDJE_ENTRY_CURSOR_MODE_UNDER 0
00428 #define EDJE_ENTRY_CURSOR_MODE_BEFORE 1
00429 
00430 #define EDJE_ORIENTATION_AUTO  0
00431 #define EDJE_ORIENTATION_LTR   1
00432 #define EDJE_ORIENTATION_RTL   2
00433 
00434 #define EDJE_PART_PATH_SEPARATOR ':'
00435 #define EDJE_PART_PATH_SEPARATOR_STRING ":"
00436 #define EDJE_PART_PATH_SEPARATOR_INDEXL '['
00437 #define EDJE_PART_PATH_SEPARATOR_INDEXR ']'
00438 
00439 #define FLAG_NONE 0
00440 #define FLAG_X    0x01
00441 #define FLAG_Y    0x02
00442 #define FLAG_XY   (FLAG_X | FLAG_Y)
00443 
00444 /*----------*/
00445 
00446 struct _Edje_File
00447 {
00448    const char                     *path;
00449    time_t                          mtime;
00450 
00451    Edje_External_Directory        *external_dir;
00452    Edje_Image_Directory           *image_dir;
00453    Edje_Sound_Directory           *sound_dir;
00454    Eina_List                      *styles;
00455 
00456    Eina_List                      *color_classes;
00457    Eina_Hash                      *color_hash;
00458 
00459    int                             references;
00460    const char                     *compiler;
00461    int                             version;
00462    int                 minor;
00463    int                             feature_ver;
00464 
00465    Eina_Hash                      *data;
00466    Eina_Hash              *fonts;
00467 
00468    Eina_Hash              *collection;
00469    Eina_List              *collection_cache;
00470 
00471    Edje_Patterns          *collection_patterns;
00472 
00473    Eet_File                       *ef;
00474 
00475 #ifdef HAVE_EIO
00476    Eio_Monitor                    *monitor;
00477    Eina_List                      *edjes;
00478    Eina_List                      *handlers;
00479    Ecore_Timer                    *timeout;
00480 #endif
00481 
00482    unsigned char                   free_strings : 1;
00483    unsigned char                   dangling : 1;
00484    unsigned char           warning : 1;
00485 };
00486 
00487 struct _Edje_Style
00488 {
00489    char                           *name;
00490    Eina_List                      *tags;
00491    Evas_Textblock_Style           *style;
00492 };
00493 
00494 struct _Edje_Style_Tag
00495 {
00496    const char                     *key;
00497    const char                     *value;
00498    const char             *font;
00499    double              font_size;
00500    const char             *text_class;
00501 };
00502 
00503 /*----------*/
00504 
00505 
00506 struct _Edje_Font_Directory_Entry
00507 {
00508    const char *entry; /* the name of the font */
00509    const char *file; /* the name of the file */
00510 };
00511 
00512 /*----------*/
00513 
00514 struct _Edje_External_Directory
00515 {
00516    Edje_External_Directory_Entry *entries; /* a list of Edje_External_Directory_Entry */
00517    unsigned int entries_count;
00518 };
00519 
00520 struct _Edje_External_Directory_Entry
00521 {
00522    const char *entry; /* the name of the external */
00523 };
00524 
00525 
00526 /*----------*/
00527 
00528 
00529 
00530 /*----------*/
00531 
00532 struct _Edje_Image_Directory
00533 {
00534    Edje_Image_Directory_Entry *entries; /* an array of Edje_Image_Directory_Entry */
00535    unsigned int entries_count;
00536 
00537    Edje_Image_Directory_Set *sets; /* an array of Edje_Image_Directory_Set */
00538    unsigned int sets_count;
00539 };
00540 
00541 struct _Edje_Image_Directory_Entry
00542 {
00543    const char *entry; /* the nominal name of the image - if any */
00544    int   source_type; /* alternate source mode. 0 = none */
00545    int   source_param; /* extra params on encoding */
00546    int   id; /* the id no. of the image */
00547 };
00548 
00549 struct _Edje_Image_Directory_Set
00550 {
00551    char *name;
00552    Eina_List *entries;
00553 
00554    int id;
00555 };
00556 
00557 struct _Edje_Image_Directory_Set_Entry
00558 {
00559    const char *name;
00560    int id;
00561 
00562    struct {
00563      struct {
00564        int w;
00565        int h;
00566      } min, max;
00567    } size;
00568 };
00569 
00570 struct _Edje_Sound_Sample /*Sound Sample*/
00571 {
00572    const char *name; /* the nominal name of the sound */
00573    const char *snd_src;  /* Sound source Wav file */
00574    int   compression;  /* Compression - RAW, LOSSLESS COMP ,  LOSSY ) */
00575    int   mode; /* alternate source mode. 0 = none */
00576    double quality;
00577    int   id; /* the id no. of the sound */
00578 };
00579 
00580 struct _Edje_Sound_Tone /*Sound Sample*/
00581 {
00582    const char *name; /* the nominal name of the sound - if any */
00583    int   value; /* alternate source mode. 0 = none */
00584    int   id; /* the id no. of the sound */
00585 };
00586 
00587 struct _Edje_Sound_Directory
00588 {
00589 
00590    Edje_Sound_Sample *samples;  /* an array of Edje_Sound_Sample entries */
00591    unsigned int samples_count;
00592 
00593    Edje_Sound_Tone *tones;  /* an array of Edje_Sound_Tone entries */
00594    unsigned int tones_count;
00595 };
00596 
00597 /*----------*/
00598 
00599 struct _Edje_Program /* a conditional program to be run */
00600 {
00601    int         id; /* id of program */
00602    const char *name; /* name of the action */
00603 
00604    const char *signal; /* if signal emission name matches the glob here... */
00605    const char *source; /* if part that emitted this (name) matches this glob */
00606    const char *sample_name;
00607    const char *tone_name;
00608    double duration;
00609    double speed;
00610 
00611    struct {
00612       const char *part;
00613       const char *state; /* if state is not set, we will try with source */
00614    } filter; /* the part filter.part should be in state filter.state for signal to be accepted */
00615 
00616    struct {
00617       double   from;
00618       double   range;
00619    } in;
00620 
00621    int         action; /* type - set state, stop action, set drag pos etc. */
00622    const char *state; /* what state of alternates to apply, NULL = default */
00623    const char *state2; /* what other state to use - for signal emit action */
00624    double      value; /* value of state to apply (if multiple names match) */
00625    double      value2; /* other value for drag actions */
00626 
00627    struct {
00628       int      mode; /* how to tween - linear, sinusoidal etc. */
00629       FLOAT_T  time; /* time to graduate between current and new state */
00630       FLOAT_T  v1; /* other value for drag actions */
00631       FLOAT_T  v2; /* other value for drag actions */
00632    } tween;
00633 
00634    Eina_List  *targets; /* list of target parts to apply the state to */
00635 
00636    Eina_List  *after; /* list of actions to run at the end of this, for looping */
00637 
00638    struct {
00639       const char *name;
00640       const char *description;
00641    } api;
00642 
00643    /* used for PARAM_COPY (param names in state and state2 above!) */
00644    struct {
00645       int src; /* part where parameter is being retrieved */
00646       int dst; /* part where parameter is being stored */
00647    } param;
00648 
00649    Eina_Bool exec : 1;
00650 };
00651 
00652 struct _Edje_Program_Target /* the target of an action */
00653 {
00654    int id; /* just the part id no, or action id no */
00655 };
00656 
00657 struct _Edje_Program_After /* the action to run after another action */
00658 {
00659    int id;
00660 };
00661 
00662 /*----------*/
00663 struct _Edje_Limit
00664 {
00665    const char *name;
00666    int value;
00667 };
00668 
00669 /*----------*/
00670 #define PART_TYPE_FIELDS(TYPE)    \
00671       TYPE      RECTANGLE;        \
00672       TYPE      TEXT;             \
00673       TYPE      IMAGE;            \
00674       TYPE      PROXY;            \
00675       TYPE      SWALLOW;          \
00676       TYPE      TEXTBLOCK;        \
00677       TYPE      GROUP;            \
00678       TYPE      BOX;              \
00679       TYPE      TABLE;            \
00680       TYPE      SPACER;   \
00681       TYPE      EXTERNAL;
00682 
00683 struct _Edje_Part_Collection_Directory_Entry
00684 {
00685    const char *entry; /* the nominal name of the part collection */
00686    int         id; /* the id of this named part collection */
00687 
00688    struct
00689    {
00690       PART_TYPE_FIELDS(int)
00691       int      part;
00692    } count;
00693 
00694    struct
00695    {
00696       PART_TYPE_FIELDS(Eina_Mempool *)
00697       Eina_Mempool *part;
00698    } mp;
00699 
00700    struct
00701    {
00702       PART_TYPE_FIELDS(Eina_Mempool *)
00703    } mp_rtl; /* For Right To Left interface */
00704 
00705    Edje_Part_Collection *ref;
00706 };
00707 
00708 /*----------*/
00709 
00710 /*----------*/
00711 
00712 struct _Edje_Pack_Element
00713 {
00714    unsigned char    type; /* only GROUP supported for now */
00715    Edje_Real_Part  *parent; /* pointer to the table/box that hold it, set at runtime */
00716    const char      *name; /* if != NULL, will be set with evas_object_name_set */
00717    const char      *source; /* group name to use as source for this element */
00718    Edje_Size        min, prefer, max;
00719    struct {
00720        int l, r, t, b;
00721    } padding;
00722    Edje_Alignment   align;
00723    Edje_Alignment   weight;
00724    Edje_Aspect      aspect;
00725    const char      *options; /* extra options for custom objects */
00726    /* table specific follows */
00727    int              col, row;
00728    unsigned short   colspan, rowspan;
00729 };
00730 
00731 typedef enum {
00732   EDJE_PART_LIMIT_UNKNOWN = 0,
00733   EDJE_PART_LIMIT_BELOW,
00734   EDJE_PART_LIMIT_ZERO,
00735   EDJE_PART_LIMIT_OVER
00736 } Edje_Part_Limit_State;
00737 
00738 #ifdef HAVE_EPHYSICS
00739 typedef enum {
00740   EDJE_PART_PHYSICS_BODY_NONE= 0,
00741   EDJE_PART_PHYSICS_BODY_RIGID_BOX,
00742   EDJE_PART_PHYSICS_BODY_RIGID_CIRCLE,
00743   EDJE_PART_PHYSICS_BODY_SOFT_BOX,
00744   EDJE_PART_PHYSICS_BODY_SOFT_CIRCLE,
00745   EDJE_PART_PHYSICS_BODY_CLOTH,
00746   EDJE_PART_PHYSICS_BODY_BOUNDARY_TOP,
00747   EDJE_PART_PHYSICS_BODY_BOUNDARY_BOTTOM,
00748   EDJE_PART_PHYSICS_BODY_BOUNDARY_RIGHT,
00749   EDJE_PART_PHYSICS_BODY_BOUNDARY_LEFT,
00750   EDJE_PART_PHYSICS_BODY_BOUNDARY_FRONT,
00751   EDJE_PART_PHYSICS_BODY_BOUNDARY_BACK
00752 } Edje_Part_Physics_Body;
00753 #endif
00754 
00755 struct _Edje_Part_Limit
00756 {
00757    int part;
00758 
00759    Edje_Part_Limit_State width; /* -1, 0 or 1 */
00760    Edje_Part_Limit_State height; /* -1, 0, or 1 */
00761 };
00762 
00763 /*----------*/
00764 
00765 struct _Edje_Part_Collection
00766 {
00767    struct { /* list of Edje_Program */
00768       Edje_Program **fnmatch; /* complex match with "*?[\" */
00769       unsigned int fnmatch_count;
00770 
00771       Edje_Program **strcmp; /* No special caractere, plain strcmp does the work */
00772       unsigned int strcmp_count;
00773 
00774       Edje_Program **strncmp; /* Finish by * or ?, plain strncmp does the work */
00775       unsigned int strncmp_count;
00776 
00777       Edje_Program **strrncmp; /* Start with * or ?, reverse strncmp will do the job */
00778       unsigned int strrncmp_count;
00779 
00780       Edje_Program **nocmp; /* Empty signal/source that will never match */
00781       unsigned int nocmp_count;
00782    } programs;
00783 
00784    struct { /* list of limit that need to be monitored */
00785       Edje_Limit **vertical;
00786       unsigned int vertical_count;
00787 
00788       Edje_Limit **horizontal;
00789       unsigned int horizontal_count;
00790 
00791       Edje_Part_Limit *parts;
00792       unsigned int parts_count;
00793    } limits;
00794 
00795    Edje_Part **parts; /* an array of Edje_Part */
00796    unsigned int parts_count;
00797 
00798    Eina_Hash *data;
00799 
00800    int        id; /* the collection id */
00801 
00802    Eina_Hash *alias; /* aliasing part */
00803    Eina_Hash *aliased; /* invert match of alias */
00804 
00805    struct {
00806       Edje_Size min, max;
00807       unsigned char orientation;
00808    } prop;
00809 
00810    int        references;
00811 
00812 #ifdef EDJE_PROGRAM_CACHE
00813    struct {
00814       Eina_Hash                   *no_matches;
00815       Eina_Hash                   *matches;
00816    } prog_cache;
00817 #endif
00818 
00819    Embryo_Program   *script; /* all the embryo script code for this group */
00820    const char       *part;
00821 
00822    unsigned char    script_only;
00823 
00824    unsigned char    lua_script_only;
00825 
00826    unsigned char    broadcast_signal;
00827 
00828 #ifdef HAVE_EPHYSICS
00829    unsigned char    physics_enabled; /* will be 1 if a body is declared */
00830 #endif
00831 
00832    unsigned char    checked : 1;
00833 };
00834 
00835 struct _Edje_Part_Dragable
00836 {
00837    int                 step_x; /* drag jumps n pixels (0 = no limit) */
00838    int                 step_y; /* drag jumps n pixels (0 = no limit) */
00839 
00840    int                 count_x; /* drag area divided by n (0 = no limit) */
00841    int                 count_y; /* drag area divided by n (0 = no limit) */
00842 
00843    int                 confine_id; /* dragging within this bit, -1 = no */
00844 
00845    /* davinchi */
00846    int        event_id; /* If it is used as scrollbar */
00847 
00848    signed char         x; /* can u click & drag this bit in x dir */
00849    signed char         y; /* can u click & drag this bit in y dir */
00850 };
00851 
00852 struct _Edje_Part_Api
00853 {
00854    const char         *name;
00855    const char         *description;
00856 };
00857 
00858 typedef struct _Edje_Part_Description_List Edje_Part_Description_List;
00859 struct _Edje_Part_Description_List
00860 {
00861    Edje_Part_Description_Common **desc;
00862    Edje_Part_Description_Common **desc_rtl; /* desc for Right To Left interface */
00863    unsigned int desc_count;
00864 };
00865 
00866 struct _Edje_Part
00867 {
00868    const char                   *name; /* the name if any of the part */
00869    Edje_Part_Description_Common *default_desc; /* the part descriptor for default */
00870    Edje_Part_Description_Common *default_desc_rtl; /* default desc for Right To Left interface */
00871 
00872    Edje_Part_Description_List    other; /* other possible descriptors */
00873 
00874    const char           *source, *source2, *source3, *source4, *source5, *source6;
00875    int                    id; /* its id number */
00876    int                    clip_to_id; /* the part id to clip this one to */
00877    Edje_Part_Dragable     dragable;
00878    Edje_Pack_Element    **items; /* packed items for box and table */
00879    unsigned int           items_count;
00880    unsigned char          type; /* what type (image, rect, text) */
00881 #ifdef HAVE_EPHYSICS
00882    unsigned char          physics_body; /* body (none, rigid box, soft circle, ...) */
00883 #endif
00884    unsigned char          effect; /* 0 = plain... */
00885    unsigned char          mouse_events; /* it will affect/respond to mouse events */
00886    unsigned char          repeat_events; /* it will repeat events to objects below */
00887    Evas_Event_Flags       ignore_flags;
00888    unsigned char          scale; /* should certain properties scale with edje scale factor? */
00889    unsigned char          precise_is_inside;
00890    unsigned char          use_alternate_font_metrics;
00891    unsigned char          pointer_mode;
00892    unsigned char          entry_mode;
00893    unsigned char          select_mode;
00894    unsigned char          cursor_mode;
00895    unsigned char          multiline;
00896    unsigned char          access; /* it will be used accessibility feature */
00897    Edje_Part_Api          api;
00898    unsigned char          nested_children_count;
00899 };
00900 
00901 struct _Edje_Part_Image_Id
00902 {
00903    int id;
00904    Eina_Bool set;
00905 };
00906 
00907 struct _Edje_Part_Description_Common
00908 {
00909    struct {
00910       double         value; /* the value of the state (for ranges) */
00911       const char    *name; /* the named state if any */
00912    } state;
00913 
00914    Edje_Alignment align; /* 0 <-> 1.0 alignment within allocated space */
00915 
00916    struct {
00917       unsigned char  w, h; /* width or height is fixed in side (cannot expand with Edje object size) */
00918    } fixed;
00919 
00920    struct { // only during recalc
00921       unsigned char have;
00922       FLOAT_T w, h;
00923    } minmul;
00924 
00925    Edje_Size min, max;
00926    Edje_Position step; /* size stepping by n pixels, 0 = none */
00927    Edje_Aspect_Prefer aspect;
00928 
00929    char      *color_class; /* how to modify the color */
00930    Edje_Color color;
00931    Edje_Color color2;
00932 
00933    struct {
00934       FLOAT_T        relative_x;
00935       FLOAT_T        relative_y;
00936       int            offset_x;
00937       int            offset_y;
00938       int            id_x; /* -1 = whole part collection, or part ID */
00939       int            id_y; /* -1 = whole part collection, or part ID */
00940    } rel1, rel2;
00941 
00942    struct {
00943       int id_persp;
00944       int id_light;
00945       struct {
00946          int id_center;
00947          FLOAT_T x, y, z;
00948       } rot;
00949       unsigned char backcull;
00950       unsigned char on;
00951       unsigned char persp_on;
00952       unsigned char smooth;
00953       unsigned char alpha;
00954    } map;
00955 
00956    struct {
00957       int zplane;
00958       int focal;
00959    } persp;
00960 
00961    unsigned char     visible; /* is it shown */
00962    unsigned char     limit; /* 0 == no, 1 = width, 2 = height, 3 = both */
00963 };
00964 
00965 struct _Edje_Part_Description_Spec_Fill
00966 {
00967    FLOAT_T        pos_rel_x; /* fill offset x relative to area */
00968    FLOAT_T        rel_x; /* relative size compared to area */
00969    FLOAT_T        pos_rel_y; /* fill offset y relative to area */
00970    FLOAT_T        rel_y; /* relative size compared to area */
00971    int            pos_abs_x; /* fill offset x added to fill offset */
00972    int            abs_x; /* size of fill added to relative fill */
00973    int            pos_abs_y; /* fill offset y added to fill offset */
00974    int            abs_y; /* size of fill added to relative fill */
00975    int            angle; /* angle of fill -- currently only used by grads */
00976    int            spread; /* spread of fill -- currently only used by grads */
00977    char           smooth; /* fill with smooth scaling or not */
00978    unsigned char  type; /* fill coordinate from container (SCALE) or from source image (TILE) */
00979 };
00980 
00981 struct _Edje_Part_Description_Spec_Border
00982 {
00983    int            l, r, t, b; /* border scaling on image fill */
00984    unsigned char  no_fill; /* do we fill the center of the image if bordered? 1 == NO!!!! */
00985    unsigned char  scale; /* scale image border by same as scale factor */
00986    FLOAT_T        scale_by; /* when border scale above is enabled, border width OUTPUT is scaled by the object or global scale factor. this value adds another multiplier that the global scale is multiplued by first. if <= 0.0 it is not used, and if 1.0 it i s "ineffective" */
00987 };
00988 
00989 struct _Edje_Part_Description_Spec_Image
00990 {
00991    Edje_Part_Description_Spec_Fill   fill;
00992 
00993    Edje_Part_Image_Id **tweens; /* list of Edje_Part_Image_Id */
00994    unsigned int         tweens_count; /* number of tweens */
00995 
00996    int            id; /* the image id to use */
00997    int            scale_hint; /* evas scale hint */
00998    Eina_Bool      set; /* if image condition it's content */
00999 
01000    Edje_Part_Description_Spec_Border border;
01001 };
01002 
01003 struct _Edje_Part_Description_Spec_Proxy
01004 {
01005    Edje_Part_Description_Spec_Fill   fill;
01006 
01007    int id; /* the part id to use as a source for this state */
01008 };
01009 
01010 struct _Edje_Part_Description_Spec_Text
01011 {
01012    Edje_String    text; /* if "" or NULL, then leave text unchanged */
01013    char          *text_class; /* how to apply/modify the font */
01014    Edje_String    style; /* the text style if a textblock */
01015    Edje_String    font; /* if a specific font is asked for */
01016    Edje_String    repch; /* replacement char for password mode entry */
01017 
01018    Edje_Alignment align; /* text alignment within bounds */
01019    Edje_Color     color3;
01020 
01021    double         elipsis; /* 0.0 - 1.0 defining where the elipsis align */
01022    int            size; /* 0 = use user set size */
01023    int            id_source; /* -1 if none */
01024    int            id_text_source; /* -1 if none */
01025 
01026    unsigned char  fit_x; /* resize font size down to fit in x dir */
01027    unsigned char  fit_y; /* resize font size down to fit in y dir */
01028    unsigned char  min_x; /* if text size should be part min size */
01029    unsigned char  min_y; /* if text size should be part min size */
01030    unsigned char  max_x; /* if text size should be part max size */
01031    unsigned char  max_y; /* if text size should be part max size */
01032    int            size_range_min;
01033    int            size_range_max; /* -1 means, no bound. */
01034 };
01035 
01036 struct _Edje_Part_Description_Spec_Box
01037 {
01038    char          *layout, *alt_layout;
01039    Edje_Alignment align;
01040    struct {
01041       int x, y;
01042    } padding;
01043    struct {
01044       unsigned char h, v;
01045    } min;
01046 };
01047 
01048 struct _Edje_Part_Description_Spec_Table
01049 {
01050    unsigned char  homogeneous;
01051    Edje_Alignment align;
01052    struct {
01053       int x, y;
01054    } padding;
01055    struct {
01056       unsigned char h, v;
01057    } min;
01058 };
01059 
01060 struct _Edje_Part_Description_Image
01061 {
01062    Edje_Part_Description_Common common;
01063    Edje_Part_Description_Spec_Image image;
01064 };
01065 
01066 struct _Edje_Part_Description_Proxy
01067 {
01068    Edje_Part_Description_Common common;
01069    Edje_Part_Description_Spec_Proxy proxy;
01070 };
01071 
01072 struct _Edje_Part_Description_Text
01073 {
01074    Edje_Part_Description_Common common;
01075    Edje_Part_Description_Spec_Text text;
01076 };
01077 
01078 struct _Edje_Part_Description_Box
01079 {
01080    Edje_Part_Description_Common common;
01081    Edje_Part_Description_Spec_Box box;
01082 };
01083 
01084 struct _Edje_Part_Description_Table
01085 {
01086    Edje_Part_Description_Common common;
01087    Edje_Part_Description_Spec_Table table;
01088 };
01089 
01090 struct _Edje_Part_Description_External
01091 {
01092    Edje_Part_Description_Common common;
01093    Eina_List *external_params; /* parameters for external objects */
01094 };
01095 
01096 /*----------*/
01097 
01098 struct _Edje_Signal_Source_Char
01099 {
01100    EINA_RBTREE;
01101 
01102    const char *signal;
01103    const char *source;
01104 
01105    Eina_Array  list;
01106 };
01107 
01108 struct _Edje_Signals_Sources_Patterns
01109 
01110 {
01111    Edje_Patterns *signals_patterns;
01112    Edje_Patterns *sources_patterns;
01113 
01114    Eina_Rbtree   *exact_match;
01115 
01116    union {
01117       struct {
01118      Edje_Program **globing;
01119      unsigned int  count;
01120       } programs;
01121       struct {
01122      Eina_List     *globing;
01123       } callbacks;
01124    } u;
01125 };
01126 
01127 typedef struct _Edje_Signals_Sources_Patterns Edje_Signals_Sources_Patterns;
01128 
01129 struct _Edje
01130 {
01131    Evas_Object_Smart_Clipped_Data *base;
01132    /* This contains (or should):
01133     Evas_Object          *clipper; // a big rect to clip this Edje to
01134     Evas                 *evas; // the Evas this Edje belongs to
01135    */
01136    const char           *path;
01137    const char           *group;
01138    const char           *parent;
01139 
01140    Evas_Coord            x, y, w, h;
01141    Edje_Size             min;
01142    double                paused_at;
01143    Evas_Object          *obj; /* the smart object */
01144    Edje_File            *file; /* the file the data comes form */
01145    Edje_Part_Collection *collection; /* the description being used */
01146    Eina_List            *actions; /* currently running actions */
01147    Eina_List            *callbacks;
01148    Eina_List            *pending_actions;
01149    Eina_Hash            *color_classes;
01150    Eina_List            *text_classes;
01151    /* variable pool for Edje Embryo scripts */
01152    Edje_Var_Pool        *var_pool;
01153    /* for faster lookups to avoid nth list walks */
01154    Edje_Real_Part      **table_parts;
01155    Edje_Program        **table_programs;
01156    Edje_Real_Part       *focused_part;
01157    Eina_List            *subobjs;
01158    Eina_List            *text_insert_filter_callbacks;
01159    Eina_List            *markup_filter_callbacks;
01160    void                 *script_only_data;
01161 
01162    int                   table_programs_size;
01163    unsigned int          table_parts_size;
01164 
01165    Eina_List            *groups;
01166 
01167    struct {
01168       Eina_Hash         *text_class;
01169       Eina_Hash         *color_class;
01170    } members;
01171 
01172    Edje_Perspective     *persp;
01173 
01174    struct {
01175       Edje_Signals_Sources_Patterns callbacks;
01176       Edje_Signals_Sources_Patterns programs;
01177    } patterns;
01178 
01179    int                   references;
01180    int                   block;
01181    int                   load_error;
01182    int                   freeze;
01183    FLOAT_T       scale;
01184    Eina_Bool             is_rtl : 1;
01185 
01186    struct {
01187       Edje_Text_Change_Cb  func;
01188       void                *data;
01189    } text_change;
01190 
01191    struct {
01192       Edje_Message_Handler_Cb  func;
01193       void                    *data;
01194       int                      num;
01195    } message;
01196    int                   processing_messages;
01197 
01198    int                   state;
01199 
01200    int           preload_count;
01201 
01202    lua_State            *L;
01203    Eina_Inlist          *lua_objs;
01204    int                   lua_ref;
01205 
01206    struct {
01207       Edje_Item_Provider_Cb  func;
01208       void                  *data;
01209    } item_provider;
01210 
01211    Eina_List            *user_defined;
01212 
01213    int                   walking_callbacks;
01214 
01215 #ifdef HAVE_EPHYSICS
01216    EPhysics_World       *world;
01217 #endif
01218 
01219    Eina_Bool          dirty : 1;
01220    Eina_Bool          recalc : 1;
01221    Eina_Bool          delete_callbacks : 1;
01222    Eina_Bool          just_added_callbacks : 1;
01223    Eina_Bool          have_objects : 1;
01224    Eina_Bool          paused : 1;
01225    Eina_Bool          no_anim : 1;
01226    Eina_Bool          calc_only : 1;
01227    Eina_Bool          walking_actions : 1;
01228    Eina_Bool          block_break : 1;
01229    Eina_Bool          delete_me : 1;
01230    Eina_Bool          postponed : 1;
01231    Eina_Bool          freeze_calc : 1;
01232    Eina_Bool          has_entries : 1;
01233    Eina_Bool          entries_inited : 1;
01234 #ifdef EDJE_CALC_CACHE
01235    Eina_Bool          text_part_change : 1;
01236    Eina_Bool          all_part_change : 1;
01237 #endif
01238    Eina_Bool          have_mapped_part : 1;
01239    Eina_Bool          recalc_call : 1;
01240    Eina_Bool          update_hints : 1;
01241    Eina_Bool          recalc_hints : 1;
01242 };
01243 
01244 struct _Edje_Calc_Params
01245 {
01246    int              x, y, w, h; // 16
01247    Edje_Rectangle   req; // 16
01248    Edje_Rectangle   req_drag; // 16
01249    Edje_Color       color; // 4
01250    union {
01251       struct {
01252      struct {
01253         int           x, y, w, h; // 16
01254         int           angle; // 4
01255         int           spread; // 4
01256      } fill; // 24
01257 
01258      union {
01259         struct {
01260            int           l, r, t, b; // 16
01261                FLOAT_T       border_scale_by;
01262         } image; // 16
01263      } spec; // 16
01264       } common; // 40
01265       struct {
01266      Edje_Alignment align; /* text alignment within bounds */ // 16
01267      double         elipsis; // 8
01268      int            size; // 4
01269      Edje_Color     color2, color3; // 8
01270       } text; // 36
01271    } type; // 40
01272    struct {
01273       struct {
01274          int x, y, z;
01275       } center; // 12
01276       struct {
01277          FLOAT_T x, y, z;
01278       } rotation; // 24
01279       struct {
01280          int x, y, z;
01281          int r, g, b;
01282          int ar, ag, ab;
01283       } light; // 36
01284       struct {
01285          int x, y, z;
01286          int focal;
01287       } persp;
01288    } map;
01289    unsigned char    persp_on : 1;
01290    unsigned char    lighted : 1;
01291    unsigned char    mapped : 1;
01292    unsigned char    visible : 1;
01293    unsigned char    smooth : 1; // 1
01294 }; // 96
01295 
01296 struct _Edje_Real_Part_Set
01297 {
01298   Edje_Image_Directory_Set_Entry *entry; // 4
01299   Edje_Image_Directory_Set       *set; // 4
01300 
01301   int                             id; // 4
01302 };
01303 
01304 struct _Edje_Real_Part_State
01305 {
01306    Edje_Part_Description_Common *description; // 4
01307    Edje_Part_Description_Common *description_rtl; // 4
01308    Edje_Real_Part        *rel1_to_x; // 4
01309    Edje_Real_Part        *rel1_to_y; // 4
01310    Edje_Real_Part        *rel2_to_x; // 4
01311    Edje_Real_Part        *rel2_to_y; // 4
01312 #ifdef EDJE_CALC_CACHE
01313    int                    state; // 4
01314    Edje_Calc_Params       p; // 96
01315 #endif
01316    void                  *external_params; // 4
01317    Edje_Real_Part_Set    *set; // 4
01318 }; // 32
01319 // WITH EDJE_CALC_CACHE 132
01320 
01321 struct _Edje_Real_Part_Drag
01322 {
01323    FLOAT_T       x, y; // 16
01324    Edje_Position_Scale   val, size, step, page; // 64
01325    struct {
01326       unsigned int   count; // 4
01327       int        x, y; // 8
01328    } down;
01329    struct {
01330       int        x, y; // 8
01331    } tmp;
01332    unsigned char     need_reset : 1; // 4
01333    Edje_Real_Part       *confine_to; // 4
01334 }; // 104
01335 
01336 #define EDJE_RP_TYPE_NONE 0
01337 #define EDJE_RP_TYPE_TEXT 1
01338 #define EDJE_RP_TYPE_CONTAINER 2
01339 #define EDJE_RP_TYPE_SWALLOW 3
01340 
01341 struct _Edje_Real_Part_Text
01342 {
01343    void                  *entry_data; // 4
01344    Edje_Real_Part        *source; // 4
01345    Edje_Real_Part        *text_source; // 4
01346    const char            *text; // 4
01347    const char            *font; // 4
01348    const char            *style; // 4
01349    Edje_Position          offset; // 8
01350    short                  size; // 2
01351    struct {
01352       unsigned char       fit_x, fit_y; // 2
01353       short               in_size; // 2
01354       short               out_size; // 2
01355       float               elipsis; // 4
01356       Evas_Coord          in_w, in_h; // 8
01357       const char         *in_str; // 4
01358       const char         *out_str; // 4
01359       FLOAT_T             align_x, align_y; // 16
01360    } cache;
01361 }; // 76
01362 // FIXME make text a potiner to struct and alloc at end
01363 // if part type is TEXT move common members textblock +
01364 // text to front and have smaller struct for textblock
01365 
01366 struct _Edje_Real_Part_Container
01367 {
01368    Eina_List                *items; // 4 //FIXME: only if table/box
01369    Edje_Part_Box_Animation  *anim; // 4 //FIXME: Used only if box
01370 };
01371 
01372 struct _Edje_Real_Part_Swallow
01373 {
01374    Evas_Object        *swallowed_object; // 4 // FIXME: move with swallow_params data
01375    struct {
01376       Edje_Size min, max; // 16
01377       Edje_Aspect aspect; // 12
01378    } swallow_params; // 28 // FIXME: only if type SWALLOW
01379 };
01380 
01381 struct _Edje_Real_Part
01382 {
01383    Edje                     *edje; // 4
01384    Edje_Part                *part; // 4
01385    int                       x, y, w, h; // 16
01386    Edje_Rectangle            req; // 16
01387    Evas_Object              *object; // 4
01388    Evas_Object              *nested_smart; // 4
01389    Edje_Real_Part_Drag      *drag; // 4
01390    Edje_Real_Part       *events_to; // 4
01391    FLOAT_T                   description_pos; // 8
01392    Edje_Part_Description_Common *chosen_description; // 4
01393    Edje_Real_Part_State      param1; // 32
01394    // WITH EDJE_CALC_CACHE: 140
01395    Edje_Real_Part_State     *param2, *custom; // 8
01396    Edje_Calc_Params         *current; // 4
01397    Edje_Real_Part           *clip_to; // 4
01398    Edje_Running_Program     *program; // 4
01399 #ifdef HAVE_EPHYSICS
01400    EPhysics_Body            *body; // 4
01401 #endif
01402    union {
01403       Edje_Real_Part_Text      *text;
01404       Edje_Real_Part_Container *container;
01405       Edje_Real_Part_Swallow   *swallow;
01406    } typedata; // 4
01407    int                       clicked_button; // 4
01408 #ifdef EDJE_CALC_CACHE
01409    int                       state; // 4
01410 #endif
01411    unsigned char             type; // 1
01412    unsigned char             calculated; // 1
01413    unsigned char             calculating; // 1
01414    unsigned char             still_in   : 1; // 1
01415 #ifdef EDJE_CALC_CACHE
01416    unsigned char             invalidate : 1; // 0
01417 #endif
01418 }; //  287 -> 126
01419 // WITH EDJE_CALC_CACHE: 404
01420 
01421 struct _Edje_Running_Program
01422 {
01423    Edje           *edje;
01424    Edje_Program   *program;
01425    double          start_time;
01426    Eina_Bool       delete_me : 1;
01427 };
01428 
01429 struct _Edje_Signal_Callback
01430 {
01431    const char     *signal;
01432    const char     *source;
01433    Edje_Signal_Cb  func;
01434    void           *data;
01435    Eina_Bool       just_added : 1;
01436    Eina_Bool       delete_me : 1;
01437    Eina_Bool       propagate : 1;
01438 };
01439 
01440 struct _Edje_Text_Insert_Filter_Callback
01441 {
01442    const char  *part;
01443    Edje_Text_Filter_Cb func;
01444    void        *data;
01445 };
01446 
01447 struct _Edje_Markup_Filter_Callback
01448 {
01449    const char  *part;
01450    Edje_Markup_Filter_Cb func;
01451    void        *data;
01452 };
01453 
01454 struct _Edje_Pending_Program
01455 {
01456    Edje         *edje;
01457    Edje_Program *program;
01458    Ecore_Timer  *timer;
01459 };
01460 
01461 struct _Edje_Text_Style
01462 {
01463    struct {
01464       unsigned char x, y;
01465    } offset;
01466    struct {
01467       unsigned char l, r, t, b;
01468    } pad;
01469    int num;
01470    struct {
01471       unsigned char color; /* 0 = color, 1, 2 = color2, color3 */
01472       signed   char x, y; /* offset */
01473       unsigned char alpha;
01474    } members[32];
01475 };
01476 
01477 struct _Edje_Color_Class
01478 {
01479    const char    *name;
01480    unsigned char  r, g, b, a;
01481    unsigned char  r2, g2, b2, a2;
01482    unsigned char  r3, g3, b3, a3;
01483 };
01484 
01485 struct _Edje_Text_Class
01486 {
01487    const char     *name;
01488    const char     *font;
01489    Evas_Font_Size  size;
01490 };
01491 
01492 struct _Edje_Var_Int
01493 {
01494    int      v;
01495 };
01496 
01497 struct _Edje_Var_Float
01498 {
01499    double   v;
01500 };
01501 
01502 struct _Edje_Var_String
01503 {
01504    char    *v;
01505 };
01506 
01507 struct _Edje_Var_List
01508 {
01509    Eina_List *v;
01510 };
01511 
01512 struct _Edje_Var_Hash
01513 {
01514    Eina_Hash *v;
01515 };
01516 
01517 struct _Edje_Var_Timer
01518 {
01519    Edje           *edje;
01520    int             id;
01521    Embryo_Function func;
01522    int             val;
01523    Ecore_Timer    *timer;
01524 };
01525 
01526 struct _Edje_Var_Animator
01527 {
01528    Edje           *edje;
01529    int             id;
01530    Embryo_Function func;
01531    int             val;
01532    double          start, len;
01533    char            delete_me;
01534 };
01535 
01536 struct _Edje_Var_Pool
01537 {
01538    int          id_count;
01539    Eina_List   *timers;
01540    Eina_List   *animators;
01541    int          size;
01542    Edje_Var    *vars;
01543    int          walking_list;
01544 };
01545 
01546 struct _Edje_Var
01547 {
01548    union {
01549       Edje_Var_Int    i;
01550       Edje_Var_Float  f;
01551       Edje_Var_String s;
01552       Edje_Var_List   l;
01553       Edje_Var_Hash   h;
01554    } data;
01555    unsigned char type;
01556 };
01557 
01558 typedef enum _Edje_Queue
01559 {
01560    EDJE_QUEUE_APP,
01561      EDJE_QUEUE_SCRIPT
01562 } Edje_Queue;
01563 
01564 typedef struct _Edje_Message_Signal Edje_Message_Signal;
01565 typedef struct _Edje_Message        Edje_Message;
01566 
01567 typedef struct _Edje_Message_Signal_Data Edje_Message_Signal_Data;
01568 struct _Edje_Message_Signal_Data
01569 {
01570    int ref;
01571    void *data;
01572    void (*free_func)(void *);
01573 };
01574 
01575 struct _Edje_Message_Signal
01576 {
01577    const char *sig;
01578    const char *src;
01579    Edje_Message_Signal_Data *data;
01580 };
01581 
01582 struct _Edje_Message
01583 {
01584    Edje              *edje;
01585    Edje_Queue         queue;
01586    Edje_Message_Type  type;
01587    int                id;
01588    unsigned char     *msg;
01589    Eina_Bool          propagated : 1;
01590 };
01591 
01592 typedef enum _Edje_Fill
01593 {
01594    EDJE_FILL_TYPE_SCALE = 0,
01595      EDJE_FILL_TYPE_TILE
01596 } Edje_Fill;
01597 
01598 typedef enum _Edje_Match_Error
01599 {
01600    EDJE_MATCH_OK,
01601      EDJE_MATCH_ALLOC_ERROR,
01602      EDJE_MATCH_SYNTAX_ERROR
01603 
01604 } Edje_Match_Error;
01605 
01606 typedef struct _Edje_States     Edje_States;
01607 struct _Edje_Patterns
01608 {
01609    const char    **patterns;
01610 
01611    Edje_States    *states;
01612 
01613    int             ref;
01614    Eina_Bool       delete_me : 1;
01615    
01616    size_t          patterns_size;
01617    size_t          max_length;
01618    size_t          finals[];
01619 };
01620 
01621 typedef enum _Edje_User_Defined_Type 
01622 {
01623    EDJE_USER_SWALLOW,
01624    EDJE_USER_BOX_PACK,
01625    EDJE_USER_TABLE_PACK,
01626    EDJE_USER_STRING,
01627    EDJE_USER_DRAG_STEP,
01628    EDJE_USER_DRAG_PAGE,
01629    EDJE_USER_DRAG_VALUE,
01630    EDJE_USER_DRAG_SIZE
01631 } Edje_User_Defined_Type;
01632 
01633 typedef struct _Edje_User_Defined Edje_User_Defined;
01634 struct _Edje_User_Defined
01635 {
01636    Edje_User_Defined_Type type;
01637    const char *part;
01638    Edje *ed;
01639 
01640    union {
01641       struct {
01642          const char *text;
01643       } string;
01644       struct {
01645          Evas_Object *child;
01646       } swallow;
01647       struct {
01648          Evas_Object *child;
01649          int index;
01650       } box;
01651       struct {
01652          Evas_Object *child;
01653          unsigned short col;
01654          unsigned short row;
01655          unsigned short colspan;
01656          unsigned short rowspan;
01657       } table;
01658       struct {
01659          double x, y;
01660       } drag_position;
01661       struct {
01662          double w, h;
01663       } drag_size;
01664    } u;
01665 };
01666 
01667 Edje_Patterns   *edje_match_collection_dir_init(const Eina_List *lst);
01668 Edje_Patterns   *edje_match_programs_signal_init(Edje_Program * const *array,
01669                          unsigned int count);
01670 Edje_Patterns   *edje_match_programs_source_init(Edje_Program * const *array,
01671                          unsigned int count);
01672 Edje_Patterns   *edje_match_callback_signal_init(const Eina_List *lst);
01673 Edje_Patterns   *edje_match_callback_source_init(const Eina_List *lst);
01674 
01675 Eina_Bool        edje_match_collection_dir_exec(const Edje_Patterns      *ppat,
01676                         const char               *string);
01677 Eina_Bool        edje_match_programs_exec(const Edje_Patterns    *ppat_signal,
01678                       const Edje_Patterns    *ppat_source,
01679                       const char             *signal,
01680                       const char             *source,
01681                       Edje_Program          **programs,
01682                       Eina_Bool (*func)(Edje_Program *pr, void *data),
01683                       void                   *data,
01684                                           Eina_Bool               prop);
01685 int              edje_match_callback_exec(Edje_Patterns          *ppat_signal,
01686                       Edje_Patterns          *ppat_source,
01687                       const char             *signal,
01688                       const char             *source,
01689                       Eina_List              *callbacks,
01690                       Edje                   *ed,
01691                                           Eina_Bool               prop);
01692 
01693 void             edje_match_patterns_free(Edje_Patterns *ppat);
01694 
01695 Eina_List *edje_match_program_hash_build(Edje_Program * const * programs,
01696                      unsigned int count,
01697                      Eina_Rbtree **tree);
01698 Eina_List *edje_match_callback_hash_build(const Eina_List *callbacks,
01699                       Eina_Rbtree **tree);
01700 const Eina_Array *edje_match_signal_source_hash_get(const char *signal,
01701                             const char *source,
01702                             const Eina_Rbtree *tree);
01703 void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data);
01704 
01705 // FIXME remove below 2 eapi decls when edje_convert goes
01706 EAPI void _edje_edd_init(void);
01707 EAPI void _edje_edd_shutdown(void);
01708 
01709 EAPI extern Eet_Data_Descriptor *_edje_edd_edje_file;
01710 EAPI extern Eet_Data_Descriptor *_edje_edd_edje_part_collection;
01711 
01712 extern int              _edje_anim_count;
01713 extern Ecore_Animator  *_edje_timer;
01714 extern Eina_List       *_edje_animators;
01715 extern Eina_List       *_edje_edjes;
01716 
01717 extern char            *_edje_fontset_append;
01718 extern FLOAT_T          _edje_scale;
01719 extern int              _edje_freeze_val;
01720 extern int              _edje_freeze_calc_count;
01721 extern Eina_List       *_edje_freeze_calc_list;
01722 
01723 extern Eina_Bool        _edje_password_show_last;
01724 extern FLOAT_T          _edje_password_show_last_timeout;
01725 
01726 extern Eina_Mempool *_edje_real_part_mp;
01727 extern Eina_Mempool *_edje_real_part_state_mp;
01728 
01729 EAPI extern Eina_Mempool *_emp_RECTANGLE;
01730 EAPI extern Eina_Mempool *_emp_TEXT;
01731 EAPI extern Eina_Mempool *_emp_IMAGE;
01732 EAPI extern Eina_Mempool *_emp_PROXY;
01733 EAPI extern Eina_Mempool *_emp_SWALLOW;
01734 EAPI extern Eina_Mempool *_emp_TEXTBLOCK;
01735 EAPI extern Eina_Mempool *_emp_GROUP;
01736 EAPI extern Eina_Mempool *_emp_BOX;
01737 EAPI extern Eina_Mempool *_emp_TABLE;
01738 EAPI extern Eina_Mempool *_emp_EXTERNAL;
01739 EAPI extern Eina_Mempool *_emp_SPACER;
01740 EAPI extern Eina_Mempool *_emp_part;
01741 
01742 void  _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T v1, FLOAT_T v2);
01743 Edje_Part_Description_Common *_edje_part_description_find(Edje *ed,
01744                               Edje_Real_Part *rp,
01745                               const char *name, double val);
01746 void  _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char  *d1, double v1, const char *d2, double v2);
01747 void  _edje_recalc(Edje *ed);
01748 void  _edje_recalc_do(Edje *ed);
01749 void  _edje_part_recalc_1(Edje *ed, Edje_Real_Part *ep);
01750 int   _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y);
01751 void  _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y);
01752 
01753 Eina_Bool _edje_timer_cb(void *data);
01754 Eina_Bool _edje_pending_timer_cb(void *data);
01755 void  _edje_callbacks_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp);
01756 void  _edje_callbacks_focus_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp);
01757 void  _edje_callbacks_del(Evas_Object *obj, Edje *ed);
01758 void  _edje_callbacks_focus_del(Evas_Object *obj, Edje *ed);
01759 
01760 EAPI void _edje_edd_init(void);
01761 EAPI void _edje_edd_shutdown(void);
01762 
01763 int _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *group, const char *parent, Eina_List *group_path, Eina_Array *nested);
01764 
01765 void  _edje_file_add(Edje *ed);
01766 void  _edje_file_del(Edje *ed);
01767 void  _edje_file_free(Edje_File *edf);
01768 void  _edje_file_cache_shutdown(void);
01769 void  _edje_collection_free(Edje_File *edf,
01770                 Edje_Part_Collection *ec,
01771                 Edje_Part_Collection_Directory_Entry *ce);
01772 void  _edje_collection_free_part_description_clean(int type,
01773                            Edje_Part_Description_Common *desc,
01774                            Eina_Bool free_strings);
01775 void _edje_collection_free_part_description_free(int type,
01776                          Edje_Part_Description_Common *desc,
01777                          Edje_Part_Collection_Directory_Entry *ce,
01778                          Eina_Bool free_strings);
01779 
01780 void  _edje_del(Edje *ed);
01781 void  _edje_ref(Edje *ed);
01782 void  _edje_unref(Edje *ed);
01783 void  _edje_clean_objects(Edje *ed);
01784 void  _edje_ref(Edje *ed);
01785 void  _edje_unref(Edje *ed);
01786 
01787 Eina_Bool _edje_program_run_iterate(Edje_Running_Program *runp, double tim);
01788 void  _edje_program_end(Edje *ed, Edje_Running_Program *runp);
01789 void  _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, const char *ssrc);
01790 void _edje_programs_patterns_clean(Edje *ed);
01791 void _edje_programs_patterns_init(Edje *ed);
01792 void  _edje_emit(Edje *ed, const char *sig, const char *src);
01793 void _edje_emit_full(Edje *ed, const char *sig, const char *src, void *data, void (*free_func)(void *));
01794 void _edje_emit_handle(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Data *data, Eina_Bool prop);
01795 void  _edje_signals_sources_patterns_clean(Edje_Signals_Sources_Patterns *ssp);
01796 void  _edje_callbacks_patterns_clean(Edje *ed);
01797 
01798 void           _edje_text_init(void);
01799 void           _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep);
01800 void           _edje_text_part_on_del(Edje *ed, Edje_Part *ep);
01801 void           _edje_text_recalc_apply(Edje *ed,
01802                        Edje_Real_Part *ep,
01803                        Edje_Calc_Params *params,
01804                        Edje_Part_Description_Text *chosen_desc);
01805 Evas_Font_Size _edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc);
01806 const char *   _edje_text_class_font_get(Edje *ed,
01807                      Edje_Part_Description_Text *chosen_desc,
01808                      int *size, char **free_later);
01809 
01810 
01811 Edje_Real_Part   *_edje_real_part_get(const Edje *ed, const char *part);
01812 Edje_Real_Part   *_edje_real_part_recursive_get(const Edje *ed, const char *part);
01813 Edje_Color_Class *_edje_color_class_find(const Edje *ed, const char *color_class);
01814 void              _edje_color_class_member_direct_del(const char *color_class, void *lookup);
01815 void              _edje_color_class_member_add(Edje *ed, const char *color_class);
01816 void              _edje_color_class_member_del(Edje *ed, const char *color_class);
01817 void              _edje_color_class_on_del(Edje *ed, Edje_Part *ep);
01818 void              _edje_color_class_members_free(void);
01819 void              _edje_color_class_hash_free(void);
01820 
01821 Edje_Text_Class  *_edje_text_class_find(Edje *ed, const char *text_class);
01822 void              _edje_text_class_member_add(Edje *ed, const char *text_class);
01823 void              _edje_text_class_member_del(Edje *ed, const char *text_class);
01824 void              _edje_text_class_member_direct_del(const char *text_class, void *lookup);
01825 void              _edje_text_class_members_free(void);
01826 void              _edje_text_class_hash_free(void);
01827 
01828 Edje             *_edje_fetch(const Evas_Object *obj) EINA_PURE;
01829 int               _edje_freeze(Edje *ed);
01830 int               _edje_thaw(Edje *ed);
01831 int               _edje_block(Edje *ed);
01832 int               _edje_unblock(Edje *ed);
01833 int               _edje_block_break(Edje *ed);
01834 void              _edje_block_violate(Edje *ed);
01835 void              _edje_object_part_swallow_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
01836 void              _edje_object_part_swallow_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
01837 void              _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow, Eina_Bool hints_update);
01838 void              _edje_real_part_swallow_clear(Edje_Real_Part *rp);
01839 void              _edje_box_init(void);
01840 void              _edje_box_shutdown(void);
01841 Eina_Bool         _edje_box_layout_find(const char *name, Evas_Object_Box_Layout *cb, void **data, void (**free_data)(void *data));
01842 void              _edje_box_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description_Box *chosen_desc);
01843 Eina_Bool         _edje_box_layout_add_child(Edje_Real_Part *rp, Evas_Object *child_obj);
01844 void              _edje_box_layout_remove_child(Edje_Real_Part *rp, Evas_Object *child_obj);
01845 Edje_Part_Box_Animation * _edje_box_layout_anim_new(Evas_Object *box);
01846 void              _edje_box_layout_free_data(void *data);
01847 
01848 Eina_Bool         _edje_real_part_box_append(Edje_Real_Part *rp, Evas_Object *child_obj);
01849 Eina_Bool         _edje_real_part_box_prepend(Edje_Real_Part *rp, Evas_Object *child_obj);
01850 Eina_Bool         _edje_real_part_box_insert_before(Edje_Real_Part *rp, Evas_Object *child_obj, const Evas_Object *ref);
01851 Eina_Bool         _edje_real_part_box_insert_at(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned int pos);
01852 Evas_Object      *_edje_real_part_box_remove(Edje_Real_Part *rp, Evas_Object *child_obj);
01853 Evas_Object      *_edje_real_part_box_remove_at(Edje_Real_Part *rp, unsigned int pos);
01854 Eina_Bool         _edje_real_part_box_remove_all(Edje_Real_Part *rp, Eina_Bool clear);
01855 Eina_Bool         _edje_real_part_table_pack(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
01856 Eina_Bool         _edje_real_part_table_unpack(Edje_Real_Part *rp, Evas_Object *child_obj);
01857 void              _edje_real_part_table_clear(Edje_Real_Part *rp, Eina_Bool clear);
01858 Evas_Object      *_edje_children_get(Edje_Real_Part *rp, const char *partid);
01859 
01860 Eina_Bool         _edje_object_part_text_raw_set(Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text);
01861 char             *_edje_text_escape(const char *text);
01862 char             *_edje_text_unescape(const char *text);
01863 
01864 void          _edje_embryo_script_init      (Edje_Part_Collection *edc);
01865 void          _edje_embryo_script_shutdown  (Edje_Part_Collection *edc);
01866 void          _edje_embryo_script_reset     (Edje *ed);
01867 void          _edje_embryo_test_run         (Edje *ed, const char *fname, const char *sig, const char *src);
01868 Edje_Var     *_edje_var_new                 (void);
01869 void          _edje_var_free                (Edje_Var *var);
01870 void          _edje_var_init                (Edje *ed);
01871 void          _edje_var_shutdown            (Edje *ed);
01872 int           _edje_var_string_id_get       (Edje *ed, const char *string);
01873 int           _edje_var_var_int_get         (Edje *ed, Edje_Var *var);
01874 void          _edje_var_var_int_set         (Edje *ed, Edje_Var *var, int v);
01875 double        _edje_var_var_float_get       (Edje *ed, Edje_Var *var);
01876 void          _edje_var_var_float_set       (Edje *ed, Edje_Var *var, double v);
01877 const char   *_edje_var_var_str_get         (Edje *ed, Edje_Var *var);
01878 void          _edje_var_var_str_set         (Edje *ed, Edje_Var *var, const char *str);
01879 int           _edje_var_int_get             (Edje *ed, int id);
01880 void          _edje_var_int_set             (Edje *ed, int id, int v);
01881 double        _edje_var_float_get           (Edje *ed, int id);
01882 void          _edje_var_float_set           (Edje *ed, int id, double v);
01883 const char   *_edje_var_str_get             (Edje *ed, int id);
01884 void          _edje_var_str_set             (Edje *ed, int id, const char *str);
01885 
01886 void          _edje_var_list_var_append(Edje *ed, int id, Edje_Var *var);
01887 void          _edje_var_list_var_prepend(Edje *ed, int id, Edje_Var *var);
01888 void          _edje_var_list_var_append_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative);
01889 void          _edje_var_list_var_prepend_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative);
01890 Edje_Var     *_edje_var_list_nth(Edje *ed, int id, int n);
01891 
01892 int           _edje_var_list_count_get(Edje *ed, int id);
01893 void          _edje_var_list_remove_nth(Edje *ed, int id, int n);
01894 
01895 int           _edje_var_list_nth_int_get(Edje *ed, int id, int n);
01896 void          _edje_var_list_nth_int_set(Edje *ed, int id, int n, int v);
01897 void          _edje_var_list_int_append(Edje *ed, int id, int v);
01898 void          _edje_var_list_int_prepend(Edje *ed, int id, int v);
01899 void          _edje_var_list_int_insert(Edje *ed, int id, int n, int v);
01900 
01901 double        _edje_var_list_nth_float_get(Edje *ed, int id, int n);
01902 void          _edje_var_list_nth_float_set(Edje *ed, int id, int n, double v);
01903 void          _edje_var_list_float_append(Edje *ed, int id, double v);
01904 void          _edje_var_list_float_prepend(Edje *ed, int id, double v);
01905 void          _edje_var_list_float_insert(Edje *ed, int id, int n, double v);
01906 
01907 const char   *_edje_var_list_nth_str_get(Edje *ed, int id, int n);
01908 void          _edje_var_list_nth_str_set(Edje *ed, int id, int n, const char *v);
01909 void          _edje_var_list_str_append(Edje *ed, int id, const char *v);
01910 void          _edje_var_list_str_prepend(Edje *ed, int id, const char *v);
01911 void          _edje_var_list_str_insert(Edje *ed, int id, int n, const char *v);
01912 
01913 int           _edje_var_timer_add           (Edje *ed, double in, const char *fname, int val);
01914 void          _edje_var_timer_del           (Edje *ed, int id);
01915 
01916 int           _edje_var_anim_add            (Edje *ed, double len, const char *fname, int val);
01917 void          _edje_var_anim_del            (Edje *ed, int id);
01918 
01919 void          _edje_message_init            (void);
01920 void          _edje_message_shutdown        (void);
01921 void          _edje_message_cb_set          (Edje *ed, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data);
01922 Edje_Message *_edje_message_new             (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id);
01923 void          _edje_message_free            (Edje_Message *em);
01924 void          _edje_message_propornot_send  (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg, Eina_Bool prop);
01925 void          _edje_message_send            (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg);
01926 void          _edje_message_parameters_push (Edje_Message *em);
01927 void          _edje_message_process         (Edje_Message *em);
01928 void          _edje_message_queue_process   (void);
01929 void          _edje_message_queue_clear     (void);
01930 void          _edje_message_del             (Edje *ed);
01931 
01932 void _edje_textblock_styles_add(Edje *ed);
01933 void _edje_textblock_styles_del(Edje *ed);
01934 void _edje_textblock_style_all_update(Edje *ed);
01935 void _edje_textblock_style_parse_and_fix(Edje_File *edf);
01936 void _edje_textblock_style_cleanup(Edje_File *edf);
01937 Edje_File *_edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret, Edje *ed);
01938 void _edje_cache_coll_clean(Edje_File *edf);
01939 void _edje_cache_coll_flush(Edje_File *edf);
01940 void _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc);
01941 EAPI void _edje_cache_file_unref(Edje_File *edf);
01942 
01943 void _edje_embryo_globals_init(Edje *ed);
01944 
01945 #define CHKPARAM(n) if (params[0] != (sizeof(Embryo_Cell) * (n))) return -1;
01946 #define HASNPARAMS(n) (params[0] == (sizeof(Embryo_Cell) * (n)))
01947 #define GETSTR(str, par) { \
01948    Embryo_Cell *___cptr; \
01949    int ___l; \
01950    str = NULL; \
01951    if ((___cptr = embryo_data_address_get(ep, (par)))) { \
01952       ___l = embryo_data_string_length_get(ep, ___cptr); \
01953       if (((str) = alloca(___l + 1))) \
01954     embryo_data_string_get(ep, ___cptr, (str)); } }
01955 #define GETSTREVAS(str, par) { \
01956    if ((str)) { \
01957       if ((par) && (!strcmp((par), (str)))) return 0; \
01958       if ((par)) eina_stringshare_del((par)); \
01959       (par) = (char *)eina_stringshare_add((str)); } \
01960    else (par) = NULL; }
01961 #define GETFLOAT(val, par) { \
01962    float *___cptr; \
01963    if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \
01964       val = *___cptr; } }
01965 
01966 #define GETFLOAT_T(val, par)                        \
01967   {                                 \
01968      float *___cptr;                            \
01969      if ((___cptr = (float *)embryo_data_address_get(ep, (par))))   \
01970        {                                \
01971       val = FROM_DOUBLE(*___cptr);                  \
01972        }                                \
01973   }
01974 
01975 #define GETINT(val, par) {          \
01976    int *___cptr; \
01977    if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \
01978       val = *___cptr; } }
01979 #define SETSTR(str, par) { \
01980    Embryo_Cell *___cptr; \
01981    if ((___cptr = embryo_data_address_get(ep, (par)))) { \
01982       embryo_data_string_set(ep, str, ___cptr); } }
01983 #define SETSTRALLOCATE(s)           \
01984   {                     \
01985      if (s) {                   \
01986     if ((int) strlen((s)) < params[4]) {    \
01987        SETSTR((s), params[3]); }        \
01988     else {                  \
01989        char *ss;                \
01990        ss = alloca(strlen((s)) + 1);    \
01991        strcpy(ss, (s));         \
01992        ss[params[4] - 2] = 0;       \
01993        SETSTR(ss, params[3]); } }       \
01994      else                   \
01995        SETSTR("", params[3]);           \
01996   }
01997 #define SETFLOAT(val, par) { \
01998    float *___cptr; \
01999    if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \
02000       *___cptr = (float)val; } }
02001 #define SETFLOAT_T(val, par)                        \
02002   {                                 \
02003      float *___cptr;                            \
02004      if ((___cptr = (float *)embryo_data_address_get(ep, (par))))   \
02005        {                                \
02006       *___cptr = (float) TO_DOUBLE(val);                \
02007        }                                \
02008   }
02009 #define SETINT(val, par) { \
02010    int *___cptr; \
02011    if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \
02012       *___cptr = (int)val; } }
02013 
02014 Eina_Bool _edje_script_only(Edje *ed);
02015 void _edje_script_only_init(Edje *ed);
02016 void _edje_script_only_shutdown(Edje *ed);
02017 void _edje_script_only_show(Edje *ed);
02018 void _edje_script_only_hide(Edje *ed);
02019 void _edje_script_only_move(Edje *ed);
02020 void _edje_script_only_resize(Edje *ed);
02021 void _edje_script_only_message(Edje *ed, Edje_Message *em);
02022 
02023 extern jmp_buf _edje_lua_panic_jmp;
02024 #define _edje_lua_panic_here() setjmp(_edje_lua_panic_jmp)
02025 
02026 lua_State *_edje_lua_state_get();
02027 lua_State *_edje_lua_new_thread(Edje *ed, lua_State *L);
02028 void _edje_lua_free_thread(Edje *ed, lua_State *L);
02029 void _edje_lua_new_reg(lua_State *L, int index, void *ptr);
02030 void _edje_lua_get_reg(lua_State *L, void *ptr);
02031 void _edje_lua_free_reg(lua_State *L, void *ptr);
02032 void _edje_lua_script_fn_new(Edje *ed);
02033 void _edje_lua_group_fn_new(Edje *ed);
02034 void _edje_lua_init();
02035 void _edje_lua_shutdown();
02036 
02037 void __edje_lua_error(const char *file, const char *fnc, int line, lua_State *L, int err_code);
02038 #define _edje_lua_error(L, err_code)                    \
02039   __edje_lua_error(__FILE__, __FUNCTION__, __LINE__, L, err_code)
02040 
02041 Eina_Bool  _edje_lua_script_only(Edje *ed);
02042 void _edje_lua_script_only_init(Edje *ed);
02043 void _edje_lua_script_only_shutdown(Edje *ed);
02044 void _edje_lua_script_only_show(Edje *ed);
02045 void _edje_lua_script_only_hide(Edje *ed);
02046 void _edje_lua_script_only_move(Edje *ed);
02047 void _edje_lua_script_only_resize(Edje *ed);
02048 void _edje_lua_script_only_message(Edje *ed, Edje_Message *em);
02049 
02050 void _edje_entry_init(Edje *ed);
02051 void _edje_entry_shutdown(Edje *ed);
02052 void _edje_entry_real_part_init(Edje_Real_Part *rp);
02053 void _edje_entry_real_part_shutdown(Edje_Real_Part *rp);
02054 void _edje_entry_real_part_configure(Edje_Real_Part *rp);
02055 const char *_edje_entry_selection_get(Edje_Real_Part *rp);
02056 const char *_edje_entry_text_get(Edje_Real_Part *rp);
02057 void _edje_entry_text_markup_set(Edje_Real_Part *rp, const char *text);
02058 void _edje_entry_text_markup_insert(Edje_Real_Part *rp, const char *text);
02059 void _edje_entry_text_markup_append(Edje_Real_Part *rp, const char *text);
02060 void _edje_entry_set_cursor_start(Edje_Real_Part *rp);
02061 void _edje_entry_set_cursor_end(Edje_Real_Part *rp);
02062 void _edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst);
02063 void _edje_entry_select_none(Edje_Real_Part *rp);
02064 void _edje_entry_select_all(Edje_Real_Part *rp);
02065 void _edje_entry_select_begin(Edje_Real_Part *rp);
02066 void _edje_entry_select_extend(Edje_Real_Part *rp);
02067 const Eina_List *_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor);
02068 const Eina_List *_edje_entry_anchors_list(Edje_Real_Part *rp);
02069 Eina_Bool _edje_entry_item_geometry_get(Edje_Real_Part *rp, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
02070 const Eina_List *_edje_entry_items_list(Edje_Real_Part *rp);
02071 void _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
02072 void _edje_entry_user_insert(Edje_Real_Part *rp, const char *text);
02073 void _edje_entry_select_allow_set(Edje_Real_Part *rp, Eina_Bool allow);
02074 Eina_Bool _edje_entry_select_allow_get(const Edje_Real_Part *rp);
02075 void _edje_entry_select_abort(Edje_Real_Part *rp);
02076 void *_edje_entry_imf_context_get(Edje_Real_Part *rp);
02077 Eina_Bool _edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur);
02078 Eina_Bool _edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur);
02079 Eina_Bool _edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur);
02080 Eina_Bool _edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur);
02081 void _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur);
02082 void _edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur);
02083 void _edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur);
02084 void _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur);
02085 Eina_Bool _edje_entry_cursor_coord_set(Edje_Real_Part *rp, Edje_Cursor cur, int x, int y);
02086 Eina_Bool _edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur);
02087 Eina_Bool _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur);
02088 char *_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur);
02089 void _edje_entry_cursor_pos_set(Edje_Real_Part *rp, Edje_Cursor cur, int pos);
02090 int _edje_entry_cursor_pos_get(Edje_Real_Part *rp, Edje_Cursor cur);
02091 void _edje_entry_imf_context_reset(Edje_Real_Part *rp);
02092 void _edje_entry_input_panel_layout_set(Edje_Real_Part *rp, Edje_Input_Panel_Layout layout);
02093 Edje_Input_Panel_Layout _edje_entry_input_panel_layout_get(Edje_Real_Part *rp);
02094 void _edje_entry_autocapital_type_set(Edje_Real_Part *rp, Edje_Text_Autocapital_Type autocapital_type);
02095 Edje_Text_Autocapital_Type _edje_entry_autocapital_type_get(Edje_Real_Part *rp);
02096 void _edje_entry_prediction_allow_set(Edje_Real_Part *rp, Eina_Bool prediction);
02097 Eina_Bool _edje_entry_prediction_allow_get(Edje_Real_Part *rp);
02098 void _edje_entry_input_panel_enabled_set(Edje_Real_Part *rp, Eina_Bool enabled);
02099 Eina_Bool _edje_entry_input_panel_enabled_get(Edje_Real_Part *rp);
02100 void _edje_entry_input_panel_show(Edje_Real_Part *rp);
02101 void _edje_entry_input_panel_hide(Edje_Real_Part *rp);
02102 void _edje_entry_input_panel_language_set(Edje_Real_Part *rp, Edje_Input_Panel_Lang lang);
02103 Edje_Input_Panel_Lang _edje_entry_input_panel_language_get(Edje_Real_Part *rp);
02104 void _edje_entry_input_panel_imdata_set(Edje_Real_Part *rp, const void *data, int len);
02105 void _edje_entry_input_panel_imdata_get(Edje_Real_Part *rp, void *data, int *len);
02106 void _edje_entry_input_panel_return_key_type_set(Edje_Real_Part *rp, Edje_Input_Panel_Return_Key_Type return_key_type);
02107 Edje_Input_Panel_Return_Key_Type _edje_entry_input_panel_return_key_type_get(Edje_Real_Part *rp);
02108 void _edje_entry_input_panel_return_key_disabled_set(Edje_Real_Part *rp, Eina_Bool disabled);
02109 Eina_Bool _edje_entry_input_panel_return_key_disabled_get(Edje_Real_Part *rp);
02110 
02111 void _edje_external_init();
02112 void _edje_external_shutdown();
02113 Evas_Object *_edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name);
02114 void _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *source);
02115 Eina_Bool _edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param) EINA_ARG_NONNULL(2);
02116 Eina_Bool _edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param) EINA_ARG_NONNULL(2);
02117 Evas_Object *_edje_external_content_get(const Evas_Object *obj, const char *content) EINA_ARG_NONNULL(1, 2);
02118 void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings);
02119 void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep,
02120                  Edje_Calc_Params *params,
02121                  Edje_Part_Description_Common *chosen_desc);
02122 void *_edje_external_params_parse(Evas_Object *obj, const Eina_List *params);
02123 void _edje_external_parsed_params_free(Evas_Object *obj, void *params);
02124 
02125 Eina_Module *_edje_module_handle_load(const char *module);
02126 void _edje_module_init();
02127 void _edje_module_shutdown();
02128 
02129 static inline Eina_Bool
02130 edje_program_is_strncmp(const char *str)
02131 {
02132    size_t length;
02133 
02134    length = strlen(str);
02135 
02136    if (strpbrk(str, "*?[\\") != str + length)
02137      return EINA_FALSE;
02138    if (str[length] == '['
02139        || str[length] == '\\')
02140      return EINA_FALSE;
02141    return EINA_TRUE;
02142 }
02143 
02144 static inline Eina_Bool
02145 edje_program_is_strrncmp(const char *str)
02146 {
02147    if (*str != '*' && *str != '?')
02148      return EINA_FALSE;
02149    if (strpbrk(str + 1, "*?[\\"))
02150      return EINA_FALSE;
02151    return EINA_TRUE;
02152 }
02153 void edje_object_propagate_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data);
02154 
02155 
02156 /* used by edje_cc - private still */
02157 EAPI void _edje_program_insert(Edje_Part_Collection *ed, Edje_Program *p);
02158 EAPI void _edje_program_remove(Edje_Part_Collection *ed, Edje_Program *p);
02159 
02160 void _edje_lua2_error_full(const char *file, const char *fnc, int line, lua_State *L, int err_code);
02161 #define _edje_lua2_error(L, err_code) _edje_lua2_error_full(__FILE__, __FUNCTION__, __LINE__, L, err_code)
02162 void _edje_lua2_script_init(Edje *ed);
02163 void _edje_lua2_script_shutdown(Edje *ed);
02164 void _edje_lua2_script_load(Edje_Part_Collection *edc, void *data, int size);
02165 void _edje_lua2_script_unload(Edje_Part_Collection *edc);
02166 
02167 void _edje_lua2_script_func_shutdown(Edje *ed);
02168 void _edje_lua2_script_func_show(Edje *ed);
02169 void _edje_lua2_script_func_hide(Edje *ed);
02170 void _edje_lua2_script_func_move(Edje *ed);
02171 void _edje_lua2_script_func_resize(Edje *ed);
02172 void _edje_lua2_script_func_message(Edje *ed, Edje_Message *em);
02173 void _edje_lua2_script_func_signal(Edje *ed, const char *sig, const char *src);
02174 
02175 const char *edje_string_get(const Edje_String *es);
02176 const char *edje_string_id_get(const Edje_String *es);
02177 
02178 void _edje_object_orientation_inform(Evas_Object *obj);
02179 
02180 void _edje_lib_ref(void);
02181 void _edje_lib_unref(void);
02182 
02183 void _edje_subobj_register(Edje *ed, Evas_Object *ob);
02184 void _edje_subobj_unregister(Edje *ed, Evas_Object *ob);
02185 
02186 void _edje_multisense_init(void);
02187 void _edje_multisense_shutdown(void);
02188 Eina_Bool _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, const double speed);
02189 Eina_Bool _edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const double duration);
02190 
02191 void _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *state);
02192 
02193 void _edje_user_definition_remove(Edje_User_Defined *eud, Evas_Object *child);
02194 void _edje_user_definition_free(Edje_User_Defined *eud);
02195 
02196 void _scale_set(Eo *obj, void *_pd, va_list *list);
02197 void _scale_get(Eo *obj, void *_pd, va_list *list);
02198 void _mirrored_get(Eo *obj, void *_pd, va_list *list);
02199 void _mirrored_set(Eo *obj, void *_pd, va_list *list);
02200 void _data_get(Eo *obj, void *_pd, va_list *list);
02201 void _freeze(Eo *obj, void *_pd, va_list *list);
02202 void _thaw(Eo *obj, void *_pd, va_list *list);
02203 void _color_class_set(Eo *obj, void *_pd, va_list *list);
02204 void _color_class_get(Eo *obj, void *_pd, va_list *list);
02205 void _text_class_set(Eo *obj, void *_pd, va_list *list);
02206 void _part_exists(Eo *obj, void *_pd, va_list *list);
02207 void _part_object_get(Eo *obj, void *_pd, va_list *list);
02208 void _part_geometry_get(Eo *obj, void *_pd, va_list *list);
02209 void _item_provider_set(Eo *obj, void *_pd, va_list *list);
02210 void _text_change_cb_set(Eo *obj, void *_pd, va_list *list);
02211 void _part_text_style_user_push(Eo *obj, void *_pd, va_list *list);
02212 void _part_text_style_user_pop(Eo *obj, void *_pd, va_list *list);
02213 void _part_text_style_user_peek(Eo *obj, void *_pd, va_list *list);
02214 void _part_text_set(Eo *obj, void *_pd, va_list *list);
02215 void _part_text_get(Eo *obj, void *_pd, va_list *list);
02216 void _part_text_escaped_set(Eo *obj, void *_pd, va_list *list);
02217 void _part_text_unescaped_set(Eo *obj, void *_pd, va_list *list);
02218 void _part_text_unescaped_get(Eo *obj, void *_pd, va_list *list);
02219 void _part_text_selection_get(Eo *obj, void *_pd, va_list *list);
02220 void _part_text_select_none(Eo *obj, void *_pd, va_list *list);
02221 void _part_text_select_all(Eo *obj, void *_pd, va_list *list);
02222 void _part_text_insert(Eo *obj, void *_pd, va_list *list);
02223 void _part_text_append(Eo *obj, void *_pd, va_list *list);
02224 void _part_text_anchor_list_get(Eo *obj, void *_pd, va_list *list);
02225 void _part_text_anchor_geometry_get(Eo *obj, void *_pd, va_list *list);
02226 void _part_text_item_list_get(Eo *obj, void *_pd, va_list *list);
02227 void _part_text_item_geometry_get(Eo *obj, void *_pd, va_list *list);
02228 void _part_text_cursor_geometry_get(Eo *obj, void *_pd, va_list *list);
02229 void _part_text_user_insert(Eo *obj, void *_pd, va_list *list);
02230 void _part_text_select_allow_set(Eo *obj, void *_pd, va_list *list);
02231 void _part_text_select_abort(Eo *obj, void *_pd, va_list *list);
02232 void _part_text_select_begin(Eo *obj, void *_pd, va_list *list);
02233 void _part_text_select_extend(Eo *obj, void *_pd, va_list *list);
02234 void _part_text_imf_context_get(Eo *obj, void *_pd, va_list *list);
02235 void _part_text_cursor_next(Eo *obj, void *_pd, va_list *list);
02236 void _part_text_cursor_prev(Eo *obj, void *_pd, va_list *list);
02237 void _part_text_cursor_up(Eo *obj, void *_pd, va_list *list);
02238 void _part_text_cursor_down(Eo *obj, void *_pd, va_list *list);
02239 void _part_text_cursor_begin_set(Eo *obj, void *_pd, va_list *list);
02240 void _part_text_cursor_end_set(Eo *obj, void *_pd, va_list *list);
02241 void _part_text_cursor_copy(Eo *obj, void *_pd, va_list *list);
02242 void _part_text_cursor_line_begin_set(Eo *obj, void *_pd, va_list *list);
02243 void _part_text_cursor_line_end_set(Eo *obj, void *_pd, va_list *list);
02244 void _part_text_cursor_coord_set(Eo *obj, void *_pd, va_list *list);
02245 void _part_text_cursor_is_format_get(Eo *obj, void *_pd, va_list *list);
02246 void _part_text_cursor_is_visible_format_get(Eo *obj, void *_pd, va_list *list);
02247 void _part_text_cursor_content_get(Eo *obj, void *_pd, va_list *list);
02248 void _part_text_cursor_pos_set(Eo *obj, void *_pd, va_list *list);
02249 void _part_text_cursor_pos_get(Eo *obj, void *_pd, va_list *list);
02250 void _part_text_imf_context_reset(Eo *obj, void *_pd, va_list *list);
02251 void _part_text_input_panel_layout_set(Eo *obj, void *_pd, va_list *list);
02252 void _part_text_input_panel_layout_get(Eo *obj, void *_pd, va_list *list);
02253 void _part_text_autocapital_type_set(Eo *obj, void *_pd, va_list *list);
02254 void _part_text_autocapital_type_get(Eo *obj, void *_pd, va_list *list);
02255 void _part_text_prediction_allow_set(Eo *obj, void *_pd, va_list *list);
02256 void _part_text_prediction_allow_get(Eo *obj, void *_pd, va_list *list);
02257 void _part_text_input_panel_enabled_set(Eo *obj, void *_pd, va_list *list);
02258 void _part_text_input_panel_enabled_get(Eo *obj, void *_pd, va_list *list);
02259 void _part_text_input_panel_show(Eo *obj, void *_pd, va_list *list);
02260 void _part_text_input_panel_hide(Eo *obj, void *_pd, va_list *list);
02261 void _part_text_input_panel_language_set(Eo *obj, void *_pd, va_list *list);
02262 void _part_text_input_panel_language_get(Eo *obj, void *_pd, va_list *list);
02263 void _part_text_input_panel_imdata_set(Eo *obj, void *_pd, va_list *list);
02264 void _part_text_input_panel_imdata_get(Eo *obj, void *_pd, va_list *list);
02265 void _part_text_input_panel_return_key_type_set(Eo *obj, void *_pd, va_list *list);
02266 void _part_text_input_panel_return_key_type_get(Eo *obj, void *_pd, va_list *list);
02267 void _part_text_input_panel_return_key_disabled_set(Eo *obj, void *_pd, va_list *list);
02268 void _part_text_input_panel_return_key_disabled_get(Eo *obj, void *_pd, va_list *list);
02269 void _text_insert_filter_callback_add(Eo *obj, void *_pd, va_list *list);
02270 void _text_insert_filter_callback_del(Eo *obj, void *_pd, va_list *list);
02271 void _text_insert_filter_callback_del_full(Eo *obj, void *_pd, va_list *list);
02272 void _text_markup_filter_callback_add(Eo *obj, void *_pd, va_list *list);
02273 void _text_markup_filter_callback_del(Eo *obj, void *_pd, va_list *list);
02274 void _text_markup_filter_callback_del_full(Eo *obj, void *_pd, va_list *list);
02275 void _part_swallow(Eo *obj, void *_pd, va_list *list);
02276 void _part_unswallow(Eo *obj, void *_pd, va_list *list);
02277 void _part_swallow_get(Eo *obj, void *_pd, va_list *list);
02278 void _size_min_get(Eo *obj, void *_pd, va_list *list);
02279 void _size_max_get(Eo *obj, void *_pd, va_list *list);
02280 void _calc_force(Eo *obj, void *_pd, va_list *list);
02281 void _size_min_calc(Eo *obj, void *_pd, va_list *list);
02282 void _parts_extends_calc(Eo *obj, void *_pd, va_list *list);
02283 void _size_min_restricted_calc(Eo *obj, void *_pd, va_list *list);
02284 void _part_state_get(Eo *obj, void *_pd, va_list *list);
02285 void _part_drag_dir_get(Eo *obj, void *_pd, va_list *list);
02286 void _part_drag_value_set(Eo *obj, void *_pd, va_list *list);
02287 void _part_drag_value_get(Eo *obj, void *_pd, va_list *list);
02288 void _part_drag_size_set(Eo *obj, void *_pd, va_list *list);
02289 void _part_drag_size_get(Eo *obj, void *_pd, va_list *list);
02290 void _part_drag_step_set(Eo *obj, void *_pd, va_list *list);
02291 void _part_drag_step_get(Eo *obj, void *_pd, va_list *list);
02292 void _part_drag_page_set(Eo *obj, void *_pd, va_list *list);
02293 void _part_drag_page_get(Eo *obj, void *_pd, va_list *list);
02294 void _part_drag_step(Eo *obj, void *_pd, va_list *list);
02295 void _part_drag_page(Eo *obj, void *_pd, va_list *list);
02296 void _part_box_append(Eo *obj, void *_pd, va_list *list);
02297 void _part_box_prepend(Eo *obj, void *_pd, va_list *list);
02298 void _part_box_insert_before(Eo *obj, void *_pd, va_list *list);
02299 void _part_box_insert_at(Eo *obj, void *_pd, va_list *list);
02300 void _part_box_remove(Eo *obj, void *_pd, va_list *list);
02301 void _part_box_remove_at(Eo *obj, void *_pd, va_list *list);
02302 void _part_box_remove_all(Eo *obj, void *_pd, va_list *list);
02303 void _access_part_list_get(Eo *obj, void *_pd, va_list *list);
02304 void _part_table_child_get(Eo *obj, void *_pd, va_list *list);
02305 void _part_table_pack(Eo *obj, void *_pd, va_list *list);
02306 void _part_table_unpack(Eo *obj, void *_pd, va_list *list);
02307 void _part_table_col_row_size_get(Eo *obj, void *_pd, va_list *list);
02308 void _part_table_clear(Eo *obj, void *_pd, va_list *list);
02309 void _perspective_set(Eo *obj, void *_pd, va_list *list);
02310 void _perspective_get(Eo *obj, void *_pd, va_list *list);
02311 void _preload(Eo *obj, void *_pd, va_list *list);
02312 void _update_hints_set(Eo *obj, void *_pd, va_list *list);
02313 void _update_hints_get(Eo *obj, void *_pd, va_list *list);
02314 
02315 void _part_external_object_get(Eo *obj, void *_pd, va_list *list);
02316 void _part_external_param_set(Eo *obj, void *_pd, va_list *list);
02317 void _part_external_param_get(Eo *obj, void *_pd, va_list *list);
02318 void _part_external_content_get(Eo *obj, void *_pd, va_list *list);
02319 void _part_external_param_type_get(Eo *obj, void *_pd, va_list *list);
02320 
02321 void _file_get(Eo *obj, void *_pd, va_list *list);
02322 void _load_error_get(Eo *obj, void *_pd, va_list *list);
02323 
02324 void _message_send(Eo *obj, void *_pd, va_list *list);
02325 void _message_handler_set(Eo *obj, void *_pd, va_list *list);
02326 void _message_signal_process(Eo *obj, void *_pd, va_list *list);
02327 
02328 void _signal_callback_add(Eo *obj, void *_pd, va_list *list);
02329 void _signal_callback_del(Eo *obj, void *_pd, va_list *list);
02330 void _signal_callback_del_full(Eo *obj, void *_pd, va_list *list);
02331 void _signal_emit(Eo *obj, void *_pd, va_list *list);
02332 void _play_set(Eo *obj, void *_pd, va_list *list);
02333 void _play_get(Eo *obj, void *_pd, va_list *list);
02334 void _animation_set(Eo *obj, void *_pd, va_list *list);
02335 void _animation_get(Eo *obj, void *_pd, va_list *list);
02336 
02337 #ifdef HAVE_LIBREMIX
02338 #include <remix/remix.h>
02339 #endif
02340 #include <Eina.h>
02341 
02342 typedef struct _Edje_Multisense_Env  Edje_Multisense_Env;
02343 
02344 struct _Edje_Multisense_Env
02345 {
02346 #ifdef HAVE_LIBREMIX
02347    RemixEnv *remixenv;
02348 #endif
02349 };
02350 
02351 typedef Eina_Bool (*MULTISENSE_FACTORY_INIT_FUNC) (Edje_Multisense_Env *);
02352 #ifdef HAVE_LIBREMIX
02353 typedef RemixBase* (*MULTISENSE_SOUND_PLAYER_GET_FUNC) (Edje_Multisense_Env *);
02354 #endif
02355 
02356 #endif