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 HAVE_ALLOCA_H 00013 # include <alloca.h> 00014 #elif defined __GNUC__ 00015 # define alloca __builtin_alloca 00016 #elif defined _AIX 00017 # define alloca __alloca 00018 #elif defined _MSC_VER 00019 # include <malloc.h> 00020 # define alloca _alloca 00021 #else 00022 # include <stddef.h> 00023 void *alloca (size_t); 00024 #endif 00025 00026 #include <string.h> 00027 #include <limits.h> 00028 #include <sys/stat.h> 00029 #include <time.h> 00030 #include <sys/time.h> 00031 #include <errno.h> 00032 00033 #ifndef _MSC_VER 00034 # include <libgen.h> 00035 # include <unistd.h> 00036 #endif 00037 00038 #include <lua.h> 00039 #include <lualib.h> 00040 #include <lauxlib.h> 00041 #include <setjmp.h> 00042 00043 #ifdef HAVE_LOCALE_H 00044 # include <locale.h> 00045 #endif 00046 00047 #ifdef HAVE_EVIL 00048 # include <Evil.h> 00049 #endif 00050 00051 #include <Eina.h> 00052 #include <Eet.h> 00053 #include <Evas.h> 00054 #include <Ecore.h> 00055 #include <Ecore_File.h> 00056 #ifdef HAVE_ECORE_IMF 00057 # include <Ecore_IMF.h> 00058 # include <Ecore_IMF_Evas.h> 00059 #endif 00060 #include <Embryo.h> 00061 00062 #include "Edje.h" 00063 00064 EAPI extern int _edje_default_log_dom ; 00065 00066 #ifdef EDJE_DEFAULT_LOG_COLOR 00067 # undef EDJE_DEFAULT_LOG_COLOR 00068 #endif 00069 #define EDJE_DEFAULT_LOG_COLOR EINA_COLOR_CYAN 00070 #ifdef ERR 00071 # undef ERR 00072 #endif 00073 #define ERR(...) EINA_LOG_DOM_ERR(_edje_default_log_dom, __VA_ARGS__) 00074 #ifdef INF 00075 # undef INF 00076 #endif 00077 #define INF(...) EINA_LOG_DOM_INFO(_edje_default_log_dom, __VA_ARGS__) 00078 #ifdef WRN 00079 # undef WRN 00080 #endif 00081 #define WRN(...) EINA_LOG_DOM_WARN(_edje_default_log_dom, __VA_ARGS__) 00082 #ifdef CRIT 00083 # undef CRIT 00084 #endif 00085 #define CRIT(...) EINA_LOG_DOM_CRIT(_edje_default_log_dom, __VA_ARGS__) 00086 #ifdef __GNUC__ 00087 # if __GNUC__ >= 4 00088 // BROKEN in gcc 4 on amd64 00089 //# pragma GCC visibility push(hidden) 00090 # endif 00091 #endif 00092 00093 #ifndef ABS 00094 #define ABS(x) ((x) < 0 ? -(x) : (x)) 00095 #endif 00096 00097 #ifndef CLAMP 00098 #define CLAMP(x, min, max) (((x) > (max)) ? (max) : (((x) < (min)) ? (min) : (x))) 00099 #endif 00100 00101 #ifndef MIN 00102 #define MIN(a, b) (((a) < (b)) ? (a) : (b)) 00103 #endif 00104 00105 00106 #ifdef BUILD_EDJE_FP 00107 00108 #define FLOAT_T Eina_F32p32 00109 #define EDJE_T_FLOAT EET_T_F32P32 00110 #define MUL(a, b) eina_f32p32_mul(a, b) 00111 #define SCALE(a, b) eina_f32p32_scale(a, b) 00112 #define DIV(a, b) eina_f32p32_div(a, b) 00113 #define DIV2(a) ((a) >> 1) 00114 #define ADD(a, b) eina_f32p32_add(a, b) 00115 #define SUB(a, b) eina_f32p32_sub(a, b) 00116 #define SQRT(a) eina_f32p32_sqrt(a) 00117 #define TO_DOUBLE(a) eina_f32p32_double_to(a) 00118 #define FROM_DOUBLE(a) eina_f32p32_double_from(a) 00119 #define FROM_INT(a) eina_f32p32_int_from(a) 00120 #define TO_INT(a) eina_f32p32_int_to(a) 00121 #define ZERO 0 00122 #define COS(a) eina_f32p32_cos(a) 00123 #define SIN(a) eina_f32p32_sin(a) 00124 #define PI EINA_F32P32_PI 00125 00126 #else 00127 00128 #define FLOAT_T double 00129 #define EDJE_T_FLOAT EET_T_DOUBLE 00130 #define MUL(a, b) ((a) * (b)) 00131 #define SCALE(a, b) ((a) * (double)(b)) 00132 #define DIV(a, b) ((a) / (b)) 00133 #define DIV2(a) ((a) / 2.0) 00134 #define ADD(a, b) ((a) + (b)) 00135 #define SUB(a, b) ((a) - (b)) 00136 #define SQRT(a) sqrt(a) 00137 #define TO_DOUBLE(a) (double)(a) 00138 #define FROM_DOUBLE(a) (a) 00139 #define FROM_INT(a) (double)(a) 00140 #define TO_INT(a) (int)(a) 00141 #define ZERO 0.0 00142 #define COS(a) cos(a) 00143 #define SIN(a) sin(a) 00144 #define PI 3.14159265358979323846 00145 00146 #endif 00147 00148 /* Inheritable Edje Smart API. For now private so only Edje Edit makes 00149 * use of this, but who knows what will be possible in the future */ 00150 #define EDJE_SMART_API_VERSION 1 00151 00152 typedef struct _Edje_Smart_Api Edje_Smart_Api; 00153 00154 struct _Edje_Smart_Api 00155 { 00156 Evas_Smart_Class base; 00157 int version; 00158 Eina_Bool (*file_set)(Evas_Object *obj, const char *file, const char *group); 00159 }; 00160 00161 /* Basic macro to init the Edje Smart API */ 00162 #define EDJE_SMART_API_INIT(smart_class_init) {smart_class_init, EDJE_SMART_API_VERSION, NULL} 00163 00164 #define EDJE_SMART_API_INIT_NULL EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_NULL) 00165 #define EDJE_SMART_API_INIT_VERSION EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_VERSION) 00166 #define EDJE_SMART_API_INIT_NAME_VERSION(name) EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name)) 00167 00168 /* increment this when the EET data descriptors have changed and old 00169 * EETs cannot be loaded/used correctly anymore. 00170 */ 00171 #define EDJE_FILE_VERSION 3 00172 /* increment this when you add new feature to edje file format without 00173 * breaking backward compatibility. 00174 */ 00175 #define EDJE_FILE_MINOR 1 00176 00177 /* FIXME: 00178 * 00179 * More example Edje files 00180 * 00181 * ? programs can do multiple actions from one signal 00182 * ? add containering (hbox, vbox, table, wrapping multi-line hbox & vbox) 00183 * ? text entry widget (single line only) 00184 * 00185 * ? recursions, unsafe callbacks outside Edje etc. with freeze, ref/unref and block/unblock and break_programs needs to be redesigned & fixed 00186 * ? all unsafe calls that may result in callbacks must be marked and dealt with 00187 */ 00188 00189 typedef enum 00190 { 00191 EDJE_ASPECT_PREFER_NONE, 00192 EDJE_ASPECT_PREFER_VERTICAL, 00193 EDJE_ASPECT_PREFER_HORIZONTAL, 00194 EDJE_ASPECT_PREFER_BOTH 00195 } Edje_Internal_Aspect; 00196 00197 struct _Edje_Perspective 00198 { 00199 Evas_Object *obj; 00200 Evas *e; 00201 Evas_Coord px, py, z0, foc; 00202 Eina_List *users; 00203 Eina_Bool global : 1; 00204 }; 00205 00206 struct _Edje_Position_Scale 00207 { 00208 FLOAT_T x, y; 00209 }; 00210 00211 struct _Edje_Position 00212 { 00213 int x, y; 00214 }; 00215 00216 struct _Edje_Size 00217 { 00218 int w, h; 00219 }; 00220 00221 struct _Edje_Rectangle 00222 { 00223 int x, y, w, h; 00224 }; 00225 00226 struct _Edje_Color 00227 { 00228 unsigned char r, g, b, a; 00229 }; 00230 00231 struct _Edje_Aspect_Prefer 00232 { 00233 FLOAT_T min, max; 00234 Edje_Internal_Aspect prefer; 00235 }; 00236 00237 struct _Edje_Aspect 00238 { 00239 int w, h; 00240 Edje_Aspect_Control mode; 00241 }; 00242 00243 struct _Edje_String 00244 { 00245 const char *str; 00246 unsigned int id; 00247 }; 00248 00249 typedef struct _Edje_Position_Scale Edje_Alignment; 00250 typedef struct _Edje_Position_Scale Edje_Position_Scale; 00251 typedef struct _Edje_Position Edje_Position; 00252 typedef struct _Edje_Size Edje_Size; 00253 typedef struct _Edje_Rectangle Edje_Rectangle; 00254 typedef struct _Edje_Color Edje_Color; 00255 typedef struct _Edje_Aspect_Prefer Edje_Aspect_Prefer; 00256 typedef struct _Edje_Aspect Edje_Aspect; 00257 typedef struct _Edje_String Edje_String; 00258 00259 typedef struct _Edje_File Edje_File; 00260 typedef struct _Edje_Style Edje_Style; 00261 typedef struct _Edje_Style_Tag Edje_Style_Tag; 00262 typedef struct _Edje_External_Directory Edje_External_Directory; 00263 typedef struct _Edje_External_Directory_Entry Edje_External_Directory_Entry; 00264 typedef struct _Edje_Font_Directory_Entry Edje_Font_Directory_Entry; 00265 typedef struct _Edje_Image_Directory Edje_Image_Directory; 00266 typedef struct _Edje_Image_Directory_Entry Edje_Image_Directory_Entry; 00267 typedef struct _Edje_Image_Directory_Set Edje_Image_Directory_Set; 00268 typedef struct _Edje_Image_Directory_Set_Entry Edje_Image_Directory_Set_Entry; 00269 typedef struct _Edje_Program Edje_Program; 00270 typedef struct _Edje_Program_Target Edje_Program_Target; 00271 typedef struct _Edje_Program_After Edje_Program_After; 00272 typedef struct _Edje_Part_Collection_Directory_Entry Edje_Part_Collection_Directory_Entry; 00273 typedef struct _Edje_Pack_Element Edje_Pack_Element; 00274 typedef struct _Edje_Part_Collection Edje_Part_Collection; 00275 typedef struct _Edje_Part Edje_Part; 00276 typedef struct _Edje_Part_Api Edje_Part_Api; 00277 typedef struct _Edje_Part_Dragable Edje_Part_Dragable; 00278 typedef struct _Edje_Part_Image_Id Edje_Part_Image_Id; 00279 typedef struct _Edje_Part_Description_Image Edje_Part_Description_Image; 00280 typedef struct _Edje_Part_Description_Text Edje_Part_Description_Text; 00281 typedef struct _Edje_Part_Description_Box Edje_Part_Description_Box; 00282 typedef struct _Edje_Part_Description_Table Edje_Part_Description_Table; 00283 typedef struct _Edje_Part_Description_External Edje_Part_Description_External; 00284 typedef struct _Edje_Part_Description_Common Edje_Part_Description_Common; 00285 typedef struct _Edje_Part_Description_Spec_Fill Edje_Part_Description_Spec_Fill; 00286 typedef struct _Edje_Part_Description_Spec_Border Edje_Part_Description_Spec_Border; 00287 typedef struct _Edje_Part_Description_Spec_Image Edje_Part_Description_Spec_Image; 00288 typedef struct _Edje_Part_Description_Spec_Text Edje_Part_Description_Spec_Text; 00289 typedef struct _Edje_Part_Description_Spec_Box Edje_Part_Description_Spec_Box; 00290 typedef struct _Edje_Part_Description_Spec_Table Edje_Part_Description_Spec_Table; 00291 typedef struct _Edje_Patterns Edje_Patterns; 00292 typedef struct _Edje_Part_Box_Animation Edje_Part_Box_Animation; 00293 00294 #define EDJE_INF_MAX_W 100000 00295 #define EDJE_INF_MAX_H 100000 00296 00297 #define EDJE_IMAGE_SOURCE_TYPE_NONE 0 00298 #define EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT 1 00299 #define EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY 2 00300 #define EDJE_IMAGE_SOURCE_TYPE_EXTERNAL 3 00301 #define EDJE_IMAGE_SOURCE_TYPE_LAST 4 00302 00303 #define EDJE_VAR_NONE 0 00304 #define EDJE_VAR_INT 1 00305 #define EDJE_VAR_FLOAT 2 00306 #define EDJE_VAR_STRING 3 00307 #define EDJE_VAR_LIST 4 00308 #define EDJE_VAR_HASH 5 00309 00310 #define EDJE_VAR_MAGIC_BASE 0x12fe84ba 00311 00312 #define EDJE_STATE_PARAM_NONE 0 00313 #define EDJE_STATE_PARAM_ALIGNMENT 1 00314 #define EDJE_STATE_PARAM_MIN 2 00315 #define EDJE_STATE_PARAM_MAX 3 00316 #define EDJE_STATE_PARAM_STEP 4 00317 #define EDJE_STATE_PARAM_ASPECT 5 00318 #define EDJE_STATE_PARAM_ASPECT_PREF 6 00319 #define EDJE_STATE_PARAM_COLOR 7 00320 #define EDJE_STATE_PARAM_COLOR2 8 00321 #define EDJE_STATE_PARAM_COLOR3 9 00322 #define EDJE_STATE_PARAM_COLOR_CLASS 10 00323 #define EDJE_STATE_PARAM_REL1 11 00324 #define EDJE_STATE_PARAM_REL1_TO 12 00325 #define EDJE_STATE_PARAM_REL1_OFFSET 13 00326 #define EDJE_STATE_PARAM_REL2 14 00327 #define EDJE_STATE_PARAM_REL2_TO 15 00328 #define EDJE_STATE_PARAM_REL2_OFFSET 16 00329 #define EDJE_STATE_PARAM_IMAGE 17 00330 #define EDJE_STATE_PARAM_BORDER 18 00331 #define EDJE_STATE_PARAM_FILL_SMOOTH 19 00332 #define EDJE_STATE_PARAM_FILL_POS 20 00333 #define EDJE_STATE_PARAM_FILL_SIZE 21 00334 #define EDJE_STATE_PARAM_TEXT 22 00335 #define EDJE_STATE_PARAM_TEXT_CLASS 23 00336 #define EDJE_STATE_PARAM_TEXT_FONT 24 00337 #define EDJE_STATE_PARAM_TEXT_STYLE 25 00338 #define EDJE_STATE_PARAM_TEXT_SIZE 26 00339 #define EDJE_STATE_PARAM_TEXT_FIT 27 00340 #define EDJE_STATE_PARAM_TEXT_MIN 28 00341 #define EDJE_STATE_PARAM_TEXT_MAX 29 00342 #define EDJE_STATE_PARAM_TEXT_ALIGN 30 00343 #define EDJE_STATE_PARAM_VISIBLE 31 00344 #define EDJE_STATE_PARAM_MAP_OM 32 00345 #define EDJE_STATE_PARAM_MAP_PERSP 33 00346 #define EDJE_STATE_PARAM_MAP_LIGNT 34 00347 #define EDJE_STATE_PARAM_MAP_ROT_CENTER 35 00348 #define EDJE_STATE_PARAM_MAP_ROT_X 36 00349 #define EDJE_STATE_PARAM_MAP_ROT_Y 37 00350 #define EDJE_STATE_PARAM_MAP_ROT_Z 38 00351 #define EDJE_STATE_PARAM_MAP_BACK_CULL 39 00352 #define EDJE_STATE_PARAM_MAP_PERSP_ON 40 00353 #define EDJE_STATE_PARAM_PERSP_ZPLANE 41 00354 #define EDJE_STATE_PARAM_PERSP_FOCAL 42 00355 #define EDJE_STATE_PARAM_LAST 43 00356 00357 #define EDJE_ENTRY_EDIT_MODE_NONE 0 00358 #define EDJE_ENTRY_EDIT_MODE_SELECTABLE 1 00359 #define EDJE_ENTRY_EDIT_MODE_EDITABLE 2 00360 #define EDJE_ENTRY_EDIT_MODE_PASSWORD 3 00361 00362 #define EDJE_ENTRY_SELECTION_MODE_DEFAULT 0 00363 #define EDJE_ENTRY_SELECTION_MODE_EXPLICIT 1 00364 00365 #define EDJE_PART_PATH_SEPARATOR ':' 00366 #define EDJE_PART_PATH_SEPARATOR_STRING ":" 00367 #define EDJE_PART_PATH_SEPARATOR_INDEXL '[' 00368 #define EDJE_PART_PATH_SEPARATOR_INDEXR ']' 00369 /*----------*/ 00370 00371 struct _Edje_File 00372 { 00373 const char *path; 00374 time_t mtime; 00375 00376 Edje_External_Directory *external_dir; 00377 Edje_Image_Directory *image_dir; 00378 Eina_List *styles; 00379 Eina_List *color_classes; 00380 00381 int references; 00382 const char *compiler; 00383 int version; 00384 int minor; 00385 int feature_ver; 00386 00387 Eina_Hash *data; 00388 Eina_Hash *fonts; 00389 00390 Eina_Hash *collection; 00391 Eina_List *collection_cache; 00392 00393 Edje_Patterns *collection_patterns; 00394 00395 Eet_File *ef; 00396 00397 unsigned char free_strings : 1; 00398 unsigned char dangling : 1; 00399 unsigned char warning : 1; 00400 }; 00401 00402 struct _Edje_Style 00403 { 00404 char *name; 00405 Eina_List *tags; 00406 Evas_Textblock_Style *style; 00407 }; 00408 00409 struct _Edje_Style_Tag 00410 { 00411 const char *key; 00412 const char *value; 00413 const char *font; 00414 double font_size; 00415 const char *text_class; 00416 }; 00417 00418 /*----------*/ 00419 00420 00421 struct _Edje_Font_Directory_Entry 00422 { 00423 const char *entry; /* the name of the font */ 00424 const char *file; /* the name of the file */ 00425 }; 00426 00427 /*----------*/ 00428 00429 struct _Edje_External_Directory 00430 { 00431 Edje_External_Directory_Entry *entries; /* a list of Edje_External_Directory_Entry */ 00432 unsigned int entries_count; 00433 }; 00434 00435 struct _Edje_External_Directory_Entry 00436 { 00437 const char *entry; /* the name of the external */ 00438 }; 00439 00440 00441 /*----------*/ 00442 00443 00444 00445 /*----------*/ 00446 00447 struct _Edje_Image_Directory 00448 { 00449 Edje_Image_Directory_Entry *entries; /* an array of Edje_Image_Directory_Entry */ 00450 unsigned int entries_count; 00451 00452 Edje_Image_Directory_Set *sets; 00453 unsigned int sets_count; /* an array of Edje_Image_Directory_Set */ 00454 }; 00455 00456 struct _Edje_Image_Directory_Entry 00457 { 00458 const char *entry; /* the nominal name of the image - if any */ 00459 int source_type; /* alternate source mode. 0 = none */ 00460 int source_param; /* extra params on encoding */ 00461 int id; /* the id no. of the image */ 00462 }; 00463 00464 struct _Edje_Image_Directory_Set 00465 { 00466 char *name; 00467 Eina_List *entries; 00468 00469 int id; 00470 }; 00471 00472 struct _Edje_Image_Directory_Set_Entry 00473 { 00474 const char *name; 00475 int id; 00476 00477 struct { 00478 struct { 00479 int w; 00480 int h; 00481 } min, max; 00482 } size; 00483 }; 00484 00485 /*----------*/ 00486 00487 struct _Edje_Program /* a conditional program to be run */ 00488 { 00489 int id; /* id of program */ 00490 const char *name; /* name of the action */ 00491 00492 const char *signal; /* if signal emission name matches the glob here... */ 00493 const char *source; /* if part that emitted this (name) matches this glob */ 00494 00495 struct { 00496 const char *part; 00497 const char *state; /* if state is not set, we will try with source */ 00498 } filter; /* the part filter.part should be in state filter.state for signal to be accepted */ 00499 00500 struct { 00501 double from; 00502 double range; 00503 } in; 00504 00505 int action; /* type - set state, stop action, set drag pos etc. */ 00506 const char *state; /* what state of alternates to apply, NULL = default */ 00507 const char *state2; /* what other state to use - for signal emit action */ 00508 double value; /* value of state to apply (if multiple names match) */ 00509 double value2; /* other value for drag actions */ 00510 00511 struct { 00512 int mode; /* how to tween - linear, sinusoidal etc. */ 00513 FLOAT_T time; /* time to graduate between current and new state */ 00514 } tween; 00515 00516 Eina_List *targets; /* list of target parts to apply the state to */ 00517 00518 Eina_List *after; /* list of actions to run at the end of this, for looping */ 00519 00520 struct { 00521 const char *name; 00522 const char *description; 00523 } api; 00524 00525 /* used for PARAM_COPY (param names in state and state2 above!) */ 00526 struct { 00527 int src; /* part where parameter is being retrieved */ 00528 int dst; /* part where parameter is being stored */ 00529 } param; 00530 }; 00531 00532 struct _Edje_Program_Target /* the target of an action */ 00533 { 00534 int id; /* just the part id no, or action id no */ 00535 }; 00536 00537 struct _Edje_Program_After /* the action to run after another action */ 00538 { 00539 int id; 00540 }; 00541 00542 /*----------*/ 00543 00544 struct _Edje_Part_Collection_Directory_Entry 00545 { 00546 const char *entry; /* the nominal name of the part collection */ 00547 int id; /* the id of this named part collection */ 00548 00549 struct 00550 { 00551 int RECTANGLE; 00552 int TEXT; 00553 int IMAGE; 00554 int SWALLOW; 00555 int TEXTBLOCK; 00556 int GROUP; 00557 int BOX; 00558 int TABLE; 00559 int EXTERNAL; 00560 int part; 00561 } count; 00562 00563 struct 00564 { 00565 Eina_Mempool *RECTANGLE; 00566 Eina_Mempool *TEXT; 00567 Eina_Mempool *IMAGE; 00568 Eina_Mempool *SWALLOW; 00569 Eina_Mempool *TEXTBLOCK; 00570 Eina_Mempool *GROUP; 00571 Eina_Mempool *BOX; 00572 Eina_Mempool *TABLE; 00573 Eina_Mempool *EXTERNAL; 00574 Eina_Mempool *part; 00575 } mp; 00576 00577 Edje_Part_Collection *ref; 00578 }; 00579 00580 /*----------*/ 00581 00582 /*----------*/ 00583 00584 struct _Edje_Pack_Element 00585 { 00586 unsigned char type; /* only GROUP supported for now */ 00587 const char *name; /* if != NULL, will be set with evas_object_name_set */ 00588 const char *source; /* group name to use as source for this element */ 00589 Edje_Size min, prefer, max; 00590 struct { 00591 int l, r, t, b; 00592 } padding; 00593 Edje_Alignment align; 00594 Edje_Alignment weight; 00595 Edje_Aspect aspect; 00596 const char *options; /* extra options for custom objects */ 00597 /* table specific follows */ 00598 int col, row; 00599 unsigned short colspan, rowspan; 00600 }; 00601 00602 /*----------*/ 00603 00604 struct _Edje_Part_Collection 00605 { 00606 struct { /* list of Edje_Program */ 00607 Edje_Program **fnmatch; /* complex match with "*?[\" */ 00608 unsigned int fnmatch_count; 00609 00610 Edje_Program **strcmp; /* No special caractere, plain strcmp does the work */ 00611 unsigned int strcmp_count; 00612 00613 Edje_Program **strncmp; /* Finish by * or ?, plain strncmp does the work */ 00614 unsigned int strncmp_count; 00615 00616 Edje_Program **strrncmp; /* Start with * or ?, reverse strncmp will do the job */ 00617 unsigned int strrncmp_count; 00618 00619 Edje_Program **nocmp; /* Empty signal/source that will never match */ 00620 unsigned int nocmp_count; 00621 } programs; 00622 00623 Edje_Part **parts; /* an array of Edje_Part */ 00624 unsigned int parts_count; 00625 00626 Eina_Hash *data; 00627 00628 int id; /* the collection id */ 00629 00630 Eina_Hash *alias; /* aliasing part */ 00631 Eina_Hash *aliased; /* invert match of alias */ 00632 00633 struct { 00634 Edje_Size min, max; 00635 } prop; 00636 00637 int references; 00638 00639 #ifdef EDJE_PROGRAM_CACHE 00640 struct { 00641 Eina_Hash *no_matches; 00642 Eina_Hash *matches; 00643 } prog_cache; 00644 #endif 00645 00646 Embryo_Program *script; /* all the embryo script code for this group */ 00647 const char *part; 00648 00649 unsigned char script_only; 00650 00651 unsigned char lua_script_only; 00652 00653 unsigned char checked : 1; 00654 }; 00655 00656 struct _Edje_Part_Dragable 00657 { 00658 int step_x; /* drag jumps n pixels (0 = no limit) */ 00659 int step_y; /* drag jumps n pixels (0 = no limit) */ 00660 00661 int count_x; /* drag area divided by n (0 = no limit) */ 00662 int count_y; /* drag area divided by n (0 = no limit) */ 00663 00664 int confine_id; /* dragging within this bit, -1 = no */ 00665 00666 /* davinchi */ 00667 int event_id; /* If it is used as scrollbar */ 00668 00669 signed char x; /* can u click & drag this bit in x dir */ 00670 signed char y; /* can u click & drag this bit in y dir */ 00671 }; 00672 00673 struct _Edje_Part_Api 00674 { 00675 const char *name; 00676 const char *description; 00677 }; 00678 00679 typedef struct _Edje_Part_Description_List Edje_Part_Description_List; 00680 struct _Edje_Part_Description_List 00681 { 00682 Edje_Part_Description_Common **desc; 00683 unsigned int desc_count; 00684 }; 00685 00686 struct _Edje_Part 00687 { 00688 const char *name; /* the name if any of the part */ 00689 Edje_Part_Description_Common *default_desc; /* the part descriptor for default */ 00690 00691 Edje_Part_Description_List other; /* other possible descriptors */ 00692 00693 const char *source, *source2, *source3, *source4, *source5, *source6; 00694 int id; /* its id number */ 00695 int clip_to_id; /* the part id to clip this one to */ 00696 Edje_Part_Dragable dragable; 00697 Edje_Pack_Element **items; /* packed items for box and table */ 00698 unsigned int items_count; 00699 unsigned char type; /* what type (image, rect, text) */ 00700 unsigned char effect; /* 0 = plain... */ 00701 unsigned char mouse_events; /* it will affect/respond to mouse events */ 00702 unsigned char repeat_events; /* it will repeat events to objects below */ 00703 Evas_Event_Flags ignore_flags; 00704 unsigned char scale; /* should certain properties scale with edje scale factor? */ 00705 unsigned char precise_is_inside; 00706 unsigned char use_alternate_font_metrics; 00707 unsigned char pointer_mode; 00708 unsigned char entry_mode; 00709 unsigned char select_mode; 00710 unsigned char multiline; 00711 Edje_Part_Api api; 00712 }; 00713 00714 struct _Edje_Part_Image_Id 00715 { 00716 int id; 00717 Eina_Bool set; 00718 }; 00719 00720 struct _Edje_Part_Description_Common 00721 { 00722 struct { 00723 double value; /* the value of the state (for ranges) */ 00724 const char *name; /* the named state if any */ 00725 } state; 00726 00727 Edje_Alignment align; /* 0 <-> 1.0 alignment within allocated space */ 00728 00729 struct { 00730 unsigned char w, h; /* width or height is fixed in side (cannot expand with Edje object size) */ 00731 } fixed; 00732 00733 Edje_Size min, max; 00734 Edje_Position step; /* size stepping by n pixels, 0 = none */ 00735 Edje_Aspect_Prefer aspect; 00736 00737 char *color_class; /* how to modify the color */ 00738 Edje_Color color; 00739 Edje_Color color2; 00740 00741 struct { 00742 FLOAT_T relative_x; 00743 FLOAT_T relative_y; 00744 int offset_x; 00745 int offset_y; 00746 int id_x; /* -1 = whole part collection, or part ID */ 00747 int id_y; /* -1 = whole part collection, or part ID */ 00748 } rel1, rel2; 00749 00750 struct { 00751 int id_persp; 00752 int id_light; 00753 struct { 00754 int id_center; 00755 FLOAT_T x, y, z; 00756 } rot; 00757 unsigned char backcull; 00758 unsigned char on; 00759 unsigned char persp_on; 00760 unsigned char smooth; 00761 unsigned char alpha; 00762 } map; 00763 00764 struct { 00765 int zplane; 00766 int focal; 00767 } persp; 00768 00769 unsigned char visible; /* is it shown */ 00770 }; 00771 00772 struct _Edje_Part_Description_Spec_Fill 00773 { 00774 FLOAT_T pos_rel_x; /* fill offset x relative to area */ 00775 FLOAT_T rel_x; /* relative size compared to area */ 00776 FLOAT_T pos_rel_y; /* fill offset y relative to area */ 00777 FLOAT_T rel_y; /* relative size compared to area */ 00778 int pos_abs_x; /* fill offset x added to fill offset */ 00779 int abs_x; /* size of fill added to relative fill */ 00780 int pos_abs_y; /* fill offset y added to fill offset */ 00781 int abs_y; /* size of fill added to relative fill */ 00782 int angle; /* angle of fill -- currently only used by grads */ 00783 int spread; /* spread of fill -- currently only used by grads */ 00784 char smooth; /* fill with smooth scaling or not */ 00785 unsigned char type; /* fill coordinate from container (SCALE) or from source image (TILE) */ 00786 }; 00787 00788 struct _Edje_Part_Description_Spec_Border 00789 { 00790 int l, r, t, b; /* border scaling on image fill */ 00791 unsigned char no_fill; /* do we fill the center of the image if bordered? 1 == NO!!!! */ 00792 unsigned char scale; /* scale image border by same as scale factor */ 00793 }; 00794 00795 struct _Edje_Part_Description_Spec_Image 00796 { 00797 Edje_Part_Image_Id **tweens; /* list of Edje_Part_Image_Id */ 00798 unsigned int tweens_count; /* number of tweens */ 00799 00800 int id; /* the image id to use */ 00801 int scale_hint; /* evas scale hint */ 00802 Eina_Bool set; /* if image condition it's content */ 00803 00804 Edje_Part_Description_Spec_Border border; 00805 Edje_Part_Description_Spec_Fill fill; 00806 }; 00807 00808 struct _Edje_Part_Description_Spec_Text 00809 { 00810 Edje_String text; /* if "" or NULL, then leave text unchanged */ 00811 char *text_class; /* how to apply/modify the font */ 00812 Edje_String style; /* the text style if a textblock */ 00813 Edje_String font; /* if a specific font is asked for */ 00814 Edje_String repch; /* replacement char for password mode entry */ 00815 00816 Edje_Alignment align; /* text alignment within bounds */ 00817 Edje_Color color3; 00818 00819 double elipsis; /* 0.0 - 1.0 defining where the elipsis align */ 00820 int size; /* 0 = use user set size */ 00821 int id_source; /* -1 if none */ 00822 int id_text_source; /* -1 if none */ 00823 00824 unsigned char fit_x; /* resize font size down to fit in x dir */ 00825 unsigned char fit_y; /* resize font size down to fit in y dir */ 00826 unsigned char min_x; /* if text size should be part min size */ 00827 unsigned char min_y; /* if text size should be part min size */ 00828 unsigned char max_x; /* if text size should be part max size */ 00829 unsigned char max_y; /* if text size should be part max size */ 00830 }; 00831 00832 struct _Edje_Part_Description_Spec_Box 00833 { 00834 char *layout, *alt_layout; 00835 Edje_Alignment align; 00836 struct { 00837 int x, y; 00838 } padding; 00839 struct { 00840 Eina_Bool h, v; 00841 } min; 00842 }; 00843 00844 struct _Edje_Part_Description_Spec_Table 00845 { 00846 unsigned char homogeneous; 00847 Edje_Alignment align; 00848 struct { 00849 int x, y; 00850 } padding; 00851 }; 00852 00853 struct _Edje_Part_Description_Image 00854 { 00855 Edje_Part_Description_Common common; 00856 Edje_Part_Description_Spec_Image image; 00857 }; 00858 00859 struct _Edje_Part_Description_Text 00860 { 00861 Edje_Part_Description_Common common; 00862 Edje_Part_Description_Spec_Text text; 00863 }; 00864 00865 struct _Edje_Part_Description_Box 00866 { 00867 Edje_Part_Description_Common common; 00868 Edje_Part_Description_Spec_Box box; 00869 }; 00870 00871 struct _Edje_Part_Description_Table 00872 { 00873 Edje_Part_Description_Common common; 00874 Edje_Part_Description_Spec_Table table; 00875 }; 00876 00877 struct _Edje_Part_Description_External 00878 { 00879 Edje_Part_Description_Common common; 00880 Eina_List *external_params; /* parameters for external objects */ 00881 }; 00882 00883 /*----------*/ 00884 00885 00886 typedef struct _Edje Edje; 00887 typedef struct _Edje_Real_Part_State Edje_Real_Part_State; 00888 typedef struct _Edje_Real_Part_Drag Edje_Real_Part_Drag; 00889 typedef struct _Edje_Real_Part_Set Edje_Real_Part_Set; 00890 typedef struct _Edje_Real_Part Edje_Real_Part; 00891 typedef struct _Edje_Running_Program Edje_Running_Program; 00892 typedef struct _Edje_Signal_Callback Edje_Signal_Callback; 00893 typedef struct _Edje_Calc_Params Edje_Calc_Params; 00894 typedef struct _Edje_Pending_Program Edje_Pending_Program; 00895 typedef struct _Edje_Text_Style Edje_Text_Style; 00896 typedef struct _Edje_Color_Class Edje_Color_Class; 00897 typedef struct _Edje_Text_Class Edje_Text_Class; 00898 typedef struct _Edje_Var Edje_Var; 00899 typedef struct _Edje_Var_Int Edje_Var_Int; 00900 typedef struct _Edje_Var_Float Edje_Var_Float; 00901 typedef struct _Edje_Var_String Edje_Var_String; 00902 typedef struct _Edje_Var_List Edje_Var_List; 00903 typedef struct _Edje_Var_Hash Edje_Var_Hash; 00904 typedef struct _Edje_Var_Animator Edje_Var_Animator; 00905 typedef struct _Edje_Var_Timer Edje_Var_Timer; 00906 typedef struct _Edje_Var_Pool Edje_Var_Pool; 00907 typedef struct _Edje_Signal_Source_Char Edje_Signal_Source_Char; 00908 typedef struct _Edje_Text_Insert_Filter_Callback Edje_Text_Insert_Filter_Callback; 00909 00910 struct _Edje_Signal_Source_Char 00911 { 00912 EINA_RBTREE; 00913 00914 const char *signal; 00915 const char *source; 00916 00917 Eina_List *list; 00918 }; 00919 00920 struct _Edje_Signals_Sources_Patterns 00921 00922 { 00923 Edje_Patterns *signals_patterns; 00924 Edje_Patterns *sources_patterns; 00925 00926 Eina_Rbtree *exact_match; 00927 00928 union { 00929 struct { 00930 Edje_Program **globing; 00931 unsigned int count; 00932 } programs; 00933 struct { 00934 Eina_List *globing; 00935 } callbacks; 00936 } u; 00937 }; 00938 00939 typedef struct _Edje_Signals_Sources_Patterns Edje_Signals_Sources_Patterns; 00940 00941 struct _Edje 00942 { 00943 const Edje_Smart_Api *api; 00944 const char *path; 00945 const char *group; 00946 const char *parent; 00947 00948 Evas_Coord x, y, w, h; 00949 Edje_Size min; 00950 double paused_at; 00951 Evas *evas; /* the Evas this Edje belongs to */ 00952 Evas_Object *obj; /* the smart object */ 00953 Evas_Object *clipper; /* a big rect to clip this Edje to */ 00954 Edje_File *file; /* the file the data comes form */ 00955 Edje_Part_Collection *collection; /* the description being used */ 00956 Eina_List *actions; /* currently running actions */ 00957 Eina_List *callbacks; 00958 Eina_List *pending_actions; 00959 Eina_List *color_classes; 00960 Eina_List *text_classes; 00961 /* variable pool for Edje Embryo scripts */ 00962 Edje_Var_Pool *var_pool; 00963 /* for faster lookups to avoid nth list walks */ 00964 Edje_Real_Part **table_parts; 00965 Edje_Program **table_programs; 00966 Edje_Real_Part *focused_part; 00967 Eina_List *subobjs; 00968 Eina_List *text_insert_filter_callbacks; 00969 void *script_only_data; 00970 int table_programs_size; 00971 unsigned int table_parts_size; 00972 00973 Edje_Perspective *persp; 00974 00975 struct { 00976 Edje_Signals_Sources_Patterns callbacks; 00977 Edje_Signals_Sources_Patterns programs; 00978 } patterns; 00979 00980 int references; 00981 int block; 00982 int load_error; 00983 int freeze; 00984 FLOAT_T scale; 00985 00986 struct { 00987 Edje_Text_Change_Cb func; 00988 void *data; 00989 } text_change; 00990 00991 struct { 00992 Edje_Message_Handler_Cb func; 00993 void *data; 00994 int num; 00995 } message; 00996 int processing_messages; 00997 00998 int state; 00999 01000 int preload_count; 01001 01002 unsigned int dirty : 1; 01003 unsigned int recalc : 1; 01004 unsigned int walking_callbacks : 1; 01005 unsigned int delete_callbacks : 1; 01006 unsigned int just_added_callbacks : 1; 01007 unsigned int have_objects : 1; 01008 unsigned int paused : 1; 01009 unsigned int no_anim : 1; 01010 unsigned int calc_only : 1; 01011 unsigned int walking_actions : 1; 01012 unsigned int block_break : 1; 01013 unsigned int delete_me : 1; 01014 unsigned int postponed : 1; 01015 unsigned int freeze_calc : 1; 01016 unsigned int has_entries : 1; 01017 unsigned int entries_inited : 1; 01018 #ifdef EDJE_CALC_CACHE 01019 unsigned int text_part_change : 1; 01020 unsigned int all_part_change : 1; 01021 #endif 01022 unsigned int have_mapped_part : 1; 01023 01024 lua_State *L; 01025 Eina_Inlist *lua_objs; 01026 int lua_ref; 01027 01028 struct { 01029 Edje_Item_Provider_Cb func; 01030 void *data; 01031 } item_provider; 01032 }; 01033 01034 struct _Edje_Calc_Params 01035 { 01036 int x, y, w, h; // 16 01037 Edje_Rectangle req; // 16 01038 Edje_Rectangle req_drag; // 16 01039 Edje_Color color; // 4 01040 union { 01041 struct { 01042 struct { 01043 int x, y, w, h; // 16 01044 int angle; // 4 01045 int spread; // 4 01046 } fill; // 24 01047 01048 union { 01049 struct { 01050 int l, r, t, b; // 16 01051 } image; // 16 01052 } spec; // 16 01053 } common; // 40 01054 struct { 01055 Edje_Alignment align; /* text alignment within bounds */ // 16 01056 double elipsis; // 8 01057 int size; // 4 01058 Edje_Color color2, color3; // 8 01059 } text; // 36 01060 } type; // 40 01061 unsigned char visible : 1; 01062 unsigned char smooth : 1; // 1 01063 }; // 96 01064 01065 struct _Edje_Real_Part_Set 01066 { 01067 Edje_Image_Directory_Set_Entry *entry; // 4 01068 Edje_Image_Directory_Set *set; // 4 01069 01070 int id; // 4 01071 }; 01072 01073 struct _Edje_Real_Part_State 01074 { 01075 Edje_Part_Description_Common *description; // 4 01076 Edje_Real_Part *rel1_to_x; // 4 01077 Edje_Real_Part *rel1_to_y; // 4 01078 Edje_Real_Part *rel2_to_x; // 4 01079 Edje_Real_Part *rel2_to_y; // 4 01080 #ifdef EDJE_CALC_CACHE 01081 int state; // 4 01082 Edje_Calc_Params p; // 96 01083 #endif 01084 void *external_params; // 4 01085 Edje_Real_Part_Set *set; // 4 01086 }; // 28 01087 // WITH EDJE_CALC_CACHE 128 01088 01089 struct _Edje_Real_Part_Drag 01090 { 01091 FLOAT_T x, y; // 16 01092 Edje_Position_Scale val, size, step, page; // 64 01093 struct { 01094 unsigned int count; // 4 01095 int x, y; // 8 01096 } down; 01097 struct { 01098 int x, y; // 8 01099 } tmp; 01100 unsigned char need_reset : 1; // 4 01101 Edje_Real_Part *confine_to; // 4 01102 }; // 104 01103 01104 struct _Edje_Real_Part 01105 { 01106 Edje *edje; // 4 01107 Edje_Part *part; // 4 01108 Evas_Object *object; // 4 01109 int x, y, w, h; // 16 01110 Edje_Rectangle req; // 16 01111 01112 Eina_List *items; // 4 //FIXME: only if table/box 01113 Edje_Part_Box_Animation *anim; // 4 //FIXME: Used only if box 01114 void *entry_data; // 4 // FIXME: move to entry section 01115 Evas_Object *cursorbg_object; // 4 // FIXME: move to entry section 01116 Evas_Object *cursorfg_object; // 4 // FIXME: move to entry section 01117 01118 Evas_Object *swallowed_object; // 4 // FIXME: move with swallow_params data 01119 struct { 01120 Edje_Size min, max; // 16 01121 Edje_Aspect aspect; // 12 01122 } swallow_params; // 28 // FIXME: only if type SWALLOW 01123 01124 Edje_Real_Part_Drag *drag; // 4 01125 Edje_Real_Part *events_to; // 4 01126 01127 struct { 01128 Edje_Real_Part *source; // 4 01129 Edje_Real_Part *text_source; // 4 01130 const char *text; // 4 01131 Edje_Position offset; // 8 text only 01132 const char *font; // 4 text only 01133 const char *style; // 4 text only 01134 int size; // 4 text only 01135 struct { 01136 double in_w, in_h; // 16 text only 01137 int in_size; // 4 text only 01138 const char *in_str; // 4 text only 01139 const char *out_str; // 4 text only 01140 int out_size; // 4 text only 01141 FLOAT_T align_x, align_y; // 16 text only 01142 double elipsis; // 8 text only 01143 int fit_x, fit_y; // 8 text only 01144 } cache; // 64 01145 } text; // 86 // FIXME make text a potiner to struct and alloc at end 01146 // if part type is TEXT move common members textblock + 01147 // text to front and have smaller struct for textblock 01148 01149 FLOAT_T description_pos; // 8 01150 Edje_Part_Description_Common *chosen_description; // 4 01151 Edje_Real_Part_State param1; // 20 01152 // WITH EDJE_CALC_CACHE: 140 01153 Edje_Real_Part_State *param2, *custom; // 8 01154 01155 #ifdef EDJE_CALC_CACHE 01156 int state; // 4 01157 #endif 01158 01159 Edje_Real_Part *clip_to; // 4 01160 01161 Edje_Running_Program *program; // 4 01162 01163 int clicked_button; // 4 01164 01165 unsigned char calculated; // 1 01166 unsigned char calculating; // 1 01167 01168 unsigned char still_in : 1; // 1 01169 #ifdef EDJE_CALC_CACHE 01170 unsigned char invalidate : 1; // 0 01171 #endif 01172 }; // 260 01173 // WITH EDJE_CALC_CACHE: 400 01174 01175 struct _Edje_Running_Program 01176 { 01177 Edje *edje; 01178 Edje_Program *program; 01179 double start_time; 01180 char delete_me : 1; 01181 }; 01182 01183 struct _Edje_Signal_Callback 01184 { 01185 const char *signal; 01186 const char *source; 01187 Edje_Signal_Cb func; 01188 void *data; 01189 unsigned char just_added : 1; 01190 unsigned char delete_me : 1; 01191 }; 01192 01193 struct _Edje_Text_Insert_Filter_Callback 01194 { 01195 const char *part; 01196 Edje_Text_Filter_Cb func; 01197 void *data; 01198 }; 01199 01200 struct _Edje_Pending_Program 01201 { 01202 Edje *edje; 01203 Edje_Program *program; 01204 Ecore_Timer *timer; 01205 }; 01206 01207 struct _Edje_Text_Style 01208 { 01209 struct { 01210 unsigned char x, y; 01211 } offset; 01212 struct { 01213 unsigned char l, r, t, b; 01214 } pad; 01215 int num; 01216 struct { 01217 unsigned char color; /* 0 = color, 1, 2 = color2, color3 */ 01218 signed char x, y; /* offset */ 01219 unsigned char alpha; 01220 } members[32]; 01221 }; 01222 01223 struct _Edje_Color_Class 01224 { 01225 const char *name; 01226 unsigned char r, g, b, a; 01227 unsigned char r2, g2, b2, a2; 01228 unsigned char r3, g3, b3, a3; 01229 }; 01230 01231 struct _Edje_Text_Class 01232 { 01233 const char *name; 01234 const char *font; 01235 Evas_Font_Size size; 01236 }; 01237 01238 struct _Edje_Var_Int 01239 { 01240 int v; 01241 }; 01242 01243 struct _Edje_Var_Float 01244 { 01245 double v; 01246 }; 01247 01248 struct _Edje_Var_String 01249 { 01250 char *v; 01251 }; 01252 01253 struct _Edje_Var_List 01254 { 01255 Eina_List *v; 01256 }; 01257 01258 struct _Edje_Var_Hash 01259 { 01260 Eina_Hash *v; 01261 }; 01262 01263 struct _Edje_Var_Timer 01264 { 01265 Edje *edje; 01266 int id; 01267 Embryo_Function func; 01268 int val; 01269 Ecore_Timer *timer; 01270 }; 01271 01272 struct _Edje_Var_Animator 01273 { 01274 Edje *edje; 01275 int id; 01276 Embryo_Function func; 01277 int val; 01278 double start, len; 01279 char delete_me; 01280 }; 01281 01282 struct _Edje_Var_Pool 01283 { 01284 int id_count; 01285 Eina_List *timers; 01286 Eina_List *animators; 01287 int size; 01288 Edje_Var *vars; 01289 int walking_list; 01290 }; 01291 01292 struct _Edje_Var 01293 { 01294 union { 01295 Edje_Var_Int i; 01296 Edje_Var_Float f; 01297 Edje_Var_String s; 01298 Edje_Var_List l; 01299 Edje_Var_Hash h; 01300 } data; 01301 unsigned char type; 01302 }; 01303 01304 typedef enum _Edje_Queue 01305 { 01306 EDJE_QUEUE_APP, 01307 EDJE_QUEUE_SCRIPT 01308 } Edje_Queue; 01309 01310 typedef struct _Edje_Message_Signal Edje_Message_Signal; 01311 typedef struct _Edje_Message Edje_Message; 01312 01313 struct _Edje_Message_Signal 01314 { 01315 const char *sig; 01316 const char *src; 01317 }; 01318 01319 struct _Edje_Message 01320 { 01321 Edje *edje; 01322 Edje_Queue queue; 01323 Edje_Message_Type type; 01324 int id; 01325 unsigned char *msg; 01326 }; 01327 01328 typedef enum _Edje_Fill 01329 { 01330 EDJE_FILL_TYPE_SCALE = 0, 01331 EDJE_FILL_TYPE_TILE 01332 } Edje_Fill; 01333 01334 typedef enum _Edje_Match_Error 01335 { 01336 EDJE_MATCH_OK, 01337 EDJE_MATCH_ALLOC_ERROR, 01338 EDJE_MATCH_SYNTAX_ERROR 01339 01340 } Edje_Match_Error; 01341 01342 typedef struct _Edje_States Edje_States; 01343 struct _Edje_Patterns 01344 { 01345 const char **patterns; 01346 01347 Edje_States *states; 01348 01349 int ref; 01350 Eina_Bool delete_me : 1; 01351 01352 size_t patterns_size; 01353 size_t max_length; 01354 size_t finals[]; 01355 }; 01356 01357 Edje_Patterns *edje_match_collection_dir_init(const Eina_List *lst); 01358 Edje_Patterns *edje_match_programs_signal_init(Edje_Program * const *array, 01359 unsigned int count); 01360 Edje_Patterns *edje_match_programs_source_init(Edje_Program * const *array, 01361 unsigned int count); 01362 Edje_Patterns *edje_match_callback_signal_init(const Eina_List *lst); 01363 Edje_Patterns *edje_match_callback_source_init(const Eina_List *lst); 01364 01365 Eina_Bool edje_match_collection_dir_exec(const Edje_Patterns *ppat, 01366 const char *string); 01367 Eina_Bool edje_match_programs_exec(const Edje_Patterns *ppat_signal, 01368 const Edje_Patterns *ppat_source, 01369 const char *signal, 01370 const char *source, 01371 Edje_Program **programs, 01372 Eina_Bool (*func)(Edje_Program *pr, void *data), 01373 void *data); 01374 int edje_match_callback_exec(Edje_Patterns *ppat_signal, 01375 Edje_Patterns *ppat_source, 01376 const char *signal, 01377 const char *source, 01378 Eina_List *callbacks, 01379 Edje *ed); 01380 01381 void edje_match_patterns_free(Edje_Patterns *ppat); 01382 01383 Eina_List *edje_match_program_hash_build(Edje_Program * const * programs, 01384 unsigned int count, 01385 Eina_Rbtree **tree); 01386 Eina_List *edje_match_callback_hash_build(const Eina_List *callbacks, 01387 Eina_Rbtree **tree); 01388 const Eina_List *edje_match_signal_source_hash_get(const char *signal, 01389 const char *source, 01390 const Eina_Rbtree *tree); 01391 void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data); 01392 01393 // FIXME remove below 2 eapi decls when edje_convert goes 01394 EAPI void _edje_edd_init(void); 01395 EAPI void _edje_edd_shutdown(void); 01396 01397 EAPI extern Eet_Data_Descriptor *_edje_edd_edje_file; 01398 EAPI extern Eet_Data_Descriptor *_edje_edd_edje_part_collection; 01399 01400 extern int _edje_anim_count; 01401 extern Ecore_Animator *_edje_timer; 01402 extern Eina_List *_edje_animators; 01403 extern Eina_List *_edje_edjes; 01404 01405 extern char *_edje_fontset_append; 01406 extern FLOAT_T _edje_scale; 01407 extern int _edje_freeze_val; 01408 extern int _edje_freeze_calc_count; 01409 extern Eina_List *_edje_freeze_calc_list; 01410 01411 extern Eina_Mempool *_edje_real_part_mp; 01412 extern Eina_Mempool *_edje_real_part_state_mp; 01413 01414 extern Eina_Mempool *_emp_RECTANGLE; 01415 extern Eina_Mempool *_emp_TEXT; 01416 extern Eina_Mempool *_emp_IMAGE; 01417 extern Eina_Mempool *_emp_SWALLOW; 01418 extern Eina_Mempool *_emp_TEXTBLOCK; 01419 extern Eina_Mempool *_emp_GROUP; 01420 extern Eina_Mempool *_emp_BOX; 01421 extern Eina_Mempool *_emp_TABLE; 01422 extern Eina_Mempool *_emp_EXTERNAL; 01423 extern Eina_Mempool *_emp_part; 01424 01425 void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos); 01426 Edje_Part_Description_Common *_edje_part_description_find(Edje *ed, 01427 Edje_Real_Part *rp, 01428 const char *name, double val); 01429 void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2); 01430 void _edje_recalc(Edje *ed); 01431 void _edje_recalc_do(Edje *ed); 01432 void _edje_part_recalc_1(Edje *ed, Edje_Real_Part *ep); 01433 int _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y); 01434 void _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y); 01435 01436 Eina_Bool _edje_timer_cb(void *data); 01437 Eina_Bool _edje_pending_timer_cb(void *data); 01438 void _edje_callbacks_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp); 01439 void _edje_callbacks_focus_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp); 01440 void _edje_callbacks_del(Evas_Object *obj, Edje *ed); 01441 void _edje_callbacks_focus_del(Evas_Object *obj, Edje *ed); 01442 01443 void _edje_edd_init(void); 01444 void _edje_edd_shutdown(void); 01445 01446 int _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *group, Eina_List *group_path); 01447 01448 void _edje_file_add(Edje *ed); 01449 void _edje_file_del(Edje *ed); 01450 void _edje_file_free(Edje_File *edf); 01451 void _edje_file_cache_shutdown(void); 01452 void _edje_collection_free(Edje_File *edf, 01453 Edje_Part_Collection *ec, 01454 Edje_Part_Collection_Directory_Entry *ce); 01455 void _edje_collection_free_part_description_clean(int type, 01456 Edje_Part_Description_Common *desc, 01457 Eina_Bool free_strings); 01458 void _edje_collection_free_part_description_free(int type, 01459 Edje_Part_Description_Common *desc, 01460 Edje_Part_Collection_Directory_Entry *ce, 01461 Eina_Bool free_strings); 01462 01463 void _edje_object_smart_set(Edje_Smart_Api *sc); 01464 const Edje_Smart_Api * _edje_object_smart_class_get(void); 01465 01466 void _edje_del(Edje *ed); 01467 void _edje_ref(Edje *ed); 01468 void _edje_unref(Edje *ed); 01469 void _edje_clean_objects(Edje *ed); 01470 void _edje_ref(Edje *ed); 01471 void _edje_unref(Edje *ed); 01472 01473 Eina_Bool _edje_program_run_iterate(Edje_Running_Program *runp, double tim); 01474 void _edje_program_end(Edje *ed, Edje_Running_Program *runp); 01475 void _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, const char *ssrc); 01476 void _edje_programs_patterns_clean(Edje *ed); 01477 void _edje_programs_patterns_init(Edje *ed); 01478 void _edje_emit(Edje *ed, const char *sig, const char *src); 01479 void _edje_emit_handle(Edje *ed, const char *sig, const char *src); 01480 void _edje_signals_sources_patterns_clean(Edje_Signals_Sources_Patterns *ssp); 01481 void _edje_callbacks_patterns_clean(Edje *ed); 01482 01483 void _edje_text_init(void); 01484 void _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep); 01485 void _edje_text_part_on_del(Edje *ed, Edje_Part *ep); 01486 void _edje_text_recalc_apply(Edje *ed, 01487 Edje_Real_Part *ep, 01488 Edje_Calc_Params *params, 01489 Edje_Part_Description_Text *chosen_desc); 01490 Evas_Font_Size _edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc); 01491 const char * _edje_text_class_font_get(Edje *ed, 01492 Edje_Part_Description_Text *chosen_desc, 01493 int *size, char **free_later); 01494 01495 01496 Edje_Real_Part *_edje_real_part_get(const Edje *ed, const char *part); 01497 Edje_Real_Part *_edje_real_part_recursive_get(const Edje *ed, const char *part); 01498 Edje *_edje_recursive_get(Edje *ed, const char *part, Edje_Real_Part **orp); 01499 Edje_Color_Class *_edje_color_class_find(Edje *ed, const char *color_class); 01500 void _edje_color_class_member_add(Edje *ed, const char *color_class); 01501 void _edje_color_class_member_del(Edje *ed, const char *color_class); 01502 void _edje_color_class_on_del(Edje *ed, Edje_Part *ep); 01503 void _edje_color_class_members_free(void); 01504 void _edje_color_class_hash_free(void); 01505 01506 Edje_Text_Class *_edje_text_class_find(Edje *ed, const char *text_class); 01507 void _edje_text_class_member_add(Edje *ed, const char *text_class); 01508 void _edje_text_class_member_del(Edje *ed, const char *text_class); 01509 void _edje_text_class_members_free(void); 01510 void _edje_text_class_hash_free(void); 01511 01512 Edje *_edje_fetch(const Evas_Object *obj); 01513 int _edje_freeze(Edje *ed); 01514 int _edje_thaw(Edje *ed); 01515 int _edje_block(Edje *ed); 01516 int _edje_unblock(Edje *ed); 01517 int _edje_block_break(Edje *ed); 01518 void _edje_block_violate(Edje *ed); 01519 void _edje_object_part_swallow_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); 01520 void _edje_object_part_swallow_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); 01521 void _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow); 01522 void _edje_real_part_swallow_clear(Edje_Real_Part *rp); 01523 void _edje_box_init(void); 01524 void _edje_box_shutdown(void); 01525 Eina_Bool _edje_box_layout_find(const char *name, Evas_Object_Box_Layout *cb, void **data, void (**free_data)(void *data)); 01526 void _edje_box_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description_Box *chosen_desc); 01527 Eina_Bool _edje_box_layout_add_child(Edje_Real_Part *rp, Evas_Object *child_obj); 01528 void _edje_box_layout_remove_child(Edje_Real_Part *rp, Evas_Object *child_obj); 01529 Edje_Part_Box_Animation * _edje_box_layout_anim_new(Evas_Object *box); 01530 void _edje_box_layout_free_data(void *data); 01531 01532 Eina_Bool _edje_real_part_box_append(Edje_Real_Part *rp, Evas_Object *child_obj); 01533 Eina_Bool _edje_real_part_box_prepend(Edje_Real_Part *rp, Evas_Object *child_obj); 01534 Eina_Bool _edje_real_part_box_insert_before(Edje_Real_Part *rp, Evas_Object *child_obj, const Evas_Object *ref); 01535 Eina_Bool _edje_real_part_box_insert_at(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned int pos); 01536 Evas_Object *_edje_real_part_box_remove(Edje_Real_Part *rp, Evas_Object *child_obj); 01537 Evas_Object *_edje_real_part_box_remove_at(Edje_Real_Part *rp, unsigned int pos); 01538 Eina_Bool _edje_real_part_box_remove_all(Edje_Real_Part *rp, Eina_Bool clear); 01539 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); 01540 Eina_Bool _edje_real_part_table_unpack(Edje_Real_Part *rp, Evas_Object *child_obj); 01541 void _edje_real_part_table_clear(Edje_Real_Part *rp, Eina_Bool clear); 01542 Evas_Object *_edje_children_get(Edje_Real_Part *rp, const char *partid); 01543 01544 Eina_Bool _edje_object_part_text_raw_set(Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text); 01545 char *_edje_text_escape(const char *text); 01546 char *_edje_text_unescape(const char *text); 01547 01548 void _edje_embryo_script_init (Edje_Part_Collection *edc); 01549 void _edje_embryo_script_shutdown (Edje_Part_Collection *edc); 01550 void _edje_embryo_script_reset (Edje *ed); 01551 void _edje_embryo_test_run (Edje *ed, const char *fname, const char *sig, const char *src); 01552 Edje_Var *_edje_var_new (void); 01553 void _edje_var_free (Edje_Var *var); 01554 void _edje_var_init (Edje *ed); 01555 void _edje_var_shutdown (Edje *ed); 01556 int _edje_var_string_id_get (Edje *ed, const char *string); 01557 int _edje_var_var_int_get (Edje *ed, Edje_Var *var); 01558 void _edje_var_var_int_set (Edje *ed, Edje_Var *var, int v); 01559 double _edje_var_var_float_get (Edje *ed, Edje_Var *var); 01560 void _edje_var_var_float_set (Edje *ed, Edje_Var *var, double v); 01561 const char *_edje_var_var_str_get (Edje *ed, Edje_Var *var); 01562 void _edje_var_var_str_set (Edje *ed, Edje_Var *var, const char *str); 01563 int _edje_var_int_get (Edje *ed, int id); 01564 void _edje_var_int_set (Edje *ed, int id, int v); 01565 double _edje_var_float_get (Edje *ed, int id); 01566 void _edje_var_float_set (Edje *ed, int id, double v); 01567 const char *_edje_var_str_get (Edje *ed, int id); 01568 void _edje_var_str_set (Edje *ed, int id, const char *str); 01569 01570 void _edje_var_list_var_append(Edje *ed, int id, Edje_Var *var); 01571 void _edje_var_list_var_prepend(Edje *ed, int id, Edje_Var *var); 01572 void _edje_var_list_var_append_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative); 01573 void _edje_var_list_var_prepend_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative); 01574 Edje_Var *_edje_var_list_nth(Edje *ed, int id, int n); 01575 01576 int _edje_var_list_count_get(Edje *ed, int id); 01577 void _edje_var_list_remove_nth(Edje *ed, int id, int n); 01578 01579 int _edje_var_list_nth_int_get(Edje *ed, int id, int n); 01580 void _edje_var_list_nth_int_set(Edje *ed, int id, int n, int v); 01581 void _edje_var_list_int_append(Edje *ed, int id, int v); 01582 void _edje_var_list_int_prepend(Edje *ed, int id, int v); 01583 void _edje_var_list_int_insert(Edje *ed, int id, int n, int v); 01584 01585 double _edje_var_list_nth_float_get(Edje *ed, int id, int n); 01586 void _edje_var_list_nth_float_set(Edje *ed, int id, int n, double v); 01587 void _edje_var_list_float_append(Edje *ed, int id, double v); 01588 void _edje_var_list_float_prepend(Edje *ed, int id, double v); 01589 void _edje_var_list_float_insert(Edje *ed, int id, int n, double v); 01590 01591 const char *_edje_var_list_nth_str_get(Edje *ed, int id, int n); 01592 void _edje_var_list_nth_str_set(Edje *ed, int id, int n, const char *v); 01593 void _edje_var_list_str_append(Edje *ed, int id, const char *v); 01594 void _edje_var_list_str_prepend(Edje *ed, int id, const char *v); 01595 void _edje_var_list_str_insert(Edje *ed, int id, int n, const char *v); 01596 01597 int _edje_var_timer_add (Edje *ed, double in, const char *fname, int val); 01598 void _edje_var_timer_del (Edje *ed, int id); 01599 01600 int _edje_var_anim_add (Edje *ed, double len, const char *fname, int val); 01601 void _edje_var_anim_del (Edje *ed, int id); 01602 01603 void _edje_message_init (void); 01604 void _edje_message_shutdown (void); 01605 void _edje_message_cb_set (Edje *ed, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data); 01606 Edje_Message *_edje_message_new (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id); 01607 void _edje_message_free (Edje_Message *em); 01608 void _edje_message_send (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg); 01609 void _edje_message_parameters_push (Edje_Message *em); 01610 void _edje_message_process (Edje_Message *em); 01611 void _edje_message_queue_process (void); 01612 void _edje_message_queue_clear (void); 01613 void _edje_message_del (Edje *ed); 01614 01615 void _edje_textblock_styles_add(Edje *ed); 01616 void _edje_textblock_styles_del(Edje *ed); 01617 void _edje_textblock_style_all_update(Edje *ed); 01618 void _edje_textblock_style_parse_and_fix(Edje_File *edf); 01619 void _edje_textblock_style_cleanup(Edje_File *edf); 01620 Edje_File *_edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret); 01621 void _edje_cache_coll_clean(Edje_File *edf); 01622 void _edje_cache_coll_flush(Edje_File *edf); 01623 void _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc); 01624 void _edje_cache_file_unref(Edje_File *edf); 01625 01626 void _edje_embryo_globals_init(Edje *ed); 01627 01628 #define CHKPARAM(n) if (params[0] != (sizeof(Embryo_Cell) * (n))) return -1; 01629 #define GETSTR(str, par) { \ 01630 Embryo_Cell *___cptr; \ 01631 int ___l; \ 01632 str = NULL; \ 01633 if ((___cptr = embryo_data_address_get(ep, (par)))) { \ 01634 ___l = embryo_data_string_length_get(ep, ___cptr); \ 01635 if (((str) = alloca(___l + 1))) \ 01636 embryo_data_string_get(ep, ___cptr, (str)); } } 01637 #define GETSTREVAS(str, par) { \ 01638 if ((str)) { \ 01639 if ((par) && (!strcmp((par), (str)))) return 0; \ 01640 if ((par)) eina_stringshare_del((par)); \ 01641 (par) = (char *)eina_stringshare_add((str)); } \ 01642 else (par) = NULL; } 01643 #define GETFLOAT(val, par) { \ 01644 float *___cptr; \ 01645 if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \ 01646 val = *___cptr; } } 01647 01648 #define GETFLOAT_T(val, par) \ 01649 { \ 01650 float *___cptr; \ 01651 if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) \ 01652 { \ 01653 val = FROM_DOUBLE(*___cptr); \ 01654 } \ 01655 } 01656 01657 #define GETINT(val, par) { \ 01658 int *___cptr; \ 01659 if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \ 01660 val = *___cptr; } } 01661 #define SETSTR(str, par) { \ 01662 Embryo_Cell *___cptr; \ 01663 if ((___cptr = embryo_data_address_get(ep, (par)))) { \ 01664 embryo_data_string_set(ep, str, ___cptr); } } 01665 #define SETSTRALLOCATE(s) \ 01666 { \ 01667 if (s) { \ 01668 if ((int) strlen((s)) < params[4]) { \ 01669 SETSTR((s), params[3]); } \ 01670 else { \ 01671 char *ss; \ 01672 ss = alloca(strlen((s)) + 1); \ 01673 strcpy(ss, (s)); \ 01674 ss[params[4] - 2] = 0; \ 01675 SETSTR(ss, params[3]); } } \ 01676 else \ 01677 SETSTR("", params[3]); \ 01678 } 01679 #define SETFLOAT(val, par) { \ 01680 float *___cptr; \ 01681 if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \ 01682 *___cptr = (float)val; } } 01683 #define SETFLOAT_T(val, par) \ 01684 { \ 01685 float *___cptr; \ 01686 if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) \ 01687 { \ 01688 *___cptr = (float) TO_DOUBLE(val); \ 01689 } \ 01690 } 01691 #define SETINT(val, par) { \ 01692 int *___cptr; \ 01693 if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \ 01694 *___cptr = (int)val; } } 01695 01696 Eina_Bool _edje_script_only(Edje *ed); 01697 void _edje_script_only_init(Edje *ed); 01698 void _edje_script_only_shutdown(Edje *ed); 01699 void _edje_script_only_show(Edje *ed); 01700 void _edje_script_only_hide(Edje *ed); 01701 void _edje_script_only_move(Edje *ed); 01702 void _edje_script_only_resize(Edje *ed); 01703 void _edje_script_only_message(Edje *ed, Edje_Message *em); 01704 01705 extern jmp_buf _edje_lua_panic_jmp; 01706 #define _edje_lua_panic_here() setjmp(_edje_lua_panic_jmp) 01707 01708 lua_State *_edje_lua_state_get(); 01709 lua_State *_edje_lua_new_thread(Edje *ed, lua_State *L); 01710 void _edje_lua_free_thread(Edje *ed, lua_State *L); 01711 void _edje_lua_new_reg(lua_State *L, int index, void *ptr); 01712 void _edje_lua_get_reg(lua_State *L, void *ptr); 01713 void _edje_lua_free_reg(lua_State *L, void *ptr); 01714 void _edje_lua_script_fn_new(Edje *ed); 01715 void _edje_lua_group_fn_new(Edje *ed); 01716 void _edje_lua_init(); 01717 void _edje_lua_shutdown(); 01718 01719 void __edje_lua_error(const char *file, const char *fnc, int line, lua_State *L, int err_code); 01720 #define _edje_lua_error(L, err_code) \ 01721 __edje_lua_error(__FILE__, __FUNCTION__, __LINE__, L, err_code) 01722 01723 Eina_Bool _edje_lua_script_only(Edje *ed); 01724 void _edje_lua_script_only_init(Edje *ed); 01725 void _edje_lua_script_only_shutdown(Edje *ed); 01726 void _edje_lua_script_only_show(Edje *ed); 01727 void _edje_lua_script_only_hide(Edje *ed); 01728 void _edje_lua_script_only_move(Edje *ed); 01729 void _edje_lua_script_only_resize(Edje *ed); 01730 void _edje_lua_script_only_message(Edje *ed, Edje_Message *em); 01731 01732 void _edje_entry_init(Edje *ed); 01733 void _edje_entry_shutdown(Edje *ed); 01734 void _edje_entry_real_part_init(Edje_Real_Part *rp); 01735 void _edje_entry_real_part_shutdown(Edje_Real_Part *rp); 01736 void _edje_entry_real_part_configure(Edje_Real_Part *rp); 01737 const char *_edje_entry_selection_get(Edje_Real_Part *rp); 01738 const char *_edje_entry_text_get(Edje_Real_Part *rp); 01739 void _edje_entry_text_markup_set(Edje_Real_Part *rp, const char *text); 01740 void _edje_entry_text_markup_insert(Edje_Real_Part *rp, const char *text); 01741 void _edje_entry_set_cursor_start(Edje_Real_Part *rp); 01742 void _edje_entry_set_cursor_end(Edje_Real_Part *rp); 01743 void _edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst); 01744 void _edje_entry_select_none(Edje_Real_Part *rp); 01745 void _edje_entry_select_all(Edje_Real_Part *rp); 01746 void _edje_entry_select_begin(Edje_Real_Part *rp); 01747 void _edje_entry_select_extend(Edje_Real_Part *rp); 01748 const Eina_List *_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor); 01749 const Eina_List *_edje_entry_anchors_list(Edje_Real_Part *rp); 01750 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); 01751 const Eina_List *_edje_entry_items_list(Edje_Real_Part *rp); 01752 void _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); 01753 void _edje_entry_select_allow_set(Edje_Real_Part *rp, Eina_Bool allow); 01754 Eina_Bool _edje_entry_select_allow_get(const Edje_Real_Part *rp); 01755 void _edje_entry_select_abort(Edje_Real_Part *rp); 01756 01757 Eina_Bool _edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur); 01758 Eina_Bool _edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur); 01759 Eina_Bool _edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur); 01760 Eina_Bool _edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur); 01761 void _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur); 01762 void _edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur); 01763 void _edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur); 01764 void _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur); 01765 Eina_Bool _edje_entry_cursor_coord_set(Edje_Real_Part *rp, Edje_Cursor cur, int x, int y); 01766 Eina_Bool _edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur); 01767 Eina_Bool _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur); 01768 const char *_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur); 01769 01770 void _edje_external_init(); 01771 void _edje_external_shutdown(); 01772 Evas_Object *_edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name); 01773 void _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *source); 01774 Eina_Bool _edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param) EINA_ARG_NONNULL(1, 2); 01775 Eina_Bool _edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param) EINA_ARG_NONNULL(1, 2); 01776 Evas_Object *_edje_external_content_get(const Evas_Object *obj, const char *content) EINA_ARG_NONNULL(1, 2); 01777 void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings); 01778 void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep, 01779 Edje_Calc_Params *params, 01780 Edje_Part_Description_Common *chosen_desc); 01781 void *_edje_external_params_parse(Evas_Object *obj, const Eina_List *params); 01782 void _edje_external_parsed_params_free(Evas_Object *obj, void *params); 01783 01784 EAPI void _edje_module_init(); 01785 EAPI void _edje_module_shutdown(); 01786 01787 static inline Eina_Bool 01788 edje_program_is_strncmp(const char *str) 01789 { 01790 size_t length; 01791 01792 length = strlen(str); 01793 01794 if (strpbrk(str, "*?[\\") != str + length) 01795 return EINA_FALSE; 01796 if (str[length] == '[' 01797 || str[length] == '\\') 01798 return EINA_FALSE; 01799 return EINA_TRUE; 01800 } 01801 01802 static inline Eina_Bool 01803 edje_program_is_strrncmp(const char *str) 01804 { 01805 if (*str != '*' && *str != '?') 01806 return EINA_FALSE; 01807 if (strpbrk(str + 1, "*?[\\")) 01808 return EINA_FALSE; 01809 return EINA_TRUE; 01810 } 01811 01812 EAPI void _edje_program_insert(Edje_Part_Collection *ed, Edje_Program *p); 01813 EAPI void _edje_program_remove(Edje_Part_Collection *ed, Edje_Program *p); 01814 01815 void _edje_lua2_error_full(const char *file, const char *fnc, int line, lua_State *L, int err_code); 01816 #define _edje_lua2_error(L, err_code) _edje_lua2_error_full(__FILE__, __FUNCTION__, __LINE__, L, err_code) 01817 void _edje_lua2_script_init(Edje *ed); 01818 void _edje_lua2_script_shutdown(Edje *ed); 01819 void _edje_lua2_script_load(Edje_Part_Collection *edc, void *data, int size); 01820 void _edje_lua2_script_unload(Edje_Part_Collection *edc); 01821 01822 void _edje_lua2_script_func_shutdown(Edje *ed); 01823 void _edje_lua2_script_func_show(Edje *ed); 01824 void _edje_lua2_script_func_hide(Edje *ed); 01825 void _edje_lua2_script_func_move(Edje *ed); 01826 void _edje_lua2_script_func_resize(Edje *ed); 01827 void _edje_lua2_script_func_message(Edje *ed, Edje_Message *em); 01828 void _edje_lua2_script_func_signal(Edje *ed, const char *sig, const char *src); 01829 01830 const char *edje_string_get(const Edje_String *es); 01831 const char *edje_string_id_get(const Edje_String *es); 01832 01833 #endif