aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/ecore/src/lib/ecore_evas/Ecore_Evas.h
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-01-04 18:41:13 +1000
committerDavid Walter Seikel2012-01-04 18:41:13 +1000
commitdd7595a3475407a7fa96a97393bae8c5220e8762 (patch)
treee341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/ecore/src/lib/ecore_evas/Ecore_Evas.h
parentAdd the skeleton. (diff)
downloadSledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2
SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to 'libraries/ecore/src/lib/ecore_evas/Ecore_Evas.h')
-rw-r--r--libraries/ecore/src/lib/ecore_evas/Ecore_Evas.h1660
1 files changed, 1660 insertions, 0 deletions
diff --git a/libraries/ecore/src/lib/ecore_evas/Ecore_Evas.h b/libraries/ecore/src/lib/ecore_evas/Ecore_Evas.h
new file mode 100644
index 0000000..256e57c
--- /dev/null
+++ b/libraries/ecore/src/lib/ecore_evas/Ecore_Evas.h
@@ -0,0 +1,1660 @@
1#ifndef _ECORE_EVAS_H
2#define _ECORE_EVAS_H
3
4#include <Evas.h>
5#include <Ecore_Getopt.h>
6#include <Ecore_Input.h>
7
8#ifdef EAPI
9# undef EAPI
10#endif
11
12#ifdef _WIN32
13# ifdef EFL_ECORE_EVAS_BUILD
14# ifdef DLL_EXPORT
15# define EAPI __declspec(dllexport)
16# else
17# define EAPI
18# endif /* ! DLL_EXPORT */
19# else
20# define EAPI __declspec(dllimport)
21# endif /* ! EFL_ECORE_EVAS_BUILD */
22#else
23# ifdef __GNUC__
24# if __GNUC__ >= 4
25# define EAPI __attribute__ ((visibility("default")))
26# else
27# define EAPI
28# endif
29# else
30# define EAPI
31# endif
32#endif /* ! _WIN32 */
33
34/**
35 * @file Ecore_Evas.h
36 * @brief Evas wrapper functions
37 *
38 * The following is a list of example that partially exemplify Ecore_Evas's API:
39 * @li @ref ecore_evas_callbacks_example_c
40 * @li @ref ecore_evas_object_example_c
41 * @li @ref ecore_evas_basics_example_c
42 */
43
44/* FIXME:
45 * to do soon:
46 * - iconfication api needs to work
47 * - maximization api needs to work
48 * - document all calls
49 *
50 * later:
51 * - buffer back-end that renders to an evas_image_object ???
52 * - qt back-end ???
53 * - dfb back-end ??? (dfb's threads make this REALLY HARD)
54 */
55
56#ifdef __cplusplus
57extern "C" {
58#endif
59
60/**
61 * @defgroup Ecore_Evas_Group Ecore_Evas wrapper/helper set of functions
62 *
63 * This is a list of examples of these functions:
64 * - @ref Ecore_Evas_Window_Sizes_Example_c
65 * - @ref Ecore_Evas_Buffer_Example_01_c
66 * - @ref Ecore_Evas_Buffer_Example_02_c
67 * @{
68 */
69
70/* these are dummy and just tell u what API levels ecore_evas supports - not if
71 * the actual support is compiled in. you need to query for that separately.
72 */
73#define HAVE_ECORE_EVAS_X 1
74#define HAVE_ECORE_EVAS_FB 1
75#define HAVE_ECORE_EVAS_X11_GL 1
76#define HAVE_ECORE_EVAS_X11_16 1
77#define HAVE_ECORE_EVAS_DIRECTFB 1
78#define HAVE_ECORE_EVAS_WIN32 1
79#define HAVE_ECORE_EVAS_COCOA 1
80#define HAVE_ECORE_EVAS_SDL 1
81#define HAVE_ECORE_EVAS_WINCE 1
82#define HAVE_ECORE_EVAS_EWS 1
83#define HAVE_ECORE_EVAS_PSL1GHT 1
84
85typedef enum _Ecore_Evas_Engine_Type
86{
87 ECORE_EVAS_ENGINE_SOFTWARE_BUFFER,
88 ECORE_EVAS_ENGINE_SOFTWARE_XLIB,
89 ECORE_EVAS_ENGINE_XRENDER_X11,
90 ECORE_EVAS_ENGINE_OPENGL_X11,
91 ECORE_EVAS_ENGINE_SOFTWARE_XCB,
92 ECORE_EVAS_ENGINE_XRENDER_XCB,
93 ECORE_EVAS_ENGINE_SOFTWARE_GDI,
94 ECORE_EVAS_ENGINE_SOFTWARE_DDRAW,
95 ECORE_EVAS_ENGINE_DIRECT3D,
96 ECORE_EVAS_ENGINE_OPENGL_GLEW,
97 ECORE_EVAS_ENGINE_OPENGL_COCOA,
98 ECORE_EVAS_ENGINE_SOFTWARE_SDL,
99 ECORE_EVAS_ENGINE_DIRECTFB,
100 ECORE_EVAS_ENGINE_SOFTWARE_FB,
101 ECORE_EVAS_ENGINE_SOFTWARE_8_X11,
102 ECORE_EVAS_ENGINE_SOFTWARE_16_X11,
103 ECORE_EVAS_ENGINE_SOFTWARE_16_DDRAW,
104 ECORE_EVAS_ENGINE_SOFTWARE_16_WINCE,
105 ECORE_EVAS_ENGINE_OPENGL_SDL,
106 ECORE_EVAS_ENGINE_EWS,
107 ECORE_EVAS_ENGINE_PSL1GHT
108} Ecore_Evas_Engine_Type;
109
110typedef enum _Ecore_Evas_Avoid_Damage_Type
111{
112 ECORE_EVAS_AVOID_DAMAGE_NONE = 0,
113 ECORE_EVAS_AVOID_DAMAGE_EXPOSE = 1,
114 ECORE_EVAS_AVOID_DAMAGE_BUILT_IN = 2
115} Ecore_Evas_Avoid_Damage_Type;
116
117typedef enum _Ecore_Evas_Object_Associate_Flags
118{
119 ECORE_EVAS_OBJECT_ASSOCIATE_BASE = 0,
120 ECORE_EVAS_OBJECT_ASSOCIATE_STACK = 1 << 0,
121 ECORE_EVAS_OBJECT_ASSOCIATE_LAYER = 1 << 1,
122 ECORE_EVAS_OBJECT_ASSOCIATE_DEL = 1 << 2
123} Ecore_Evas_Object_Associate_Flags;
124
125#ifndef _ECORE_X_H
126#define _ECORE_X_WINDOW_PREDEF
127typedef unsigned int Ecore_X_Window;
128#endif
129
130#ifndef _ECORE_DIRECTFB_H
131#define _ECORE_DIRECTFB_WINDOW_PREDEF
132typedef struct _Ecore_DirectFB_Window Ecore_DirectFB_Window;
133#endif
134
135#ifndef __ECORE_WIN32_H__
136typedef struct _Ecore_Win32_Window Ecore_Win32_Window;
137#endif
138
139#ifndef __ECORE_WINCE_H__
140typedef struct _Ecore_WinCE_Window Ecore_WinCE_Window;
141#endif
142
143#ifndef __ECORE_COCOA_H__
144typedef struct _Ecore_Cocoa_Window Ecore_Cocoa_Window;
145#endif
146
147#ifndef _ECORE_EVAS_PRIVATE_H
148/* basic data types */
149typedef struct _Ecore_Evas Ecore_Evas;
150#endif
151
152/* module setup/shutdown calls */
153
154EAPI int ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine);
155
156/**
157 * @brief Init the Ecore_Evas system.
158 *
159 * @return How many times the lib has been initialized, 0 indicates failure.
160 *
161 * Set up the Evas wrapper system. Init Evas and Ecore libraries.
162 *
163 * @see ecore_evas_shutdown()
164 */
165EAPI int ecore_evas_init(void);
166/**
167 * @brief Shut down the Ecore_Evas system.
168 *
169 * @return 0 if ecore evas is fully shut down, or > 0 if it still being used.
170 *
171 * This closes the Evas wrapper system down. Shut down Evas and Ecore libraries.
172 *
173 * @see ecore_evas_init()
174 */
175EAPI int ecore_evas_shutdown(void);
176
177EAPI void ecore_evas_app_comp_sync_set(Eina_Bool do_sync);
178EAPI Eina_Bool ecore_evas_app_comp_sync_get(void);
179
180/**
181 * @brief Returns a list of supported engines names.
182 *
183 * @return Newly allocated list with engines names. Engines names
184 * strings are internal and should be considered constants, do not
185 * free or modify them, to free the list use ecore_evas_engines_free().
186 */
187EAPI Eina_List *ecore_evas_engines_get(void);
188/**
189 * @brief Free list returned by ecore_evas_engines_get()
190 */
191EAPI void ecore_evas_engines_free(Eina_List *engines);
192/**
193 * @brief Creates a new Ecore_Evas based on engine name and common parameters.
194 *
195 * @param engine_name engine name as returned by
196 * ecore_evas_engines_get() or NULL to use environment variable
197 * ECORE_EVAS_ENGINE, that can be undefined and in this case
198 * this call will try to find the first working engine.
199 * @param x horizontal position of window (not supported in all engines)
200 * @param y vertical position of window (not supported in all engines)
201 * @param w width of window
202 * @param h height of window
203 * @param extra_options string with extra parameter, dependent on engines
204 * or NULL. String is usually in the form: 'key1=value1;key2=value2'.
205 * Pay attention that when getting that from shell commands, most
206 * consider ';' as the command terminator, so you need to escape
207 * it or use quotes.
208 *
209 * @return Ecore_Evas instance or NULL if creation failed.
210 */
211EAPI Ecore_Evas *ecore_evas_new(const char *engine_name, int x, int y, int w, int h, const char *extra_options);
212/**
213 * @brief Set whether an Ecore_Evas has an alpha channel or not.
214 *
215 * @param ee The Ecore_Evas to shape
216 * @param alpha EINA_TRUE to enable the alpha channel, EINA_FALSE to disable it
217 *
218 * This function allows you to make an Ecore_Evas translucent using an
219 * alpha channel. See ecore_evas_shaped_set() for details. The difference
220 * between a shaped window and a window with an alpha channel is that an
221 * alpha channel supports multiple levels of transpararency, as opposed to
222 * the 1 bit transparency of a shaped window (a pixel is either opaque, or
223 * it's transparent).
224 *
225 * @warning Support for this depends on the underlying windowing system.
226 */
227EAPI void ecore_evas_alpha_set(Ecore_Evas *ee, Eina_Bool alpha);
228/**
229 * @brief Query whether an Ecore_Evas has an alpha channel.
230 * @param ee The Ecore_Evas to query.
231 * @return EINA_TRUE if ee has an alpha channel, EINA_FALSE if it does not.
232 *
233 * This function returns EINA_TRUE if @p ee has an alpha channel, and EINA_FALSE
234 * if it does not.
235 *
236 * @see ecore_evas_alpha_set()
237 */
238EAPI Eina_Bool ecore_evas_alpha_get(const Ecore_Evas *ee);
239/**
240 * @brief Set whether an Ecore_Evas has an transparent window or not.
241 *
242 * @param ee The Ecore_Evas to shape
243 * @param transparent EINA_TRUE to enable the transparent window, EINA_FALSE to
244 * disable it
245 *
246 * This function sets some translucency options, for more complete support see
247 * ecore_evas_alpha_set().
248 *
249 * @warning Support for this depends on the underlying windowing system.
250 *
251 * @see ecore_evas_alpha_set()
252 */
253EAPI void ecore_evas_transparent_set(Ecore_Evas *ee, Eina_Bool transparent);
254/**
255 * @brief Query whether an Ecore_Evas is transparent.
256 *
257 * @param ee The Ecore_Evas to query.
258 * @return EINA_TRUE if ee is transparent, EINA_FALSE if it isn't.
259 *
260 * @see ecore_evas_transparent_set()
261 */
262EAPI Eina_Bool ecore_evas_transparent_get(const Ecore_Evas *ee);
263/**
264 * @brief Get the geometry of an Ecore_Evas.
265 *
266 * @param ee The Ecore_Evas whose geometry y
267 * @param x A pointer to an int to place the x coordinate in
268 * @param y A pointer to an int to place the y coordinate in
269 * @param w A pointer to an int to place the w size in
270 * @param h A pointer to an int to place the h size in
271 *
272 * This function takes four pointers to (already allocated) ints, and places
273 * the geometry of @p ee in them. If any of the parameters is not desired you
274 * may pass NULL on them.
275 *
276 * @code
277 * int x, y, w, h;
278 * ecore_evas_geometry_get(ee, &x, &y, &w, &h);
279 * @endcode
280 *
281 * @see ecore_evas_new()
282 * @see ecore_evas_resize()
283 * @see ecore_evas_move()
284 * @see ecore_evas_move_resize()
285 */
286EAPI void ecore_evas_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
287/**
288 * @brief Get the geometry which an Ecore_Evas was latest recently requested.
289 *
290 * @param ee The Ecore_Evas whose geometry y
291 * @param x A pointer to an int to place the x coordinate in
292 * @param y A pointer to an int to place the y coordinate in
293 * @param w A pointer to an int to place the w size in
294 * @param h A pointer to an int to place the h size in
295 *
296 * This function takes four pointers to (already allocated) ints, and places
297 * the geometry which @p ee was latest recently requested . If any of the parameters is not desired you
298 * may pass NULL on them.
299 * This function can represent recently requested geomety.
300 * ecore_evas_geometry_get function returns the value is updated after engine finished request.
301 * By comparison, ecore_evas_request_geometry_get returns recently requested value.
302 *
303 * @code
304 * int x, y, w, h;
305 * ecore_evas_request_geometry_get(ee, &x, &y, &w, &h);
306 * @endcode
307 *
308 * @since 1.1
309 */
310EAPI void ecore_evas_request_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
311/**
312 * @brief Set the focus of an Ecore_Evas' window.
313 *
314 * @param ee The Ecore_Evas
315 * @param on EINA_TRUE for focus, EINA_FALSE to defocus.
316 *
317 * This function focuses @p ee if @p on is EINA_TRUE, or unfocuses @p ee if @p
318 * on is EINA_FALSE.
319 *
320 * @warning Support for this depends on the underlying windowing system.
321 */
322EAPI void ecore_evas_focus_set(Ecore_Evas *ee, Eina_Bool on);
323/**
324 * @brief Query whether an Ecore_Evas' window is focused or not.
325 *
326 * @param ee The Ecore_Evas to set
327 * @return EINA_TRUE if @p ee if focused, EINA_FALSE if not.
328 *
329 * @see ecore_evas_focus_set()
330 */
331EAPI Eina_Bool ecore_evas_focus_get(const Ecore_Evas *ee);
332/**
333 * @brief Iconify or uniconify an Ecore_Evas' window.
334 *
335 * @param ee The Ecore_Evas
336 * @param on EINA_TRUE to iconify, EINA_FALSE to uniconify.
337 *
338 * This function iconifies @p ee if @p on is EINA_TRUE, or uniconifies @p ee if
339 * @p on is EINA_FALSE.
340 *
341 * @note Iconify and minize are synonims.
342 *
343 * @warning Support for this depends on the underlying windowing system.
344 */
345EAPI void ecore_evas_iconified_set(Ecore_Evas *ee, Eina_Bool on);
346/**
347 * @brief Query whether an Ecore_Evas' window is iconified or not.
348 *
349 * @param ee The Ecore_Evas to set
350 * @return EINA_TRUE if @p ee is iconified, EINA_FALSE if not.
351 *
352 * @note Iconify and minize are synonims.
353 *
354 * @see ecore_evas_iconified_set()
355 */
356EAPI Eina_Bool ecore_evas_iconified_get(const Ecore_Evas *ee);
357/**
358 * @brief Set whether an Ecore_Evas' window is borderless or not.
359 *
360 * @param ee The Ecore_Evas
361 * @param on EINA_TRUE for borderless, EINA_FALSE for bordered.
362 *
363 * This function makes @p ee borderless if @p on is EINA_TRUE, or bordered if @p
364 * on is EINA_FALSE.
365 *
366 * @warning Support for this depends on the underlying windowing system.
367 */
368EAPI void ecore_evas_borderless_set(Ecore_Evas *ee, Eina_Bool on);
369/**
370 * @brief Query whether an Ecore_Evas' window is borderless or not.
371 *
372 * @param ee The Ecore_Evas to set
373 * @return EINA_TRUE if @p ee is borderless, EINA_FALSE if not.
374 *
375 * @see ecore_evas_borderless_set()
376 */
377EAPI Eina_Bool ecore_evas_borderless_get(const Ecore_Evas *ee);
378/**
379 * @brief Set whether or not an Ecore_Evas' window is fullscreen.
380 *
381 * @param ee The Ecore_Evas
382 * @param on EINA_TRUE fullscreen, EINA_FALSE not.
383 *
384 * This function causes @p ee to be fullscreen if @p on is EINA_TRUE,
385 * or not if @p on is EINA_FALSE.
386 *
387 * @warning Support for this depends on the underlying windowing system.
388 */
389EAPI void ecore_evas_fullscreen_set(Ecore_Evas *ee, Eina_Bool on);
390/**
391 * @brief Query whether an Ecore_Evas' window is fullscreen or not.
392 *
393 * @param ee The Ecore_Evas to set
394 * @return EINA_TRUE if @p ee is fullscreen, EINA_FALSE if not.
395 *
396 * @see ecore_evas_fullscreen_set()
397 */
398EAPI Eina_Bool ecore_evas_fullscreen_get(const Ecore_Evas *ee);
399/**
400 * @brief Set if this evas should ignore @b all events.
401 *
402 * @param ee The Ecore_Evas whose window's to ignore events.
403 * @param ignore The Ecore_Evas new ignore state.
404 *
405 * @warning Support for this depends on the underlying windowing system.
406 */
407EAPI void ecore_evas_ignore_events_set(Ecore_Evas *ee, Eina_Bool ignore);
408/**
409 * @brief Returns the ignore state of an Ecore_Evas' window.
410 *
411 * @param ee The Ecore_Evas whose window's ignore events state is returned.
412 * @return The Ecore_Evas window's ignore state.
413 *
414 * @see ecore_evas_ignore_events_set()
415 */
416EAPI Eina_Bool ecore_evas_ignore_events_get(const Ecore_Evas *ee);
417/**
418 * @brief Query whether an Ecore_Evas' window is visible or not.
419 *
420 * @param ee The Ecore_Evas to query.
421 * @return 1 if visible, 0 if not.
422 *
423 * This function queries @p ee and returns 1 if it is visible, and 0 if not.
424 *
425 * @see ecore_evas_show()
426 * @see ecore_evas_hide()
427 */
428EAPI int ecore_evas_visibility_get(const Ecore_Evas *ee);
429/**
430 * @brief Set the layer of an Ecore_Evas' window.
431 *
432 * @param ee The Ecore_Evas
433 * @param layer The layer to put @p ee on.
434 *
435 * This function moves @p ee to the layer @p layer.
436 *
437 * @warning Support for this depends on the underlying windowing system.
438 *
439 * @see ecore_evas_lower()
440 * @see ecore_evas_raise()
441 */
442EAPI void ecore_evas_layer_set(Ecore_Evas *ee, int layer);
443/**
444 * @brief Get the layer of an Ecore_Evas' window.
445 *
446 * @param ee The Ecore_Evas to set
447 * @return the layer @p ee's window is on.
448 *
449 * @see ecore_evas_layer_set()
450 * @see ecore_evas_lower()
451 * @see ecore_evas_raise()
452 */
453EAPI int ecore_evas_layer_get(const Ecore_Evas *ee);
454/**
455 * @brief Maximize (or unmaximize) an Ecore_Evas' window.
456 *
457 * @param ee The Ecore_Evas
458 * @param on EINA_TRUE to maximize, EINA_FALSE to unmaximize.
459 *
460 * This function maximizes @p ee if @p on is EINA_TRUE, or unmaximizes @p ee
461 * if @p on is EINA_FALSE.
462 *
463 * @warning Support for this depends on the underlying windowing system.
464 */
465EAPI void ecore_evas_maximized_set(Ecore_Evas *ee, Eina_Bool on);
466/**
467 * @brief Query whether an Ecore_Evas' window is maximized or not.
468 *
469 * @param ee The Ecore_Evas to set
470 * @return EINA_TRUE if @p ee is maximized, EINA_FALSE if not.
471 *
472 * @see ecore_evas_maximized_set()
473 */
474EAPI Eina_Bool ecore_evas_maximized_get(const Ecore_Evas *ee);
475/**
476 * @brief Move an Ecore_Evas.
477 *
478 * @param ee The Ecore_Evas to move
479 * @param x The x coordinate to move to
480 * @param y The y coordinate to move to
481 *
482 * This moves @p ee to the screen coordinates (@p x, @p y)
483 *
484 * @warning Support for this depends on the underlying windowing system.
485 *
486 * @see ecore_evas_new()
487 * @see ecore_evas_resize()
488 * @see ecore_evas_move_resize()
489 */
490EAPI void ecore_evas_move(Ecore_Evas *ee, int x, int y);
491/**
492 * @brief Resize an Ecore_Evas.
493 *
494 * @param ee The Ecore_Evas to move
495 * @param w The w coordinate to resize to
496 * @param h The h coordinate to resize to
497 *
498 * This resizes @p ee to @p w x @p h.
499 *
500 * @warning Support for this depends on the underlying windowing system.
501 *
502 * @see ecore_evas_new()
503 * @see ecore_evas_move()
504 * @see ecore_evas_move_resize()
505 */
506EAPI void ecore_evas_resize(Ecore_Evas *ee, int w, int h);
507/**
508 * @brief Move and resize an Ecore_Evas
509 *
510 * @param ee The Ecore_Evas to move and resize
511 * @param x The x coordinate to move to
512 * @param y The y coordinate to move to
513 * @param w The w coordinate to resize to
514 * @param h The h coordinate to resize to
515 *
516 * This moves @p ee to the screen coordinates (@p x, @p y) and resizes
517 * it to @p w x @p h.
518 *
519 * @warning Support for this depends on the underlying windowing system.
520 *
521 * @see ecore_evas_new()
522 * @see ecore_evas_move()
523 * @see ecore_evas_resize()
524 */
525EAPI void ecore_evas_move_resize(Ecore_Evas *ee, int x, int y, int w, int h);
526/**
527 * @brief Set the rotation of an Ecore_Evas' window.
528 *
529 * @param ee The Ecore_Evas
530 * @param rot the angle (in degrees) of rotation.
531 *
532 * The allowed values of @p rot depend on the engine being used. Most only
533 * allow multiples of 90.
534 *
535 * @warning Support for this depends on the underlying windowing system.
536 *
537 * @see ecore_evas_rotation_with_resize_set()
538 */
539EAPI void ecore_evas_rotation_set(Ecore_Evas *ee, int rot);
540/**
541 * @brief Set the rotation of an Ecore_Evas' window
542 *
543 * @param ee The Ecore_Evas
544 * @param rot the angle (in degrees) of rotation.
545 *
546 * Like ecore_evas_rotation_set(), but it also resizes the window's contents so
547 * that they fit inside the current window geometry.
548 *
549 * @warning Support for this depends on the underlying windowing system.
550 *
551 * @see ecore_evas_rotation_set()
552 */
553EAPI void ecore_evas_rotation_with_resize_set(Ecore_Evas *ee, int rot);
554/**
555 * @brief Get the rotation of an Ecore_Evas' window
556 *
557 * @param ee The Ecore_Evas
558 * @return the angle (in degrees) of rotation.
559 *
560 * @see ecore_evas_rotation_set()
561 * @see ecore_evas_rotation_with_resize_set()
562 */
563EAPI int ecore_evas_rotation_get(const Ecore_Evas *ee);
564/**
565 * @brief Raise an Ecore_Evas' window.
566 *
567 * @param ee The Ecore_Evas to raise.
568 *
569 * This functions raises the Ecore_Evas to the front.
570 *
571 * @warning Support for this depends on the underlying windowing system.
572 *
573 * @see ecore_evas_lower()
574 * @see ecore_evas_layer_set()
575 */
576EAPI void ecore_evas_raise(Ecore_Evas *ee);
577/**
578 * @brief Lower an Ecore_Evas' window.
579 *
580 * @param ee The Ecore_Evas to raise.
581 *
582 * This functions lowers the Ecore_Evas to the back.
583 *
584 * @warning Support for this depends on the underlying windowing system.
585 *
586 * @see ecore_evas_raise()
587 * @see ecore_evas_layer_set()
588 */
589EAPI void ecore_evas_lower(Ecore_Evas *ee);
590/**
591 * @brief Set the title of an Ecore_Evas' window.
592 *
593 * @param ee The Ecore_Evas whose title you wish to set.
594 * @param t The title
595 *
596 * This function sets the title of @p ee to @p t.
597 *
598 * @warning Support for this depends on the underlying windowing system.
599 */
600EAPI void ecore_evas_title_set(Ecore_Evas *ee, const char *t);
601/**
602 * @brief Get the title of an Ecore_Evas' window.
603 *
604 * @param ee The Ecore_Evas whose title you wish to get.
605 * @return The title of @p ee.
606 *
607 * This function returns the title of @p ee.
608 *
609 * @see ecore_evas_title_set()
610 */
611EAPI const char *ecore_evas_title_get(const Ecore_Evas *ee);
612/**
613 * @brief Set the name and class of an Ecore_Evas' window.
614 *
615 * @param ee the Ecore_Evas
616 * @param n the name
617 * @param c the class
618 *
619 * This function sets the name of @p ee to @p n, and its class to @p c. The
620 * meaning of @p name and @p class depends on the underlying windowing system.
621 *
622 * @warning Support for this depends on the underlying windowing system.
623 */
624EAPI void ecore_evas_name_class_set(Ecore_Evas *ee, const char *n, const char *c);
625/**
626 * @brief Get the name and class of an Ecore_Evas' window
627 *
628 * @p ee The Ecore_Evas to query
629 * @p n A pointer to a string to place the name in.
630 * @p c A pointer to a string to place the class in.
631 *
632 * This function gets the name of @p ee into @p n, and its class into
633 * @p c.
634 *
635 * @see ecore_evas_name_class_set()
636 */
637EAPI void ecore_evas_name_class_get(const Ecore_Evas *ee, const char **n, const char **c);
638/**
639 * @brief Returns a pointer to the underlying window.
640 *
641 * @param ee The Ecore_Evas whose window is desired.
642 *
643 * @warning Support for this depends on the underlying windowing system.
644 */
645EAPI Ecore_Window ecore_evas_window_get(const Ecore_Evas *ee);
646
647
648/* engine/target specific init calls */
649EAPI Ecore_Evas *ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
650EAPI Ecore_X_Window ecore_evas_software_x11_window_get(const Ecore_Evas *ee);
651EAPI void ecore_evas_software_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
652EAPI Eina_Bool ecore_evas_software_x11_direct_resize_get(const Ecore_Evas *ee);
653EAPI void ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
654
655#define ECORE_EVAS_GL_X11_OPT_NONE 0
656#define ECORE_EVAS_GL_X11_OPT_INDIRECT 1
657#define ECORE_EVAS_GL_X11_OPT_VSYNC 2
658#define ECORE_EVAS_GL_X11_OPT_LAST 3
659
660EAPI Ecore_Evas *ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
661EAPI Ecore_Evas *ecore_evas_gl_x11_options_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h, const int *opt);
662EAPI Ecore_X_Window ecore_evas_gl_x11_window_get(const Ecore_Evas *ee);
663EAPI void ecore_evas_gl_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
664EAPI Eina_Bool ecore_evas_gl_x11_direct_resize_get(const Ecore_Evas *ee);
665EAPI void ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
666EAPI void ecore_evas_gl_x11_pre_post_swap_callback_set(const Ecore_Evas *ee, void *data, void (*pre_cb) (void *data, Evas *e), void (*post_cb) (void *data, Evas *e));
667
668EAPI Ecore_Evas *ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
669EAPI Ecore_X_Window ecore_evas_xrender_x11_window_get(const Ecore_Evas *ee);
670EAPI void ecore_evas_xrender_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
671EAPI Eina_Bool ecore_evas_xrender_x11_direct_resize_get(const Ecore_Evas *ee);
672EAPI void ecore_evas_xrender_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
673
674EAPI Ecore_Evas *ecore_evas_software_x11_8_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
675EAPI Ecore_X_Window ecore_evas_software_x11_8_window_get(const Ecore_Evas *ee);
676EAPI Ecore_X_Window ecore_evas_software_x11_8_subwindow_get(const Ecore_Evas *ee);
677EAPI void ecore_evas_software_x11_8_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
678EAPI Eina_Bool ecore_evas_software_x11_8_direct_resize_get(const Ecore_Evas *ee);
679EAPI void ecore_evas_software_x11_8_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
680
681EAPI Ecore_Evas *ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
682EAPI Ecore_X_Window ecore_evas_software_x11_16_window_get(const Ecore_Evas *ee);
683EAPI void ecore_evas_software_x11_16_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
684EAPI Eina_Bool ecore_evas_software_x11_16_direct_resize_get(const Ecore_Evas *ee);
685EAPI void ecore_evas_software_x11_16_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
686
687EAPI Ecore_Evas *ecore_evas_fb_new(const char *disp_name, int rotation, int w, int h);
688
689EAPI Ecore_Evas *ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w, int h);
690EAPI Ecore_DirectFB_Window *ecore_evas_directfb_window_get(const Ecore_Evas *ee);
691
692/**
693 * @brief Create a new @c Ecore_Evas canvas bound to the Evas
694 * @b buffer engine
695 *
696 * @param w The width of the canvas, in pixels
697 * @param h The height of the canvas, in pixels
698 * @return A new @c Ecore_Evas instance or @c NULL, on failure
699 *
700 * This creates a new buffer canvas wrapper, with image data array
701 * @b bound to the ARGB format, 8 bits per pixel.
702 *
703 * This function will allocate the needed pixels array with canonical
704 * @c malloc(). If you wish a custom function to allocate it, consider
705 * using ecore_evas_buffer_allocfunc_new(), instead.
706 *
707 * @note This function actually is a wrapper on
708 * ecore_evas_buffer_allocfunc_new(), using the same @a w and @a h
709 * arguments and canonical @c malloc() and @c free() to the memory
710 * allocation and freeing functions. See that function's documentation
711 * for more details.
712 */
713EAPI Ecore_Evas *ecore_evas_buffer_new(int w, int h);
714
715/**
716 * @brief Create a new @c Ecore_Evas canvas bound to the Evas
717 * @b buffer engine, giving custom allocation and freeing functions for
718 * the canvas memory region
719 *
720 * @param w The width of the canvas, in canvas units
721 * @param h The height of the canvas, in canvas units
722 * @param alloc_func Function to be called to allocate the memory
723 * needed for the new buffer canvas. @a data will be passed the same
724 * value as the @p data of this function, while @a size will be passed
725 * @p w times @p h times @c sizeof(int).
726 * @param free_func Function to be called to free the memory used by
727 * the new buffer canvas. @a data will be passed the same value as the
728 * @p data of this function, while @a pix will be passed the canvas
729 * memory pointer.
730 * @param data Custom data to be passed to the allocation and freeing
731 * functions
732 * @return A new @c Ecore_Evas instance or @c NULL, on failure
733 *
734 * This creates a new buffer canvas wrapper, with image data array
735 * @b bound to the ARGB format, 8 bits per pixel.
736 *
737 * This function is useful when one wants an @c Ecore_Evas buffer
738 * canvas with a custom allocation function, like one getting memory
739 * chunks from a memory pool, for example.
740 *
741 * On any resizing of this @c Ecore_Evas buffer canvas, its image data
742 * will be @b freed, to be allocated again with the new size.
743 *
744 * @note @p w and @p h sizes have to greater or equal to 1. Otherwise,
745 * they'll be interpreted as 1, exactly.
746 *
747 * @see ecore_evas_buffer_new()
748 */
749EAPI Ecore_Evas *ecore_evas_buffer_allocfunc_new(int w, int h, void *(*alloc_func) (void *data, int size), void (*free_func) (void *data, void *pix), const void *data);
750
751/**
752 * @brief Grab a pointer to the actual pixels array of a given
753 * @c Ecore_Evas @b buffer canvas/window.
754 *
755 * @param ee An @c Ecore_Evas handle
756 * @return A pointer to the internal pixels array of @p ee
757 *
758 * Besides returning a pointer to the actual pixel array of the given
759 * canvas, this call will force a <b>rendering update on @p ee</b>,
760 * first.
761 *
762 * A common use case for this call is to create an image object, from
763 * @b another canvas, to have as data @p ee's contents, thus
764 * snapshoting the canvas. For that case, one can also use the
765 * ecore_evas_object_image_new() helper function.
766 */
767EAPI const void *ecore_evas_buffer_pixels_get(Ecore_Evas *ee);
768
769/**
770 * @brief Create a new @c Ecore_Evas canvas bound to the Evas
771 * @b ews (Ecore + Evas Single Process Windowing System) engine
772 *
773 * EWS is a simple single process windowing system. The backing store
774 * is also an @c Ecore_Evas that can be setup with
775 * ecore_evas_ews_setup() and retrieved with
776 * ecore_evas_ews_ecore_evas_get(). It will allow window management
777 * using events prefixed with @c ECORE_EVAS_EVENT_EWS_.
778 *
779 * The EWS windows (returned by this function or
780 * ecore_evas_new("ews"...)) will all be software buffer windows
781 * automatic rendered to the backing store.
782 *
783 * @param x horizontal position of window, in pixels
784 * @param y vertical position of window, in pixels
785 * @param w The width of the canvas, in pixels
786 * @param h The height of the canvas, in pixels
787 * @return A new @c Ecore_Evas instance or @c NULL, on failure
788 *
789 * @see ecore_evas_ews_setup()
790 * @see ecore_evas_ews_ecore_evas_get()
791 *
792 * @since 1.1
793 */
794EAPI Ecore_Evas *ecore_evas_ews_new(int x, int y, int w, int h);
795
796
797/**
798 * Returns the backing store image object that represents the given
799 * window in EWS.
800 *
801 * @note This should not be modified anyhow, but may be helpful to
802 * determine stacking and geometry of it for window managers
803 * that decorate windows.
804 *
805 * @see ecore_evas_ews_manager_set()
806 * @see ecore_evas_ews_evas_get()
807 * @since 1.1
808 */
809EAPI Evas_Object *ecore_evas_ews_backing_store_get(const Ecore_Evas *ee);
810
811/**
812 * Calls the window to be deleted (freed), but can let user decide to
813 * forbid it by using ecore_evas_callback_delete_request_set()
814 *
815 * @since 1.1
816 */
817EAPI void ecore_evas_ews_delete_request(Ecore_Evas *ee);
818
819/**
820 * @brief Create an Evas image object with image data <b>bound to an
821 * own, internal @c Ecore_Evas canvas wrapper<b>
822 *
823 * @param ee_target @c Ecore_Evas to have the canvas receiving the new
824 * image object
825 * @return A handle to the new image object
826 *
827 * This will create a @b special Evas image object. The image's pixel
828 * array will get bound to the same image data array of an @b internal
829 * @b buffer @c Ecore_Evas canvas. The user of this function is, then,
830 * supposed to grab that @c Ecore_Evas handle, with
831 * ecore_evas_object_ecore_evas_get(), and use its canvas to render
832 * whichever contents he/she wants, @b independently of the contents
833 * of the canvas owned by @p ee_target. Those contents will reflect on
834 * the canvas of @p ee, though, being exactly the image data of the
835 * object returned by this function.
836 *
837 * This is a helper function for the scenario of one wanting to grab a
838 * buffer canvas' contents (with ecore_evas_buffer_pixels_get()) to be
839 * used on another canvas, for whichever reason. The most common goal
840 * of this setup is to @b save an image file with a whole canvas as
841 * contents, which could not be achieved by using an image file within
842 * the target canvas.
843 *
844 * @warning Always resize the returned image and its underlying
845 * @c Ecore_Evas handle accordingly. They must be kept with same sizes
846 * for things to work as expected. Also, you @b must issue
847 * @c evas_object_image_size_set() on the image with that same size. If
848 * the image is to be shown in a canvas bound to an engine different
849 * than the buffer one, then you must also set this image's @b fill
850 * properties accordingly.
851 *
852 * @note The image returned will always be bound to the
853 * @c EVAS_COLORSPACE_ARGB8888 colorspace, always.
854 *
855 * @note Use ecore_evas_object_evas_get() to grab the image's internal
856 * own canvas directly.
857 *
858 * @note If snapshoting this image's internal canvas, remember to
859 * flush its internal @c Ecore_Evas firstly, with
860 * ecore_evas_manual_render().
861 */
862EAPI Evas_Object *ecore_evas_object_image_new(Ecore_Evas *ee_target);
863
864/**
865 * @brief Retrieve the internal @c Ecore_Evas handle of an image
866 * object created via ecore_evas_object_image_new()
867 *
868 * @param obj A handle to an image object created via
869 * ecore_evas_object_image_new()
870 * @return The underlying @c Ecore_Evas handle in @p obj
871 */
872EAPI Ecore_Evas *ecore_evas_object_ecore_evas_get(Evas_Object *obj);
873
874/**
875 * @brief Retrieve the canvas bound to the internal @c Ecore_Evas
876 * handle of an image object created via ecore_evas_object_image_new()
877 *
878 * @param obj A handle to an image object created via
879 * ecore_evas_object_image_new()
880 * @return A handle to @p obj's underlying @c Ecore_Evas's canvas
881 */
882EAPI Evas *ecore_evas_object_evas_get(Evas_Object *obj);
883
884EAPI Ecore_Evas *ecore_evas_software_gdi_new(Ecore_Win32_Window *parent,
885 int x,
886 int y,
887 int width,
888 int height);
889
890EAPI Ecore_Evas *ecore_evas_software_ddraw_new(Ecore_Win32_Window *parent,
891 int x,
892 int y,
893 int width,
894 int height);
895
896EAPI Ecore_Evas *ecore_evas_software_16_ddraw_new(Ecore_Win32_Window *parent,
897 int x,
898 int y,
899 int width,
900 int height);
901
902EAPI Ecore_Evas *ecore_evas_direct3d_new(Ecore_Win32_Window *parent,
903 int x,
904 int y,
905 int width,
906 int height);
907
908EAPI Ecore_Evas *ecore_evas_gl_glew_new(Ecore_Win32_Window *parent,
909 int x,
910 int y,
911 int width,
912 int height);
913
914EAPI Ecore_Win32_Window *ecore_evas_win32_window_get(const Ecore_Evas *ee);
915
916EAPI Ecore_Evas *ecore_evas_sdl_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha);
917EAPI Ecore_Evas *ecore_evas_sdl16_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha);
918EAPI Ecore_Evas *ecore_evas_gl_sdl_new(const char* name, int w, int h, int fullscreen, int noframe);
919
920EAPI Ecore_Evas *ecore_evas_software_wince_new(Ecore_WinCE_Window *parent,
921 int x,
922 int y,
923 int width,
924 int height);
925
926EAPI Ecore_Evas *ecore_evas_software_wince_fb_new(Ecore_WinCE_Window *parent,
927 int x,
928 int y,
929 int width,
930 int height);
931
932EAPI Ecore_Evas *ecore_evas_software_wince_gapi_new(Ecore_WinCE_Window *parent,
933 int x,
934 int y,
935 int width,
936 int height);
937
938EAPI Ecore_Evas *ecore_evas_software_wince_ddraw_new(Ecore_WinCE_Window *parent,
939 int x,
940 int y,
941 int width,
942 int height);
943
944EAPI Ecore_Evas *ecore_evas_software_wince_gdi_new(Ecore_WinCE_Window *parent,
945 int x,
946 int y,
947 int width,
948 int height);
949
950EAPI Ecore_WinCE_Window *ecore_evas_software_wince_window_get(const Ecore_Evas *ee);
951
952EAPI Ecore_Evas *ecore_evas_cocoa_new(Ecore_Cocoa_Window *parent,
953 int x,
954 int y,
955 int w,
956 int h);
957
958EAPI Ecore_Evas *ecore_evas_psl1ght_new(const char* name, int w, int h);
959
960
961/* generic manipulation calls */
962/**
963 * @brief Get the engine name used by this Ecore_Evas(window).
964 *
965 * @param ee Ecore_Evas whose engine's name is desired.
966 * @return A string that can(usually) be used in ecore_evas_new()
967 *
968 * @see ecore_evas_free()
969 */
970EAPI const char *ecore_evas_engine_name_get(const Ecore_Evas *ee);
971/**
972 * @brief Return the Ecore_Evas for this Evas
973 *
974 * @param e The Evas to get the Ecore_Evas from
975 * @return The Ecore_Evas that holds this Evas, or NULL if not held by one.
976 *
977 * @warning Only use on Evas' created with ecore evas!
978 */
979EAPI Ecore_Evas *ecore_evas_ecore_evas_get(const Evas *e);
980/**
981 * @brief Free an Ecore_Evas
982 *
983 * @param ee The Ecore_Evas to free
984 *
985 * This frees up any memory used by the Ecore_Evas.
986 */
987EAPI void ecore_evas_free(Ecore_Evas *ee);
988/**
989 * @brief Retrieve user data associated with an Ecore_Evas.
990 *
991 * @param ee The Ecore_Evas to retrieve the user data from.
992 * @param key The key which the user data to be retrieved is associated with.
993 *
994 * This function retrieves user specific data that has been stored within an
995 * Ecore_Evas structure with ecore_evas_data_set().
996 *
997 * @returns NULL on error or no data found, A pointer to the user data on
998 * success.
999 *
1000 * @see ecore_evas_data_set()
1001 */
1002EAPI void *ecore_evas_data_get(const Ecore_Evas *ee, const char *key);
1003/**
1004 * @brief Store user data in an Ecore_Evas structure.
1005 *
1006 * @param ee The Ecore_Evas to store the user data in.
1007 * @param key A unique string to associate the user data against. Cannot
1008 * be NULL.
1009 * @param data A pointer to the user data to store.
1010 *
1011 * This function associates the @p data with a @p key which is stored by
1012 * the Ecore_Evas @p ee. Be aware that a call to ecore_evas_free() will
1013 * not free any memory for the associated user data, this is the responsibility
1014 * of the caller.
1015 *
1016 * @see ecore_evas_callback_pre_free_set()
1017 * @see ecore_evas_free()
1018 * @see ecore_evas_data_get()
1019 */
1020EAPI void ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data);
1021/**
1022 * Set a callback for Ecore_Evas resize events.
1023 * @param ee The Ecore_Evas to set callbacks on
1024 * @param func The function to call
1025
1026 * A call to this function will set a callback on an Ecore_Evas, causing
1027 * @p func to be called whenever @p ee is resized.
1028 *
1029 * @warning If and when this function is called depends on the underlying
1030 * windowing system.
1031 */
1032EAPI void ecore_evas_callback_resize_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1033/**
1034 * Set a callback for Ecore_Evas move events.
1035 * @param ee The Ecore_Evas to set callbacks on
1036 * @param func The function to call
1037
1038 * A call to this function will set a callback on an Ecore_Evas, causing
1039 * @p func to be called whenever @p ee is moved.
1040 *
1041 * @warning If and when this function is called depends on the underlying
1042 * windowing system.
1043 */
1044EAPI void ecore_evas_callback_move_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1045/**
1046 * Set a callback for Ecore_Evas show events.
1047 * @param ee The Ecore_Evas to set callbacks on
1048 * @param func The function to call
1049
1050 * A call to this function will set a callback on an Ecore_Evas, causing
1051 * @p func to be called whenever @p ee is shown.
1052 *
1053 * @warning If and when this function is called depends on the underlying
1054 * windowing system.
1055 */
1056EAPI void ecore_evas_callback_show_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1057/**
1058 * Set a callback for Ecore_Evas hide events.
1059 * @param ee The Ecore_Evas to set callbacks on
1060 * @param func The function to call
1061
1062 * A call to this function will set a callback on an Ecore_Evas, causing
1063 * @p func to be called whenever @p ee is hidden.
1064 *
1065 * @warning If and when this function is called depends on the underlying
1066 * windowing system.
1067 */
1068EAPI void ecore_evas_callback_hide_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1069/**
1070 * Set a callback for Ecore_Evas delete request events.
1071 * @param ee The Ecore_Evas to set callbacks on
1072 * @param func The function to call
1073
1074 * A call to this function will set a callback on an Ecore_Evas, causing
1075 * @p func to be called whenever @p ee gets a delete request.
1076 *
1077 * @warning If and when this function is called depends on the underlying
1078 * windowing system.
1079 */
1080EAPI void ecore_evas_callback_delete_request_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1081/**
1082 * Set a callback for Ecore_Evas destroy events.
1083 * @param ee The Ecore_Evas to set callbacks on
1084 * @param func The function to call
1085
1086 * A call to this function will set a callback on an Ecore_Evas, causing
1087 * @p func to be called whenever @p ee is destroyed.
1088 *
1089 * @warning If and when this function is called depends on the underlying
1090 * windowing system.
1091 */
1092EAPI void ecore_evas_callback_destroy_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1093/**
1094 * Set a callback for Ecore_Evas focus in events.
1095 * @param ee The Ecore_Evas to set callbacks on
1096 * @param func The function to call
1097
1098 * A call to this function will set a callback on an Ecore_Evas, causing
1099 * @p func to be called whenever @p ee gets focus.
1100 *
1101 * @warning If and when this function is called depends on the underlying
1102 * windowing system.
1103 */
1104EAPI void ecore_evas_callback_focus_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1105/**
1106 * Set a callback for Ecore_Evas focus out events.
1107 * @param ee The Ecore_Evas to set callbacks on
1108 * @param func The function to call
1109
1110 * A call to this function will set a callback on an Ecore_Evas, causing
1111 * @p func to be called whenever @p ee loses focus.
1112 *
1113 * @warning If and when this function is called depends on the underlying
1114 * windowing system.
1115 */
1116EAPI void ecore_evas_callback_focus_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1117/**
1118 * Set a callback for Ecore_Evas sticky events.
1119 * @param ee The Ecore_Evas to set callbacks on
1120 * @param func The function to call
1121
1122 * A call to this function will set a callback on an Ecore_Evas, causing
1123 * @p func to be called whenever @p ee becomes sticky.
1124 *
1125 * @warning If and when this function is called depends on the underlying
1126 * windowing system.
1127 */
1128EAPI void ecore_evas_callback_sticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1129/**
1130 * Set a callback for Ecore_Evas un-sticky events.
1131 * @param ee The Ecore_Evas to set callbacks on
1132 * @param func The function to call
1133
1134 * A call to this function will set a callback on an Ecore_Evas, causing
1135 * @p func to be called whenever @p ee becomes un-sticky.
1136 *
1137 * @warning If and when this function is called depends on the underlying
1138 * windowing system.
1139 */
1140EAPI void ecore_evas_callback_unsticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1141/**
1142 * Set a callback for Ecore_Evas mouse in events.
1143 * @param ee The Ecore_Evas to set callbacks on
1144 * @param func The function to call
1145
1146 * A call to this function will set a callback on an Ecore_Evas, causing
1147 * @p func to be called whenever the mouse enters @p ee.
1148 *
1149 * @warning If and when this function is called depends on the underlying
1150 * windowing system.
1151 */
1152EAPI void ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1153/**
1154 * Set a callback for Ecore_Evas mouse out events.
1155 * @param ee The Ecore_Evas to set callbacks on
1156 * @param func The function to call
1157
1158 * A call to this function will set a callback on an Ecore_Evas, causing
1159 * @p func to be called whenever the mouse leaves @p ee.
1160 *
1161 * @warning If and when this function is called depends on the underlying
1162 * windowing system.
1163 */
1164EAPI void ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1165/**
1166 * Set a callback for Ecore_Evas pre render events.
1167 * @param ee The Ecore_Evas to set callbacks on
1168 * @param func The function to call
1169
1170 * A call to this function will set a callback on an Ecore_Evas, causing
1171 * @p func to be called just before the evas in @p ee is rendered.
1172 *
1173 * @warning If and when this function is called depends on the underlying
1174 * windowing system.
1175 */
1176EAPI void ecore_evas_callback_pre_render_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1177/**
1178 * Set a callback for Ecore_Evas mouse post render events.
1179 * @param ee The Ecore_Evas to set callbacks on
1180 * @param func The function to call
1181
1182 * A call to this function will set a callback on an Ecore_Evas, causing
1183 * @p func to be called just after the evas in @p ee is rendered.
1184 *
1185 * @warning If and when this function is called depends on the underlying
1186 * windowing system.
1187 */
1188EAPI void ecore_evas_callback_post_render_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1189/**
1190 * Set a callback for Ecore_Evas pre-free event.
1191 * @param ee The Ecore_Evas to set callbacks on
1192 * @param func The function to call
1193 *
1194 * A call to this function will set a callback on an Ecore_Evas, causing
1195 * @p func to be called just before the instance @p ee is freed.
1196 *
1197 * @warning If and when this function is called depends on the underlying
1198 * windowing system.
1199 */
1200EAPI void ecore_evas_callback_pre_free_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
1201EAPI Evas *ecore_evas_get(const Ecore_Evas *ee);
1202EAPI void ecore_evas_managed_move(Ecore_Evas *ee, int x, int y);
1203EAPI void ecore_evas_shaped_set(Ecore_Evas *ee, Eina_Bool shaped);
1204EAPI Eina_Bool ecore_evas_shaped_get(const Ecore_Evas *ee);
1205/**
1206 * @brief Show an Ecore_Evas' window
1207 *
1208 * @param ee The Ecore_Evas to show.
1209 *
1210 * This function makes @p ee visible.
1211 */
1212EAPI void ecore_evas_show(Ecore_Evas *ee);
1213/**
1214 * @brief Hide an Ecore_Evas' window
1215 *
1216 * @param ee The Ecore_Evas to hide.
1217 *
1218 * This function makes @p ee hidden(not visible).
1219 */
1220EAPI void ecore_evas_hide(Ecore_Evas *ee);
1221EAPI void ecore_evas_activate(Ecore_Evas *ee);
1222
1223
1224/**
1225 * Set the minimum size of a given @c Ecore_Evas window
1226 *
1227 * @param ee An @c Ecore_Evas window's handle
1228 * @param w The minimum width
1229 * @param h The minimum height
1230 *
1231 * This function sets the minimum size of @p ee to be @p w x @p h.
1232 * One won't be able to resize that window to dimensions smaller than
1233 * the ones set.
1234 *
1235 * @note When base sizes are set, via ecore_evas_size_base_set(),
1236 * they'll be used to calculate a window's minimum size, instead of
1237 * those set by this function.
1238 *
1239 * @see ecore_evas_size_min_get()
1240 */
1241EAPI void ecore_evas_size_min_set(Ecore_Evas *ee, int w, int h);
1242
1243/**
1244 * Get the minimum size set for a given @c Ecore_Evas window
1245 *
1246 * @param ee An @c Ecore_Evas window's handle
1247 * @param w A pointer to an int to place the minimum width in.
1248 * @param h A pointer to an int to place the minimum height in.
1249 *
1250 * @note Use @c NULL pointers on the size components you're not
1251 * interested in: they'll be ignored by the function.
1252 *
1253 * @see ecore_evas_size_min_set() for more details
1254 */
1255EAPI void ecore_evas_size_min_get(const Ecore_Evas *ee, int *w, int *h);
1256
1257/**
1258 * Set the maximum size of a given @c Ecore_Evas window
1259 *
1260 * @param ee An @c Ecore_Evas window's handle
1261 * @param w The maximum width
1262 * @param h The maximum height
1263 *
1264 * This function sets the maximum size of @p ee to be @p w x @p h.
1265 * One won't be able to resize that window to dimensions bigger than
1266 * the ones set.
1267 *
1268 * @see ecore_evas_size_max_get()
1269 */
1270EAPI void ecore_evas_size_max_set(Ecore_Evas *ee, int w, int h);
1271
1272/**
1273 * Get the maximum size set for a given @c Ecore_Evas window
1274 *
1275 * @param ee An @c Ecore_Evas window's handle
1276 * @param w A pointer to an int to place the maximum width in.
1277 * @param h A pointer to an int to place the maximum height in.
1278 *
1279 * @note Use @c NULL pointers on the size components you're not
1280 * interested in: they'll be ignored by the function.
1281 *
1282 * @see ecore_evas_size_max_set() for more details
1283 */
1284EAPI void ecore_evas_size_max_get(const Ecore_Evas *ee, int *w, int *h);
1285
1286/**
1287 * Set the base size for a given @c Ecore_Evas window
1288 *
1289 * @param ee An @c Ecore_Evas window's handle
1290 * @param w The base width
1291 * @param h The base height
1292 *
1293 * This function sets the @b base size of @p ee to be @p w x @p h.
1294 * When base sizes are set, they'll be used to calculate a window's
1295 * @b minimum size, instead of those set by ecore_evas_size_min_get().
1296 *
1297 * @see ecore_evas_size_base_get()
1298 */
1299EAPI void ecore_evas_size_base_set(Ecore_Evas *ee, int w, int h);
1300
1301/**
1302 * Get the base size set for a given @c Ecore_Evas window
1303 *
1304 * @param ee An @c Ecore_Evas window's handle
1305 * @param w A pointer to an int to place the base width in.
1306 * @param h A pointer to an int to place the base height in.
1307 *
1308 * @note Use @c NULL pointers on the size components you're not
1309 * interested in: they'll be ignored by the function.
1310 *
1311 * @see ecore_evas_size_base_set() for more details
1312 */
1313EAPI void ecore_evas_size_base_get(const Ecore_Evas *ee, int *w, int *h);
1314
1315/**
1316 * Set the "size step" for a given @c Ecore_Evas window
1317 *
1318 * @param ee An @c Ecore_Evas window's handle
1319 * @param w The step width
1320 * @param h The step height
1321 *
1322 * This function sets the size steps of @p ee to be @p w x @p h. This
1323 * limits the size of this @cEcore_Evas window to be @b always an
1324 * integer multiple of the step size, for each axis.
1325 */
1326EAPI void ecore_evas_size_step_set(Ecore_Evas *ee, int w, int h);
1327
1328/**
1329 * Get the "size step" set for a given @c Ecore_Evas window
1330 *
1331 * @param ee An @c Ecore_Evas window's handle
1332 * @param w A pointer to an int to place the step width in.
1333 * @param h A pointer to an int to place the step height in.
1334 *
1335 * @note Use @c NULL pointers on the size components you're not
1336 * interested in: they'll be ignored by the function.
1337 *
1338 * @see ecore_evas_size_base_set() for more details
1339 */
1340EAPI void ecore_evas_size_step_get(const Ecore_Evas *ee, int *w, int *h);
1341
1342/**
1343 * @brief Set the cursor of an Ecore_Evas.
1344 *
1345 * @param ee The Ecore_Evas
1346 * @param file The path to an image file for the cursor.
1347 * @param layer The layer in which the cursor will appear.
1348 * @param hot_x The x coordinate of the cursor's hot spot.
1349 * @param hot_y The y coordinate of the cursor's hot spot.
1350 *
1351 * This function makes the mouse cursor over @p ee be the image specified by
1352 * @p file. The actual point within the image that the mouse is at is specified
1353 * by @p hot_x and @p hot_y, which are coordinates with respect to the top left
1354 * corner of the cursor image.
1355 *
1356 * @note This function creates an object from the image and uses
1357 * ecore_evas_object_cursor_set().
1358 *
1359 * @see ecore_evas_object_cursor_set()
1360 */
1361EAPI void ecore_evas_cursor_set(Ecore_Evas *ee, const char *file, int layer, int hot_x, int hot_y);
1362/**
1363 * @brief Get information about an Ecore_Evas' cursor
1364 *
1365 * @param ee The Ecore_Evas to set
1366 * @param obj A pointer to an Evas_Object to place the cursor Evas_Object.
1367 * @param layer A pointer to an int to place the cursor's layer in.
1368 * @param hot_x A pointer to an int to place the cursor's hot_x coordinate in.
1369 * @param hot_y A pointer to an int to place the cursor's hot_y coordinate in.
1370 *
1371 * This function queries information about an Ecore_Evas' cursor.
1372 *
1373 * @see ecore_evas_cursor_set()
1374 * @see ecore_evas_object_cursor_set()
1375 */
1376EAPI void ecore_evas_cursor_get(const Ecore_Evas *ee, Evas_Object **obj, int *layer, int *hot_x, int *hot_y);
1377/**
1378 * @brief Set the cursor of an Ecore_Evas
1379 *
1380 * @param ee The Ecore_Evas
1381 *
1382 * @param obj The Evas_Object which will be the cursor.
1383 * @param layer The layer in which the cursor will appear.
1384 * @param hot_x The x coordinate of the cursor's hot spot.
1385 * @param hot_y The y coordinate of the cursor's hot spot.
1386 *
1387 * This function makes the mouse cursor over @p ee be the object specified by
1388 * @p obj. The actual point within the object that the mouse is at is specified
1389 * by @p hot_x and @p hot_y, which are coordinates with respect to the top left
1390 * corner of the cursor object.
1391 *
1392 * @see ecore_evas_cursor_set()
1393 */
1394EAPI void ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
1395EAPI void ecore_evas_override_set(Ecore_Evas *ee, Eina_Bool on);
1396EAPI Eina_Bool ecore_evas_override_get(const Ecore_Evas *ee);
1397EAPI void ecore_evas_avoid_damage_set(Ecore_Evas *ee, Ecore_Evas_Avoid_Damage_Type on);
1398EAPI Ecore_Evas_Avoid_Damage_Type ecore_evas_avoid_damage_get(const Ecore_Evas *ee);
1399EAPI void ecore_evas_withdrawn_set(Ecore_Evas *ee, Eina_Bool withdrawn);
1400EAPI Eina_Bool ecore_evas_withdrawn_get(const Ecore_Evas *ee);
1401EAPI void ecore_evas_sticky_set(Ecore_Evas *ee, Eina_Bool sticky);
1402EAPI Eina_Bool ecore_evas_sticky_get(const Ecore_Evas *ee);
1403EAPI void ecore_evas_manual_render_set(Ecore_Evas *ee, Eina_Bool manual_render);
1404EAPI Eina_Bool ecore_evas_manual_render_get(const Ecore_Evas *ee);
1405
1406/**
1407 * @brief Registers an @c Ecore_Evas to receive events through ecore_input_evas.
1408 *
1409 * @param ee The @c Ecore_Evas handle.
1410 *
1411 * This function calls ecore_event_window_register() with the @p ee as its @c
1412 * id argument, @c window argument, and uses its @c Evas too. It is useful when
1413 * no @c window information is available on a given @c Ecore_Evas backend.
1414 *
1415 * @see ecore_evas_input_event_unregister()
1416 * @since 1.1
1417 */
1418EAPI void ecore_evas_input_event_register(Ecore_Evas *ee);
1419/**
1420 * @brief Unregisters an @c Ecore_Evas receiving events through ecore_input_evas.
1421 *
1422 * @param ee The @c Ecore_Evas handle.
1423 *
1424 * @see ecore_evas_input_event_register()
1425 * @since 1.1
1426 */
1427EAPI void ecore_evas_input_event_unregister(Ecore_Evas *ee);
1428
1429/**
1430 * @brief Force immediate rendering on a given @c Ecore_Evas window
1431 *
1432 * @param ee An @c Ecore_Evas handle
1433 *
1434 * Use this call to forcefully flush the @p ee's canvas rendering
1435 * pipeline, thus bring its window to an up to date state.
1436 */
1437EAPI void ecore_evas_manual_render(Ecore_Evas *ee);
1438EAPI void ecore_evas_comp_sync_set(Ecore_Evas *ee, Eina_Bool do_sync);
1439EAPI Eina_Bool ecore_evas_comp_sync_get(const Ecore_Evas *ee);
1440/**
1441 * @brief Get geometry of screen associated with this Ecore_Evas.
1442 *
1443 * @param ee The Ecore_Evas whose window's to query container screen geometry.
1444 * @param x where to return the horizontal offset value. May be NULL.
1445 * @param y where to return the vertical offset value. May be NULL.
1446 * @param w where to return the width value. May be NULL.
1447 * @param h where to return the height value. May be NULL.
1448 *
1449 * @since 1.1
1450 */
1451EAPI void ecore_evas_screen_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
1452
1453/**
1454 * @brief Associate the given object to this ecore evas.
1455 *
1456 * @param ee The Ecore_Evas to associate to @a obj
1457 * @param obj The object to associate to @a ee
1458 * @param flags The association flags.
1459 * @return EINA_TRUE on success, EINA_FALSE otherwise.
1460 *
1461 * Association means that operations on one will affect the other, for
1462 * example moving the object will move the window, resize the object will
1463 * also affect the ecore evas window, hide and show applies as well.
1464 *
1465 * This is meant to simplify development, since you often need to associate
1466 * these events with your "base" objects, background or bottom-most object.
1467 *
1468 * Be aware that some methods might not be what you would like, deleting
1469 * either the window or the object will delete the other. If you want to
1470 * change that behavior, let's say to hide window when it's closed, you
1471 * must use ecore_evas_callback_delete_request_set() and set your own code,
1472 * like ecore_evas_hide(). Just remember that if you override delete_request
1473 * and still want to delete the window/object, you must do that yourself.
1474 *
1475 * Since we now define delete_request, deleting windows will not quit
1476 * main loop, if you wish to do so, you should listen for EVAS_CALLBACK_FREE
1477 * on the object, that way you get notified and you can call
1478 * ecore_main_loop_quit().
1479 *
1480 * Flags can be OR'ed of:
1481 * @li ECORE_EVAS_OBJECT_ASSOCIATE_BASE (or 0): to listen to basic events
1482 * like delete, resize and move, but no stacking or layer are used.
1483 * @li ECORE_EVAS_OBJECT_ASSOCIATE_STACK: stacking operations will act
1484 * on the Ecore_Evas, not the object. So evas_object_raise() will
1485 * call ecore_evas_raise(). Relative operations (stack_above, stack_below)
1486 * are still not implemented.
1487 * @li ECORE_EVAS_OBJECT_ASSOCIATE_LAYER: stacking operations will act
1488 * on the Ecore_Evas, not the object. So evas_object_layer_set() will
1489 * call ecore_evas_layer_set().
1490 * @li ECORE_EVAS_OBJECT_ASSOCIATE_DEL: the object delete will delete the
1491 * ecore_evas as well as delete_requests on the ecore_evas will delete
1492 * etc.
1493 */
1494EAPI Eina_Bool ecore_evas_object_associate(Ecore_Evas *ee, Evas_Object *obj, Ecore_Evas_Object_Associate_Flags flags);
1495/**
1496 * @brief Cancel the association set with ecore_evas_object_associate().
1497 *
1498 * @param ee The Ecore_Evas to dissociate from @a obj
1499 * @param obj The object to dissociate from @a ee
1500 * @return EINA_TRUE on success, EINA_FALSE otherwise.
1501 */
1502EAPI Eina_Bool ecore_evas_object_dissociate(Ecore_Evas *ee, Evas_Object *obj);
1503/**
1504 * @brief Get the object associated with @p ee
1505 *
1506 * @param ee The Ecore_Evas to get the object from.
1507 * @return The associated object, or NULL if there is no associated object.
1508 */
1509EAPI Evas_Object *ecore_evas_object_associate_get(const Ecore_Evas *ee);
1510
1511/* helper function to be used with ECORE_GETOPT_CALLBACK_*() */
1512EAPI unsigned char ecore_getopt_callback_ecore_evas_list_engines(const Ecore_Getopt *parser, const Ecore_Getopt_Desc *desc, const char *str, void *data, Ecore_Getopt_Value *storage);
1513
1514/**
1515 * @brief Get a list of all the ecore_evases.
1516 *
1517 * @return A list of ecore_evases.
1518 *
1519 * The returned list of ecore evases is only valid until the canvases are
1520 * destroyed (and should not be cached for instance). The list can be freed by
1521 * just deleting the list.
1522 */
1523EAPI Eina_List *ecore_evas_ecore_evas_list_get(void);
1524
1525/* specific calls to an x11 environment ecore_evas */
1526EAPI void ecore_evas_x11_leader_set(Ecore_Evas *ee, Ecore_X_Window win);
1527EAPI Ecore_X_Window ecore_evas_x11_leader_get(Ecore_Evas *ee);
1528EAPI void ecore_evas_x11_leader_default_set(Ecore_Evas *ee);
1529EAPI void ecore_evas_x11_shape_input_rectangle_set(Ecore_Evas *ee, int x, int y, int w, int h);
1530EAPI void ecore_evas_x11_shape_input_rectangle_add(Ecore_Evas *ee, int x, int y, int w, int h);
1531EAPI void ecore_evas_x11_shape_input_rectangle_subtract(Ecore_Evas *ee, int x, int y, int w, int h);
1532EAPI void ecore_evas_x11_shape_input_empty(Ecore_Evas *ee);
1533EAPI void ecore_evas_x11_shape_input_reset(Ecore_Evas *ee);
1534EAPI void ecore_evas_x11_shape_input_apply(Ecore_Evas *ee);
1535
1536/**
1537 * @defgroup Ecore_Evas_Ews Ecore_Evas Single Process Windowing System.
1538 *
1539 * These are global scope functions to manage the EWS to be used by
1540 * ecore_evas_ews_new().
1541 *
1542 * @since 1.1
1543 * @{
1544 */
1545
1546/**
1547 * Sets the engine to be used by the backing store engine.
1548 *
1549 * @return EINA_TRUE on success, EINA_FALSE if ews is already in use.
1550 * @since 1.1
1551 */
1552EAPI Eina_Bool ecore_evas_ews_engine_set(const char *engine, const char *options);
1553
1554/**
1555 * Reconfigure the backing store used.
1556 * @since 1.1
1557 */
1558EAPI Eina_Bool ecore_evas_ews_setup(int x, int y, int w, int h);
1559
1560/**
1561 * Return the internal backing store in use.
1562 *
1563 * @note this will foced it to be created, making future calls to
1564 * ecore_evas_ews_engine_set() void.
1565 *
1566 * @see ecore_evas_ews_evas_get()
1567 * @since 1.1
1568 */
1569EAPI Ecore_Evas *ecore_evas_ews_ecore_evas_get(void);
1570
1571/**
1572 * Return the internal backing store in use.
1573 *
1574 * @note this will foced it to be created, making future calls to
1575 * ecore_evas_ews_engine_set() void.
1576 *
1577 * @see ecore_evas_ews_ecore_evas_get()
1578 * @since 1.1
1579 */
1580EAPI Evas *ecore_evas_ews_evas_get(void);
1581
1582/**
1583 * Get the current background.
1584 */
1585EAPI Evas_Object *ecore_evas_ews_background_get(void);
1586
1587/**
1588 * Set the current background, must be created at evas ecore_evas_ews_evas_get()
1589 *
1590 * It will be kept at lowest layer (EVAS_LAYER_MIN) and below
1591 * everything else. You can set any object, default is a black
1592 * rectangle.
1593 *
1594 * @note previous object will be deleted!
1595 */
1596EAPI void ecore_evas_ews_background_set(Evas_Object *o);
1597
1598/**
1599 * Return all Ecore_Evas* created by EWS.
1600 *
1601 * @note do not change the returned list or its contents.
1602 * @since 1.1
1603 */
1604EAPI const Eina_List *ecore_evas_ews_children_get(void);
1605
1606/**
1607 * Set the identifier of the manager taking care of internal windows.
1608 *
1609 * The ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE event is issued. Consider
1610 * handling it to know if you should stop handling events yourself
1611 * (ie: another manager took over)
1612 *
1613 * @param manager any unique identifier address.
1614 *
1615 * @see ecore_evas_ews_manager_get()
1616 * @since 1.1
1617 */
1618EAPI void ecore_evas_ews_manager_set(const void *manager);
1619
1620/**
1621 * Get the identifier of the manager taking care of internal windows.
1622 *
1623 * @return the value set by ecore_evas_ews_manager_set()
1624 * @since 1.1
1625 */
1626EAPI const void *ecore_evas_ews_manager_get(void);
1627
1628EAPI extern int ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE; /**< manager was changed */
1629EAPI extern int ECORE_EVAS_EWS_EVENT_ADD; /**< window was created */
1630EAPI extern int ECORE_EVAS_EWS_EVENT_DEL; /**< window was deleted, pointer is already invalid but may be used as reference for further cleanup work. */
1631EAPI extern int ECORE_EVAS_EWS_EVENT_RESIZE; /**< window was resized */
1632EAPI extern int ECORE_EVAS_EWS_EVENT_MOVE; /**< window was moved */
1633EAPI extern int ECORE_EVAS_EWS_EVENT_SHOW; /**< window become visible */
1634EAPI extern int ECORE_EVAS_EWS_EVENT_HIDE; /**< window become hidden */
1635EAPI extern int ECORE_EVAS_EWS_EVENT_FOCUS; /**< window was focused */
1636EAPI extern int ECORE_EVAS_EWS_EVENT_UNFOCUS; /**< window lost focus */
1637EAPI extern int ECORE_EVAS_EWS_EVENT_RAISE; /**< window was raised */
1638EAPI extern int ECORE_EVAS_EWS_EVENT_LOWER; /**< window was lowered */
1639EAPI extern int ECORE_EVAS_EWS_EVENT_ACTIVATE; /**< window was activated */
1640
1641EAPI extern int ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE; /**< window minimized/iconified changed */
1642EAPI extern int ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE; /**< window maximized changed */
1643EAPI extern int ECORE_EVAS_EWS_EVENT_LAYER_CHANGE; /**< window layer changed */
1644EAPI extern int ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE; /**< window fullscreen changed */
1645EAPI extern int ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE; /**< some other window property changed (title, name, class, alpha, transparent, shaped...) */
1646
1647/**
1648 * @}
1649 */
1650
1651
1652/**
1653 * @}
1654 */
1655
1656#ifdef __cplusplus
1657}
1658#endif
1659
1660#endif