Imported Upstream version 1.7.1
[platform/upstream/edje.git] / src / bin / edje_cc.h
1 #ifndef EDJE_CC_H
2 #define EDJE_CC_H
3
4 #include <edje_private.h>
5
6 extern Eina_Prefix *pfx;
7
8 /*
9  * On Windows, if the file is not opened in binary mode,
10  * read does not return the correct size, because of
11  * CR / LF translation.
12  */
13 #ifndef O_BINARY
14 # define O_BINARY 0
15 #endif
16
17 /* logging variables */
18 extern int _edje_cc_log_dom ;
19 #define EDJE_CC_DEFAULT_LOG_COLOR EINA_COLOR_CYAN
20
21 #ifdef ERR
22 # undef ERR
23 #endif
24 #define ERR(...) EINA_LOG_DOM_ERR(_edje_cc_log_dom, __VA_ARGS__)
25 #ifdef INF
26 # undef INF
27 #endif
28 #define INF(...) EINA_LOG_DOM_INFO(_edje_cc_log_dom, __VA_ARGS__)
29 #ifdef WRN
30 # undef WRN
31 #endif
32 #define WRN(...) EINA_LOG_DOM_WARN(_edje_cc_log_dom, __VA_ARGS__)
33 #ifdef CRIT
34 # undef CRIT
35 #endif
36 #define CRIT(...) EINA_LOG_DOM_CRIT(_edje_cc_log_dom, __VA_ARGS__)
37 #ifdef DBG
38 # undef DBG
39 #endif
40 #define DBG(...) EINA_LOG_DOM_DBG(_edje_cc_log_dom, __VA_ARGS__)
41
42 /* types */
43 typedef struct _New_Object_Handler    New_Object_Handler;
44 typedef struct _New_Statement_Handler New_Statement_Handler;
45 typedef struct _External_List         External_List;
46 typedef struct _External              External;
47 typedef struct _Font_List             Font_List;
48 typedef struct _Font                  Font;
49 typedef struct _Code                  Code;
50 typedef struct _Code_Program          Code_Program;
51 typedef struct _SrcFile               SrcFile;
52 typedef struct _SrcFile_List          SrcFile_List;
53
54 typedef struct _Edje_Program_Parser                  Edje_Program_Parser;
55 typedef struct _Edje_Pack_Element_Parser             Edje_Pack_Element_Parser;
56 typedef struct _Edje_Part_Parser                     Edje_Part_Parser;
57
58 struct _New_Object_Handler
59 {
60    const char *type;
61    void (*func)(void);
62 };
63
64 struct _New_Statement_Handler
65 {
66    const char *type;
67    void (*func)(void);
68 };
69
70 struct _External_List
71 {
72    Eina_List *list;
73 };
74
75 struct _External
76 {
77     char *name;
78 };
79
80 struct _Font_List
81 {
82    Eina_List *list;
83 };
84
85 struct _Font
86 {
87    char *name;
88    char *file;
89 };
90
91 struct _Code
92 {
93    int       l1, l2;
94    char      *shared;
95    char      *original;
96    Eina_List *programs;
97    int          is_lua;
98 };
99
100 struct _Code_Program
101 {
102    int        l1, l2;
103    int        id;
104    char      *script;
105    char      *original;
106 };
107
108 struct _SrcFile
109 {
110    char *name;
111    char *file;
112 };
113
114 struct _SrcFile_List
115 {
116    Eina_List *list;
117 };
118
119 struct _Edje_Program_Parser
120 {
121    Edje_Program common;
122    Eina_Bool can_override;
123 };
124
125 struct _Edje_Pack_Element_Parser
126 {
127    Edje_Pack_Element common;
128    Eina_Bool can_override;
129 };
130
131 struct _Edje_Part_Parser
132 {
133    Edje_Part common;
134    struct {
135       Eina_Bool           done;
136       const char         *insert_before; /* the part name for insertion in front of */
137       const char         *insert_after; /* the part name for insertion behind of */
138       Edje_Part_Parser   *before;
139       Edje_Part_Parser   *after;
140       int                 linked_prev; /* the number linked previous part for reorder */
141       int                 linked_next; /* the number linked next part for reorder */
142    } reorder;
143    Eina_Bool can_override;
144 };
145
146 /* global fn calls */
147 void    data_setup(void);
148 void    data_write(void);
149 void    data_queue_group_lookup(const char *name, Edje_Part *part);
150 void    data_queue_part_lookup(Edje_Part_Collection *pc, const char *name, int *dest);
151 void    data_queue_copied_part_lookup(Edje_Part_Collection *pc, int *src, int *dest);
152 void    data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest);
153 void    data_queue_copied_program_lookup(Edje_Part_Collection *pc, int *src, int *dest);
154 void    data_queue_anonymous_lookup(Edje_Part_Collection *pc, Edje_Program *ep, int *dest);
155 void    data_queue_copied_anonymous_lookup(Edje_Part_Collection *pc, int *src, int *dest);
156 void    data_queue_image_lookup(char *name, int *dest, Eina_Bool *set);
157 void    data_queue_copied_image_lookup(int *src, int *dest, Eina_Bool *set);
158 void    data_queue_image_remove(int *dest, Eina_Bool *set);
159 void    data_queue_part_slave_lookup(int *master, int *slave);
160 void    data_queue_image_slave_lookup(int *master, int *slave);
161 void    data_queue_spectrum_lookup(char *name, int *dest);
162 void    data_queue_spectrum_slave_lookup(int *master, int *slave);
163 void    data_process_lookups(void);
164 void    data_process_scripts(void);
165 void    data_process_script_lookups(void);
166
167 void    part_description_image_cleanup(Edje_Part *ep);
168
169 int     is_verbatim(void);
170 void    track_verbatim(int on);
171 void    set_verbatim(char *s, int l1, int l2);
172 char   *get_verbatim(void);
173 int     get_verbatim_line1(void);
174 int     get_verbatim_line2(void);
175 void    compile(void);
176 int     is_param(int n);
177 int     is_num(int n);
178 char   *parse_str(int n);
179 int     parse_enum(int n, ...);
180 int     parse_flags(int n, ...);
181 int     parse_int(int n);
182 int     parse_int_range(int n, int f, int t);
183 int     parse_bool(int n);
184 double  parse_float(int n);
185 double  parse_float_range(int n, double f, double t);
186 int     get_arg_count(void);
187 void    check_arg_count(int n);
188 void    check_min_arg_count(int n);
189
190 int     object_handler_num(void);
191 int     statement_handler_num(void);
192
193 void    reorder_parts(void);
194 void    source_edd(void);
195 void    source_fetch(void);
196 int     source_append(Eet_File *ef);
197 SrcFile_List *source_load(Eet_File *ef);
198 int     source_fontmap_save(Eet_File *ef, Eina_List *fonts);
199 Font_List *source_fontmap_load(Eet_File *ef);
200
201 void   *mem_alloc(size_t size);
202 char   *mem_strdup(const char *s);
203 #define SZ sizeof
204
205 void    using_file(const char *filename);
206
207 void    error_and_abort(Eet_File *ef, const char *fmt, ...);
208
209 /* global vars */
210 extern Eina_List             *ext_dirs;
211 extern Eina_List             *img_dirs;
212 extern Eina_List             *fnt_dirs;
213 extern Eina_List             *snd_dirs;
214 extern char                  *file_in;
215 extern char                  *tmp_dir;
216 extern char                  *file_out;
217 extern char                  *watchfile;
218 extern int                    no_lossy;
219 extern int                    no_comp;
220 extern int                    no_raw;
221 extern int                    no_save;
222 extern int                    min_quality;
223 extern int                    max_quality;
224 extern int                    line;
225 extern Eina_List             *stack;
226 extern Eina_List             *params;
227 extern Edje_File             *edje_file;
228 extern Eina_List             *edje_collections;
229 extern Eina_List             *externals;
230 extern Eina_List             *fonts;
231 extern Eina_List             *codes;
232 extern Eina_List             *defines;
233 extern Eina_List             *aliases;
234 extern New_Object_Handler     object_handlers[];
235 extern New_Statement_Handler  statement_handlers[];
236 extern int                    compress_mode;
237 extern int                    threads;
238
239 #endif