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