evas/cserve2: Calculate average time saved on glyph
[profile/ivi/evas.git] / src / lib / cserve2 / evas_cs2.h
1 #ifndef EVAS_CS2_H
2 #define EVAS_CS2_H 1
3
4 #include <Eina.h>
5
6 #ifdef EVAS_CSERVE2
7
8 typedef enum {
9    CSERVE2_OPEN = 1,
10    CSERVE2_OPENED,
11    CSERVE2_SETOPTS,
12    CSERVE2_SETOPTSED,
13    CSERVE2_LOAD,
14    CSERVE2_LOADED,
15    CSERVE2_PRELOAD,
16    CSERVE2_PRELOADED,
17    CSERVE2_UNLOAD,
18    CSERVE2_CLOSE,
19    CSERVE2_FONT_LOAD,
20    CSERVE2_FONT_LOADED,
21    CSERVE2_FONT_UNLOAD,
22    CSERVE2_FONT_GLYPHS_LOAD,
23    CSERVE2_FONT_GLYPHS_LOADED,
24    CSERVE2_FONT_GLYPHS_USED,
25    CSERVE2_STATS,
26    CSERVE2_FONT_DEBUG,
27    CSERVE2_ERROR
28 } Message_Type;
29
30 typedef enum {
31    CSERVE2_NONE,
32    CSERVE2_GENERIC,
33    CSERVE2_DOES_NOT_EXIST,
34    CSERVE2_PERMISSION_DENIED,
35    CSERVE2_RESOURCE_ALLOCATION_FAILED,
36    CSERVE2_CORRUPT_FILE,
37    CSERVE2_UNKNOWN_FORMAT,
38    CSERVE2_INVALID_COMMAND,
39    CSERVE2_LOADER_DIED,
40    CSERVE2_LOADER_EXEC_ERR,
41    CSERVE2_INVALID_CACHE, // invalid cserve cache entry
42    CSERVE2_FILE_CHANGED,
43    CSERVE2_REQUEST_CANCEL
44 } Error_Type;
45
46 struct _Msg_Base {
47    int type;
48    unsigned int rid;
49 };
50
51 typedef struct _Msg_Base Msg_Base;
52
53 struct _Msg_Open {
54    Msg_Base base;
55    unsigned int file_id;
56    int path_offset;
57    int key_offset;
58 };
59
60 struct _Msg_Opened {
61    Msg_Base base;
62    struct {
63       int w, h;
64       int frame_count;
65       int loop_count;
66       int loop_hint; /* include Evas.h? Copy the enum around? */
67       Eina_Bool alpha : 1;
68    } image;
69 };
70
71 struct _Msg_Setopts {
72    Msg_Base base;
73    unsigned int file_id;
74    unsigned int image_id;
75    struct {
76       double dpi;
77       int w, h;
78       int scale_down;
79       int rx, ry, rw, rh;
80       Eina_Bool orientation;
81    } opts;
82 };
83
84 struct _Msg_Setoptsed {
85    Msg_Base base;
86 };
87
88 struct _Msg_Load {
89    Msg_Base base;
90    unsigned int image_id;
91 };
92
93 struct _Msg_Loaded {
94    Msg_Base base;
95    struct {
96       int mmap_offset;
97       int use_offset;
98       int mmap_size;
99       int image_size;
100    } shm;
101    Eina_Bool alpha_sparse : 1;
102 };
103
104 struct _Msg_Preload {
105    Msg_Base base;
106    unsigned int image_id;
107 };
108
109 struct _Msg_Preloaded {
110    Msg_Base base;
111 };
112
113 struct _Msg_Unload {
114    Msg_Base base;
115    unsigned int image_id;
116 };
117
118 struct _Msg_Close {
119    Msg_Base base;
120    unsigned int file_id;
121 };
122
123 /**
124  * @struct _Msg_Font_Load
125  *
126  * Message from client to request load or unload of a font.
127  *
128  * The path strings follow the struct inside the message.
129  */
130 struct _Msg_Font_Load {
131    Msg_Base base;
132    unsigned int sourcelen; // font id
133    unsigned int pathlen; // font id
134    unsigned int rend_flags; // font id
135    unsigned int size; // font id
136    unsigned int dpi; // font id
137 };
138
139 /**
140  * @struct _Msg_Font_Loaded
141  *
142  * Message from server to inform that a font was loaded.
143  */
144 struct _Msg_Font_Loaded {
145    Msg_Base base;
146 };
147
148 /**
149  * @struct _Msg_Font_Glyphs_Request
150  *
151  * Message from client to request load of glyphs, or inform usage of them.
152  *
153  * The path strings follow the struct inside the message, as well as
154  * the list of glyphs to be loaded.
155  */
156 struct _Msg_Font_Glyphs_Request {
157    Msg_Base base;
158    unsigned int sourcelen; // font id
159    unsigned int pathlen; // font id
160    unsigned int rend_flags; // font id
161    unsigned int size; // font id
162    unsigned int dpi; // font id
163    unsigned int hint;
164    unsigned int nglyphs;
165 };
166
167 /**
168  * @struct _Msg_Font_Glyphs_Loaded
169  *
170  * Message from server to inform that some glyphs were loaded.
171  *
172  * This message is quite complex: it contains the font id, representing for
173  * which font these glyphs should be loaded, and the number of caches on which
174  * the loaded glyphs are stored. Each cache is a SHM segment. The information
175  * about each SHM comes serialized just after this struct, and can be read in
176  * order as follows:
177  *
178  * shm name:
179  *  - unsigned int size;
180  *  - char name[];
181  * glyphs:
182  *  - unsigned int nglyphs;
183  *  - struct {
184  *      unsigned int index;
185  *      unsigned int offset;
186  *      unsigned int size;
187  *      unsigned int rows;
188  *      unsigned int width;
189  *      unsigned int pitch;
190  *      unsigned int num_grays;
191  *      unsigned int pixel_mode;
192  *    } glarray[];
193  */
194 struct _Msg_Font_Glyphs_Loaded {
195    Msg_Base base;
196    unsigned int ncaches;
197 };
198
199 struct _Msg_Stats {
200    Msg_Base base;
201    struct {
202       unsigned int requested_size;
203       unsigned int real_size;
204       unsigned int unused_size;
205       unsigned int fonts_loaded; /* number of loaded fonts */
206       unsigned int fonts_unused; /* number of loaded fonts without reference
207                                   * from any clients */
208       int fonts_load_time; /* total time spent loading fonts */
209       int fonts_used_load_time; /* total time spent loading fonts that are
210                                  * really used, i.e. fonts that have glyphs
211                                  * rendered */
212       int fonts_used_saved_time;
213       int glyphs_load_time; /* total time spent loading glyphs */
214       int glyphs_saved_time; /* total time spent loading glyphs */
215    } fonts;
216    struct {
217       unsigned int files_loaded; /* number of file headers loaded */
218       unsigned int images_loaded; /* number of image data loaded */
219       unsigned int images_unused; /* number of image data loaded and unused */
220
221       unsigned int requested_size; /* memory usage originally requested by
222                                     * the client */
223       unsigned int files_size; /* memory usage from image headers */
224       unsigned int images_size; /* memory usage from image data */
225       unsigned int unused_size; /* memory usage from image data */
226
227       int files_load_time;
228       int files_saved_time;
229       int images_load_time;
230       int images_saved_time;
231    } images;
232 };
233
234 /*
235  * @struct _Msg_Font_Debug
236  *
237  * Message from server containing all font cache info.
238  *
239  * Content of the message follows:
240  *
241  * * number of font entries;
242  * * each font entry:
243  *   - unsigned int filelen
244  *   - const char file
245  *   - unsigned int namelen
246  *   - const char name
247  *   - unsigned int rend_flags;
248  *   - unsigned int size;
249  *   - unsigned int dpi;
250  *   - unsigned int unused;
251  *   - ncaches:
252  *   - each cache:
253  *     * usigned int shmnamelen;
254  *     * const char shmname;
255  *     * unsigned int size;
256  *     * unsigned int usage;
257  *     * unsigned int nglyphs;
258  *     * each glyph:
259  *       - unsigned int index;
260  *       - unsigned int offset;
261  *       - unsigned int size;
262  *       - unsigned int rows;
263  *       - unsigned int width;
264  *       - unsigned int pitch;
265  *       - unsigned int num_grays;
266  *       - unsigned int pixel_mode;
267  */
268 struct _Msg_Font_Debug {
269     Msg_Base base;
270 };
271
272 struct _Msg_Error {
273    Msg_Base base;
274    int error;
275 };
276
277 typedef struct _Msg_Open Msg_Open;
278 typedef struct _Msg_Opened Msg_Opened;
279 typedef struct _Msg_Setopts Msg_Setopts;
280 typedef struct _Msg_Setoptsed Msg_Setoptsed;
281 typedef struct _Msg_Load Msg_Load;
282 typedef struct _Msg_Loaded Msg_Loaded;
283 typedef struct _Msg_Preload Msg_Preload;
284 typedef struct _Msg_Preloaded Msg_Preloaded;
285 typedef struct _Msg_Unload Msg_Unload;
286 typedef struct _Msg_Close Msg_Close;
287 typedef struct _Msg_Font_Load Msg_Font_Load;
288 typedef struct _Msg_Font_Loaded Msg_Font_Loaded;
289 typedef struct _Msg_Font_Glyphs_Request Msg_Font_Glyphs_Request;
290 typedef struct _Msg_Font_Glyphs_Loaded Msg_Font_Glyphs_Loaded;
291 typedef struct _Msg_Stats Msg_Stats;
292 typedef struct _Msg_Font_Debug Msg_Font_Debug;
293 typedef struct _Msg_Error Msg_Error;
294
295 #endif
296 #endif