summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Zaoui <daniel.zaoui@samsung.com>2015-06-16 11:51:20 +0300
committerDaniel Zaoui <daniel.zaoui@samsung.com>2015-06-16 11:51:20 +0300
commit33891ccbf92ecb23f5cb070b04ac2f392ecb8ed5 (patch)
treea73ee0b8e9f27a8266a1d98f212054c369f90565
parent2aaac63a3da9fffb8c141546cb10d351296baf2e (diff)
Add edje_private.h
-rw-r--r--CMakeLists.txt1
-rw-r--r--src/include/edje_private.h2856
-rw-r--r--src/lib/CMakeLists.txt3
-rw-r--r--src/lib/edje_sniffer.c3
4 files changed, 2862 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6d80ee6..ef34d00 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 2.8.1)
3project(EDJE_SNIFFER) 3project(EDJE_SNIFFER)
4 4
5find_package(Eina REQUIRED) 5find_package(Eina REQUIRED)
6find_package(Evas REQUIRED)
6find_package(Edje REQUIRED) 7find_package(Edje REQUIRED)
7 8
8add_subdirectory(src/lib) 9add_subdirectory(src/lib)
diff --git a/src/include/edje_private.h b/src/include/edje_private.h
new file mode 100644
index 0000000..b9ddac8
--- /dev/null
+++ b/src/include/edje_private.h
@@ -0,0 +1,2856 @@
1#ifndef _EDJE_PRIVATE_H
2#define _EDJE_PRIVATE_H
3
4#ifdef HAVE_CONFIG_H
5# include <config.h>
6#endif
7
8#ifdef STDC_HEADERS
9# include <stdlib.h>
10# include <stddef.h>
11#else
12# ifdef HAVE_STDLIB_H
13# include <stdlib.h>
14# endif
15#endif
16
17#ifdef ENABLE_NLS
18# include <libintl.h>
19#endif
20
21#include <locale.h>
22#include <libgen.h>
23#include <string.h>
24#include <limits.h>
25#include <sys/stat.h>
26#include <time.h>
27#include <sys/time.h>
28#include <errno.h>
29#include <unistd.h>
30
31#include <fcntl.h>
32
33#include <lua.h>
34#include <lualib.h>
35#include <lauxlib.h>
36#include <setjmp.h>
37
38#ifdef HAVE_EVIL
39# include <Evil.h>
40#endif
41
42#include <Eina.h>
43#include <Eet.h>
44#include <Eo.h>
45#include <Evas.h>
46#include <Ecore.h>
47#include <Ecore_Evas.h>
48#include <Ecore_File.h>
49#include <Ecore_Input.h>
50#ifdef HAVE_ECORE_IMF
51# include <Ecore_IMF.h>
52# include <Ecore_IMF_Evas.h>
53#endif
54#include <Embryo.h>
55#include <Efreet.h>
56
57#ifdef HAVE_EIO
58# include <Eio.h>
59#endif
60
61#ifdef HAVE_EPHYSICS
62# include <EPhysics.h>
63#endif
64
65#include "Edje.h"
66#ifdef EAPI
67# undef EAPI
68#endif
69
70#ifdef _WIN32
71# ifdef EFL_EDJE_BUILD
72# ifdef DLL_EXPORT
73# define EAPI __declspec(dllexport)
74# else
75# define EAPI
76# endif /* ! DLL_EXPORT */
77# else
78# define EAPI __declspec(dllimport)
79# endif /* ! EFL_EDJE_BUILD */
80#else
81# ifdef __GNUC__
82# if __GNUC__ >= 4
83# define EAPI __attribute__ ((visibility("default")))
84# else
85# define EAPI
86# endif
87# else
88# define EAPI
89# endif
90#endif
91
92EAPI extern int _edje_default_log_dom ;
93
94#ifdef EDJE_DEFAULT_LOG_COLOR
95# undef EDJE_DEFAULT_LOG_COLOR
96#endif
97#define EDJE_DEFAULT_LOG_COLOR EINA_COLOR_CYAN
98#ifdef ERR
99# undef ERR
100#endif
101#define ERR(...) EINA_LOG_DOM_ERR(_edje_default_log_dom, __VA_ARGS__)
102#ifdef INF
103# undef INF
104#endif
105#define INF(...) EINA_LOG_DOM_INFO(_edje_default_log_dom, __VA_ARGS__)
106#ifdef WRN
107# undef WRN
108#endif
109#define WRN(...) EINA_LOG_DOM_WARN(_edje_default_log_dom, __VA_ARGS__)
110#ifdef CRI
111# undef CRI
112#endif
113#define CRI(...) EINA_LOG_DOM_CRIT(_edje_default_log_dom, __VA_ARGS__)
114#ifdef DBG
115# undef DBG
116#endif
117#define DBG(...) EINA_LOG_DOM_DBG(_edje_default_log_dom, __VA_ARGS__)
118#ifdef __GNUC__
119# if __GNUC__ >= 4
120// BROKEN in gcc 4 on amd64
121//# pragma GCC visibility push(hidden)
122# endif
123#endif
124
125#ifndef ABS
126#define ABS(x) ((x) < 0 ? -(x) : (x))
127#endif
128
129#ifndef CLAMP
130#define CLAMP(x, min, max) (((x) > (max)) ? (max) : (((x) < (min)) ? (min) : (x)))
131#endif
132
133#ifndef MIN
134#define MIN(a, b) (((a) < (b)) ? (a) : (b))
135#endif
136
137
138#ifdef BUILD_EDJE_FP
139
140#define FLOAT_T Eina_F32p32
141#define EDJE_T_FLOAT EET_T_F32P32
142#define MUL(a, b) eina_f32p32_mul(a, b)
143#define SCALE(a, b) eina_f32p32_scale(a, b)
144#define DIV(a, b) eina_f32p32_div(a, b)
145#define DIV2(a) ((a) >> 1)
146#define ADD(a, b) eina_f32p32_add(a, b)
147#define SUB(a, b) eina_f32p32_sub(a, b)
148#define SQRT(a) eina_f32p32_sqrt(a)
149#define TO_DOUBLE(a) eina_f32p32_double_to(a)
150#define FROM_DOUBLE(a) eina_f32p32_double_from(a)
151#define FROM_INT(a) eina_f32p32_int_from(a)
152#define TO_INT(a) eina_f32p32_int_to(a)
153#define ZERO 0
154#define COS(a) eina_f32p32_cos(a)
155#define SIN(a) eina_f32p32_sin(a)
156#define PI EINA_F32P32_PI
157
158#else
159
160#define FLOAT_T double
161#define EDJE_T_FLOAT EET_T_DOUBLE
162#define MUL(a, b) ((a) * (b))
163#define SCALE(a, b) ((a) * (double)(b))
164#define DIV(a, b) ((a) / (b))
165#define DIV2(a) ((a) / 2.0)
166#define ADD(a, b) ((a) + (b))
167#define SUB(a, b) ((a) - (b))
168#define SQRT(a) sqrt(a)
169#define TO_DOUBLE(a) (double)(a)
170#define FROM_DOUBLE(a) (a)
171#define FROM_INT(a) (double)(a)
172#define TO_INT(a) (int)(a)
173#define ZERO 0.0
174#define COS(a) cos(a)
175#define SIN(a) sin(a)
176#define PI 3.14159265358979323846
177
178#endif
179
180/* Inheritable Edje Smart API. For now private so only Edje Edit makes
181 * use of this, but who knows what will be possible in the future */
182#define EDJE_SMART_API_VERSION 1
183
184/* Basic macro to init the Edje Smart API */
185#define EDJE_SMART_API_INIT(smart_class_init) {smart_class_init, EDJE_SMART_API_VERSION, NULL}
186
187#define EDJE_SMART_API_INIT_NULL EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_NULL)
188#define EDJE_SMART_API_INIT_VERSION EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_VERSION)
189#define EDJE_SMART_API_INIT_NAME_VERSION(name) EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
190
191/* increment this when the EET data descriptors have changed and old
192 * EETs cannot be loaded/used correctly anymore.
193 */
194#define EDJE_FILE_VERSION 3
195/* increment this when you add new feature to edje file format without
196 * breaking backward compatibility.
197 */
198#define EDJE_FILE_MINOR 6
199
200/* FIXME:
201 *
202 * More example Edje files
203 *
204 * ? programs can do multiple actions from one signal
205 * ? add containering (hbox, vbox, table, wrapping multi-line hbox & vbox)
206 * ? text entry widget (single line only)
207 *
208 * ? recursions, unsafe callbacks outside Edje etc. with freeze, ref/unref and block/unblock and break_programs needs to be redesigned & fixed
209 * ? all unsafe calls that may result in callbacks must be marked and dealt with
210 */
211
212typedef enum
213{
214 EDJE_ASPECT_PREFER_NONE,
215 EDJE_ASPECT_PREFER_VERTICAL,
216 EDJE_ASPECT_PREFER_HORIZONTAL,
217 EDJE_ASPECT_PREFER_BOTH,
218 EDJE_ASPECT_PREFER_SOURCE
219} Edje_Internal_Aspect;
220
221struct _Edje_Perspective
222{
223 Evas_Object *obj;
224 Evas *e;
225 Evas_Coord px, py, z0, foc;
226 Eina_List *users;
227 Eina_Bool global : 1;
228};
229
230struct _Edje_Position_Scale
231{
232 FLOAT_T x, y;
233};
234
235struct _Edje_Position
236{
237 int x, y;
238};
239
240struct _Edje_Size
241{
242 int w, h;
243 Eina_Bool limit; /* should we limit ourself to the size of the source */
244};
245
246struct _Edje_Rectangle
247{
248 int x, y, w, h;
249};
250
251struct _Edje_Color
252{
253 unsigned char r, g, b, a;
254};
255
256struct _Edje_Map_Color
257{
258 int idx;
259 unsigned char r;
260 unsigned char g;
261 unsigned char b;
262 unsigned char a;
263};
264
265struct _Edje_Aspect_Prefer
266{
267 FLOAT_T min, max;
268 char prefer;
269};
270
271struct _Edje_Aspect
272{
273 int w, h;
274 Edje_Aspect_Control mode;
275};
276
277struct _Edje_String
278{
279 const char *str;
280 const char *translated;
281 unsigned int id;
282};
283
284struct _Edje_3D_Vec {
285 FLOAT_T x;
286 FLOAT_T y;
287 FLOAT_T z;
288};
289
290struct _Edje_3D_Int_Vec {
291 int x;
292 int y;
293 int z;
294};
295
296typedef struct _Edje_Position_Scale Edje_Alignment;
297typedef struct _Edje_Position_Scale Edje_Position_Scale;
298typedef struct _Edje_Position Edje_Position;
299typedef struct _Edje_Size Edje_Size;
300typedef struct _Edje_Rectangle Edje_Rectangle;
301typedef struct _Edje_Color Edje_Color;
302typedef struct _Edje_Map_Color Edje_Map_Color;
303typedef struct _Edje_Aspect_Prefer Edje_Aspect_Prefer;
304typedef struct _Edje_Aspect Edje_Aspect;
305typedef struct _Edje_String Edje_String;
306typedef struct _Edje_3D_Vec Edje_3D_Vec;
307typedef struct _Edje_3D_Int_Vec Edje_3D_Int_Vec;
308typedef struct _AABB AABB;
309
310typedef struct _Edje_File Edje_File;
311typedef struct _Edje_Style Edje_Style;
312typedef struct _Edje_Style_Tag Edje_Style_Tag;
313typedef struct _Edje_External_Directory Edje_External_Directory;
314typedef struct _Edje_External_Directory_Entry Edje_External_Directory_Entry;
315typedef struct _Edje_Font_Directory_Entry Edje_Font_Directory_Entry;
316typedef struct _Edje_Image_Directory Edje_Image_Directory;
317typedef struct _Edje_Image_Directory_Entry Edje_Image_Directory_Entry;
318typedef struct _Edje_Image_Directory_Set Edje_Image_Directory_Set;
319typedef struct _Edje_Image_Directory_Set_Entry Edje_Image_Directory_Set_Entry;
320typedef struct _Edje_Model_Directory Edje_Model_Directory;
321typedef struct _Edje_Model_Directory_Entry Edje_Model_Directory_Entry;
322typedef struct _Edje_Limit Edje_Limit;
323typedef struct _Edje_Plugin Edje_Plugin;
324typedef struct _Edje_Sound_Sample Edje_Sound_Sample;
325typedef struct _Edje_Sound_Tone Edje_Sound_Tone;
326typedef struct _Edje_Sound_Directory Edje_Sound_Directory;
327typedef struct _Edje_Mo Edje_Mo;
328typedef struct _Edje_Mo_Directory Edje_Mo_Directory;
329
330typedef struct _Edje_Vibration_Sample Edje_Vibration_Sample;
331typedef struct _Edje_Vibration_Directory Edje_Vibration_Directory;
332typedef struct _Edje_Program Edje_Program;
333typedef struct _Edje_Program_Target Edje_Program_Target;
334typedef struct _Edje_Program_After Edje_Program_After;
335typedef struct _Edje_Part_Collection_Directory_Entry Edje_Part_Collection_Directory_Entry;
336typedef struct _Edje_Pack_Element Edje_Pack_Element;
337typedef struct _Edje_Part_Collection Edje_Part_Collection;
338typedef struct _Edje_Part Edje_Part;
339typedef struct _Edje_Part_Api Edje_Part_Api;
340typedef struct _Edje_Part_Dragable Edje_Part_Dragable;
341typedef struct _Edje_Part_Image_Id Edje_Part_Image_Id;
342typedef struct _Edje_Part_Description_Image Edje_Part_Description_Image;
343typedef struct _Edje_Part_Description_Proxy Edje_Part_Description_Proxy;
344typedef struct _Edje_Part_Description_Text Edje_Part_Description_Text;
345typedef struct _Edje_Part_Description_Box Edje_Part_Description_Box;
346typedef struct _Edje_Part_Description_Table Edje_Part_Description_Table;
347typedef struct _Edje_Part_Description_External Edje_Part_Description_External;
348typedef struct _Edje_Part_Description_Mesh_Node Edje_Part_Description_Mesh_Node;
349typedef struct _Edje_Part_Description_Light Edje_Part_Description_Light;
350typedef struct _Edje_Part_Description_Camera Edje_Part_Description_Camera;
351typedef struct _Edje_Part_Description_Common Edje_Part_Description_Common;
352typedef struct _Edje_Part_Description_Spec_Fill Edje_Part_Description_Spec_Fill;
353typedef struct _Edje_Part_Description_Spec_Border Edje_Part_Description_Spec_Border;
354typedef struct _Edje_Part_Description_Spec_Image Edje_Part_Description_Spec_Image;
355typedef struct _Edje_Part_Description_Spec_Proxy Edje_Part_Description_Spec_Proxy;
356typedef struct _Edje_Part_Description_Spec_Text Edje_Part_Description_Spec_Text;
357typedef struct _Edje_Part_Description_Spec_Box Edje_Part_Description_Spec_Box;
358typedef struct _Edje_Part_Description_Spec_Table Edje_Part_Description_Spec_Table;
359typedef struct _Edje_Part_Description_Spec_Mesh_Node Edje_Part_Description_Spec_Mesh_Node;
360typedef struct _Edje_Part_Description_Spec_Light Edje_Part_Description_Spec_Light;
361typedef struct _Edje_Part_Description_Spec_Camera Edje_Part_Description_Spec_Camera;
362typedef struct _Edje_Physics_Face Edje_Physics_Face;
363typedef struct _Edje_Patterns Edje_Patterns;
364typedef struct _Edje_Part_Box_Animation Edje_Part_Box_Animation;
365typedef struct _Edje_Part_Limit Edje_Part_Limit;
366
367typedef struct _Edje Edje;
368typedef struct _Edje_Real_Part_Text Edje_Real_Part_Text;
369typedef struct _Edje_Real_Part_Swallow Edje_Real_Part_Swallow;
370typedef struct _Edje_Real_Part_Container Edje_Real_Part_Container;
371typedef struct _Edje_Real_Part_State Edje_Real_Part_State;
372typedef struct _Edje_Real_Part_Drag Edje_Real_Part_Drag;
373typedef struct _Edje_Real_Part_Set Edje_Real_Part_Set;
374typedef struct _Edje_Real_Part Edje_Real_Part;
375typedef struct _Edje_Running_Program Edje_Running_Program;
376typedef struct _Edje_Signal_Callback Edje_Signal_Callback;
377typedef struct _Edje_Calc_Params Edje_Calc_Params;
378typedef struct _Edje_Calc_Params_Map Edje_Calc_Params_Map;
379typedef struct _Edje_Calc_Params_Physics Edje_Calc_Params_Physics;
380typedef struct _Edje_Pending_Program Edje_Pending_Program;
381typedef struct _Edje_Text_Style Edje_Text_Style;
382typedef struct _Edje_Text_Class Edje_Text_Class;
383typedef struct _Edje_Var Edje_Var;
384typedef struct _Edje_Var_Int Edje_Var_Int;
385typedef struct _Edje_Var_Float Edje_Var_Float;
386typedef struct _Edje_Var_String Edje_Var_String;
387typedef struct _Edje_Var_List Edje_Var_List;
388typedef struct _Edje_Var_Hash Edje_Var_Hash;
389typedef struct _Edje_Var_Animator Edje_Var_Animator;
390typedef struct _Edje_Var_Timer Edje_Var_Timer;
391typedef struct _Edje_Var_Pool Edje_Var_Pool;
392typedef struct _Edje_Signal_Source_Char Edje_Signal_Source_Char;
393typedef struct _Edje_Text_Insert_Filter_Callback Edje_Text_Insert_Filter_Callback;
394typedef struct _Edje_Markup_Filter_Callback Edje_Markup_Filter_Callback;
395typedef struct _Edje_Signals_Sources_Patterns Edje_Signals_Sources_Patterns;
396typedef struct _Edje_Signal_Callback_Flags Edje_Signal_Callback_Flags;
397typedef struct _Edje_Signal_Callback_Group Edje_Signal_Callback_Group;
398typedef struct _Edje_Signal_Callback_Match Edje_Signal_Callback_Match;
399typedef struct _Edje_Signal_Callback_Matches Edje_Signal_Callback_Matches;
400typedef struct _Edje_Signal_Callback_Custom Edje_Signal_Callback_Custom;
401
402#define EDJE_INF_MAX_W 100000
403#define EDJE_INF_MAX_H 100000
404
405#define EDJE_IMAGE_SOURCE_TYPE_NONE 0
406#define EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT 1
407#define EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY 2
408#define EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY_ETC1 3
409#define EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY_ETC2 4
410#define EDJE_IMAGE_SOURCE_TYPE_EXTERNAL 5
411#define EDJE_IMAGE_SOURCE_TYPE_LAST 6
412
413#define EDJE_SOUND_SOURCE_TYPE_NONE 0
414#define EDJE_SOUND_SOURCE_TYPE_INLINE_RAW 1
415#define EDJE_SOUND_SOURCE_TYPE_INLINE_COMP 2
416#define EDJE_SOUND_SOURCE_TYPE_INLINE_LOSSY 3
417#define EDJE_SOUND_SOURCE_TYPE_INLINE_AS_IS 4
418
419#define EDJE_VAR_NONE 0
420#define EDJE_VAR_INT 1
421#define EDJE_VAR_FLOAT 2
422#define EDJE_VAR_STRING 3
423#define EDJE_VAR_LIST 4
424#define EDJE_VAR_HASH 5
425
426#define EDJE_VAR_MAGIC_BASE 0x12fe84ba
427
428#define EDJE_STATE_PARAM_NONE 0
429#define EDJE_STATE_PARAM_ALIGNMENT 1
430#define EDJE_STATE_PARAM_MIN 2
431#define EDJE_STATE_PARAM_MAX 3
432#define EDJE_STATE_PARAM_STEP 4
433#define EDJE_STATE_PARAM_ASPECT 5
434#define EDJE_STATE_PARAM_ASPECT_PREF 6
435#define EDJE_STATE_PARAM_COLOR 7
436#define EDJE_STATE_PARAM_COLOR2 8
437#define EDJE_STATE_PARAM_COLOR3 9
438#define EDJE_STATE_PARAM_COLOR_CLASS 10
439#define EDJE_STATE_PARAM_REL1 11
440#define EDJE_STATE_PARAM_REL1_TO 12
441#define EDJE_STATE_PARAM_REL1_OFFSET 13
442#define EDJE_STATE_PARAM_REL2 14
443#define EDJE_STATE_PARAM_REL2_TO 15
444#define EDJE_STATE_PARAM_REL2_OFFSET 16
445#define EDJE_STATE_PARAM_IMAGE 17
446#define EDJE_STATE_PARAM_BORDER 18
447#define EDJE_STATE_PARAM_FILL_SMOOTH 19
448#define EDJE_STATE_PARAM_FILL_POS 20
449#define EDJE_STATE_PARAM_FILL_SIZE 21
450#define EDJE_STATE_PARAM_TEXT 22
451#define EDJE_STATE_PARAM_TEXT_CLASS 23
452#define EDJE_STATE_PARAM_TEXT_FONT 24
453#define EDJE_STATE_PARAM_TEXT_STYLE 25
454#define EDJE_STATE_PARAM_TEXT_SIZE 26
455#define EDJE_STATE_PARAM_TEXT_FIT 27
456#define EDJE_STATE_PARAM_TEXT_MIN 28
457#define EDJE_STATE_PARAM_TEXT_MAX 29
458#define EDJE_STATE_PARAM_TEXT_ALIGN 30
459#define EDJE_STATE_PARAM_VISIBLE 31
460#define EDJE_STATE_PARAM_MAP_ON 32
461#define EDJE_STATE_PARAM_MAP_PERSP 33
462#define EDJE_STATE_PARAM_MAP_LIGHT 34
463#define EDJE_STATE_PARAM_MAP_ROT_CENTER 35
464#define EDJE_STATE_PARAM_MAP_ROT_X 36
465#define EDJE_STATE_PARAM_MAP_ROT_Y 37
466#define EDJE_STATE_PARAM_MAP_ROT_Z 38
467#define EDJE_STATE_PARAM_MAP_BACK_CULL 39
468#define EDJE_STATE_PARAM_MAP_PERSP_ON 40
469#define EDJE_STATE_PARAM_PERSP_ZPLANE 41
470#define EDJE_STATE_PARAM_PERSP_FOCAL 42
471#define EDJE_STATE_PARAM_PHYSICS_MASS 43
472#define EDJE_STATE_PARAM_PHYSICS_FRICTION 44
473#define EDJE_STATE_PARAM_PHYSICS_RESTITUTION 45
474#define EDJE_STATE_PARAM_PHYSICS_DAMPING 46
475#define EDJE_STATE_PARAM_PHYSICS_SLEEP 47
476#define EDJE_STATE_PARAM_PHYSICS_MATERIAL 48
477#define EDJE_STATE_PARAM_PHYSICS_DENSITY 49
478#define EDJE_STATE_PARAM_PHYSICS_IGNORE_PART_POS 50
479#define EDJE_STATE_PARAM_PHYSICS_LIGHT_ON 51
480#define EDJE_STATE_PARAM_PHYSICS_HARDNESS 52
481#define EDJE_STATE_PARAM_PHYSICS_MOV_FREEDOM_LIN 53
482#define EDJE_STATE_PARAM_PHYSICS_MOV_FREEDOM_ANG 54
483#define EDJE_STATE_PARAM_PHYSICS_BACK_CULL 55
484#define EDJE_STATE_PARAM_PHYSICS_Z 56
485#define EDJE_STATE_PARAM_PHYSICS_DEPTH 57
486#define EDJE_STATE_PARAM_PROXY_SRC_VISIBLE 58
487#define EDJE_STATE_PARAM_PROXY_SRC_CLIP 59
488#define EDJE_STATE_PARAM_LAST 60
489
490#define EDJE_ENTRY_EDIT_MODE_NONE 0
491#define EDJE_ENTRY_EDIT_MODE_SELECTABLE 1
492#define EDJE_ENTRY_EDIT_MODE_EDITABLE 2
493#define EDJE_ENTRY_EDIT_MODE_PASSWORD 3
494
495#define EDJE_ENTRY_SELECTION_MODE_DEFAULT 0
496#define EDJE_ENTRY_SELECTION_MODE_EXPLICIT 1
497
498#define EDJE_ENTRY_CURSOR_MODE_UNDER 0
499#define EDJE_ENTRY_CURSOR_MODE_BEFORE 1
500
501#define EDJE_ORIENTATION_AUTO 0
502#define EDJE_ORIENTATION_LTR 1
503#define EDJE_ORIENTATION_RTL 2
504
505#define EDJE_PART_PATH_SEPARATOR ':'
506#define EDJE_PART_PATH_SEPARATOR_STRING ":"
507#define EDJE_PART_PATH_SEPARATOR_INDEXL '['
508#define EDJE_PART_PATH_SEPARATOR_INDEXR ']'
509
510#define FLAG_NONE 0
511#define FLAG_X 0x01
512#define FLAG_Y 0x02
513#define FLAG_XY (FLAG_X | FLAG_Y)
514
515/*----------*/
516
517struct _AABB {
518 Edje_3D_Vec relative;
519 Edje_3D_Int_Vec offset;
520 int rel_to;
521};
522
523struct _Edje_File
524{
525 const char *path;
526 time_t mtime;
527
528 Edje_External_Directory *external_dir;
529 Edje_Image_Directory *image_dir;
530 Edje_Model_Directory *model_dir;
531 Edje_Sound_Directory *sound_dir;
532 Edje_Vibration_Directory *vibration_dir;
533 Edje_Mo_Directory *mo_dir;
534
535 Eina_List *styles;
536
537 Eina_List *color_classes;
538 Eina_Hash *color_hash;
539
540 int references;
541 const char *compiler;
542 int version;
543 int minor;
544 int feature_ver;
545 FLOAT_T base_scale;
546
547 Eina_Hash *data;
548 Eina_Hash *fonts;
549
550 Eina_Hash *collection;
551 Eina_List *collection_cache;
552
553 Edje_Patterns *collection_patterns;
554
555 Eet_File *ef;
556 Eina_File *f;
557 char fid[8+8+8+2];
558
559 unsigned char free_strings : 1;
560 unsigned char dangling : 1;
561 unsigned char warning : 1;
562};
563
564struct _Edje_Style
565{
566 char *name;
567 Eina_List *tags;
568 Evas_Textblock_Style *style;
569
570 Eina_Bool cache;
571};
572
573struct _Edje_Style_Tag
574{
575 const char *key;
576 const char *value;
577 const char *font;
578 double font_size;
579 const char *text_class;
580};
581
582/*----------*/
583
584
585struct _Edje_Font_Directory_Entry
586{
587 const char *entry; /* the name of the font */
588 const char *file; /* the name of the file */
589};
590
591/*----------*/
592
593struct _Edje_External_Directory
594{
595 Edje_External_Directory_Entry *entries; /* a list of Edje_External_Directory_Entry */
596 unsigned int entries_count;
597};
598
599struct _Edje_External_Directory_Entry
600{
601 const char *entry; /* the name of the external */
602};
603
604
605/*----------*/
606
607
608
609/*----------*/
610
611struct _Edje_Image_Directory
612{
613 Edje_Image_Directory_Entry *entries; /* an array of Edje_Image_Directory_Entry */
614 unsigned int entries_count;
615
616 Edje_Image_Directory_Set *sets; /* an array of Edje_Image_Directory_Set */
617 unsigned int sets_count;
618};
619
620struct _Edje_Image_Directory_Entry
621{
622 const char *entry; /* the nominal name of the image - if any */
623 int source_type; /* alternate source mode. 0 = none */
624 int source_param; /* extra params on encoding */
625 int id; /* the id no. of the image */
626};
627
628struct _Edje_Image_Directory_Set
629{
630 char *name;
631 Eina_List *entries;
632
633 int id;
634};
635
636struct _Edje_Image_Directory_Set_Entry
637{
638 const char *name;
639 int id;
640
641 struct {
642 int w;
643 int h;
644 struct {
645 int w;
646 int h;
647 } min, max;
648 } size;
649
650 struct {
651 int l, r, t, b;
652 FLOAT_T scale_by;
653 } border;
654};
655
656struct _Edje_Model_Directory
657{
658 Edje_Model_Directory_Entry *entries; /* an array of Edje_Model_Directory_Entry */
659 unsigned int entries_count;
660};
661
662struct _Edje_Model_Directory_Entry
663{
664 const char *entry; /* the nominal name of the model - if any */
665 int id; /* the id no. of the image */
666};
667
668struct _Edje_Sound_Sample /*Sound Sample*/
669{
670 const char *name; /* the nominal name of the sound */
671 const char *snd_src; /* Sound source Wav file */
672 int compression; /* Compression - RAW, LOSSLESS COMP , LOSSY ) */
673 int mode; /* alternate source mode. 0 = none */
674 double quality;
675 int id; /* the id no. of the sound */
676};
677
678struct _Edje_Sound_Tone /*Sound Sample*/
679{
680 const char *name; /* the nominal name of the sound - if any */
681 int value; /* alternate source mode. 0 = none */
682 int id; /* the id no. of the sound */
683};
684
685struct _Edje_Sound_Directory
686{
687
688 Edje_Sound_Sample *samples; /* an array of Edje_Sound_Sample entries */
689 unsigned int samples_count;
690
691 Edje_Sound_Tone *tones; /* an array of Edje_Sound_Tone entries */
692 unsigned int tones_count;
693};
694
695struct _Edje_Mo /*Mo Sample*/
696{
697 const char *locale; /* the nominal name of the Mo */
698 char *mo_src; /* Mo source file */
699 int id; /* the id no. of the Mo file */
700};
701
702struct _Edje_Mo_Directory
703{
704 Edje_Mo *mo_entries; /* an array of Edje_Mo entries */
705 unsigned int mo_entries_count;
706};
707
708struct _Edje_Vibration_Sample
709{
710 const char *name;
711 const char *src;
712 int id;
713};
714
715struct _Edje_Vibration_Directory
716{
717 Edje_Vibration_Sample *samples; /* an array of Edje_Sound_Sample entries */
718 unsigned int samples_count;
719};
720/*----------*/
721
722struct _Edje_Program /* a conditional program to be run */
723{
724 int id; /* id of program */
725 const char *name; /* name of the action */
726
727 const char *signal; /* if signal emission name matches the glob here... */
728 const char *source; /* if part that emitted this (name) matches this glob */
729 const char *sample_name;
730 const char *tone_name;
731 double duration;
732 double speed;
733 const char *vibration_name;
734 int vibration_repeat;
735
736 struct {
737 const char *part;
738 const char *state; /* if state is not set, we will try with source */
739 } filter; /* the part filter.part should be in state filter.state for signal to be accepted */
740
741 struct {
742 double from;
743 double range;
744 } in;
745
746 int action; /* type - set state, stop action, set drag pos etc. */
747 const char *state; /* what state of alternates to apply, NULL = default */
748 const char *state2; /* what other state to use - for signal emit action */
749 double value; /* value of state to apply (if multiple names match) */
750 double value2; /* other value for drag actions */
751
752 struct {
753 int mode; /* how to tween - linear, sinusoidal etc. */
754 FLOAT_T time; /* time to graduate between current and new state */
755 FLOAT_T v1; /* other value for drag actions */
756 FLOAT_T v2; /* other value for drag actions */
757 FLOAT_T v3; /* other value for drag actions */
758 FLOAT_T v4; /* other value for drag actions */
759 } tween;
760
761 Eina_List *targets; /* list of target parts to apply the state to */
762
763 Eina_List *after; /* list of actions to run at the end of this, for looping */
764
765 struct {
766 const char *name;
767 const char *description;
768 } api;
769
770 /* used for PARAM_COPY (param names in state and state2 above!) */
771 struct {
772 int src; /* part where parameter is being retrieved */
773 int dst; /* part where parameter is being stored */
774 } param;
775
776#ifdef HAVE_EPHYSICS
777 /* used for actions related to physics, as physics impulses and forces */
778 struct {
779 double w;
780 double x;
781 double y;
782 double z;
783 } physics;
784#endif
785 unsigned char channel;
786 Eina_Bool exec : 1;
787};
788
789struct _Edje_Program_Target /* the target of an action */
790{
791 int id; /* just the part id no, or action id no */
792};
793
794struct _Edje_Program_After /* the action to run after another action */
795{
796 int id;
797};
798
799/*----------*/
800struct _Edje_Limit
801{
802 const char *name;
803 int value;
804};
805
806/*----------*/
807#define PART_TYPE_FIELDS(TYPE) \
808 TYPE RECTANGLE; \
809 TYPE TEXT; \
810 TYPE IMAGE; \
811 TYPE PROXY; \
812 TYPE SWALLOW; \
813 TYPE TEXTBLOCK; \
814 TYPE GROUP; \
815 TYPE BOX; \
816 TYPE TABLE; \
817 TYPE SPACER; \
818 TYPE EXTERNAL; \
819 TYPE MESH_NODE; \
820 TYPE LIGHT; \
821 TYPE CAMERA;
822
823struct _Edje_Part_Collection_Directory_Entry
824{
825 const char *entry; /* the nominal name of the part collection */
826 int id; /* the id of this named part collection */
827
828 struct
829 {
830 PART_TYPE_FIELDS(int)
831 int part;
832 } count;
833
834 struct
835 {
836 PART_TYPE_FIELDS(Eina_Mempool *)
837 Eina_Mempool *part;
838 } mp;
839
840 struct
841 {
842 PART_TYPE_FIELDS(Eina_Mempool *)
843 } mp_rtl; /* For Right To Left interface */
844
845 Edje_Part_Collection *ref;
846 Eina_Bool group_alias;
847};
848
849/*----------*/
850
851/*----------*/
852
853struct _Edje_Pack_Element
854{
855 unsigned char type; /* only GROUP supported for now */
856 Edje_Real_Part *parent; /* pointer to the table/box that hold it, set at runtime */
857 const char *name; /* if != NULL, will be set with evas_object_name_set */
858 const char *source; /* group name to use as source for this element */
859 Edje_Size min, prefer, max;
860 struct {
861 int l, r, t, b;
862 } padding;
863 struct {
864 int w, h;
865 } spread;
866 Edje_Alignment align;
867 Edje_Alignment weight;
868 Edje_Aspect aspect;
869 const char *options; /* extra options for custom objects */
870 /* table specific follows */
871 int col, row;
872 unsigned short colspan, rowspan;
873};
874
875struct _Edje_Physics_Face
876{
877 unsigned char type; /* BOX_FRONT BOX_BACK BOX_RIGHT CYLINDER_BACK ... */
878 const char *source; /* group name to use as source for this element */
879};
880
881typedef enum {
882 EDJE_PART_LIMIT_UNKNOWN = 0,
883 EDJE_PART_LIMIT_BELOW,
884 EDJE_PART_LIMIT_ZERO,
885 EDJE_PART_LIMIT_OVER
886} Edje_Part_Limit_State;
887
888typedef enum {
889 EDJE_STATE_LIMIT_NONE = 0,
890 EDJE_STATE_LIMIT_WIDTH = 1,
891 EDJE_STATE_LIMIT_HEIGHT = 2,
892 EDJE_STATE_LIMIT_BOTH = 3,
893 EDJE_STATE_LIMIT_LAST = 4
894} Edje_Edit_State_Limit;
895
896#ifdef HAVE_EPHYSICS
897typedef enum {
898 EDJE_PART_PHYSICS_BODY_NONE= 0,
899 EDJE_PART_PHYSICS_BODY_RIGID_BOX,
900 EDJE_PART_PHYSICS_BODY_RIGID_SPHERE,
901 EDJE_PART_PHYSICS_BODY_RIGID_CYLINDER,
902 EDJE_PART_PHYSICS_BODY_SOFT_BOX,
903 EDJE_PART_PHYSICS_BODY_SOFT_SPHERE,
904 EDJE_PART_PHYSICS_BODY_SOFT_CYLINDER,
905 EDJE_PART_PHYSICS_BODY_CLOTH,
906 EDJE_PART_PHYSICS_BODY_BOUNDARY_TOP,
907 EDJE_PART_PHYSICS_BODY_BOUNDARY_BOTTOM,
908 EDJE_PART_PHYSICS_BODY_BOUNDARY_RIGHT,
909 EDJE_PART_PHYSICS_BODY_BOUNDARY_LEFT,
910 EDJE_PART_PHYSICS_BODY_BOUNDARY_FRONT,
911 EDJE_PART_PHYSICS_BODY_BOUNDARY_BACK
912} Edje_Part_Physics_Body;
913#endif
914
915struct _Edje_Part_Limit
916{
917 int part;
918
919 Edje_Part_Limit_State width; /* -1, 0 or 1 */
920 Edje_Part_Limit_State height; /* -1, 0, or 1 */
921};
922
923struct _Edje_Signals_Sources_Patterns
924{
925 EINA_REFCOUNT;
926 Edje_Patterns *signals_patterns;
927 Edje_Patterns *sources_patterns;
928
929 Eina_Rbtree *exact_match;
930
931 union {
932 struct {
933 Edje_Program **globing;
934 unsigned int count;
935 } programs;
936 struct {
937 Eina_Inarray globing;
938 } callbacks;
939 } u;
940};
941
942struct _Edje_Signal_Callback_Match
943{
944 const char *signal;
945 const char *source;
946 Edje_Signal_Cb func;
947};
948
949struct _Edje_Signal_Callback_Matches
950{
951 Edje_Signal_Callback_Match *matches;
952
953 Edje_Signals_Sources_Patterns *patterns;
954
955 unsigned int matches_count;
956 EINA_REFCOUNT;
957
958 Eina_Bool hashed : 1;
959};
960
961struct _Edje_Signal_Callback_Flags
962{
963 Eina_Bool delete_me:1;
964 Eina_Bool just_added:1;
965 Eina_Bool propagate:1;
966};
967
968struct _Edje_Signal_Callback_Group
969{
970 const Edje_Signal_Callback_Matches *matches;
971
972 void **custom_data;
973
974 Edje_Signal_Callback_Flags *flags;
975};
976
977/*----------*/
978
979struct _Edje_Part_Collection
980{
981 struct { /* list of Edje_Program */
982 Edje_Program **fnmatch; /* complex match with "*?[\" */
983 unsigned int fnmatch_count;
984
985 Edje_Program **strcmp; /* No special caractere, plain strcmp does the work */
986 unsigned int strcmp_count;
987
988 Edje_Program **strncmp; /* Finish by * or ?, plain strncmp does the work */
989 unsigned int strncmp_count;
990
991 Edje_Program **strrncmp; /* Start with * or ?, reverse strncmp will do the job */
992 unsigned int strrncmp_count;
993
994 Edje_Program **nocmp; /* Empty signal/source that will never match */
995 unsigned int nocmp_count;
996 } programs;
997
998 struct { /* list of limit that need to be monitored */
999 Edje_Limit **vertical;
1000 unsigned int vertical_count;
1001
1002 Edje_Limit **horizontal;
1003 unsigned int horizontal_count;
1004
1005 Edje_Part_Limit *parts;
1006 unsigned int parts_count;
1007 } limits;
1008
1009 Edje_Part **parts; /* an array of Edje_Part */
1010 unsigned int parts_count;
1011
1012 Eina_Hash *data;
1013
1014 int id; /* the collection id */
1015
1016 Eina_Hash *alias; /* aliasing part */
1017 Eina_Hash *aliased; /* invert match of alias */
1018
1019 struct {
1020 Edje_Size min, max;
1021 unsigned char orientation;
1022 } prop;
1023
1024 int references;
1025
1026#ifdef EDJE_PROGRAM_CACHE
1027 struct {
1028 Eina_Hash *no_matches;
1029 Eina_Hash *matches;
1030 } prog_cache;
1031#endif
1032
1033#ifdef HAVE_EPHYSICS
1034 struct {
1035 struct {
1036 double rate;
1037 Evas_Coord z;
1038 Evas_Coord depth;
1039 struct {
1040 Evas_Coord x;
1041 Evas_Coord y;
1042 Evas_Coord z;
1043 } gravity;
1044 } world;
1045 } physics;
1046#endif
1047
1048 Embryo_Program *script; /* all the embryo script code for this group */
1049 const char *part;
1050
1051 /* *** generated at runtime *** */
1052 struct {
1053 Edje_Signals_Sources_Patterns programs;
1054
1055 Edje_Program **table_programs;
1056 int table_programs_size;
1057 } patterns;
1058 /* *** *** */
1059
1060 unsigned char lua_script_only;
1061
1062 unsigned char broadcast_signal;
1063
1064 unsigned char physics_enabled; /* will be 1 if a body is declared */
1065
1066 unsigned char script_recursion; /* permits unsafe Embryo->EDC->Embryo scripting */
1067
1068 unsigned char checked : 1;
1069
1070 struct {
1071 Evas_Real height;
1072 Evas_Real width;
1073 } scene_size;
1074};
1075
1076struct _Edje_Part_Dragable
1077{
1078 int step_x; /* drag jumps n pixels (0 = no limit) */
1079 int step_y; /* drag jumps n pixels (0 = no limit) */
1080
1081 int count_x; /* drag area divided by n (0 = no limit) */
1082 int count_y; /* drag area divided by n (0 = no limit) */
1083
1084 int confine_id; /* dragging within this bit, -1 = no */
1085 int threshold_id; /* dragging outside this bit, -1 = no */
1086
1087 /* davinchi */
1088 int event_id; /* If it is used as scrollbar */
1089
1090 signed char x; /* can u click & drag this bit in x dir */
1091 signed char y; /* can u click & drag this bit in y dir */
1092};
1093
1094struct _Edje_Part_Api
1095{
1096 const char *name;
1097 const char *description;
1098};
1099
1100typedef struct _Edje_Part_Description_List Edje_Part_Description_List;
1101struct _Edje_Part_Description_List
1102{
1103 Edje_Part_Description_Common **desc;
1104 Edje_Part_Description_Common **desc_rtl; /* desc for Right To Left interface */
1105 unsigned int desc_count;
1106};
1107
1108struct _Edje_Part
1109{
1110 const char *name; /* the name if any of the part */
1111 Edje_Part_Description_Common *default_desc; /* the part descriptor for default */
1112 Edje_Part_Description_Common *default_desc_rtl; /* default desc for Right To Left interface */
1113
1114 Edje_Part_Description_List other; /* other possible descriptors */
1115
1116 const char *source, *source2, *source3, *source4, *source5, *source6;
1117 int id; /* its id number */
1118 int clip_to_id; /* the part id to clip this one to */
1119 Edje_Part_Dragable dragable;
1120 Edje_Pack_Element **items; /* packed items for box and table */
1121 unsigned int items_count;
1122 unsigned char type; /* what type (image, rect, text) */
1123#ifdef HAVE_EPHYSICS
1124 unsigned char physics_body; /* body (none, rigid box, soft circle, ...) */
1125#endif
1126 unsigned char effect; /* 0 = plain... */
1127 unsigned char mouse_events; /* it will affect/respond to mouse events */
1128 unsigned char repeat_events; /* it will repeat events to objects below */
1129 unsigned char anti_alias;
1130 Evas_Event_Flags ignore_flags;
1131 unsigned char scale; /* should certain properties scale with edje scale factor? */
1132 Edje_3D_Vec scale_3d;
1133 unsigned char precise_is_inside;
1134 unsigned char use_alternate_font_metrics;
1135 unsigned char pointer_mode;
1136 unsigned char entry_mode;
1137 unsigned char select_mode;
1138 unsigned char cursor_mode;
1139 unsigned char multiline;
1140 unsigned char access; /* it will be used accessibility feature */
1141 Edje_Part_Api api;
1142 unsigned char nested_children_count;
1143};
1144
1145struct _Edje_Part_Image_Id
1146{
1147 int id;
1148 Eina_Bool set;
1149};
1150
1151struct _Edje_Part_Description_Common
1152{
1153 struct {
1154 double value; /* the value of the state (for ranges) */
1155 const char *name; /* the named state if any */
1156 } state;
1157
1158 Edje_Alignment align; /* 0 <-> 1.0 alignment within allocated space */
1159
1160 struct {
1161 unsigned char w, h; /* width or height is fixed in side (cannot expand with Edje object size) */
1162 } fixed;
1163
1164 struct { // only during recalc
1165 unsigned char have;
1166 FLOAT_T w, h;
1167 } minmul;
1168
1169 Edje_Size min, max;
1170 Edje_Position step; /* size stepping by n pixels, 0 = none */
1171 Edje_Aspect_Prefer aspect;
1172
1173 char *color_class; /* how to modify the color */
1174 Edje_Color color;
1175 Edje_Color color2;
1176
1177 struct {
1178 FLOAT_T relative_x;
1179 FLOAT_T relative_y;
1180 int offset_x;
1181 int offset_y;
1182 int id_x; /* -1 = whole part collection, or part ID */
1183 int id_y; /* -1 = whole part collection, or part ID */
1184 } rel1, rel2;
1185
1186 struct {
1187 int id_persp;
1188 int id_light;
1189 struct {
1190 int id_center;
1191 FLOAT_T x, y, z;
1192 } rot;
1193 struct {
1194 FLOAT_T x, y;
1195 } zoom;
1196 Edje_Map_Color **colors; /* List of the Edje_Map_Color */
1197 unsigned int colors_count;
1198 Eina_Bool backcull;
1199 Eina_Bool on;
1200 Eina_Bool persp_on;
1201 Eina_Bool smooth;
1202 Eina_Bool alpha;
1203 } map;
1204
1205 struct {
1206 int zplane;
1207 int focal;
1208 } persp;
1209
1210#ifdef HAVE_EPHYSICS
1211 struct {
1212 double mass;
1213 double restitution;
1214 double friction;
1215 double density;
1216 double hardness;
1217 struct {
1218 double linear;
1219 double angular;
1220 } damping;
1221 struct {
1222 double linear;
1223 double angular;
1224 } sleep;
1225 int z;
1226 int depth;
1227 Eina_List *faces; /* faces for 3d effects */
1228 struct {
1229 struct {
1230 unsigned char x;
1231 unsigned char y;
1232 unsigned char z;
1233 } lin;
1234 struct {
1235 unsigned char x;
1236 unsigned char y;
1237 unsigned char z;
1238 } ang;
1239 } mov_freedom;
1240 unsigned char backcull;
1241 unsigned char material; /* (custom, iron, wood, ...) */
1242 unsigned char light_on;
1243 unsigned char ignore_part_pos;
1244 } physics;
1245#endif
1246
1247 unsigned char visible; /* is it shown */
1248 unsigned char limit; /* 0 == no, 1 = width, 2 = height, 3 = both */
1249 Edje_3D_Vec align_3d;
1250};
1251
1252struct _Edje_Part_Description_Spec_Fill
1253{
1254 FLOAT_T pos_rel_x; /* fill offset x relative to area */
1255 FLOAT_T rel_x; /* relative size compared to area */
1256 FLOAT_T pos_rel_y; /* fill offset y relative to area */
1257 FLOAT_T rel_y; /* relative size compared to area */
1258 int pos_abs_x; /* fill offset x added to fill offset */
1259 int abs_x; /* size of fill added to relative fill */
1260 int pos_abs_y; /* fill offset y added to fill offset */
1261 int abs_y; /* size of fill added to relative fill */
1262 int angle; /* angle of fill -- currently only used by grads */
1263 int spread; /* spread of fill -- currently only used by grads */
1264 char smooth; /* fill with smooth scaling or not */
1265 unsigned char type; /* fill coordinate from container (SCALE) or from source image (TILE) */
1266};
1267
1268struct _Edje_Part_Description_Spec_Border
1269{
1270 int l, r, t, b; /* border scaling on image fill */
1271 unsigned char no_fill; /* do we fill the center of the image if bordered? 1 == NO!!!! */
1272 unsigned char scale; /* scale image border by same as scale factor */
1273 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" */
1274};
1275
1276struct _Edje_Part_Description_Spec_Image
1277{
1278 Edje_Part_Description_Spec_Fill fill;
1279
1280 Edje_Part_Image_Id **tweens; /* list of Edje_Part_Image_Id */
1281 unsigned int tweens_count; /* number of tweens */
1282
1283 int id; /* the image id to use */
1284 int scale_hint; /* evas scale hint */
1285 Eina_Bool set; /* if image condition it's content */
1286
1287 Edje_Part_Description_Spec_Border border;
1288};
1289
1290struct _Edje_Part_Description_Spec_Proxy
1291{
1292 Edje_Part_Description_Spec_Fill fill;
1293
1294 int id; /* the part id to use as a source for this state */
1295 Eina_Bool source_visible; /* source object visibility */
1296 Eina_Bool source_clip; /* source object clip */
1297};
1298
1299struct _Edje_Part_Description_Spec_Text
1300{
1301 Edje_String text; /* if "" or NULL, then leave text unchanged */
1302 char *domain;
1303 char *text_class; /* how to apply/modify the font */
1304 Edje_String style; /* the text style if a textblock */
1305 Edje_String font; /* if a specific font is asked for */
1306 Edje_String repch; /* replacement char for password mode entry */
1307 Edje_String filter; /* special effects */
1308 Eina_List *filter_sources; /* proxy sources for special effects */
1309
1310 Edje_Alignment align; /* text alignment within bounds */
1311 Edje_Color color3;
1312
1313 double ellipsis; /* 0.0 - 1.0 defining where the ellipsis align */
1314 int size; /* 0 = use user set size */
1315 int id_source; /* -1 if none */
1316 char *id_source_part;
1317 int id_text_source; /* -1 if none */
1318 char *id_text_source_part;
1319
1320 unsigned char fit_x; /* resize font size down to fit in x dir */
1321 unsigned char fit_y; /* resize font size down to fit in y dir */
1322 unsigned char min_x; /* if text size should be part min size */
1323 unsigned char min_y; /* if text size should be part min size */
1324 unsigned char max_x; /* if text size should be part max size */
1325 unsigned char max_y; /* if text size should be part max size */
1326 int size_range_min;
1327 int size_range_max; /* -1 means, no bound. */
1328};
1329
1330struct _Edje_Part_Description_Spec_Box
1331{
1332 char *layout, *alt_layout;
1333 Edje_Alignment align;
1334 struct {
1335 int x, y;
1336 } padding;
1337 struct {
1338 unsigned char h, v;
1339 } min;
1340};
1341
1342struct _Edje_Part_Description_Spec_Table
1343{
1344 unsigned char homogeneous;
1345 Edje_Alignment align;
1346 struct {
1347 int x, y;
1348 } padding;
1349 struct {
1350 unsigned char h, v;
1351 } min;
1352};
1353
1354struct _Edje_Part_Description_Spec_Mesh_Node
1355{
1356 struct {
1357 Edje_Part_Image_Id **tweens;
1358 unsigned int tweens_count;
1359 int id;
1360
1361 Eina_Bool set;
1362
1363 Evas_3D_Mesh_Primitive primitive;
1364 Evas_3D_Vertex_Assembly assembly;
1365 } mesh;
1366
1367 struct {
1368 Edje_Part_Image_Id **tweens;
1369 unsigned int tweens_count;
1370 int id;
1371
1372 Eina_Bool need_texture;
1373 Eina_Bool textured;
1374 Eina_Bool set;
1375
1376 Evas_3D_Wrap_Mode wrap1;
1377 Evas_3D_Wrap_Mode wrap2;
1378 Evas_3D_Texture_Filter filter1;
1379 Evas_3D_Texture_Filter filter2;
1380 } texture;
1381
1382 struct {
1383 Edje_Color ambient;
1384 Edje_Color diffuse;
1385 Edje_Color specular;
1386 Eina_Bool normal;
1387 FLOAT_T shininess;
1388 Evas_3D_Shade_Mode shade;
1389
1390 Evas_3D_Material_Attrib material_attrib;
1391 } properties;
1392
1393 AABB aabb1;
1394 AABB aabb2;
1395
1396 struct {
1397 Evas_3D_Node_Orientation_Type type;
1398 FLOAT_T data[6];
1399 int look_to; /* -1 = whole part collection, or part ID */
1400 } orientation;
1401
1402 struct {
1403 Edje_3D_Vec point;
1404
1405 unsigned char space;
1406 } position;
1407};
1408
1409struct _Edje_Part_Description_Spec_Light
1410{
1411 struct {
1412 Edje_Color ambient;
1413 Edje_Color diffuse;
1414 Edje_Color specular;
1415 } properties;
1416
1417 struct {
1418 Edje_3D_Vec point;
1419
1420 unsigned char space;
1421 } position;
1422
1423 struct {
1424 Evas_3D_Node_Orientation_Type type;
1425 FLOAT_T data[6];
1426 int look_to; /* -1 = whole part collection, or part ID */
1427 } orientation;
1428};
1429
1430struct _Edje_Part_Description_Spec_Camera
1431{
1432 struct {
1433 Evas_Real fovy;
1434 Evas_Real aspect;
1435 Evas_Real frustum_near;
1436 Evas_Real frustum_far;
1437 } camera;
1438
1439 struct {
1440 Edje_3D_Vec point;
1441 unsigned char space;
1442 } position;
1443
1444 struct {
1445 Evas_3D_Node_Orientation_Type type;
1446 FLOAT_T data[6];
1447 int look_to; /* -1 = whole part collection, or part ID */
1448 } orientation;
1449};
1450
1451
1452struct _Edje_Part_Description_Image
1453{
1454 Edje_Part_Description_Common common;
1455 Edje_Part_Description_Spec_Image image;
1456};
1457
1458struct _Edje_Part_Description_Proxy
1459{
1460 Edje_Part_Description_Common common;
1461 Edje_Part_Description_Spec_Proxy proxy;
1462};
1463
1464struct _Edje_Part_Description_Text
1465{
1466 Edje_Part_Description_Common common;
1467 Edje_Part_Description_Spec_Text text;
1468};
1469
1470struct _Edje_Part_Description_Box
1471{
1472 Edje_Part_Description_Common common;
1473 Edje_Part_Description_Spec_Box box;
1474};
1475
1476struct _Edje_Part_Description_Table
1477{
1478 Edje_Part_Description_Common common;
1479 Edje_Part_Description_Spec_Table table;
1480};
1481
1482struct _Edje_Part_Description_External
1483{
1484 Edje_Part_Description_Common common;
1485 Eina_List *external_params; /* parameters for external objects */
1486};
1487
1488struct _Edje_Part_Description_Mesh_Node
1489{
1490 Edje_Part_Description_Common common;
1491 Edje_Part_Description_Spec_Mesh_Node mesh_node;
1492};
1493
1494struct _Edje_Part_Description_Light
1495{
1496 Edje_Part_Description_Common common;
1497 Edje_Part_Description_Spec_Light light;
1498};
1499
1500struct _Edje_Part_Description_Camera
1501{
1502 Edje_Part_Description_Common common;
1503 Edje_Part_Description_Spec_Camera camera;
1504};
1505
1506/*----------*/
1507
1508struct _Edje_Signal_Source_Char
1509{
1510 EINA_RBTREE;
1511
1512 const char *signal;
1513 const char *source;
1514
1515 Eina_Inarray list;
1516};
1517
1518struct _Edje
1519{
1520 Evas_Object_Smart_Clipped_Data *base;
1521 /* This contains (or should):
1522 Evas_Object *clipper; // a big rect to clip this Edje to
1523 Evas *evas; // the Evas this Edje belongs to
1524 */
1525 const char *path;
1526 const char *group;
1527 const char *parent;
1528 const char *language;
1529
1530 Evas_Object *obj; /* the smart object */
1531 Edje_File *file; /* the file the data comes form */
1532 Edje_Part_Collection *collection; /* the description being used */
1533 Eina_List *actions; /* currently running actions */
1534 Eina_List *pending_actions;
1535 Eina_Hash *color_classes;
1536 Eina_List *text_classes;
1537 /* variable pool for Edje Embryo scripts */
1538 Edje_Var_Pool *var_pool;
1539 /* for faster lookups to avoid nth list walks */
1540 Edje_Real_Part **table_parts;
1541 Edje_Real_Part *focused_part;
1542 Eina_List *subobjs;
1543 Eina_List *text_insert_filter_callbacks;
1544 Eina_List *markup_filter_callbacks;
1545
1546 Eina_List *groups;
1547
1548 Edje_Perspective *persp;
1549
1550 const Edje_Signal_Callback_Group *callbacks;
1551
1552 struct {
1553 Edje_Text_Change_Cb func;
1554 void *data;
1555 } text_change;
1556
1557 struct {
1558 Edje_Message_Handler_Cb func;
1559 void *data;
1560 int num;
1561 } message;
1562
1563 struct {
1564 Edje_Item_Provider_Cb func;
1565 void *data;
1566 } item_provider;
1567
1568#ifdef HAVE_EPHYSICS
1569 EPhysics_World *world;
1570#endif
1571
1572 Eina_List *user_defined;
1573
1574 lua_State *L;
1575 Eina_Inlist *lua_objs;
1576 int lua_ref;
1577
1578 int processing_messages;
1579 int state;
1580 int preload_count;
1581
1582 unsigned int table_parts_size;
1583
1584 int walking_callbacks;
1585
1586 int references;
1587 int block;
1588 int load_error;
1589 int freeze;
1590
1591 Evas_Coord x, y, w, h;
1592 Edje_Size min;
1593 double paused_at;
1594 FLOAT_T scale;
1595
1596 Eina_Bool is_rtl : 1;
1597 Eina_Bool dirty : 1;
1598 Eina_Bool recalc : 1;
1599 Eina_Bool delete_callbacks : 1;
1600 Eina_Bool just_added_callbacks : 1;
1601 Eina_Bool have_objects : 1;
1602 Eina_Bool paused : 1;
1603 Eina_Bool no_anim : 1;
1604 Eina_Bool calc_only : 1;
1605 Eina_Bool walking_actions : 1;
1606 Eina_Bool block_break : 1;
1607 Eina_Bool delete_me : 1;
1608 Eina_Bool postponed : 1;
1609 Eina_Bool freeze_calc : 1;
1610 Eina_Bool has_entries : 1;
1611 Eina_Bool entries_inited : 1;
1612#ifdef EDJE_CALC_CACHE
1613 Eina_Bool text_part_change : 1;
1614 Eina_Bool all_part_change : 1;
1615#endif
1616 Eina_Bool have_mapped_part : 1;
1617 Eina_Bool recalc_call : 1;
1618 Eina_Bool update_hints : 1;
1619 Eina_Bool recalc_hints : 1;
1620 Eina_Bool need_map_update : 1;
1621};
1622
1623struct _Edje_Calc_Params_Map
1624{
1625 struct {
1626 int x, y, z;
1627 } center; // 12
1628 struct {
1629 FLOAT_T x, y, z;
1630 } rotation; // 24
1631 struct {
1632 int x, y, z;
1633 int r, g, b;
1634 int ar, ag, ab;
1635 } light; // 36
1636 struct {
1637 int x, y, z;
1638 int focal;
1639 } persp; // 16
1640 struct {
1641 FLOAT_T x, y;
1642 } zoom; //16
1643 Edje_Map_Color **colors;
1644 unsigned int colors_count;
1645};
1646
1647struct _Edje_Calc_Params_Physics
1648{
1649 double mass; // 8
1650 double restitution; // 8
1651 double friction; // 8
1652 double density; // 8
1653 double hardness; // 8
1654 struct {
1655 double linear; //8
1656 double angular; //8
1657 } damping; // 16
1658 struct {
1659 double linear; //8
1660 double angular; //8
1661 } sleep; // 16
1662 int z; // 4
1663 int depth; // 4
1664 struct {
1665 struct {
1666 unsigned char x;
1667 unsigned char y;
1668 unsigned char z;
1669 } lin; // 3
1670 struct {
1671 unsigned char x;
1672 unsigned char y;
1673 unsigned char z;
1674 } ang; // 3
1675 } mov_freedom; // 6
1676 unsigned char backcull;
1677 unsigned char material; // 1
1678 unsigned char light_on; // 1
1679 unsigned char ignore_part_pos; //1
1680};
1681
1682struct _Edje_Calc_Params
1683{
1684 // int x, y, w, h; // 16
1685 struct {
1686 FLOAT_T x, y, w, h; // 32
1687 } eval;
1688 Edje_Rectangle final; // 16
1689 Edje_Rectangle req; // 16
1690 Edje_Rectangle req_drag; // 16
1691 Edje_Color color; // 4
1692 union {
1693 struct {
1694 struct {
1695 int x, y, w, h; // 16
1696 int angle; // 4
1697 int spread; // 4
1698 } fill; // 24
1699
1700 union {
1701 struct {
1702 int l, r, t, b; // 16
1703 FLOAT_T border_scale_by;
1704 } image; // 16
1705 } spec; // 16
1706 } common; // 40
1707 struct {
1708 Edje_Alignment align; /* text alignment within bounds */ // 16
1709 double ellipsis; // 8
1710 int size; // 4
1711 Edje_Color color2, color3; // 8
1712 } text; // 36
1713 } type; // 40
1714 const Edje_Calc_Params_Map *map; // 88
1715#ifdef HAVE_EPHYSICS
1716 const Edje_Calc_Params_Physics *physics; // 90
1717#endif
1718 unsigned char persp_on : 1;
1719 unsigned char lighted : 1;
1720 unsigned char mapped : 1;
1721 unsigned char visible : 1;
1722 unsigned char smooth : 1; // 1
1723}; // 271
1724
1725struct _Edje_Real_Part_Set
1726{
1727 Edje_Image_Directory_Set_Entry *entry; // 4
1728 Edje_Image_Directory_Set *set; // 4
1729
1730 int id; // 4
1731};
1732
1733struct _Edje_Real_Part_State
1734{
1735 Edje_Part_Description_Common *description; // 4
1736 Edje_Part_Description_Common *description_rtl; // 4
1737#ifdef EDJE_CALC_CACHE
1738 int state; // 4
1739 Edje_Calc_Params p; // 271
1740#endif
1741 void *external_params; // 4
1742 Edje_Real_Part_Set *set; // 4
1743}; // 32
1744// WITH EDJE_CALC_CACHE 307
1745
1746struct _Edje_Real_Part_Drag
1747{
1748 FLOAT_T x, y; // 16
1749 Edje_Position_Scale val, size, step, page; // 64
1750 struct {
1751 unsigned int count; // 4
1752 int x, y; // 8
1753 } down;
1754 struct {
1755 int x, y; // 8
1756 } tmp;
1757 Edje_Real_Part *confine_to; // 4
1758 Edje_Real_Part *threshold; // 4
1759 Eina_Bool need_reset : 1; // 4
1760 Eina_Bool threshold_started_x : 1;
1761 Eina_Bool threshold_started_y : 1;
1762 Eina_Bool threshold_x : 1;
1763 Eina_Bool threshold_y : 1;
1764 Eina_Bool started : 1;
1765}; // 104
1766
1767#define EDJE_RP_TYPE_NONE 0
1768#define EDJE_RP_TYPE_TEXT 1
1769#define EDJE_RP_TYPE_CONTAINER 2
1770#define EDJE_RP_TYPE_SWALLOW 3
1771
1772struct _Edje_Real_Part_Text
1773{
1774 void *entry_data; // 4
1775 Edje_Real_Part *source; // 4
1776 Edje_Real_Part *text_source; // 4
1777 const char *text; // 4
1778 const char *font; // 4
1779 const char *style; // 4
1780 const char *filter; // 4
1781 Eina_List *filter_sources; // 4
1782 Edje_Position offset; // 8
1783 short size; // 2
1784 struct {
1785 unsigned char fit_x, fit_y; // 2
1786 short in_size; // 2
1787 short out_size; // 2
1788 float ellipsis; // 4
1789 Evas_Coord in_w, in_h; // 8
1790 const char *in_str; // 4
1791 const char *out_str; // 4
1792 const char *in_font; // 4
1793 FLOAT_T align_x, align_y; // 16
1794 } cache;
1795}; // 88
1796// FIXME make text a potiner to struct and alloc at end
1797// if part type is TEXT move common members textblock +
1798// text to front and have smaller struct for textblock
1799
1800struct _Edje_Real_Part_Container
1801{
1802 Eina_List *items; // 4 //FIXME: only if table/box
1803 Edje_Part_Box_Animation *anim; // 4 //FIXME: Used only if box
1804};
1805
1806struct _Edje_Real_Part_Swallow
1807{
1808 Evas_Object *swallowed_object; // 4 // FIXME: move with swallow_params data
1809 struct {
1810 Edje_Size min, max; // 16
1811 Edje_Aspect aspect; // 12
1812 } swallow_params; // 28 // FIXME: only if type SWALLOW
1813};
1814
1815struct _Edje_Real_Part
1816{
1817 Edje_Real_Part_State param1; // 32
1818 Edje_Real_Part_State *param2, *custom; // 8
1819 Edje_Part *part; // 4
1820 Evas_Object *object; // 4
1821 Evas_Object *nested_smart; // 4
1822 Edje_Real_Part_Drag *drag; // 4
1823 Edje_Part_Description_Common *chosen_description; // 4
1824 // WITH EDJE_CALC_CACHE: 307
1825 Edje_Running_Program *program; // 4
1826 Edje_Calc_Params *current; // 4
1827#ifdef HAVE_EPHYSICS
1828 Edje_Part_Description_Common *prev_description; // 4
1829 EPhysics_Body *body; // 4
1830 Eina_List *body_faces; // 4
1831#endif
1832 union {
1833 Edje_Real_Part_Text *text;
1834 Edje_Real_Part_Container *container;
1835 Edje_Real_Part_Swallow *swallow;
1836 } typedata; // 4
1837 FLOAT_T description_pos; // 8
1838 Edje_Rectangle req; // 16
1839 int x, y, w, h; // 16
1840 int clicked_button; // 4
1841#ifdef EDJE_CALC_CACHE
1842 int state; // 4
1843#endif
1844 unsigned char type; // 1
1845 unsigned char calculated : 2; // 1
1846 unsigned char calculating : 2; // 0
1847 Eina_Bool still_in : 1; // 0
1848#ifdef EDJE_CALC_CACHE
1849 Eina_Bool invalidate : 1; // 0
1850#endif
1851}; // 128
1852// WITH EDJE_CALC_CACHE: 407
1853
1854struct _Edje_Running_Program
1855{
1856 Edje *edje;
1857 Edje_Program *program;
1858 double start_time;
1859 Eina_Bool delete_me : 1;
1860};
1861
1862struct _Edje_Signal_Callback
1863{
1864 const char *signal;
1865 const char *source;
1866 Edje_Signal_Cb func;
1867 void *data;
1868 Eina_Bool just_added : 1;
1869 Eina_Bool delete_me : 1;
1870 Eina_Bool propagate : 1;
1871};
1872
1873struct _Edje_Text_Insert_Filter_Callback
1874{
1875 const char *part;
1876 Edje_Text_Filter_Cb func;
1877 void *data;
1878};
1879
1880struct _Edje_Markup_Filter_Callback
1881{
1882 const char *part;
1883 Edje_Markup_Filter_Cb func;
1884 void *data;
1885};
1886
1887struct _Edje_Pending_Program
1888{
1889 Edje *edje;
1890 Edje_Program *program;
1891 Ecore_Timer *timer;
1892};
1893
1894struct _Edje_Text_Style
1895{
1896 struct {
1897 unsigned char x, y;
1898 } offset;
1899 struct {
1900 unsigned char l, r, t, b;
1901 } pad;
1902 int num;
1903 struct {
1904 unsigned char color; /* 0 = color, 1, 2 = color2, color3 */
1905 signed char x, y; /* offset */
1906 unsigned char alpha;
1907 } members[32];
1908};
1909
1910struct _Edje_Text_Class
1911{
1912 const char *name;
1913 const char *font;
1914 Evas_Font_Size size;
1915};
1916
1917struct _Edje_Var_Int
1918{
1919 int v;
1920};
1921
1922struct _Edje_Var_Float
1923{
1924 double v;
1925};
1926
1927struct _Edje_Var_String
1928{
1929 char *v;
1930};
1931
1932struct _Edje_Var_List
1933{
1934 Eina_List *v;
1935};
1936
1937struct _Edje_Var_Hash
1938{
1939 Eina_Hash *v;
1940};
1941
1942struct _Edje_Var_Timer
1943{
1944 Edje *edje;
1945 int id;
1946 Embryo_Function func;
1947 int val;
1948 Ecore_Timer *timer;
1949};
1950
1951struct _Edje_Var_Animator
1952{
1953 Edje *edje;
1954 int id;
1955 Embryo_Function func;
1956 int val;
1957 double start, len;
1958 char delete_me;
1959};
1960
1961struct _Edje_Var_Pool
1962{
1963 int id_count;
1964 Eina_List *timers;
1965 Eina_List *animators;
1966 int size;
1967 Edje_Var *vars;
1968 int walking_list;
1969};
1970
1971struct _Edje_Var
1972{
1973 union {
1974 Edje_Var_Int i;
1975 Edje_Var_Float f;
1976 Edje_Var_String s;
1977 Edje_Var_List l;
1978 Edje_Var_Hash h;
1979 } data;
1980 unsigned char type;
1981};
1982
1983typedef enum _Edje_Queue
1984{
1985 EDJE_QUEUE_APP,
1986 EDJE_QUEUE_SCRIPT
1987} Edje_Queue;
1988
1989typedef struct _Edje_Message_Signal Edje_Message_Signal;
1990typedef struct _Edje_Message Edje_Message;
1991
1992typedef struct _Edje_Message_Signal_Data Edje_Message_Signal_Data;
1993struct _Edje_Message_Signal_Data
1994{
1995 int ref;
1996 void *data;
1997 void (*free_func)(void *);
1998};
1999
2000struct _Edje_Message_Signal
2001{
2002 const char *sig;
2003 const char *src;
2004 Edje_Message_Signal_Data *data;
2005};
2006
2007struct _Edje_Message
2008{
2009 Edje *edje;
2010 Edje_Queue queue;
2011 Edje_Message_Type type;
2012 int id;
2013 unsigned char *msg;
2014 Eina_Bool propagated : 1;
2015};
2016
2017typedef enum _Edje_Fill
2018{
2019 EDJE_FILL_TYPE_SCALE = 0,
2020 EDJE_FILL_TYPE_TILE = 1,
2021 EDJE_FILL_TYPE_LAST = 2
2022} Edje_Fill;
2023
2024typedef enum _Edje_Match_Error
2025{
2026 EDJE_MATCH_OK,
2027 EDJE_MATCH_ALLOC_ERROR,
2028 EDJE_MATCH_SYNTAX_ERROR
2029
2030} Edje_Match_Error;
2031
2032typedef struct _Edje_States Edje_States;
2033struct _Edje_Patterns
2034{
2035 const char **patterns;
2036
2037 Edje_States *states;
2038
2039 int ref;
2040 Eina_Bool delete_me : 1;
2041
2042 size_t patterns_size;
2043 size_t max_length;
2044 unsigned int finals[];
2045};
2046
2047typedef enum _Edje_User_Defined_Type
2048{
2049 EDJE_USER_SWALLOW,
2050 EDJE_USER_BOX_PACK,
2051 EDJE_USER_TABLE_PACK,
2052 EDJE_USER_STRING,
2053 EDJE_USER_DRAG_STEP,
2054 EDJE_USER_DRAG_PAGE,
2055 EDJE_USER_DRAG_VALUE,
2056 EDJE_USER_DRAG_SIZE
2057} Edje_User_Defined_Type;
2058
2059typedef struct _Edje_User_Defined Edje_User_Defined;
2060struct _Edje_User_Defined
2061{
2062 Edje_User_Defined_Type type;
2063 const char *part;
2064 Edje *ed;
2065
2066 union {
2067 struct {
2068 const char *text;
2069 } string;
2070 struct {
2071 Evas_Object *child;
2072 } swallow;
2073 struct {
2074 Evas_Object *child;
2075 int index;
2076 } box;
2077 struct {
2078 Evas_Object *child;
2079 unsigned short col;
2080 unsigned short row;
2081 unsigned short colspan;
2082 unsigned short rowspan;
2083 } table;
2084 struct {
2085 double x, y;
2086 } drag_position;
2087 struct {
2088 double w, h;
2089 } drag_size;
2090 } u;
2091};
2092
2093typedef struct _Edje_Font_List Edje_Font_List;
2094typedef struct _Edje_Font Edje_Font;
2095
2096struct _Edje_Font_List
2097{
2098 Eina_List *list;
2099};
2100
2101struct _Edje_Font
2102{
2103 char *name;
2104 char *file;
2105};
2106
2107Edje_Patterns *edje_match_collection_dir_init(const Eina_List *lst);
2108Edje_Patterns *edje_match_programs_signal_init(Edje_Program * const *array,
2109 unsigned int count);
2110Edje_Patterns *edje_match_programs_source_init(Edje_Program * const *array,
2111 unsigned int count);
2112Edje_Patterns *edje_match_callback_signal_init(const Eina_Inarray *lst,
2113 const Edje_Signal_Callback_Match *matches);
2114Edje_Patterns *edje_match_callback_source_init(const Eina_Inarray *lst,
2115 const Edje_Signal_Callback_Match *matches);
2116
2117Eina_Bool edje_match_collection_dir_exec(const Edje_Patterns *ppat,
2118 const char *string);
2119Eina_Bool edje_match_programs_exec(const Edje_Patterns *ppat_signal,
2120 const Edje_Patterns *ppat_source,
2121 const char *signal,
2122 const char *source,
2123 Edje_Program **programs,
2124 Eina_Bool (*func)(Edje_Program *pr, void *data),
2125 void *data,
2126 Eina_Bool prop);
2127int edje_match_callback_exec(const Edje_Signals_Sources_Patterns *ssp,
2128 const Edje_Signal_Callback_Match *matches,
2129 const char *sig,
2130 const char *source,
2131 Edje *ed,
2132 Eina_Bool prop);
2133
2134void edje_match_patterns_free(Edje_Patterns *ppat);
2135
2136Eina_List *edje_match_program_hash_build(Edje_Program * const * programs,
2137 unsigned int count,
2138 Eina_Rbtree **tree);
2139void edje_match_callback_hash_build(const Edje_Signal_Callback_Match *callback,
2140 int callbacks_count,
2141 Eina_Rbtree **tree,
2142 Eina_Inarray *result);
2143const Eina_Inarray *edje_match_signal_source_hash_get(const char *signal,
2144 const char *source,
2145 const Eina_Rbtree *tree);
2146void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data);
2147void _edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m);
2148
2149// FIXME remove below 3 eapi decls when edje_convert goes
2150EAPI void _edje_edd_init(void);
2151EAPI void _edje_data_font_list_desc_make(Eet_Data_Descriptor **_font_list_edd, Eet_Data_Descriptor **_font_edd);
2152EAPI void _edje_edd_shutdown(void);
2153
2154EAPI extern Eet_Data_Descriptor *_edje_edd_edje_file;
2155EAPI extern Eet_Data_Descriptor *_edje_edd_edje_part_collection;
2156
2157extern int _edje_anim_count;
2158extern Ecore_Animator *_edje_timer;
2159extern Eina_List *_edje_animators;
2160extern Eina_List *_edje_edjes;
2161
2162extern char *_edje_fontset_append;
2163extern FLOAT_T _edje_scale;
2164extern int _edje_util_freeze_val;
2165extern int _edje_util_freeze_calc_count;
2166extern Eina_List *_edje_util_freeze_calc_list;
2167
2168extern Eina_Bool _edje_password_show_last;
2169extern FLOAT_T _edje_password_show_last_timeout;
2170
2171extern Eina_Mempool *_edje_real_part_mp;
2172extern Eina_Mempool *_edje_real_part_state_mp;
2173
2174extern Eina_Cow *_edje_calc_params_map_cow;
2175extern Eina_Cow *_edje_calc_params_physics_cow;
2176
2177extern Eina_Hash *_edje_file_hash;
2178
2179extern const char *_edje_language;
2180extern const char *_edje_cache_path;
2181
2182EAPI extern Eina_Mempool *_emp_RECTANGLE;
2183EAPI extern Eina_Mempool *_emp_TEXT;
2184EAPI extern Eina_Mempool *_emp_IMAGE;
2185EAPI extern Eina_Mempool *_emp_PROXY;
2186EAPI extern Eina_Mempool *_emp_SWALLOW;
2187EAPI extern Eina_Mempool *_emp_TEXTBLOCK;
2188EAPI extern Eina_Mempool *_emp_GROUP;
2189EAPI extern Eina_Mempool *_emp_BOX;
2190EAPI extern Eina_Mempool *_emp_TABLE;
2191EAPI extern Eina_Mempool *_emp_EXTERNAL;
2192EAPI extern Eina_Mempool *_emp_SPACER;
2193EAPI extern Eina_Mempool *_emp_MESH_NODE;
2194EAPI extern Eina_Mempool *_emp_LIGHT;
2195EAPI extern Eina_Mempool *_emp_CAMERA;
2196EAPI extern Eina_Mempool *_emp_part;
2197
2198void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T v1, FLOAT_T v2, FLOAT_T v3, FLOAT_T v4);
2199
2200/** Find the description of the part by state name and state value.
2201 * The param 'approximate' on the approximate calculation of the state value,
2202 * it used for amination calculate, when used transition from 0.0 to 1.0.
2203 * If need exact matching state name and value set EINA_FALSE to 'approximate'.
2204 */
2205Edje_Part_Description_Common *_edje_part_description_find(Edje *ed,
2206 Edje_Real_Part *rp,
2207 const char *state_name, double val,
2208 Eina_Bool approximate);
2209void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2);
2210void _edje_recalc(Edje *ed);
2211void _edje_recalc_do(Edje *ed);
2212int _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y);
2213void _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y);
2214
2215Eina_Bool _edje_timer_cb(void *data);
2216Eina_Bool _edje_pending_timer_cb(void *data);
2217void _edje_callbacks_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp);
2218void _edje_callbacks_focus_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp);
2219void _edje_callbacks_del(Evas_Object *obj, Edje *ed);
2220void _edje_callbacks_focus_del(Evas_Object *obj, Edje *ed);
2221
2222const Edje_Signal_Callback_Group *_edje_signal_callback_alloc(void);
2223void _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp);
2224void _edje_signal_callback_push(const Edje_Signal_Callback_Group *cgp,
2225 const char *signal, const char *source,
2226 Edje_Signal_Cb func, void *data,
2227 Eina_Bool propagate);
2228void *_edje_signal_callback_disable(const Edje_Signal_Callback_Group *cgp,
2229 const char *signal, const char *source,
2230 Edje_Signal_Cb func, void *data);
2231
2232EAPI void _edje_edd_init(void);
2233EAPI void _edje_edd_shutdown(void);
2234
2235int _edje_object_file_set_internal(Evas_Object *obj, const Eina_File *file, const char *group, const char *parent, Eina_List *group_path, Eina_Array *nested);
2236
2237void _edje_file_del(Edje *ed);
2238void _edje_file_free(Edje_File *edf);
2239void _edje_file_cache_shutdown(void);
2240void _edje_collection_free(Edje_File *edf,
2241 Edje_Part_Collection *ec,
2242 Edje_Part_Collection_Directory_Entry *ce);
2243void _edje_collection_free_part_description_clean(int type,
2244 Edje_Part_Description_Common *desc,
2245 Eina_Bool free_strings);
2246void _edje_collection_free_part_description_free(int type,
2247 Edje_Part_Description_Common *desc,
2248 Edje_Part_Collection_Directory_Entry *ce,
2249 Eina_Bool free_strings);
2250
2251void _edje_del(Edje *ed);
2252void _edje_ref(Edje *ed);
2253void _edje_unref(Edje *ed);
2254void _edje_clean_objects(Edje *ed);
2255void _edje_ref(Edje *ed);
2256void _edje_unref(Edje *ed);
2257
2258Eina_Bool _edje_program_run_iterate(Edje_Running_Program *runp, double tim);
2259void _edje_program_end(Edje *ed, Edje_Running_Program *runp);
2260void _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, const char *ssrc);
2261void _edje_programs_patterns_clean(Edje_Part_Collection *ed);
2262void _edje_programs_patterns_init(Edje_Part_Collection *ed);
2263void _edje_emit(Edje *ed, const char *sig, const char *src);
2264void _edje_emit_full(Edje *ed, const char *sig, const char *src, void *data, void (*free_func)(void *));
2265void _edje_emit_handle(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Data *data, Eina_Bool prop);
2266void _edje_signals_sources_patterns_clean(Edje_Signals_Sources_Patterns *ssp);
2267
2268const Edje_Signals_Sources_Patterns *_edje_signal_callback_patterns_ref(const Edje_Signal_Callback_Group *gp);
2269void _edje_signal_callback_patterns_unref(const Edje_Signals_Sources_Patterns *essp);
2270void _edje_signal_callback_reset(Edje_Signal_Callback_Flags *flags, unsigned int length);
2271
2272void _edje_signal_callback_free(const Edje_Signal_Callback_Group *gp);
2273
2274void _edje_text_init(void);
2275void _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep);
2276void _edje_text_part_on_del(Edje *ed, Edje_Part *ep);
2277void _edje_text_recalc_apply(Edje *ed,
2278 Edje_Real_Part *ep,
2279 Edje_Calc_Params *params,
2280 Edje_Part_Description_Text *chosen_desc,
2281 Eina_Bool calc_only);
2282Evas_Font_Size _edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc);
2283const char * _edje_text_class_font_get(Edje *ed,
2284 Edje_Part_Description_Text *chosen_desc,
2285 int *size, char **free_later);
2286const char * _edje_text_font_get(const char *base, const char *new,
2287 char **free_later);
2288
2289
2290
2291Edje_Real_Part *_edje_real_part_get(const Edje *ed, const char *part);
2292Edje_Real_Part *_edje_real_part_recursive_get(Edje **ed, const char *part);
2293Edje_Color_Class *_edje_color_class_find(const Edje *ed, const char *color_class);
2294void _edje_color_class_member_add(Edje *ed, const char *color_class);
2295void _edje_color_class_member_del(Edje *ed, const char *color_class);
2296void _edje_color_class_member_clean(Edje *ed);
2297void _edje_color_class_on_del(Edje *ed, Edje_Part *ep);
2298void _edje_color_class_members_free(void);
2299void _edje_color_class_hash_free(void);
2300
2301const char * _edje_find_alias(Eina_Hash *aliased, char *src, int *length);
2302Edje_Text_Class *_edje_text_class_find(Edje *ed, const char *text_class);
2303void _edje_text_class_member_add(Edje *ed, const char *text_class);
2304void _edje_text_class_member_del(Edje *ed, const char *text_class);
2305void _edje_text_class_members_free(void);
2306void _edje_text_class_hash_free(void);
2307void _edje_text_class_members_clean(Edje *ed);
2308Edje *_edje_fetch(const Evas_Object *obj) EINA_PURE;
2309int _edje_util_freeze(Edje *ed);
2310int _edje_util_thaw(Edje *ed);
2311int _edje_block(Edje *ed);
2312int _edje_unblock(Edje *ed);
2313int _edje_block_break(Edje *ed);
2314void _edje_block_violate(Edje *ed);
2315void _edje_object_part_swallow_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
2316void _edje_object_part_swallow_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
2317void _edje_real_part_swallow(Edje *ed, Edje_Real_Part *rp, Evas_Object *obj_swallow, Eina_Bool hints_update);
2318void _edje_real_part_swallow_clear(Edje *ed, Edje_Real_Part *rp);
2319void _edje_box_init(void);
2320void _edje_box_shutdown(void);
2321Eina_Bool _edje_box_layout_find(const char *name, Evas_Object_Box_Layout *cb, void **data, void (**free_data)(void *data));
2322void _edje_box_recalc_apply(Edje *ed EINA_UNUSED, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description_Box *chosen_desc);
2323Eina_Bool _edje_box_layout_add_child(Edje_Real_Part *rp, Evas_Object *child_obj);
2324void _edje_box_layout_remove_child(Edje_Real_Part *rp, Evas_Object *child_obj);
2325Edje_Part_Box_Animation * _edje_box_layout_anim_new(Evas_Object *box);
2326void _edje_box_layout_free_data(void *data);
2327
2328Edje_Part_Description_Text *_edje_real_part_text_source_description_get(Edje_Real_Part *ep, Edje_Real_Part **rp2);
2329Edje_Part_Description_Text *_edje_real_part_text_text_source_description_get(Edje_Real_Part *ep, Edje_Real_Part **rp2);
2330Eina_Bool _edje_real_part_box_append(Edje *ed, Edje_Real_Part *rp, Evas_Object *child_obj);
2331Eina_Bool _edje_real_part_box_prepend(Edje *ed, Edje_Real_Part *rp, Evas_Object *child_obj);
2332Eina_Bool _edje_real_part_box_insert_before(Edje *ed, Edje_Real_Part *rp, Evas_Object *child_obj, const Evas_Object *ref);
2333Eina_Bool _edje_real_part_box_insert_at(Edje *ed, Edje_Real_Part *rp, Evas_Object *child_obj, unsigned int pos);
2334Evas_Object *_edje_real_part_box_remove(Edje *ed, Edje_Real_Part *rp, Evas_Object *child_obj);
2335Evas_Object *_edje_real_part_box_remove_at(Edje *ed, Edje_Real_Part *rp, unsigned int pos);
2336Eina_Bool _edje_real_part_box_remove_all(Edje *ed, Edje_Real_Part *rp, Eina_Bool clear);
2337Eina_Bool _edje_real_part_table_pack(Edje *ed, Edje_Real_Part *rp, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
2338Eina_Bool _edje_real_part_table_unpack(Edje *ed, Edje_Real_Part *rp, Evas_Object *child_obj);
2339void _edje_real_part_table_clear(Edje *ed, Edje_Real_Part *rp, Eina_Bool clear);
2340Evas_Object *_edje_children_get(Edje_Real_Part *rp, const char *partid);
2341
2342Eina_Bool _edje_object_part_text_raw_set(Edje *ed, Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text);
2343char *_edje_text_escape(const char *text);
2344char *_edje_text_unescape(const char *text);
2345
2346void _edje_embryo_script_init (Edje_Part_Collection *edc);
2347void _edje_embryo_script_shutdown (Edje_Part_Collection *edc);
2348void _edje_embryo_script_reset (Edje *ed);
2349void _edje_embryo_test_run (Edje *ed, const char *fname, const char *sig, const char *src);
2350Edje_Var *_edje_var_new (void);
2351void _edje_var_free (Edje_Var *var);
2352void _edje_var_init (Edje *ed);
2353void _edje_var_shutdown (Edje *ed);
2354int _edje_var_string_id_get (Edje *ed, const char *string);
2355int _edje_var_var_int_get (Edje *ed, Edje_Var *var);
2356void _edje_var_var_int_set (Edje *ed, Edje_Var *var, int v);
2357double _edje_var_var_float_get (Edje *ed, Edje_Var *var);
2358void _edje_var_var_float_set (Edje *ed, Edje_Var *var, double v);
2359const char *_edje_var_var_str_get (Edje *ed, Edje_Var *var);
2360void _edje_var_var_str_set (Edje *ed, Edje_Var *var, const char *str);
2361int _edje_var_int_get (Edje *ed, int id);
2362void _edje_var_int_set (Edje *ed, int id, int v);
2363double _edje_var_float_get (Edje *ed, int id);
2364void _edje_var_float_set (Edje *ed, int id, double v);
2365const char *_edje_var_str_get (Edje *ed, int id);
2366void _edje_var_str_set (Edje *ed, int id, const char *str);
2367
2368void _edje_var_list_var_append(Edje *ed, int id, Edje_Var *var);
2369void _edje_var_list_var_prepend(Edje *ed, int id, Edje_Var *var);
2370void _edje_var_list_var_append_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative);
2371void _edje_var_list_var_prepend_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative);
2372Edje_Var *_edje_var_list_nth(Edje *ed, int id, int n);
2373
2374int _edje_var_list_count_get(Edje *ed, int id);
2375void _edje_var_list_remove_nth(Edje *ed, int id, int n);
2376
2377int _edje_var_list_nth_int_get(Edje *ed, int id, int n);
2378void _edje_var_list_nth_int_set(Edje *ed, int id, int n, int v);
2379void _edje_var_list_int_append(Edje *ed, int id, int v);
2380void _edje_var_list_int_prepend(Edje *ed, int id, int v);
2381void _edje_var_list_int_insert(Edje *ed, int id, int n, int v);
2382
2383double _edje_var_list_nth_float_get(Edje *ed, int id, int n);
2384void _edje_var_list_nth_float_set(Edje *ed, int id, int n, double v);
2385void _edje_var_list_float_append(Edje *ed, int id, double v);
2386void _edje_var_list_float_prepend(Edje *ed, int id, double v);
2387void _edje_var_list_float_insert(Edje *ed, int id, int n, double v);
2388
2389const char *_edje_var_list_nth_str_get(Edje *ed, int id, int n);
2390void _edje_var_list_nth_str_set(Edje *ed, int id, int n, const char *v);
2391void _edje_var_list_str_append(Edje *ed, int id, const char *v);
2392void _edje_var_list_str_prepend(Edje *ed, int id, const char *v);
2393void _edje_var_list_str_insert(Edje *ed, int id, int n, const char *v);
2394
2395int _edje_var_timer_add (Edje *ed, double in, const char *fname, int val);
2396void _edje_var_timer_del (Edje *ed, int id);
2397void _edje_var_timer_reset (Edje *ed, int id);
2398
2399int _edje_var_anim_add (Edje *ed, double len, const char *fname, int val);
2400void _edje_var_anim_del (Edje *ed, int id);
2401
2402void _edje_message_init (void);
2403void _edje_message_shutdown (void);
2404void _edje_message_cb_set (Edje *ed, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data);
2405Edje_Message *_edje_message_new (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id);
2406void _edje_message_free (Edje_Message *em);
2407void _edje_message_propornot_send (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg, Eina_Bool prop);
2408void _edje_util_message_send (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg);
2409void _edje_message_parameters_push (Edje_Message *em);
2410void _edje_message_process (Edje_Message *em);
2411EAPI void _edje_message_queue_process (void);
2412void _edje_message_queue_clear (void);
2413void _edje_message_del (Edje *ed);
2414
2415void _edje_textblock_styles_add(Edje *ed, Edje_Real_Part *ep);
2416void _edje_textblock_styles_del(Edje *ed, Edje_Part *pt);
2417void _edje_textblock_styles_cache_free(Edje *ed, const char *text_class);
2418void _edje_textblock_style_all_update(Edje *ed);
2419void _edje_textblock_style_parse_and_fix(Edje_File *edf);
2420void _edje_textblock_style_cleanup(Edje_File *edf);
2421Edje_File *_edje_cache_file_coll_open(const Eina_File *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret, Edje *ed);
2422void _edje_cache_coll_clean(Edje_File *edf);
2423void _edje_cache_coll_flush(Edje_File *edf);
2424void _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc);
2425EAPI void edje_cache_emp_alloc(Edje_Part_Collection_Directory_Entry *ce);
2426EAPI void edje_cache_emp_free(Edje_Part_Collection_Directory_Entry *ce);
2427EAPI void _edje_cache_file_unref(Edje_File *edf);
2428
2429void _edje_embryo_globals_init(Edje *ed);
2430
2431#define CHKPARAM(n) if (params[0] != (sizeof(Embryo_Cell) * (n))) return -1;
2432#define HASNPARAMS(n) (params[0] == (sizeof(Embryo_Cell) * (n)))
2433#define GETSTR(str, par) { \
2434 Embryo_Cell *___cptr; \
2435 int ___l; \
2436 str = NULL; \
2437 if ((___cptr = embryo_data_address_get(ep, (par)))) { \
2438 ___l = embryo_data_string_length_get(ep, ___cptr); \
2439 if (((str) = alloca(___l + 1))) \
2440 embryo_data_string_get(ep, ___cptr, (str)); } }
2441#define GETSTREVAS(str, par) { \
2442 if ((str)) { \
2443 if ((par) && (!strcmp((par), (str)))) return 0; \
2444 if ((par)) eina_stringshare_del((par)); \
2445 (par) = (char *)eina_stringshare_add((str)); } \
2446 else (par) = NULL; }
2447#define GETFLOAT(val, par) { \
2448 float *___cptr; \
2449 if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \
2450 val = *___cptr; } }
2451
2452#define GETFLOAT_T(val, par) \
2453 { \
2454 float *___cptr; \
2455 if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) \
2456 { \
2457 val = FROM_DOUBLE(*___cptr); \
2458 } \
2459 }
2460
2461#define GETINT(val, par) { \
2462 int *___cptr; \
2463 if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \
2464 val = *___cptr; } }
2465#define SETSTR(str, par) { \
2466 Embryo_Cell *___cptr; \
2467 if ((___cptr = embryo_data_address_get(ep, (par)))) { \
2468 embryo_data_string_set(ep, str, ___cptr); } }
2469#define SETSTRALLOCATE(s) \
2470 { \
2471 if (s) { \
2472 if ((int) strlen((s)) < params[4]) { \
2473 SETSTR((s), params[3]); } \
2474 else { \
2475 char *ss; \
2476 ss = alloca(strlen((s)) + 1); \
2477 strcpy(ss, (s)); \
2478 ss[params[4] - 2] = 0; \
2479 SETSTR(ss, params[3]); } } \
2480 else \
2481 SETSTR("", params[3]); \
2482 }
2483#define SETFLOAT(val, par) { \
2484 float *___cptr; \
2485 if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \
2486 *___cptr = (float)val; } }
2487#define SETFLOAT_T(val, par) \
2488 { \
2489 float *___cptr; \
2490 if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) \
2491 { \
2492 *___cptr = (float) TO_DOUBLE(val); \
2493 } \
2494 }
2495#define SETINT(val, par) { \
2496 int *___cptr; \
2497 if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \
2498 *___cptr = (int)val; } }
2499
2500extern jmp_buf _edje_lua_panic_jmp;
2501#define _edje_lua_panic_here() setjmp(_edje_lua_panic_jmp)
2502
2503lua_State *_edje_lua_state_get(void);
2504lua_State *_edje_lua_new_thread(Edje *ed, lua_State *L);
2505void _edje_lua_free_thread(Edje *ed, lua_State *L);
2506void _edje_lua_new_reg(lua_State *L, int index, void *ptr);
2507void _edje_lua_get_reg(lua_State *L, void *ptr);
2508void _edje_lua_free_reg(lua_State *L, void *ptr);
2509void _edje_lua_script_fn_new(Edje *ed);
2510void _edje_lua_group_fn_new(Edje *ed);
2511void _edje_lua_init(void);
2512void _edje_lua_shutdown(void);
2513
2514void __edje_lua_error(const char *file, const char *fnc, int line, lua_State *L, int err_code);
2515#define _edje_lua_error(L, err_code) \
2516 __edje_lua_error(__FILE__, __FUNCTION__, __LINE__, L, err_code)
2517
2518Eina_Bool _edje_lua_script_only(Edje *ed);
2519void _edje_lua_script_only_init(Edje *ed);
2520void _edje_lua_script_only_shutdown(Edje *ed);
2521void _edje_lua_script_only_show(Edje *ed);
2522void _edje_lua_script_only_hide(Edje *ed);
2523void _edje_lua_script_only_move(Edje *ed);
2524void _edje_lua_script_only_resize(Edje *ed);
2525void _edje_lua_script_only_message(Edje *ed, Edje_Message *em);
2526
2527void _edje_entry_init(Edje *ed);
2528void _edje_entry_shutdown(Edje *ed);
2529void _edje_entry_real_part_init(Edje *ed, Edje_Real_Part *rp);
2530void _edje_entry_real_part_shutdown(Edje *ed, Edje_Real_Part *rp);
2531void _edje_entry_real_part_configure(Edje *ed, Edje_Real_Part *rp);
2532const char *_edje_entry_selection_get(Edje_Real_Part *rp);
2533const char *_edje_entry_text_get(Edje_Real_Part *rp);
2534void _edje_entry_text_markup_set(Edje_Real_Part *rp, const char *text);
2535void _edje_entry_text_markup_insert(Edje_Real_Part *rp, const char *text);
2536void _edje_entry_text_markup_append(Edje_Real_Part *rp, const char *text);
2537void _edje_entry_set_cursor_start(Edje_Real_Part *rp);
2538void _edje_entry_set_cursor_end(Edje_Real_Part *rp);
2539void _edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst);
2540void _edje_entry_select_none(Edje_Real_Part *rp);
2541void _edje_entry_select_all(Edje_Real_Part *rp);
2542void _edje_entry_select_begin(Edje_Real_Part *rp);
2543void _edje_entry_select_extend(Edje_Real_Part *rp);
2544const Eina_List *_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor);
2545const Eina_List *_edje_entry_anchors_list(Edje_Real_Part *rp);
2546Eina_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);
2547const Eina_List *_edje_entry_items_list(Edje_Real_Part *rp);
2548void _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_BiDi_Direction *cdir);
2549void _edje_entry_user_insert(Edje_Real_Part *rp, const char *text);
2550void _edje_entry_select_allow_set(Edje_Real_Part *rp, Eina_Bool allow);
2551Eina_Bool _edje_entry_select_allow_get(const Edje_Real_Part *rp);
2552void _edje_entry_select_abort(Edje_Real_Part *rp);
2553void *_edje_entry_imf_context_get(Edje_Real_Part *rp);
2554Eina_Bool _edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur);
2555Eina_Bool _edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur);
2556Eina_Bool _edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur);
2557Eina_Bool _edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur);
2558void _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur);
2559void _edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur);
2560void _edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur);
2561void _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur);
2562Eina_Bool _edje_entry_cursor_coord_set(Edje_Real_Part *rp, Edje_Cursor cur, int x, int y);
2563Eina_Bool _edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur);
2564Eina_Bool _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur);
2565char *_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur);
2566void _edje_entry_cursor_pos_set(Edje_Real_Part *rp, Edje_Cursor cur, int pos);
2567int _edje_entry_cursor_pos_get(Edje_Real_Part *rp, Edje_Cursor cur);
2568void _edje_entry_imf_context_reset(Edje_Real_Part *rp);
2569void _edje_entry_input_panel_layout_set(Edje_Real_Part *rp, Edje_Input_Panel_Layout layout);
2570Edje_Input_Panel_Layout _edje_entry_input_panel_layout_get(Edje_Real_Part *rp);
2571void _edje_entry_input_panel_layout_variation_set(Edje_Real_Part *rp, int variation);
2572int _edje_entry_input_panel_layout_variation_get(Edje_Real_Part *rp);
2573void _edje_entry_autocapital_type_set(Edje_Real_Part *rp, Edje_Text_Autocapital_Type autocapital_type);
2574Edje_Text_Autocapital_Type _edje_entry_autocapital_type_get(Edje_Real_Part *rp);
2575void _edje_entry_prediction_allow_set(Edje_Real_Part *rp, Eina_Bool prediction);
2576Eina_Bool _edje_entry_prediction_allow_get(Edje_Real_Part *rp);
2577void _edje_entry_input_hint_set(Edje_Real_Part *rp, Edje_Input_Hints input_hints);
2578Edje_Input_Hints _edje_entry_input_hint_get(const Edje_Real_Part *rp);
2579void _edje_entry_input_panel_enabled_set(Edje_Real_Part *rp, Eina_Bool enabled);
2580Eina_Bool _edje_entry_input_panel_enabled_get(Edje_Real_Part *rp);
2581void _edje_entry_input_panel_show(Edje_Real_Part *rp);
2582void _edje_entry_input_panel_hide(Edje_Real_Part *rp);
2583void _edje_entry_input_panel_language_set(Edje_Real_Part *rp, Edje_Input_Panel_Lang lang);
2584Edje_Input_Panel_Lang _edje_entry_input_panel_language_get(Edje_Real_Part *rp);
2585void _edje_entry_input_panel_imdata_set(Edje_Real_Part *rp, const void *data, int len);
2586void _edje_entry_input_panel_imdata_get(Edje_Real_Part *rp, void *data, int *len);
2587void _edje_entry_input_panel_return_key_type_set(Edje_Real_Part *rp, Edje_Input_Panel_Return_Key_Type return_key_type);
2588Edje_Input_Panel_Return_Key_Type _edje_entry_input_panel_return_key_type_get(Edje_Real_Part *rp);
2589void _edje_entry_input_panel_return_key_disabled_set(Edje_Real_Part *rp, Eina_Bool disabled);
2590Eina_Bool _edje_entry_input_panel_return_key_disabled_get(Edje_Real_Part *rp);
2591void _edje_entry_input_panel_show_on_demand_set(Edje_Real_Part *rp, Eina_Bool ondemand);
2592Eina_Bool _edje_entry_input_panel_show_on_demand_get(Edje_Real_Part *rp);
2593
2594void _edje_external_init(void);
2595void _edje_external_shutdown(void);
2596Evas_Object *_edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name);
2597void _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *source);
2598Eina_Bool _edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param) EINA_ARG_NONNULL(2);
2599Eina_Bool _edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param) EINA_ARG_NONNULL(2);
2600Evas_Object *_edje_external_content_get(const Evas_Object *obj, const char *content) EINA_ARG_NONNULL(1, 2);
2601void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings);
2602void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep,
2603 Edje_Calc_Params *params,
2604 Edje_Part_Description_Common *chosen_desc);
2605void *_edje_external_params_parse(Evas_Object *obj, const Eina_List *params);
2606void _edje_external_parsed_params_free(Evas_Object *obj, void *params);
2607
2608Eina_Module *_edje_module_handle_load(const char *module);
2609void _edje_module_init(void);
2610void _edje_module_shutdown(void);
2611
2612void _edje_need_imf(void);
2613
2614static inline Eina_Bool
2615edje_program_is_strncmp(const char *str)
2616{
2617 size_t length;
2618
2619 length = strlen(str);
2620
2621 if (strpbrk(str, "*?[\\") != str + length)
2622 return EINA_FALSE;
2623 if (str[length] == '['
2624 || str[length] == '\\')
2625 return EINA_FALSE;
2626 return EINA_TRUE;
2627}
2628
2629static inline Eina_Bool
2630edje_program_is_strrncmp(const char *str)
2631{
2632 if (*str != '*' && *str != '?')
2633 return EINA_FALSE;
2634 if (strpbrk(str + 1, "*?[\\"))
2635 return EINA_FALSE;
2636 return EINA_TRUE;
2637}
2638void edje_object_propagate_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data);
2639
2640
2641/* used by edje_cc - private still */
2642EAPI void _edje_program_insert(Edje_Part_Collection *ed, Edje_Program *p);
2643EAPI void _edje_program_remove(Edje_Part_Collection *ed, Edje_Program *p);
2644
2645void _edje_lua2_error_full(const char *file, const char *fnc, int line, lua_State *L, int err_code);
2646#define _edje_lua2_error(L, err_code) _edje_lua2_error_full(__FILE__, __FUNCTION__, __LINE__, L, err_code)
2647void _edje_lua2_script_init(Edje *ed);
2648void _edje_lua2_script_shutdown(Edje *ed);
2649void _edje_lua2_script_load(Edje_Part_Collection *edc, void *data, int size);
2650void _edje_lua2_script_unload(Edje_Part_Collection *edc);
2651
2652void _edje_lua2_script_func_shutdown(Edje *ed);
2653void _edje_lua2_script_func_show(Edje *ed);
2654void _edje_lua2_script_func_hide(Edje *ed);
2655void _edje_lua2_script_func_move(Edje *ed);
2656void _edje_lua2_script_func_resize(Edje *ed);
2657void _edje_lua2_script_func_message(Edje *ed, Edje_Message *em);
2658void _edje_lua2_script_func_signal(Edje *ed, const char *sig, const char *src);
2659
2660const char *edje_string_get(const Edje_String *es);
2661const char *edje_string_id_get(const Edje_String *es);
2662
2663void _edje_object_orientation_inform(Evas_Object *obj);
2664
2665void _edje_lib_ref(void);
2666void _edje_lib_unref(void);
2667
2668void _edje_language_signal_emit(Edje *ed, Evas_Object *obj, char *signal);
2669
2670void _edje_subobj_register(Edje *ed, Evas_Object *ob);
2671void _edje_subobj_unregister(Edje *ed, Evas_Object *ob);
2672
2673void _edje_multisense_init(void);
2674void _edje_multisense_shutdown(void);
2675Eina_Bool _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, const double speed, int channel);
2676Eina_Bool _edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const double duration, int channel);
2677Eina_Bool _edje_multisense_internal_vibration_sample_play(Edje *ed, const char *sample_name, int repeat);
2678
2679void _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *state);
2680
2681void _edje_user_definition_remove(Edje_User_Defined *eud, Evas_Object *child);
2682void _edje_user_definition_free(Edje_User_Defined *eud);
2683
2684void _scale_set(Eo *obj, void *_pd, va_list *list);
2685void _scale_get(Eo *obj, void *_pd, va_list *list);
2686void _base_scale_get(Eo *obj, void *_pd, va_list *list);
2687void _mirrored_get(Eo *obj, void *_pd, va_list *list);
2688void _mirrored_set(Eo *obj, void *_pd, va_list *list);
2689void _data_get(Eo *obj, void *_pd, va_list *list);
2690void _freeze(Eo *obj, void *_pd, va_list *list);
2691void _thaw(Eo *obj, void *_pd, va_list *list);
2692void _color_class_set(Eo *obj, void *_pd, va_list *list);
2693void _color_class_get(Eo *obj, void *_pd, va_list *list);
2694void _text_class_set(Eo *obj, void *_pd, va_list *list);
2695void _text_class_get(Eo *obj, void *_pd, va_list *list);
2696void _part_exists(Eo *obj, void *_pd, va_list *list);
2697void _part_object_get(Eo *obj, void *_pd, va_list *list);
2698void _part_geometry_get(Eo *obj, void *_pd, va_list *list);
2699void _item_provider_set(Eo *obj, void *_pd, va_list *list);
2700void _text_change_cb_set(Eo *obj, void *_pd, va_list *list);
2701void _part_text_style_user_push(Eo *obj, void *_pd, va_list *list);
2702void _part_text_style_user_pop(Eo *obj, void *_pd, va_list *list);
2703void _part_text_style_user_peek(Eo *obj, void *_pd, va_list *list);
2704void _part_text_set(Eo *obj, void *_pd, va_list *list);
2705void _part_text_get(Eo *obj, void *_pd, va_list *list);
2706void _part_text_escaped_set(Eo *obj, void *_pd, va_list *list);
2707void _part_text_unescaped_set(Eo *obj, void *_pd, va_list *list);
2708void _part_text_unescaped_get(Eo *obj, void *_pd, va_list *list);
2709void _part_text_selection_get(Eo *obj, void *_pd, va_list *list);
2710void _part_text_select_none(Eo *obj, void *_pd, va_list *list);
2711void _part_text_select_all(Eo *obj, void *_pd, va_list *list);
2712void _part_text_insert(Eo *obj, void *_pd, va_list *list);
2713void _part_text_append(Eo *obj, void *_pd, va_list *list);
2714void _part_text_anchor_list_get(Eo *obj, void *_pd, va_list *list);
2715void _part_text_anchor_geometry_get(Eo *obj, void *_pd, va_list *list);
2716void _part_text_item_list_get(Eo *obj, void *_pd, va_list *list);
2717void _part_text_item_geometry_get(Eo *obj, void *_pd, va_list *list);
2718void _part_text_cursor_geometry_get(Eo *obj, void *_pd, va_list *list);
2719void _part_text_user_insert(Eo *obj, void *_pd, va_list *list);
2720void _part_text_select_allow_set(Eo *obj, void *_pd, va_list *list);
2721void _part_text_select_abort(Eo *obj, void *_pd, va_list *list);
2722void _part_text_select_begin(Eo *obj, void *_pd, va_list *list);
2723void _part_text_select_extend(Eo *obj, void *_pd, va_list *list);
2724void _part_text_imf_context_get(Eo *obj, void *_pd, va_list *list);
2725void _part_text_cursor_next(Eo *obj, void *_pd, va_list *list);
2726void _part_text_cursor_prev(Eo *obj, void *_pd, va_list *list);
2727void _part_text_cursor_up(Eo *obj, void *_pd, va_list *list);
2728void _part_text_cursor_down(Eo *obj, void *_pd, va_list *list);
2729void _part_text_cursor_begin_set(Eo *obj, void *_pd, va_list *list);
2730void _part_text_cursor_end_set(Eo *obj, void *_pd, va_list *list);
2731void _part_text_cursor_copy(Eo *obj, void *_pd, va_list *list);
2732void _part_text_cursor_line_begin_set(Eo *obj, void *_pd, va_list *list);
2733void _part_text_cursor_line_end_set(Eo *obj, void *_pd, va_list *list);
2734void _part_text_cursor_coord_set(Eo *obj, void *_pd, va_list *list);
2735void _part_text_cursor_is_format_get(Eo *obj, void *_pd, va_list *list);
2736void _part_text_cursor_is_visible_format_get(Eo *obj, void *_pd, va_list *list);
2737void _part_text_cursor_content_get(Eo *obj, void *_pd, va_list *list);
2738void _part_text_cursor_pos_set(Eo *obj, void *_pd, va_list *list);
2739void _part_text_cursor_pos_get(Eo *obj, void *_pd, va_list *list);
2740void _part_text_imf_context_reset(Eo *obj, void *_pd, va_list *list);
2741void _part_text_input_panel_layout_set(Eo *obj, void *_pd, va_list *list);
2742void _part_text_input_panel_layout_get(Eo *obj, void *_pd, va_list *list);
2743void _part_text_input_panel_layout_variation_set(Eo *obj, void *_pd, va_list *list);
2744void _part_text_input_panel_layout_variation_get(Eo *obj, void *_pd, va_list *list);
2745void _part_text_autocapital_type_set(Eo *obj, void *_pd, va_list *list);
2746void _part_text_autocapital_type_get(Eo *obj, void *_pd, va_list *list);
2747void _part_text_prediction_allow_set(Eo *obj, void *_pd, va_list *list);
2748void _part_text_prediction_allow_get(Eo *obj, void *_pd, va_list *list);
2749void _part_text_input_panel_enabled_set(Eo *obj, void *_pd, va_list *list);
2750void _part_text_input_panel_enabled_get(Eo *obj, void *_pd, va_list *list);
2751void _part_text_input_panel_show(Eo *obj, void *_pd, va_list *list);
2752void _part_text_input_panel_hide(Eo *obj, void *_pd, va_list *list);
2753void _part_text_input_panel_language_set(Eo *obj, void *_pd, va_list *list);
2754void _part_text_input_panel_language_get(Eo *obj, void *_pd, va_list *list);
2755void _part_text_input_panel_imdata_set(Eo *obj, void *_pd, va_list *list);
2756void _part_text_input_panel_imdata_get(Eo *obj, void *_pd, va_list *list);
2757void _part_text_input_panel_return_key_type_set(Eo *obj, void *_pd, va_list *list);
2758void _part_text_input_panel_return_key_type_get(Eo *obj, void *_pd, va_list *list);
2759void _part_text_input_panel_return_key_disabled_set(Eo *obj, void *_pd, va_list *list);
2760void _part_text_input_panel_return_key_disabled_get(Eo *obj, void *_pd, va_list *list);
2761void _part_text_input_panel_show_on_demand_set(Eo *obj, void *_pd, va_list *list);
2762void _part_text_input_panel_show_on_demand_get(Eo *obj, void *_pd, va_list *list);
2763void _text_insert_filter_callback_add(Eo *obj, void *_pd, va_list *list);
2764void _text_insert_filter_callback_del(Eo *obj, void *_pd, va_list *list);
2765void _text_insert_filter_callback_del_full(Eo *obj, void *_pd, va_list *list);
2766void _text_markup_filter_callback_add(Eo *obj, void *_pd, va_list *list);
2767void _text_markup_filter_callback_del(Eo *obj, void *_pd, va_list *list);
2768void _text_markup_filter_callback_del_full(Eo *obj, void *_pd, va_list *list);
2769void _part_swallow(Eo *obj, void *_pd, va_list *list);
2770void _part_unswallow(Eo *obj, void *_pd, va_list *list);
2771void _part_swallow_get(Eo *obj, void *_pd, va_list *list);
2772void _size_min_get(Eo *obj, void *_pd, va_list *list);
2773void _size_max_get(Eo *obj, void *_pd, va_list *list);
2774void _calc_force(Eo *obj, void *_pd, va_list *list);
2775void _size_min_calc(Eo *obj, void *_pd, va_list *list);
2776void _parts_extends_calc(Eo *obj, void *_pd, va_list *list);
2777void _size_min_restricted_calc(Eo *obj, void *_pd, va_list *list);
2778void _part_state_get(Eo *obj, void *_pd, va_list *list);
2779void _part_drag_dir_get(Eo *obj, void *_pd, va_list *list);
2780void _part_drag_value_set(Eo *obj, void *_pd, va_list *list);
2781void _part_drag_value_get(Eo *obj, void *_pd, va_list *list);
2782void _part_drag_size_set(Eo *obj, void *_pd, va_list *list);
2783void _part_drag_size_get(Eo *obj, void *_pd, va_list *list);
2784void _part_drag_step_set(Eo *obj, void *_pd, va_list *list);
2785void _part_drag_step_get(Eo *obj, void *_pd, va_list *list);
2786void _part_drag_page_set(Eo *obj, void *_pd, va_list *list);
2787void _part_drag_page_get(Eo *obj, void *_pd, va_list *list);
2788void _part_drag_step(Eo *obj, void *_pd, va_list *list);
2789void _part_drag_page(Eo *obj, void *_pd, va_list *list);
2790void _part_box_append(Eo *obj, void *_pd, va_list *list);
2791void _part_box_prepend(Eo *obj, void *_pd, va_list *list);
2792void _part_box_insert_before(Eo *obj, void *_pd, va_list *list);
2793void _part_box_insert_at(Eo *obj, void *_pd, va_list *list);
2794void _part_box_remove(Eo *obj, void *_pd, va_list *list);
2795void _part_box_remove_at(Eo *obj, void *_pd, va_list *list);
2796void _part_box_remove_all(Eo *obj, void *_pd, va_list *list);
2797void _access_part_list_get(Eo *obj, void *_pd, va_list *list);
2798void _part_table_child_get(Eo *obj, void *_pd, va_list *list);
2799void _part_table_pack(Eo *obj, void *_pd, va_list *list);
2800void _part_table_unpack(Eo *obj, void *_pd, va_list *list);
2801void _part_table_col_row_size_get(Eo *obj, void *_pd, va_list *list);
2802void _part_table_clear(Eo *obj, void *_pd, va_list *list);
2803void _perspective_set(Eo *obj, void *_pd, va_list *list);
2804void _perspective_get(Eo *obj, void *_pd, va_list *list);
2805void _preload(Eo *obj, void *_pd, va_list *list);
2806void _update_hints_set(Eo *obj, void *_pd, va_list *list);
2807void _update_hints_get(Eo *obj, void *_pd, va_list *list);
2808
2809void _part_external_object_get(Eo *obj, void *_pd, va_list *list);
2810void _part_external_param_set(Eo *obj, void *_pd, va_list *list);
2811void _part_external_param_get(Eo *obj, void *_pd, va_list *list);
2812void _part_external_content_get(Eo *obj, void *_pd, va_list *list);
2813void _part_external_param_type_get(Eo *obj, void *_pd, va_list *list);
2814
2815void _file_get(Eo *obj, void *_pd, va_list *list);
2816void _load_error_get(Eo *obj, void *_pd, va_list *list);
2817
2818void _message_send(Eo *obj, void *_pd, va_list *list);
2819void _message_handler_set(Eo *obj, void *_pd, va_list *list);
2820void _message_signal_process(Eo *obj, void *_pd, va_list *list);
2821
2822void _signal_callback_add(Eo *obj, void *_pd, va_list *list);
2823void _signal_callback_del(Eo *obj, void *_pd, va_list *list);
2824void _signal_callback_del_full(Eo *obj, void *_pd, va_list *list);
2825void _signal_emit(Eo *obj, void *_pd, va_list *list);
2826void _play_set(Eo *obj, void *_pd, va_list *list);
2827void _play_get(Eo *obj, void *_pd, va_list *list);
2828void _animation_set(Eo *obj, void *_pd, va_list *list);
2829void _animation_get(Eo *obj, void *_pd, va_list *list);
2830
2831void edje_signal_init(void);
2832void edje_signal_shutdown(void);
2833
2834#ifdef HAVE_LIBREMIX
2835#include <remix/remix.h>
2836#endif
2837#include <Eina.h>
2838
2839typedef struct _Edje_Multisense_Env Edje_Multisense_Env;
2840
2841struct _Edje_Multisense_Env
2842{
2843#ifdef HAVE_LIBREMIX
2844 RemixEnv *remixenv;
2845#endif
2846};
2847
2848typedef Eina_Bool (*MULTISENSE_FACTORY_INIT_FUNC) (Edje_Multisense_Env *);
2849#ifdef HAVE_LIBREMIX
2850typedef RemixBase* (*MULTISENSE_SOUND_PLAYER_GET_FUNC) (Edje_Multisense_Env *);
2851#endif
2852
2853#undef EAPI
2854#define EAPI
2855
2856#endif
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 8c93fcb..d96f79b 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -2,10 +2,11 @@ set(CMAKE_BUILD_TYPE Debug)
2 2
3LIST(APPEND EDJE_SNIFFER_CC_SOURCES edje_sniffer.c) 3LIST(APPEND EDJE_SNIFFER_CC_SOURCES edje_sniffer.c)
4 4
5include_directories (${CMAKE_SOURCE_DIR}/src/lib) 5include_directories (${CMAKE_SOURCE_DIR}/src/lib ${CMAKE_SOURCE_DIR}/src/include)
6include_directories(${CMAKE_CURRENT_BINARY_DIR}) 6include_directories(${CMAKE_CURRENT_BINARY_DIR})
7include_directories( 7include_directories(
8 ${EINA_INCLUDE_DIRS} 8 ${EINA_INCLUDE_DIRS}
9 ${EVAS_INCLUDE_DIRS}
9 ${EDJE_INCLUDE_DIRS} 10 ${EDJE_INCLUDE_DIRS}
10 ) 11 )
11 12
diff --git a/src/lib/edje_sniffer.c b/src/lib/edje_sniffer.c
index 4eb170b..f18043c 100644
--- a/src/lib/edje_sniffer.c
+++ b/src/lib/edje_sniffer.c
@@ -1,7 +1,10 @@
1#define _GNU_SOURCE 1#define _GNU_SOURCE
2#include <dlfcn.h> 2#include <dlfcn.h>
3 3
4#define EFL_EO_API_SUPPORT
4#include <Edje.h> 5#include <Edje.h>
6#include <Evas.h>
7#include "edje_private.h"
5 8
6#ifdef EAPI 9#ifdef EAPI
7#undef EAPI 10#undef EAPI