5 #include <Ecore_Getopt.h>
6 #include <Ecore_Input.h>
13 # ifdef EFL_ECORE_EVAS_BUILD
15 # define EAPI __declspec(dllexport)
18 # endif /* ! DLL_EXPORT */
20 # define EAPI __declspec(dllimport)
21 # endif /* ! EFL_ECORE_EVAS_BUILD */
25 # define EAPI __attribute__ ((visibility("default")))
36 * @brief Evas wrapper functions
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 * @li @ref Ecore_Evas_Window_Sizes_Example_c
43 * @li @ref Ecore_Evas_Buffer_Example_01_c
44 * @li @ref Ecore_Evas_Buffer_Example_02_c
49 * - iconfication api needs to work
50 * - maximization api needs to work
51 * - document all calls
54 * - buffer back-end that renders to an evas_image_object ???
56 * - dfb back-end ??? (dfb's threads make this REALLY HARD)
64 * @defgroup Ecore_Evas_Group Ecore_Evas wrapper/helper set of functions
66 * Ecore evas is a set of functions that makes it easy to tie together ecore's
67 * main loop and input handling to evas. As such it's a natural base for EFL
68 * applications. While this combination makes it easy to create the basic
69 * aspects all applications need, for normal applications(ones with buttons,
70 * checkboxes and layouts) one should consider using Elementary.
72 * Ecore evas is extremely well suited for applications that are not based on
73 * widgets. It has a main loop that delivers events, does basic window handling
74 * and leaves all of the drawing up to the user. This works very well if used
75 * in conjunction with Edje or if doing custom drawing as, for example, is done
78 * This is a list of examples of these functions:
79 * @li @ref ecore_evas_basics_example_c
80 * @li @ref ecore_evas_object_example_c
81 * @li @ref ecore_evas_callbacks_example_c
82 * @li @ref Ecore_Evas_Window_Sizes_Example_c
83 * @li @ref Ecore_Evas_Buffer_Example_01_c
84 * @li @ref Ecore_Evas_Buffer_Example_02_c
89 /* these are dummy and just tell u what API levels ecore_evas supports - not if
90 * the actual support is compiled in. you need to query for that separately.
92 #define HAVE_ECORE_EVAS_X 1
93 #define HAVE_ECORE_EVAS_FB 1
94 #define HAVE_ECORE_EVAS_X11_GL 1
95 #define HAVE_ECORE_EVAS_X11_16 1
96 #define HAVE_ECORE_EVAS_DIRECTFB 1
97 #define HAVE_ECORE_EVAS_WIN32 1
98 #define HAVE_ECORE_EVAS_COCOA 1
99 #define HAVE_ECORE_EVAS_SDL 1
100 #define HAVE_ECORE_EVAS_WINCE 1
101 #define HAVE_ECORE_EVAS_EWS 1
102 #define HAVE_ECORE_EVAS_PSL1GHT 1
103 #define HAVE_ECORE_EVAS_WAYLAND_SHM 1
104 #define HAVE_ECORE_EVAS_WAYLAND_EGL 1
106 typedef enum _Ecore_Evas_Engine_Type
108 ECORE_EVAS_ENGINE_SOFTWARE_BUFFER,
109 ECORE_EVAS_ENGINE_SOFTWARE_XLIB,
110 ECORE_EVAS_ENGINE_XRENDER_X11,
111 ECORE_EVAS_ENGINE_OPENGL_X11,
112 ECORE_EVAS_ENGINE_SOFTWARE_XCB,
113 ECORE_EVAS_ENGINE_XRENDER_XCB,
114 ECORE_EVAS_ENGINE_SOFTWARE_GDI,
115 ECORE_EVAS_ENGINE_SOFTWARE_DDRAW,
116 ECORE_EVAS_ENGINE_DIRECT3D,
117 ECORE_EVAS_ENGINE_OPENGL_GLEW,
118 ECORE_EVAS_ENGINE_OPENGL_COCOA,
119 ECORE_EVAS_ENGINE_SOFTWARE_SDL,
120 ECORE_EVAS_ENGINE_DIRECTFB,
121 ECORE_EVAS_ENGINE_SOFTWARE_FB,
122 ECORE_EVAS_ENGINE_SOFTWARE_8_X11,
123 ECORE_EVAS_ENGINE_SOFTWARE_16_X11,
124 ECORE_EVAS_ENGINE_SOFTWARE_16_DDRAW,
125 ECORE_EVAS_ENGINE_SOFTWARE_16_WINCE,
126 ECORE_EVAS_ENGINE_OPENGL_SDL,
127 ECORE_EVAS_ENGINE_EWS,
128 ECORE_EVAS_ENGINE_PSL1GHT,
129 ECORE_EVAS_ENGINE_WAYLAND_SHM,
130 ECORE_EVAS_ENGINE_WAYLAND_EGL
131 } Ecore_Evas_Engine_Type;
133 typedef enum _Ecore_Evas_Avoid_Damage_Type
135 ECORE_EVAS_AVOID_DAMAGE_NONE = 0,
136 ECORE_EVAS_AVOID_DAMAGE_EXPOSE = 1,
137 ECORE_EVAS_AVOID_DAMAGE_BUILT_IN = 2
138 } Ecore_Evas_Avoid_Damage_Type;
140 typedef enum _Ecore_Evas_Object_Associate_Flags
142 ECORE_EVAS_OBJECT_ASSOCIATE_BASE = 0,
143 ECORE_EVAS_OBJECT_ASSOCIATE_STACK = 1 << 0,
144 ECORE_EVAS_OBJECT_ASSOCIATE_LAYER = 1 << 1,
145 ECORE_EVAS_OBJECT_ASSOCIATE_DEL = 1 << 2
146 } Ecore_Evas_Object_Associate_Flags;
149 #define _ECORE_X_WINDOW_PREDEF
150 typedef unsigned int Ecore_X_Window;
153 #ifndef _ECORE_DIRECTFB_H
154 #define _ECORE_DIRECTFB_WINDOW_PREDEF
155 typedef struct _Ecore_DirectFB_Window Ecore_DirectFB_Window;
158 #ifndef __ECORE_WIN32_H__
159 typedef struct _Ecore_Win32_Window Ecore_Win32_Window;
162 #ifndef __ECORE_WINCE_H__
163 typedef struct _Ecore_WinCE_Window Ecore_WinCE_Window;
166 #ifndef __ECORE_COCOA_H__
167 typedef struct _Ecore_Cocoa_Window Ecore_Cocoa_Window;
170 #ifndef _ECORE_EVAS_PRIVATE_H
171 /* basic data types */
172 typedef struct _Ecore_Evas Ecore_Evas;
173 typedef void (*Ecore_Evas_Event_Cb) (Ecore_Evas *ee); /**< Callback used for several ecore evas events @since 1.2 */
176 #ifndef _ECORE_WAYLAND_H_
177 #define _ECORE_WAYLAND_WINDOW_PREDEF
178 typedef struct _Ecore_Wl_Window Ecore_Wl_Window;
181 /* module setup/shutdown calls */
183 EAPI int ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine);
186 * @brief Init the Ecore_Evas system.
188 * @return How many times the lib has been initialized, 0 indicates failure.
190 * Set up the Evas wrapper system. Init Evas and Ecore libraries.
192 * @see ecore_evas_shutdown()
194 EAPI int ecore_evas_init(void);
196 * @brief Shut down the Ecore_Evas system.
198 * @return 0 if ecore evas is fully shut down, or > 0 if it still being used.
200 * This closes the Evas wrapper system down. Shut down Evas and Ecore libraries.
202 * @see ecore_evas_init()
204 EAPI int ecore_evas_shutdown(void);
206 EAPI void ecore_evas_app_comp_sync_set(Eina_Bool do_sync);
207 EAPI Eina_Bool ecore_evas_app_comp_sync_get(void);
210 * @brief Returns a list of supported engines names.
212 * @return Newly allocated list with engines names. Engines names
213 * strings are internal and should be considered constants, do not
214 * free or modify them, to free the list use ecore_evas_engines_free().
216 EAPI Eina_List *ecore_evas_engines_get(void);
218 * @brief Free list returned by ecore_evas_engines_get()
220 * @param engines list with engines names
222 EAPI void ecore_evas_engines_free(Eina_List *engines);
224 * @brief Creates a new Ecore_Evas based on engine name and common parameters.
226 * @param engine_name engine name as returned by
227 * ecore_evas_engines_get() or @c NULL to use environment variable
228 * ECORE_EVAS_ENGINE, that can be undefined and in this case
229 * this call will try to find the first working engine.
230 * @param x horizontal position of window (not supported in all engines)
231 * @param y vertical position of window (not supported in all engines)
232 * @param w width of window
233 * @param h height of window
234 * @param extra_options string with extra parameter, dependent on engines
235 * or @ NULL. String is usually in the form: 'key1=value1;key2=value2'.
236 * Pay attention that when getting that from shell commands, most
237 * consider ';' as the command terminator, so you need to escape
240 * @return Ecore_Evas instance or @c NULL if creation failed.
242 EAPI Ecore_Evas *ecore_evas_new(const char *engine_name, int x, int y, int w, int h, const char *extra_options);
244 * @brief Set whether an Ecore_Evas has an alpha channel or not.
246 * @param ee The Ecore_Evas to shape
247 * @param alpha @c EINA_TRUE to enable the alpha channel, @c EINA_FALSE to
250 * This function allows you to make an Ecore_Evas translucent using an
251 * alpha channel. See ecore_evas_shaped_set() for details. The difference
252 * between a shaped window and a window with an alpha channel is that an
253 * alpha channel supports multiple levels of transparency, as opposed to
254 * the 1 bit transparency of a shaped window (a pixel is either opaque, or
257 * @warning Support for this depends on the underlying windowing system.
259 EAPI void ecore_evas_alpha_set(Ecore_Evas *ee, Eina_Bool alpha);
261 * @brief Query whether an Ecore_Evas has an alpha channel.
262 * @param ee The Ecore_Evas to query.
263 * @return @c EINA_TRUE if ee has an alpha channel, @c EINA_FALSE if it does
266 * This function returns @c EINA_TRUE if @p ee has an alpha channel, and
267 * @c EINA_FALSE if it does not.
269 * @see ecore_evas_alpha_set()
271 EAPI Eina_Bool ecore_evas_alpha_get(const Ecore_Evas *ee);
273 * @brief Set whether an Ecore_Evas has an transparent window or not.
275 * @param ee The Ecore_Evas to shape
276 * @param transparent @c EINA_TRUE to enable the transparent window,
277 * @c EINA_FALSE to disable it
279 * This function sets some translucency options, for more complete support see
280 * ecore_evas_alpha_set().
282 * @warning Support for this depends on the underlying windowing system.
284 * @see ecore_evas_alpha_set()
286 EAPI void ecore_evas_transparent_set(Ecore_Evas *ee, Eina_Bool transparent);
288 * @brief Query whether an Ecore_Evas is transparent.
290 * @param ee The Ecore_Evas to query.
291 * @return @c EINA_TRUE if ee is transparent, @c EINA_FALSE if it isn't.
293 * @see ecore_evas_transparent_set()
295 EAPI Eina_Bool ecore_evas_transparent_get(const Ecore_Evas *ee);
297 * @brief Get the geometry of an Ecore_Evas.
299 * @param ee The Ecore_Evas whose geometry y
300 * @param x A pointer to an int to place the x coordinate in
301 * @param y A pointer to an int to place the y coordinate in
302 * @param w A pointer to an int to place the w size in
303 * @param h A pointer to an int to place the h size in
305 * This function takes four pointers to (already allocated) ints, and places
306 * the geometry of @p ee in them. If any of the parameters is not desired you
307 * may pass @c NULL on them.
311 * ecore_evas_geometry_get(ee, &x, &y, &w, &h);
314 * @see ecore_evas_new()
315 * @see ecore_evas_resize()
316 * @see ecore_evas_move()
317 * @see ecore_evas_move_resize()
319 EAPI void ecore_evas_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
321 * @brief Get the geometry which an Ecore_Evas was latest recently requested.
323 * @param ee The Ecore_Evas whose geometry y
324 * @param x A pointer to an int to place the x coordinate in
325 * @param y A pointer to an int to place the y coordinate in
326 * @param w A pointer to an int to place the w size in
327 * @param h A pointer to an int to place the h size in
329 * This function takes four pointers to (already allocated) ints, and places
330 * the geometry which @p ee was latest recently requested . If any of the
331 * parameters is not desired you may pass @c NULL on them.
332 * This function can represent recently requested geometry.
333 * ecore_evas_geometry_get function returns the value is updated after engine
334 * finished request. By comparison, ecore_evas_request_geometry_get returns
335 * recently requested value.
339 * ecore_evas_request_geometry_get(ee, &x, &y, &w, &h);
344 EAPI void ecore_evas_request_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
346 * @brief Set the focus of an Ecore_Evas' window.
348 * @param ee The Ecore_Evas
349 * @param on @c EINA_TRUE for focus, @c EINA_FALSE to defocus.
351 * This function focuses @p ee if @p on is @c EINA_TRUE, or unfocuses @p ee if
352 * @p on is @c EINA_FALSE.
354 * @warning Support for this depends on the underlying windowing system.
356 EAPI void ecore_evas_focus_set(Ecore_Evas *ee, Eina_Bool on);
358 * @brief Query whether an Ecore_Evas' window is focused or not.
360 * @param ee The Ecore_Evas to set
361 * @return @c EINA_TRUE if @p ee if focused, @c EINA_FALSE if not.
363 * @see ecore_evas_focus_set()
365 EAPI Eina_Bool ecore_evas_focus_get(const Ecore_Evas *ee);
367 * @brief Iconify or uniconify an Ecore_Evas' window.
369 * @param ee The Ecore_Evas
370 * @param on @c EINA_TRUE to iconify, @c EINA_FALSE to uniconify.
372 * This function iconifies @p ee if @p on is @c EINA_TRUE, or uniconifies @p ee
373 * if @p on is @c EINA_FALSE.
375 * @note Iconify and minimize are synonyms.
377 * @warning Support for this depends on the underlying windowing system.
379 EAPI void ecore_evas_iconified_set(Ecore_Evas *ee, Eina_Bool on);
381 * @brief Query whether an Ecore_Evas' window is iconified or not.
383 * @param ee The Ecore_Evas to set
384 * @return @c EINA_TRUE if @p ee is iconified, @c EINA_FALSE if not.
386 * @note Iconify and minimize are synonyms.
388 * @see ecore_evas_iconified_set()
390 EAPI Eina_Bool ecore_evas_iconified_get(const Ecore_Evas *ee);
392 * @brief Set whether an Ecore_Evas' window is borderless or not.
394 * @param ee The Ecore_Evas
395 * @param on @c EINA_TRUE for borderless, @c EINA_FALSE for bordered.
397 * This function makes @p ee borderless if @p on is @c EINA_TRUE, or bordered
398 * if @p on is @c EINA_FALSE.
400 * @warning Support for this depends on the underlying windowing system.
402 EAPI void ecore_evas_borderless_set(Ecore_Evas *ee, Eina_Bool on);
404 * @brief Query whether an Ecore_Evas' window is borderless or not.
406 * @param ee The Ecore_Evas to set
407 * @return @c EINA_TRUE if @p ee is borderless, @c EINA_FALSE if not.
409 * @see ecore_evas_borderless_set()
411 EAPI Eina_Bool ecore_evas_borderless_get(const Ecore_Evas *ee);
413 * @brief Set whether or not an Ecore_Evas' window is fullscreen.
415 * @param ee The Ecore_Evas
416 * @param on @c EINA_TRUE fullscreen, @c EINA_FALSE not.
418 * This function causes @p ee to be fullscreen if @p on is @c EINA_TRUE, or
419 * not if @p on is @c EINA_FALSE.
421 * @warning Support for this depends on the underlying windowing system.
423 EAPI void ecore_evas_fullscreen_set(Ecore_Evas *ee, Eina_Bool on);
425 * @brief Query whether an Ecore_Evas' window is fullscreen or not.
427 * @param ee The Ecore_Evas to set
428 * @return @c EINA_TRUE if @p ee is fullscreen, @c EINA_FALSE if not.
430 * @see ecore_evas_fullscreen_set()
432 EAPI Eina_Bool ecore_evas_fullscreen_get(const Ecore_Evas *ee);
434 * @brief Set another window that this window is a group member of
436 * @param ee The Ecore_Evas
437 * @param ee_group The other group member
439 * If @p ee_group is @c NULL, @p ee is removed from the group, otherwise it is
440 * added. Note that if you free the @p ee_group canvas before @p ee, then
441 * getting the group canvas with ecore_evas_window_group_get() will return
444 * @warning Support for this depends on the underlying windowing system.
447 EAPI void ecore_evas_window_group_set(Ecore_Evas *ee, const Ecore_Evas *ee_group);
449 * @brief Get the canvas group set.
451 * This returns the handle set by ecore_evas_window_group_set().
453 * @param ee The Ecore_Evas to set
454 * @return The Canvas group handle
456 * @see ecore_evas_window_group_set()
459 EAPI const Ecore_Evas *ecore_evas_window_group_get(const Ecore_Evas *ee);
461 * @brief Set the aspect ratio of a canvas window
463 * @param ee The Ecore_Evas
464 * @param aspect The aspect ratio (width divided by height), or 0 to disable
466 * This sets the desired aspect ratio of a canvas window
468 * @warning Support for this depends on the underlying windowing system.
471 EAPI void ecore_evas_aspect_set(Ecore_Evas *ee, double aspect);
473 * @brief Get the aspect ratio of a canvas window
475 * This returns the value set by ecore_evas_aspect_set().
477 * @param ee The Ecore_Evas to set
478 * @return The aspect ratio
480 * @see ecore_evas_aspect_set()
483 EAPI double ecore_evas_aspect_get(const Ecore_Evas *ee);
485 * @brief Set The urgent hint flag
487 * @param ee The Ecore_Evas
488 * @param urgent The urgent state flag
490 * This sets the "urgent" state hint on a window so the desktop environment
491 * can highlight it somehow.
493 * @warning Support for this depends on the underlying windowing system.
496 EAPI void ecore_evas_urgent_set(Ecore_Evas *ee, Eina_Bool urgent);
498 * @brief Get the urgent state on the cavas window
500 * This returns the value set by ecore_evas_urgent_set()
502 * @param ee The Ecore_Evas to set
503 * @return The urgent state set
505 * @see ecore_evas_urgent_set()
508 EAPI Eina_Bool ecore_evas_urgent_get(const Ecore_Evas *ee);
510 * @brief Set the modal state flag on the canvas window
512 * @param ee The Ecore_Evas
513 * @param modal The modal hint flag
515 * This hints if the window should be modal (eg if it is also transient
516 * for another window, the other window will maybe be denied focus by
517 * the desktop window manager).
519 * @warning Support for this depends on the underlying windowing system.
522 EAPI void ecore_evas_modal_set(Ecore_Evas *ee, Eina_Bool modal);
524 * @brief Get The modal flag
526 * This returns the value set by ecore_evas_modal_set().
528 * @param ee The Ecore_Evas to set
529 * @return The modal flag
531 * @see ecore_evas_modal_set()
534 EAPI Eina_Bool ecore_evas_modal_get(const Ecore_Evas *ee);
536 * @brief Set the "i demand attention" flag on a canvas window
538 * @param ee The Ecore_Evas
539 * @param demand The flag state to set
541 * A window may demand attention now (eg you must enter a password before
542 * continuing), and so it may flag a window with this.
544 * @warning Support for this depends on the underlying windowing system.
547 EAPI void ecore_evas_demand_attention_set(Ecore_Evas *ee, Eina_Bool demand);
549 * @brief Get the "i demand attention" flag
551 * This returns the value set by ecore_evas_demand_attention_set().
553 * @param ee The Ecore_Evas to set
554 * @return The "i demand attention" flag.
556 * @see ecore_evas_demand_attention_set()
559 EAPI Eina_Bool ecore_evas_demand_attention_get(const Ecore_Evas *ee);
561 * @brief Set the "focus skip" flag
563 * @param ee The Ecore_Evas
564 * @param skip The "focus skip" state to set.
566 * A window may not want to accept focus, be in the taskbar, pager etc.
567 * sometimes (example for a small notification window that hovers around
568 * a taskbar or panel, or hovers around a window until some activity
571 * @warning Support for this depends on the underlying windowing system.
574 EAPI void ecore_evas_focus_skip_set(Ecore_Evas *ee, Eina_Bool skip);
576 * @brief Get the "focus skip" flag
578 * This returns the value set by ecore_evas_focus_skip_set().
580 * @param ee The Ecore_Evas to set
581 * @return The "focus skip" flag.
583 * @see ecore_evas_focus_skip_set()
586 EAPI Eina_Bool ecore_evas_focus_skip_get(const Ecore_Evas *ee);
589 * @brief Set if this evas should ignore @b all events.
591 * @param ee The Ecore_Evas whose window's to ignore events.
592 * @param ignore The Ecore_Evas new ignore state.
594 * @warning Support for this depends on the underlying windowing system.
596 EAPI void ecore_evas_ignore_events_set(Ecore_Evas *ee, Eina_Bool ignore);
598 * @brief Returns the ignore state of an Ecore_Evas' window.
600 * @param ee The Ecore_Evas whose window's ignore events state is returned.
601 * @return The Ecore_Evas window's ignore state.
603 * @see ecore_evas_ignore_events_set()
605 EAPI Eina_Bool ecore_evas_ignore_events_get(const Ecore_Evas *ee);
607 * @brief Query whether an Ecore_Evas' window is visible or not.
609 * @param ee The Ecore_Evas to query.
610 * @return 1 if visible, 0 if not.
612 * This function queries @p ee and returns 1 if it is visible, and 0 if not.
614 * @see ecore_evas_show()
615 * @see ecore_evas_hide()
617 EAPI int ecore_evas_visibility_get(const Ecore_Evas *ee);
619 * @brief Set the layer of an Ecore_Evas' window.
621 * @param ee The Ecore_Evas
622 * @param layer The layer to put @p ee on.
624 * This function moves @p ee to the layer @p layer.
626 * @warning Support for this depends on the underlying windowing system.
628 * @see ecore_evas_lower()
629 * @see ecore_evas_raise()
631 EAPI void ecore_evas_layer_set(Ecore_Evas *ee, int layer);
633 * @brief Get the layer of an Ecore_Evas' window.
635 * @param ee The Ecore_Evas to set
636 * @return the layer @p ee's window is on.
638 * @see ecore_evas_layer_set()
639 * @see ecore_evas_lower()
640 * @see ecore_evas_raise()
642 EAPI int ecore_evas_layer_get(const Ecore_Evas *ee);
644 * @brief Maximize (or unmaximize) an Ecore_Evas' window.
646 * @param ee The Ecore_Evas
647 * @param on @c EINA_TRUE to maximize, @c EINA_FALSE to unmaximize.
649 * This function maximizes @p ee if @p on is @c EINA_TRUE, or unmaximizes @p ee
650 * if @p on is @c EINA_FALSE.
652 * @warning Support for this depends on the underlying windowing system.
654 EAPI void ecore_evas_maximized_set(Ecore_Evas *ee, Eina_Bool on);
656 * @brief Query whether an Ecore_Evas' window is maximized or not.
658 * @param ee The Ecore_Evas to set
659 * @return @c EINA_TRUE if @p ee is maximized, @c EINA_FALSE if not.
661 * @see ecore_evas_maximized_set()
663 EAPI Eina_Bool ecore_evas_maximized_get(const Ecore_Evas *ee);
665 * @brief Set Ecore_Evas's window profile list.
667 * @param ee The Ecore_Evas
668 * @param profiles The profile name list
669 * @param num_profiles The number of profile names
671 * @warning Support for this depends on the underlying windowing system.
674 EAPI void ecore_evas_profiles_set(Ecore_Evas *ee, const char **profiles, unsigned int num_profiles);
676 * @brief Get Ecore_Evas's window profile name.
678 * @param ee The Ecore_Evas
679 * @return The profile name
683 EAPI const char *ecore_evas_profile_get(const Ecore_Evas *ee);
685 EAPI Eina_Bool ecore_evas_wm_rotation_supported_get(const Ecore_Evas *ee);
686 EAPI void ecore_evas_wm_rotation_preferred_rotation_set(Ecore_Evas *ee, int rotation);
687 EAPI int ecore_evas_wm_rotation_preferred_rotation_get(const Ecore_Evas *ee);
688 EAPI void ecore_evas_wm_rotation_available_rotations_set(Ecore_Evas *ee, const int *rotations, unsigned int count);
689 EAPI Eina_Bool ecore_evas_wm_rotation_available_rotations_get(const Ecore_Evas *ee, int **rotations, unsigned int *count);
692 * @brief Move an Ecore_Evas.
694 * @param ee The Ecore_Evas to move
695 * @param x The x coordinate to move to
696 * @param y The y coordinate to move to
698 * This moves @p ee to the screen coordinates (@p x, @p y)
700 * @warning Support for this depends on the underlying windowing system.
702 * @see ecore_evas_new()
703 * @see ecore_evas_resize()
704 * @see ecore_evas_move_resize()
706 EAPI void ecore_evas_move(Ecore_Evas *ee, int x, int y);
708 * @brief Resize an Ecore_Evas.
710 * @param ee The Ecore_Evas to move
711 * @param w The w coordinate to resize to
712 * @param h The h coordinate to resize to
714 * This resizes @p ee to @p w x @p h.
716 * @warning Support for this depends on the underlying windowing system.
718 * @see ecore_evas_new()
719 * @see ecore_evas_move()
720 * @see ecore_evas_move_resize()
722 EAPI void ecore_evas_resize(Ecore_Evas *ee, int w, int h);
724 * @brief Move and resize an Ecore_Evas
726 * @param ee The Ecore_Evas to move and resize
727 * @param x The x coordinate to move to
728 * @param y The y coordinate to move to
729 * @param w The w coordinate to resize to
730 * @param h The h coordinate to resize to
732 * This moves @p ee to the screen coordinates (@p x, @p y) and resizes
735 * @warning Support for this depends on the underlying windowing system.
737 * @see ecore_evas_new()
738 * @see ecore_evas_move()
739 * @see ecore_evas_resize()
741 EAPI void ecore_evas_move_resize(Ecore_Evas *ee, int x, int y, int w, int h);
743 * @brief Set the rotation of an Ecore_Evas' window.
745 * @param ee The Ecore_Evas
746 * @param rot the angle (in degrees) of rotation.
748 * The allowed values of @p rot depend on the engine being used. Most only
749 * allow multiples of 90.
751 * @warning Support for this depends on the underlying windowing system.
753 * @see ecore_evas_rotation_with_resize_set()
755 EAPI void ecore_evas_rotation_set(Ecore_Evas *ee, int rot);
757 * @brief Set the rotation of an Ecore_Evas' window
759 * @param ee The Ecore_Evas
760 * @param rot the angle (in degrees) of rotation.
762 * Like ecore_evas_rotation_set(), but it also resizes the window's contents so
763 * that they fit inside the current window geometry.
765 * @warning Support for this depends on the underlying windowing system.
767 * @see ecore_evas_rotation_set()
769 EAPI void ecore_evas_rotation_with_resize_set(Ecore_Evas *ee, int rot);
771 * @brief Get the rotation of an Ecore_Evas' window
773 * @param ee The Ecore_Evas
774 * @return the angle (in degrees) of rotation.
776 * @see ecore_evas_rotation_set()
777 * @see ecore_evas_rotation_with_resize_set()
779 EAPI int ecore_evas_rotation_get(const Ecore_Evas *ee);
781 * @brief Raise an Ecore_Evas' window.
783 * @param ee The Ecore_Evas to raise.
785 * This functions raises the Ecore_Evas to the front.
787 * @warning Support for this depends on the underlying windowing system.
789 * @see ecore_evas_lower()
790 * @see ecore_evas_layer_set()
792 EAPI void ecore_evas_raise(Ecore_Evas *ee);
794 * @brief Lower an Ecore_Evas' window.
796 * @param ee The Ecore_Evas to raise.
798 * This functions lowers the Ecore_Evas to the back.
800 * @warning Support for this depends on the underlying windowing system.
802 * @see ecore_evas_raise()
803 * @see ecore_evas_layer_set()
805 EAPI void ecore_evas_lower(Ecore_Evas *ee);
807 * @brief Set the title of an Ecore_Evas' window.
809 * @param ee The Ecore_Evas whose title you wish to set.
812 * This function sets the title of @p ee to @p t.
814 * @warning Support for this depends on the underlying windowing system.
816 EAPI void ecore_evas_title_set(Ecore_Evas *ee, const char *t);
818 * @brief Get the title of an Ecore_Evas' window.
820 * @param ee The Ecore_Evas whose title you wish to get.
821 * @return The title of @p ee.
823 * This function returns the title of @p ee.
825 * @see ecore_evas_title_set()
827 EAPI const char *ecore_evas_title_get(const Ecore_Evas *ee);
829 * @brief Set the name and class of an Ecore_Evas' window.
831 * @param ee the Ecore_Evas
835 * This function sets the name of @p ee to @p n, and its class to @p c. The
836 * meaning of @p name and @p class depends on the underlying windowing system.
838 * @warning Support for this depends on the underlying windowing system.
840 EAPI void ecore_evas_name_class_set(Ecore_Evas *ee, const char *n, const char *c);
842 * @brief Get the name and class of an Ecore_Evas' window
844 * This function gets the name of @p ee into @p n, and its class into
847 * @param ee The Ecore_Evas to query.
848 * @param n A pointer to a string to place the name in.
849 * @param c A pointer to a string to place the class in.
850 * @see ecore_evas_name_class_set()
852 EAPI void ecore_evas_name_class_get(const Ecore_Evas *ee, const char **n, const char **c);
854 * @brief Returns a pointer to the underlying window.
856 * @param ee The Ecore_Evas whose window is desired.
857 * @return A pointer to the underlying window.
859 * @warning Support for this depends on the underlying windowing system.
861 EAPI Ecore_Window ecore_evas_window_get(const Ecore_Evas *ee);
864 /* engine/target specific init calls */
865 EAPI Ecore_Evas *ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
866 EAPI Ecore_X_Window ecore_evas_software_x11_window_get(const Ecore_Evas *ee);
867 EAPI void ecore_evas_software_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
868 EAPI Eina_Bool ecore_evas_software_x11_direct_resize_get(const Ecore_Evas *ee);
869 EAPI void ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
871 #define ECORE_EVAS_GL_X11_OPT_NONE 0
872 #define ECORE_EVAS_GL_X11_OPT_INDIRECT 1
873 #define ECORE_EVAS_GL_X11_OPT_VSYNC 2
874 #define ECORE_EVAS_GL_X11_OPT_LAST 3
876 EAPI Ecore_Evas *ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
877 EAPI 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);
878 EAPI Ecore_X_Window ecore_evas_gl_x11_window_get(const Ecore_Evas *ee);
879 EAPI void ecore_evas_gl_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
880 EAPI Eina_Bool ecore_evas_gl_x11_direct_resize_get(const Ecore_Evas *ee);
881 EAPI void ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
882 EAPI 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));
884 EAPI Ecore_Evas *ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
885 EAPI Ecore_X_Window ecore_evas_xrender_x11_window_get(const Ecore_Evas *ee);
886 EAPI void ecore_evas_xrender_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
887 EAPI Eina_Bool ecore_evas_xrender_x11_direct_resize_get(const Ecore_Evas *ee);
888 EAPI void ecore_evas_xrender_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
890 EAPI Ecore_Evas *ecore_evas_software_x11_8_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
891 EAPI Ecore_X_Window ecore_evas_software_x11_8_window_get(const Ecore_Evas *ee);
892 EAPI Ecore_X_Window ecore_evas_software_x11_8_subwindow_get(const Ecore_Evas *ee);
893 EAPI void ecore_evas_software_x11_8_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
894 EAPI Eina_Bool ecore_evas_software_x11_8_direct_resize_get(const Ecore_Evas *ee);
895 EAPI void ecore_evas_software_x11_8_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
897 EAPI Ecore_Evas *ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
898 EAPI Ecore_X_Window ecore_evas_software_x11_16_window_get(const Ecore_Evas *ee);
899 EAPI void ecore_evas_software_x11_16_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
900 EAPI Eina_Bool ecore_evas_software_x11_16_direct_resize_get(const Ecore_Evas *ee);
901 EAPI void ecore_evas_software_x11_16_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
903 EAPI Ecore_Evas *ecore_evas_fb_new(const char *disp_name, int rotation, int w, int h);
905 EAPI Ecore_Evas *ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w, int h);
906 EAPI Ecore_DirectFB_Window *ecore_evas_directfb_window_get(const Ecore_Evas *ee);
909 EAPI Ecore_Evas *ecore_evas_wayland_shm_new(const char *disp_name, unsigned int parent, int x, int y, int w, int h, Eina_Bool frame);
910 EAPI Ecore_Evas *ecore_evas_wayland_egl_new(const char *disp_name, unsigned int parent, int x, int y, int w, int h, Eina_Bool frame);
911 EAPI void ecore_evas_wayland_resize(Ecore_Evas *ee, int location);
912 EAPI void ecore_evas_wayland_move(Ecore_Evas *ee, int x, int y);
914 /* EAPI void ecore_evas_wayland_drag_start(Ecore_Evas *ee, Ecore_Evas *drag_ee, void *source); */
915 EAPI void ecore_evas_wayland_pointer_set(Ecore_Evas *ee, int hot_x, int hot_y);
916 EAPI void ecore_evas_wayland_type_set(Ecore_Evas *ee, int type);
917 EAPI Ecore_Wl_Window *ecore_evas_wayland_window_get(const Ecore_Evas *ee);
920 * @brief Create a new @c Ecore_Evas canvas bound to the Evas
923 * @param w The width of the canvas, in pixels
924 * @param h The height of the canvas, in pixels
925 * @return A new @c Ecore_Evas instance or @c NULL, on failure
927 * This creates a new buffer canvas wrapper, with image data array
928 * @b bound to the ARGB format, 8 bits per pixel.
930 * This function will allocate the needed pixels array with canonical
931 * @c malloc(). If you wish a custom function to allocate it, consider
932 * using ecore_evas_buffer_allocfunc_new(), instead.
934 * @note This function actually is a wrapper on
935 * ecore_evas_buffer_allocfunc_new(), using the same @a w and @a h
936 * arguments and canonical @c malloc() and @c free() to the memory
937 * allocation and freeing functions. See that function's documentation
940 EAPI Ecore_Evas *ecore_evas_buffer_new(int w, int h);
943 * @brief Create a new @c Ecore_Evas canvas bound to the Evas
944 * @b buffer engine, giving custom allocation and freeing functions for
945 * the canvas memory region
947 * @param w The width of the canvas, in canvas units
948 * @param h The height of the canvas, in canvas units
949 * @param alloc_func Function to be called to allocate the memory
950 * needed for the new buffer canvas. @a data will be passed the same
951 * value as the @p data of this function, while @a size will be passed
952 * @p w times @p h times @c sizeof(int).
953 * @param free_func Function to be called to free the memory used by
954 * the new buffer canvas. @a data will be passed the same value as the
955 * @p data of this function, while @a pix will be passed the canvas
957 * @param data Custom data to be passed to the allocation and freeing
959 * @return A new @c Ecore_Evas instance or @c NULL, on failure
961 * This creates a new buffer canvas wrapper, with image data array
962 * @b bound to the ARGB format, 8 bits per pixel.
964 * This function is useful when one wants an @c Ecore_Evas buffer
965 * canvas with a custom allocation function, like one getting memory
966 * chunks from a memory pool, for example.
968 * On any resizing of this @c Ecore_Evas buffer canvas, its image data
969 * will be @b freed, to be allocated again with the new size.
971 * @note @p w and @p h sizes have to greater or equal to 1. Otherwise,
972 * they'll be interpreted as 1, exactly.
974 * @see ecore_evas_buffer_new()
976 EAPI 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);
979 * @brief Grab a pointer to the actual pixels array of a given
980 * @c Ecore_Evas @b buffer canvas/window.
982 * @param ee An @c Ecore_Evas handle
983 * @return A pointer to the internal pixels array of @p ee
985 * Besides returning a pointer to the actual pixel array of the given
986 * canvas, this call will force a <b>rendering update on @p ee</b>,
989 * A common use case for this call is to create an image object, from
990 * @b another canvas, to have as data @p ee's contents, thus
991 * snapshoting the canvas. For that case, one can also use the
992 * ecore_evas_object_image_new() helper function.
994 EAPI const void *ecore_evas_buffer_pixels_get(Ecore_Evas *ee);
997 * @brief Create a new @c Ecore_Evas canvas bound to the Evas
998 * @b ews (Ecore + Evas Single Process Windowing System) engine
1000 * EWS is a simple single process windowing system. The backing store
1001 * is also an @c Ecore_Evas that can be setup with
1002 * ecore_evas_ews_setup() and retrieved with
1003 * ecore_evas_ews_ecore_evas_get(). It will allow window management
1004 * using events prefixed with @c ECORE_EVAS_EVENT_EWS_.
1006 * The EWS windows (returned by this function or
1007 * ecore_evas_new("ews"...)) will all be software buffer windows
1008 * automatic rendered to the backing store.
1010 * @param x horizontal position of window, in pixels
1011 * @param y vertical position of window, in pixels
1012 * @param w The width of the canvas, in pixels
1013 * @param h The height of the canvas, in pixels
1014 * @return A new @c Ecore_Evas instance or @c NULL, on failure
1016 * @see ecore_evas_ews_setup()
1017 * @see ecore_evas_ews_ecore_evas_get()
1021 EAPI Ecore_Evas *ecore_evas_ews_new(int x, int y, int w, int h);
1025 * Returns the backing store image object that represents the given
1027 * @return The evas object of EWS backing store.
1029 * @note This should not be modified anyhow, but may be helpful to
1030 * determine stacking and geometry of it for window managers
1031 * that decorate windows.
1033 * @param ee The Ecore_Evas from which to get the backing store.
1034 * @see ecore_evas_ews_manager_set()
1035 * @see ecore_evas_ews_evas_get()
1038 EAPI Evas_Object *ecore_evas_ews_backing_store_get(const Ecore_Evas *ee);
1041 * Calls the window to be deleted (freed), but can let user decide to
1042 * forbid it by using ecore_evas_callback_delete_request_set()
1044 * @param ee The Ecore_Evas for which window will be deleted.
1047 EAPI void ecore_evas_ews_delete_request(Ecore_Evas *ee);
1050 * @brief Create an Evas image object with image data <b>bound to an
1051 * own, internal @c Ecore_Evas canvas wrapper</b>
1053 * @param ee_target @c Ecore_Evas to have the canvas receiving the new
1055 * @return A handle to the new image object
1057 * This will create a @b special Evas image object. The image's pixel
1058 * array will get bound to the same image data array of an @b internal
1059 * @b buffer @c Ecore_Evas canvas. The user of this function is, then,
1060 * supposed to grab that @c Ecore_Evas handle, with
1061 * ecore_evas_object_ecore_evas_get(), and use its canvas to render
1062 * whichever contents he/she wants, @b independently of the contents
1063 * of the canvas owned by @p ee_target. Those contents will reflect on
1064 * the canvas of @p ee, though, being exactly the image data of the
1065 * object returned by this function.
1067 * This is a helper function for the scenario of one wanting to grab a
1068 * buffer canvas' contents (with ecore_evas_buffer_pixels_get()) to be
1069 * used on another canvas, for whichever reason. The most common goal
1070 * of this setup is to @b save an image file with a whole canvas as
1071 * contents, which could not be achieved by using an image file within
1072 * the target canvas.
1074 * @warning Always resize the returned image and its underlying
1075 * @c Ecore_Evas handle accordingly. They must be kept with same sizes
1076 * for things to work as expected. Also, you @b must issue
1077 * @c evas_object_image_size_set() on the image with that same size. If
1078 * the image is to be shown in a canvas bound to an engine different
1079 * than the buffer one, then you must also set this image's @b fill
1080 * properties accordingly.
1082 * @note The image returned will always be bound to the
1083 * @c EVAS_COLORSPACE_ARGB8888 colorspace, always.
1085 * @note Use ecore_evas_object_evas_get() to grab the image's internal
1086 * own canvas directly.
1088 * @note If snapshoting this image's internal canvas, remember to
1089 * flush its internal @c Ecore_Evas firstly, with
1090 * ecore_evas_manual_render().
1092 EAPI Evas_Object *ecore_evas_object_image_new(Ecore_Evas *ee_target);
1095 * @brief Retrieve the internal @c Ecore_Evas handle of an image
1096 * object created via ecore_evas_object_image_new()
1098 * @param obj A handle to an image object created via
1099 * ecore_evas_object_image_new()
1100 * @return The underlying @c Ecore_Evas handle in @p obj
1102 EAPI Ecore_Evas *ecore_evas_object_ecore_evas_get(Evas_Object *obj);
1105 * @brief Retrieve the canvas bound to the internal @c Ecore_Evas
1106 * handle of an image object created via ecore_evas_object_image_new()
1108 * @param obj A handle to an image object created via
1109 * ecore_evas_object_image_new()
1110 * @return A handle to @p obj's underlying @c Ecore_Evas's canvas
1112 EAPI Evas *ecore_evas_object_evas_get(Evas_Object *obj);
1114 EAPI Ecore_Evas *ecore_evas_software_gdi_new(Ecore_Win32_Window *parent,
1120 EAPI Ecore_Evas *ecore_evas_software_ddraw_new(Ecore_Win32_Window *parent,
1126 EAPI Ecore_Evas *ecore_evas_software_16_ddraw_new(Ecore_Win32_Window *parent,
1132 EAPI Ecore_Evas *ecore_evas_direct3d_new(Ecore_Win32_Window *parent,
1138 EAPI Ecore_Evas *ecore_evas_gl_glew_new(Ecore_Win32_Window *parent,
1144 EAPI Ecore_Win32_Window *ecore_evas_win32_window_get(const Ecore_Evas *ee);
1146 EAPI Ecore_Evas *ecore_evas_sdl_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha);
1147 EAPI Ecore_Evas *ecore_evas_sdl16_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha);
1148 EAPI Ecore_Evas *ecore_evas_gl_sdl_new(const char* name, int w, int h, int fullscreen, int noframe);
1150 EAPI Ecore_Evas *ecore_evas_software_wince_new(Ecore_WinCE_Window *parent,
1156 EAPI Ecore_Evas *ecore_evas_software_wince_fb_new(Ecore_WinCE_Window *parent,
1162 EAPI Ecore_Evas *ecore_evas_software_wince_gapi_new(Ecore_WinCE_Window *parent,
1168 EAPI Ecore_Evas *ecore_evas_software_wince_ddraw_new(Ecore_WinCE_Window *parent,
1174 EAPI Ecore_Evas *ecore_evas_software_wince_gdi_new(Ecore_WinCE_Window *parent,
1180 EAPI Ecore_WinCE_Window *ecore_evas_software_wince_window_get(const Ecore_Evas *ee);
1182 EAPI Ecore_Evas *ecore_evas_cocoa_new(Ecore_Cocoa_Window *parent,
1188 EAPI Ecore_Evas *ecore_evas_psl1ght_new(const char* name, int w, int h);
1191 /* generic manipulation calls */
1193 * @brief Get the engine name used by this Ecore_Evas(window).
1195 * @param ee Ecore_Evas whose engine's name is desired.
1196 * @return A string that can(usually) be used in ecore_evas_new()
1198 * @see ecore_evas_free()
1200 EAPI const char *ecore_evas_engine_name_get(const Ecore_Evas *ee);
1202 * @brief Return the Ecore_Evas for this Evas
1204 * @param e The Evas to get the Ecore_Evas from
1205 * @return The Ecore_Evas that holds this Evas, or @c NULL if not held by one.
1207 * @warning Only use on Evas' created with ecore evas!
1209 EAPI Ecore_Evas *ecore_evas_ecore_evas_get(const Evas *e);
1211 * @brief Free an Ecore_Evas
1213 * @param ee The Ecore_Evas to free
1215 * This frees up any memory used by the Ecore_Evas.
1217 EAPI void ecore_evas_free(Ecore_Evas *ee);
1219 * @brief Retrieve user data associated with an Ecore_Evas.
1221 * @param ee The Ecore_Evas to retrieve the user data from.
1222 * @param key The key which the user data to be retrieved is associated with.
1224 * This function retrieves user specific data that has been stored within an
1225 * Ecore_Evas structure with ecore_evas_data_set().
1227 * @returns @c NULL on error or no data found, A pointer to the user data on
1230 * @see ecore_evas_data_set()
1232 EAPI void *ecore_evas_data_get(const Ecore_Evas *ee, const char *key);
1234 * @brief Store user data in an Ecore_Evas structure.
1236 * @param ee The Ecore_Evas to store the user data in.
1237 * @param key A unique string to associate the user data against. Cannot
1239 * @param data A pointer to the user data to store.
1241 * This function associates the @p data with a @p key which is stored by
1242 * the Ecore_Evas @p ee. Be aware that a call to ecore_evas_free() will
1243 * not free any memory for the associated user data, this is the responsibility
1246 * @see ecore_evas_callback_pre_free_set()
1247 * @see ecore_evas_free()
1248 * @see ecore_evas_data_get()
1250 EAPI void ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data);
1252 * Set a callback for Ecore_Evas resize events.
1253 * @param ee The Ecore_Evas to set callbacks on
1254 * @param func The function to call
1256 * A call to this function will set a callback on an Ecore_Evas, causing
1257 * @p func to be called whenever @p ee is resized.
1259 * @warning If and when this function is called depends on the underlying
1262 EAPI void ecore_evas_callback_resize_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1264 * Set a callback for Ecore_Evas move events.
1265 * @param ee The Ecore_Evas to set callbacks on
1266 * @param func The function to call
1268 * A call to this function will set a callback on an Ecore_Evas, causing
1269 * @p func to be called whenever @p ee is moved.
1271 * @warning If and when this function is called depends on the underlying
1274 EAPI void ecore_evas_callback_move_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1276 * Set a callback for Ecore_Evas show events.
1277 * @param ee The Ecore_Evas to set callbacks on
1278 * @param func The function to call
1280 * A call to this function will set a callback on an Ecore_Evas, causing
1281 * @p func to be called whenever @p ee is shown.
1283 * @warning If and when this function is called depends on the underlying
1286 EAPI void ecore_evas_callback_show_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1288 * Set a callback for Ecore_Evas hide events.
1289 * @param ee The Ecore_Evas to set callbacks on
1290 * @param func The function to call
1292 * A call to this function will set a callback on an Ecore_Evas, causing
1293 * @p func to be called whenever @p ee is hidden.
1295 * @warning If and when this function is called depends on the underlying
1298 EAPI void ecore_evas_callback_hide_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1300 * Set a callback for Ecore_Evas delete request events.
1301 * @param ee The Ecore_Evas to set callbacks on
1302 * @param func The function to call
1304 * A call to this function will set a callback on an Ecore_Evas, causing
1305 * @p func to be called whenever @p ee gets a delete request.
1307 * @warning If and when this function is called depends on the underlying
1310 EAPI void ecore_evas_callback_delete_request_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1312 * Set a callback for Ecore_Evas destroy events.
1313 * @param ee The Ecore_Evas to set callbacks on
1314 * @param func The function to call
1316 * A call to this function will set a callback on an Ecore_Evas, causing
1317 * @p func to be called whenever @p ee is destroyed.
1319 * @warning If and when this function is called depends on the underlying
1322 EAPI void ecore_evas_callback_destroy_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1324 * Set a callback for Ecore_Evas focus in events.
1325 * @param ee The Ecore_Evas to set callbacks on
1326 * @param func The function to call
1328 * A call to this function will set a callback on an Ecore_Evas, causing
1329 * @p func to be called whenever @p ee gets focus.
1331 * @warning If and when this function is called depends on the underlying
1334 EAPI void ecore_evas_callback_focus_in_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1336 * Set a callback for Ecore_Evas focus out events.
1337 * @param ee The Ecore_Evas to set callbacks on
1338 * @param func The function to call
1340 * A call to this function will set a callback on an Ecore_Evas, causing
1341 * @p func to be called whenever @p ee loses focus.
1343 * @warning If and when this function is called depends on the underlying
1346 EAPI void ecore_evas_callback_focus_out_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1348 * Set a callback for Ecore_Evas sticky events.
1349 * @param ee The Ecore_Evas to set callbacks on
1350 * @param func The function to call
1352 * A call to this function will set a callback on an Ecore_Evas, causing
1353 * @p func to be called whenever @p ee becomes sticky.
1355 * @warning If and when this function is called depends on the underlying
1358 EAPI void ecore_evas_callback_sticky_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1360 * Set a callback for Ecore_Evas un-sticky events.
1361 * @param ee The Ecore_Evas to set callbacks on
1362 * @param func The function to call
1364 * A call to this function will set a callback on an Ecore_Evas, causing
1365 * @p func to be called whenever @p ee becomes un-sticky.
1367 * @warning If and when this function is called depends on the underlying
1370 EAPI void ecore_evas_callback_unsticky_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1372 * Set a callback for Ecore_Evas mouse in events.
1373 * @param ee The Ecore_Evas to set callbacks on
1374 * @param func The function to call
1376 * A call to this function will set a callback on an Ecore_Evas, causing
1377 * @p func to be called whenever the mouse enters @p ee.
1379 * @warning If and when this function is called depends on the underlying
1382 EAPI void ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1384 * Set a callback for Ecore_Evas mouse out events.
1385 * @param ee The Ecore_Evas to set callbacks on
1386 * @param func The function to call
1388 * A call to this function will set a callback on an Ecore_Evas, causing
1389 * @p func to be called whenever the mouse leaves @p ee.
1391 * @warning If and when this function is called depends on the underlying
1394 EAPI void ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1396 * Set a callback for Ecore_Evas pre render events.
1397 * @param ee The Ecore_Evas to set callbacks on
1398 * @param func The function to call
1400 * A call to this function will set a callback on an Ecore_Evas, causing
1401 * @p func to be called just before the evas in @p ee is rendered.
1403 * @warning If and when this function is called depends on the underlying
1406 EAPI void ecore_evas_callback_pre_render_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1408 * Set a callback for Ecore_Evas mouse post render events.
1409 * @param ee The Ecore_Evas to set callbacks on
1410 * @param func The function to call
1412 * A call to this function will set a callback on an Ecore_Evas, causing
1413 * @p func to be called just after the evas in @p ee is rendered.
1415 * @warning If and when this function is called depends on the underlying
1418 EAPI void ecore_evas_callback_post_render_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1420 * Set a callback for Ecore_Evas pre-free event.
1421 * @param ee The Ecore_Evas to set callbacks on
1422 * @param func The function to call
1424 * A call to this function will set a callback on an Ecore_Evas, causing
1425 * @p func to be called just before the instance @p ee is freed.
1427 * @warning If and when this function is called depends on the underlying
1430 EAPI void ecore_evas_callback_pre_free_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1432 * Set a callback for Ecore_Evas state changes.
1433 * @param ee The Ecore_Evas to set callbacks on
1434 * @param func The function to call
1436 * A call to this function will set a callback on an Ecore_Evas, causing
1437 * @p func to be called whenever @p ee changes state.
1440 * @warning If and when this function is called depends on the underlying
1443 EAPI void ecore_evas_callback_state_change_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1446 * Get an Ecore_Evas's Evas
1447 * @param ee The Ecore_Evas whose Evas you wish to get
1448 * @return The Evas wrapped by @p ee
1450 * This function returns the Evas contained within @p ee.
1452 EAPI Evas *ecore_evas_get(const Ecore_Evas *ee);
1455 * Provide Managed move co-ordinates for an Ecore_Evas
1456 * @param ee The Ecore_Evas to move
1457 * @param x The x coordinate to set as the managed location
1458 * @param y The y coordinate to set as the managed location
1460 * This sets the managed geometry position of the @p ee to (@p x, @p y)
1462 EAPI void ecore_evas_managed_move(Ecore_Evas *ee, int x, int y);
1465 * Set whether an Ecore_Evas is shaped or not.
1467 * @param ee The Ecore_Evas to shape.
1468 * @param shaped @c EINA_TRUE to shape, @c EINA_FALSE to not.
1470 * This function allows one to make an Ecore_Evas shaped to the contents of the
1471 * evas. If @p shaped is @c EINA_TRUE, @p ee will be transparent in parts of
1472 * the evas that contain no objects. If @p shaped is @c EINA_FALSE, then @p ee
1473 * will be rectangular, and parts with no data will show random framebuffer
1474 * artifacting. For non-shaped Ecore_Evases, it is recommended to cover the
1475 * entire evas with a background object.
1477 EAPI void ecore_evas_shaped_set(Ecore_Evas *ee, Eina_Bool shaped);
1480 * Query whether an Ecore_Evas is shaped or not.
1482 * @param ee The Ecore_Evas to query.
1483 * @return @c EINA_TRUE if shaped, @c EINA_FALSE if not.
1485 * This function returns @c EINA_TRUE if @p ee is shaped, and @c EINA_FALSE if not.
1487 EAPI Eina_Bool ecore_evas_shaped_get(const Ecore_Evas *ee);
1489 * @brief Show an Ecore_Evas' window
1491 * @param ee The Ecore_Evas to show.
1493 * This function makes @p ee visible.
1495 EAPI void ecore_evas_show(Ecore_Evas *ee);
1497 * @brief Hide an Ecore_Evas' window
1499 * @param ee The Ecore_Evas to hide.
1501 * This function makes @p ee hidden(not visible).
1503 EAPI void ecore_evas_hide(Ecore_Evas *ee);
1506 * Activate (set focus to, via the window manager) an Ecore_Evas' window.
1507 * @param ee The Ecore_Evas to activate.
1509 * This functions activates the Ecore_Evas.
1511 EAPI void ecore_evas_activate(Ecore_Evas *ee);
1515 * Set the minimum size of a given @c Ecore_Evas window
1517 * @param ee An @c Ecore_Evas window's handle
1518 * @param w The minimum width
1519 * @param h The minimum height
1521 * This function sets the minimum size of @p ee to be @p w x @p h.
1522 * One won't be able to resize that window to dimensions smaller than
1525 * @note When base sizes are set, via ecore_evas_size_base_set(),
1526 * they'll be used to calculate a window's minimum size, instead of
1527 * those set by this function.
1529 * @see ecore_evas_size_min_get()
1531 EAPI void ecore_evas_size_min_set(Ecore_Evas *ee, int w, int h);
1534 * Get the minimum size set for a given @c Ecore_Evas window
1536 * @param ee An @c Ecore_Evas window's handle
1537 * @param w A pointer to an int to place the minimum width in.
1538 * @param h A pointer to an int to place the minimum height in.
1540 * @note Use @c NULL pointers on the size components you're not
1541 * interested in: they'll be ignored by the function.
1543 * @see ecore_evas_size_min_set() for more details
1545 EAPI void ecore_evas_size_min_get(const Ecore_Evas *ee, int *w, int *h);
1548 * Set the maximum size of a given @c Ecore_Evas window
1550 * @param ee An @c Ecore_Evas window's handle
1551 * @param w The maximum width
1552 * @param h The maximum height
1554 * This function sets the maximum size of @p ee to be @p w x @p h.
1555 * One won't be able to resize that window to dimensions bigger than
1558 * @see ecore_evas_size_max_get()
1560 EAPI void ecore_evas_size_max_set(Ecore_Evas *ee, int w, int h);
1563 * Get the maximum size set for a given @c Ecore_Evas window
1565 * @param ee An @c Ecore_Evas window's handle
1566 * @param w A pointer to an int to place the maximum width in.
1567 * @param h A pointer to an int to place the maximum height in.
1569 * @note Use @c NULL pointers on the size components you're not
1570 * interested in: they'll be ignored by the function.
1572 * @see ecore_evas_size_max_set() for more details
1574 EAPI void ecore_evas_size_max_get(const Ecore_Evas *ee, int *w, int *h);
1577 * Set the base size for a given @c Ecore_Evas window
1579 * @param ee An @c Ecore_Evas window's handle
1580 * @param w The base width
1581 * @param h The base height
1583 * This function sets the @b base size of @p ee to be @p w x @p h.
1584 * When base sizes are set, they'll be used to calculate a window's
1585 * @b minimum size, instead of those set by ecore_evas_size_min_get().
1587 * @see ecore_evas_size_base_get()
1589 EAPI void ecore_evas_size_base_set(Ecore_Evas *ee, int w, int h);
1592 * Get the base size set for a given @c Ecore_Evas window
1594 * @param ee An @c Ecore_Evas window's handle
1595 * @param w A pointer to an int to place the base width in.
1596 * @param h A pointer to an int to place the base height in.
1598 * @note Use @c NULL pointers on the size components you're not
1599 * interested in: they'll be ignored by the function.
1601 * @see ecore_evas_size_base_set() for more details
1603 EAPI void ecore_evas_size_base_get(const Ecore_Evas *ee, int *w, int *h);
1606 * Set the "size step" for a given @c Ecore_Evas window
1608 * @param ee An @c Ecore_Evas window's handle
1609 * @param w The step width
1610 * @param h The step height
1612 * This function sets the size steps of @p ee to be @p w x @p h. This
1613 * limits the size of this @c Ecore_Evas window to be @b always an
1614 * integer multiple of the step size, for each axis.
1616 EAPI void ecore_evas_size_step_set(Ecore_Evas *ee, int w, int h);
1619 * Get the "size step" set for a given @c Ecore_Evas window
1621 * @param ee An @c Ecore_Evas window's handle
1622 * @param w A pointer to an int to place the step width in.
1623 * @param h A pointer to an int to place the step height in.
1625 * @note Use @c NULL pointers on the size components you're not
1626 * interested in: they'll be ignored by the function.
1628 * @see ecore_evas_size_base_set() for more details
1630 EAPI void ecore_evas_size_step_get(const Ecore_Evas *ee, int *w, int *h);
1633 * @brief Set the cursor of an Ecore_Evas.
1635 * @param ee The Ecore_Evas
1636 * @param file The path to an image file for the cursor.
1637 * @param layer The layer in which the cursor will appear.
1638 * @param hot_x The x coordinate of the cursor's hot spot.
1639 * @param hot_y The y coordinate of the cursor's hot spot.
1641 * This function makes the mouse cursor over @p ee be the image specified by
1642 * @p file. The actual point within the image that the mouse is at is specified
1643 * by @p hot_x and @p hot_y, which are coordinates with respect to the top left
1644 * corner of the cursor image.
1646 * @note This function creates an object from the image and uses
1647 * ecore_evas_object_cursor_set().
1649 * @see ecore_evas_object_cursor_set()
1651 EAPI void ecore_evas_cursor_set(Ecore_Evas *ee, const char *file, int layer, int hot_x, int hot_y);
1653 * @brief Get information about an Ecore_Evas' cursor
1655 * @param ee The Ecore_Evas to set
1656 * @param obj A pointer to an Evas_Object to place the cursor Evas_Object.
1657 * @param layer A pointer to an int to place the cursor's layer in.
1658 * @param hot_x A pointer to an int to place the cursor's hot_x coordinate in.
1659 * @param hot_y A pointer to an int to place the cursor's hot_y coordinate in.
1661 * This function queries information about an Ecore_Evas' cursor.
1663 * @see ecore_evas_cursor_set()
1664 * @see ecore_evas_object_cursor_set()
1666 EAPI void ecore_evas_cursor_get(const Ecore_Evas *ee, Evas_Object **obj, int *layer, int *hot_x, int *hot_y);
1668 * @brief Set the cursor of an Ecore_Evas
1670 * @param ee The Ecore_Evas
1672 * @param obj The Evas_Object which will be the cursor.
1673 * @param layer The layer in which the cursor will appear.
1674 * @param hot_x The x coordinate of the cursor's hot spot.
1675 * @param hot_y The y coordinate of the cursor's hot spot.
1677 * This function makes the mouse cursor over @p ee be the object specified by
1678 * @p obj. The actual point within the object that the mouse is at is specified
1679 * by @p hot_x and @p hot_y, which are coordinates with respect to the top left
1680 * corner of the cursor object.
1682 * @see ecore_evas_cursor_set()
1684 EAPI void ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
1687 * Tell the WM whether or not to ignore an Ecore_Evas' window
1689 * @param ee The Ecore_Evas.
1690 * @param on @c EINA_TRUE to ignore, @c EINA_FALSE to not.
1692 * This function causes the window manager to ignore @p ee if @p on is
1693 * @c EINA_TRUE, or not ignore @p ee if @p on is @c EINA_FALSE.
1695 EAPI void ecore_evas_override_set(Ecore_Evas *ee, Eina_Bool on);
1698 * Query whether an Ecore_Evas' window is overridden or not
1700 * @param ee The Ecore_Evas to set.
1701 * @return @c EINA_TRUE if @p ee is overridden, @c EINA_FALSE if not.
1703 EAPI Eina_Bool ecore_evas_override_get(const Ecore_Evas *ee);
1706 * Set whether or not an Ecore_Evas' window should avoid damage
1708 * @param ee The Ecore_Evas
1709 * @param on The type of the damage management
1711 * This option causes updates of the Ecore_Evas to be done on a pixmap, and
1712 * then copied to the window, or the pixmap used directly on the window,
1713 * depending on the setting. Possible options are:
1715 * @li @ref ECORE_EVAS_AVOID_DAMAGE_NONE - every expose event triggers a new
1716 * damage and consequently render of the affected area. The rendering of things
1717 * happens directly on the window;
1719 * @li @ref ECORE_EVAS_AVOID_DAMAGE_EXPOSE - there's a pixmap where everything
1720 * is rendered into, and then copied to the window. On expose events, there's
1721 * no need to render things again, just to copy the exposed region to the
1724 * @li @ref ECORE_EVAS_AVOID_DAMAGE_BUILT_IN - there's the same pixmap as the
1725 * previous one, but it is set as a "background pixmap" of the window. The
1726 * rendered things appear directly on the window, with no need to copy
1727 * anything, but would stay stored on the pixmap, so there's no need to render
1728 * things again on expose events. This option can be faster than the previous
1729 * one, but may lead to artifacts during resize of the window.
1731 EAPI void ecore_evas_avoid_damage_set(Ecore_Evas *ee, Ecore_Evas_Avoid_Damage_Type on);
1734 * Query whether an Ecore_Evas' window avoids damage or not
1735 * @param ee The Ecore_Evas to set
1736 * @return The type of the damage management
1739 EAPI Ecore_Evas_Avoid_Damage_Type ecore_evas_avoid_damage_get(const Ecore_Evas *ee);
1742 * Set the withdrawn state of an Ecore_Evas' window.
1743 * @param ee The Ecore_Evas whose window's withdrawn state is set.
1744 * @param withdrawn The Ecore_Evas window's new withdrawn state.
1747 EAPI void ecore_evas_withdrawn_set(Ecore_Evas *ee, Eina_Bool withdrawn);
1750 * Returns the withdrawn state of an Ecore_Evas' window.
1751 * @param ee The Ecore_Evas whose window's withdrawn state is returned.
1752 * @return The Ecore_Evas window's withdrawn state.
1755 EAPI Eina_Bool ecore_evas_withdrawn_get(const Ecore_Evas *ee);
1758 * Set the sticky state of an Ecore_Evas window.
1760 * @param ee The Ecore_Evas whose window's sticky state is set.
1761 * @param sticky The Ecore_Evas window's new sticky state.
1764 EAPI void ecore_evas_sticky_set(Ecore_Evas *ee, Eina_Bool sticky);
1767 * Returns the sticky state of an Ecore_Evas' window.
1769 * @param ee The Ecore_Evas whose window's sticky state is returned.
1770 * @return The Ecore_Evas window's sticky state.
1773 EAPI Eina_Bool ecore_evas_sticky_get(const Ecore_Evas *ee);
1774 EAPI void ecore_evas_manual_render_set(Ecore_Evas *ee, Eina_Bool manual_render);
1775 EAPI Eina_Bool ecore_evas_manual_render_get(const Ecore_Evas *ee);
1778 * @brief Registers an @c Ecore_Evas to receive events through ecore_input_evas.
1780 * @param ee The @c Ecore_Evas handle.
1782 * This function calls ecore_event_window_register() with the @p ee as its @c
1783 * id argument, @c window argument, and uses its @c Evas too. It is useful when
1784 * no @c window information is available on a given @c Ecore_Evas backend.
1786 * @see ecore_evas_input_event_unregister()
1789 EAPI void ecore_evas_input_event_register(Ecore_Evas *ee);
1791 * @brief Unregisters an @c Ecore_Evas receiving events through ecore_input_evas.
1793 * @param ee The @c Ecore_Evas handle.
1795 * @see ecore_evas_input_event_register()
1798 EAPI void ecore_evas_input_event_unregister(Ecore_Evas *ee);
1801 * @brief Force immediate rendering on a given @c Ecore_Evas window
1803 * @param ee An @c Ecore_Evas handle
1805 * Use this call to forcefully flush the @p ee's canvas rendering
1806 * pipeline, thus bring its window to an up to date state.
1808 EAPI void ecore_evas_manual_render(Ecore_Evas *ee);
1809 EAPI void ecore_evas_comp_sync_set(Ecore_Evas *ee, Eina_Bool do_sync);
1810 EAPI Eina_Bool ecore_evas_comp_sync_get(const Ecore_Evas *ee);
1813 * @brief Get geometry of screen associated with this Ecore_Evas.
1815 * @param ee The Ecore_Evas whose window's to query container screen geometry.
1816 * @param x where to return the horizontal offset value. May be @c NULL.
1817 * @param y where to return the vertical offset value. May be @c NULL.
1818 * @param w where to return the width value. May be @c NULL.
1819 * @param h where to return the height value. May be @c NULL.
1823 EAPI void ecore_evas_screen_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
1826 * @brief Get the dpi of the screen the Ecore_Evas is primarily on.
1828 * @param ee The Ecore_Evas whose window's to query.
1829 * @param xdpi Pointer to integer to store horizontal DPI. May be @c NULL.
1830 * @param ydpi Pointer to integer to store vertical DPI. May be @c NULL.
1834 EAPI void ecore_evas_screen_dpi_get(const Ecore_Evas *ee, int *xdpi, int *ydpi);
1836 EAPI void ecore_evas_draw_frame_set(Ecore_Evas *ee, Eina_Bool draw_frame);
1837 EAPI Eina_Bool ecore_evas_draw_frame_get(const Ecore_Evas *ee);
1840 * @brief Associate the given object to this ecore evas.
1842 * @param ee The Ecore_Evas to associate to @a obj
1843 * @param obj The object to associate to @a ee
1844 * @param flags The association flags.
1845 * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
1847 * Association means that operations on one will affect the other, for
1848 * example moving the object will move the window, resize the object will
1849 * also affect the ecore evas window, hide and show applies as well.
1851 * This is meant to simplify development, since you often need to associate
1852 * these events with your "base" objects, background or bottom-most object.
1854 * Be aware that some methods might not be what you would like, deleting
1855 * either the window or the object will delete the other. If you want to
1856 * change that behavior, let's say to hide window when it's closed, you
1857 * must use ecore_evas_callback_delete_request_set() and set your own code,
1858 * like ecore_evas_hide(). Just remember that if you override delete_request
1859 * and still want to delete the window/object, you must do that yourself.
1861 * Since we now define delete_request, deleting windows will not quit
1862 * main loop, if you wish to do so, you should listen for EVAS_CALLBACK_FREE
1863 * on the object, that way you get notified and you can call
1864 * ecore_main_loop_quit().
1866 * Flags can be OR'ed of:
1867 * @li ECORE_EVAS_OBJECT_ASSOCIATE_BASE (or 0): to listen to basic events
1868 * like delete, resize and move, but no stacking or layer are used.
1869 * @li ECORE_EVAS_OBJECT_ASSOCIATE_STACK: stacking operations will act
1870 * on the Ecore_Evas, not the object. So evas_object_raise() will
1871 * call ecore_evas_raise(). Relative operations (stack_above, stack_below)
1872 * are still not implemented.
1873 * @li ECORE_EVAS_OBJECT_ASSOCIATE_LAYER: stacking operations will act
1874 * on the Ecore_Evas, not the object. So evas_object_layer_set() will
1875 * call ecore_evas_layer_set().
1876 * @li ECORE_EVAS_OBJECT_ASSOCIATE_DEL: the object delete will delete the
1877 * ecore_evas as well as delete_requests on the ecore_evas will delete
1880 EAPI Eina_Bool ecore_evas_object_associate(Ecore_Evas *ee, Evas_Object *obj, Ecore_Evas_Object_Associate_Flags flags);
1882 * @brief Cancel the association set with ecore_evas_object_associate().
1884 * @param ee The Ecore_Evas to dissociate from @a obj
1885 * @param obj The object to dissociate from @a ee
1886 * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
1888 EAPI Eina_Bool ecore_evas_object_dissociate(Ecore_Evas *ee, Evas_Object *obj);
1890 * @brief Get the object associated with @p ee
1892 * @param ee The Ecore_Evas to get the object from.
1893 * @return The associated object, or @c NULL if there is no associated object.
1895 EAPI Evas_Object *ecore_evas_object_associate_get(const Ecore_Evas *ee);
1897 /* helper function to be used with ECORE_GETOPT_CALLBACK_*() */
1898 EAPI 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);
1901 * @brief Get a list of all the ecore_evases.
1903 * @return A list of ecore_evases.
1905 * The returned list of ecore evases is only valid until the canvases are
1906 * destroyed (and should not be cached for instance). The list can be freed by
1907 * just deleting the list.
1909 EAPI Eina_List *ecore_evas_ecore_evas_list_get(void);
1911 /* specific calls to an x11 environment ecore_evas */
1912 EAPI void ecore_evas_x11_leader_set(Ecore_Evas *ee, Ecore_X_Window win);
1913 EAPI Ecore_X_Window ecore_evas_x11_leader_get(Ecore_Evas *ee);
1914 EAPI void ecore_evas_x11_leader_default_set(Ecore_Evas *ee);
1915 EAPI void ecore_evas_x11_shape_input_rectangle_set(Ecore_Evas *ee, int x, int y, int w, int h);
1916 EAPI void ecore_evas_x11_shape_input_rectangle_add(Ecore_Evas *ee, int x, int y, int w, int h);
1917 EAPI void ecore_evas_x11_shape_input_rectangle_subtract(Ecore_Evas *ee, int x, int y, int w, int h);
1918 EAPI void ecore_evas_x11_shape_input_empty(Ecore_Evas *ee);
1919 EAPI void ecore_evas_x11_shape_input_reset(Ecore_Evas *ee);
1920 EAPI void ecore_evas_x11_shape_input_apply(Ecore_Evas *ee);
1923 * @defgroup Ecore_Evas_Ews Ecore_Evas Single Process Windowing System.
1925 * These are global scope functions to manage the EWS to be used by
1926 * ecore_evas_ews_new().
1933 * Sets the engine to be used by the backing store engine.
1935 * @param engine The engine to be set.
1936 * @param options The options of the engine to be set.
1937 * @return @c EINA_TRUE on success, @c EINA_FALSE if ews is already in use.
1940 EAPI Eina_Bool ecore_evas_ews_engine_set(const char *engine, const char *options);
1943 * Reconfigure the backing store used.
1945 * @param x The X coordinate to be used.
1946 * @param y The Y coordinate to be used.
1947 * @param w The width of the Ecore_Evas to setup.
1948 * @param h The height of the Ecore_Evas to setup.
1949 * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
1952 EAPI Eina_Bool ecore_evas_ews_setup(int x, int y, int w, int h);
1955 * Return the internal backing store in use.
1957 * @return The internal backing store in use.
1958 * @note this will forced it to be created, making future calls to
1959 * ecore_evas_ews_engine_set() void.
1961 * @see ecore_evas_ews_evas_get()
1964 EAPI Ecore_Evas *ecore_evas_ews_ecore_evas_get(void);
1967 * Return the internal backing store in use.
1969 * @return The internal backing store in use.
1970 * @note this will forced it to be created, making future calls to
1971 * ecore_evas_ews_engine_set() void.
1973 * @see ecore_evas_ews_ecore_evas_get()
1976 EAPI Evas *ecore_evas_ews_evas_get(void);
1979 * Get the current background.
1981 EAPI Evas_Object *ecore_evas_ews_background_get(void);
1984 * Set the current background, must be created at evas ecore_evas_ews_evas_get()
1986 * It will be kept at lowest layer (EVAS_LAYER_MIN) and below
1987 * everything else. You can set any object, default is a black
1990 * @note previous object will be deleted!
1991 * @param o The Evas_Object for which to set the background.
1993 EAPI void ecore_evas_ews_background_set(Evas_Object *o);
1996 * Return all Ecore_Evas* created by EWS.
1998 * @return An eina list of Ecore_evases.
1999 e @note Do not change the returned list or its contents.
2002 EAPI const Eina_List *ecore_evas_ews_children_get(void);
2005 * Set the identifier of the manager taking care of internal windows.
2007 * The ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE event is issued. Consider
2008 * handling it to know if you should stop handling events yourself
2009 * (ie: another manager took over)
2011 * @param manager any unique identifier address.
2013 * @see ecore_evas_ews_manager_get()
2016 EAPI void ecore_evas_ews_manager_set(const void *manager);
2019 * Get the identifier of the manager taking care of internal windows.
2021 * @return the value set by ecore_evas_ews_manager_set()
2024 EAPI const void *ecore_evas_ews_manager_get(void);
2026 EAPI extern int ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE; /**< manager was changed @since 1.1 */
2027 EAPI extern int ECORE_EVAS_EWS_EVENT_ADD; /**< window was created @since 1.1 */
2028 EAPI extern int ECORE_EVAS_EWS_EVENT_DEL; /**< window was deleted, pointer is already invalid but may be used as reference for further cleanup work. @since 1.1 */
2029 EAPI extern int ECORE_EVAS_EWS_EVENT_RESIZE; /**< window was resized @since 1.1 */
2030 EAPI extern int ECORE_EVAS_EWS_EVENT_MOVE; /**< window was moved @since 1.1 */
2031 EAPI extern int ECORE_EVAS_EWS_EVENT_SHOW; /**< window become visible @since 1.1 */
2032 EAPI extern int ECORE_EVAS_EWS_EVENT_HIDE; /**< window become hidden @since 1.1 */
2033 EAPI extern int ECORE_EVAS_EWS_EVENT_FOCUS; /**< window was focused @since 1.1 */
2034 EAPI extern int ECORE_EVAS_EWS_EVENT_UNFOCUS; /**< window lost focus @since 1.1 */
2035 EAPI extern int ECORE_EVAS_EWS_EVENT_RAISE; /**< window was raised @since 1.1 */
2036 EAPI extern int ECORE_EVAS_EWS_EVENT_LOWER; /**< window was lowered @since 1.1 */
2037 EAPI extern int ECORE_EVAS_EWS_EVENT_ACTIVATE; /**< window was activated @since 1.1 */
2039 EAPI extern int ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE; /**< window minimized/iconified changed @since 1.1 */
2040 EAPI extern int ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE; /**< window maximized changed @since 1.1 */
2041 EAPI extern int ECORE_EVAS_EWS_EVENT_LAYER_CHANGE; /**< window layer changed @since 1.1 */
2042 EAPI extern int ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE; /**< window fullscreen changed @since 1.1 */
2043 EAPI extern int ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE; /**< some other window property changed (title, name, class, alpha, transparent, shaped...) @since 1.1 */
2050 * @defgroup Ecore_Evas_Extn External plug/socket infrastructure to remote canvases
2052 * These functions allow 1 process to create a "socket" was pluged into which another
2053 * process can create a "plug" remotely to plug into.
2054 * Socket can provides content for several plugs.
2055 * This is best for small sized objects (about the size range
2056 * of a small icon up to a few large icons). Sine the plug is actually an
2057 * image object, you can fetch the pixel data
2063 EAPI extern int ECORE_EVAS_EXTN_CLIENT_ADD; /**< this event is received when a plug has connected to an extn socket @since 1.2 */
2064 EAPI extern int ECORE_EVAS_EXTN_CLIENT_DEL; /**< this event is received when a plug has disconnected from an extn socket @since 1.2 */
2067 * @brief Create a new Ecore_Evas canvas for the new external ecore evas socket
2069 * @param w The width of the canvas, in pixels
2070 * @param h The height of the canvas, in pixels
2071 * @return A new @c Ecore_Evas instance or @c NULL, on failure
2073 * This creates a new extn_socket canvas wrapper, with image data array
2074 * @b bound to the ARGB format, 8 bits per pixel.
2076 * If creation is successful, an Ecore_Evas handle is returned or @c NULL if
2077 * creation fails. Also focus, show, hide etc. callbacks will also be called
2078 * if the plug object is shown, or already visible on connect, or if it is
2079 * hidden later, focused or unfocused.
2081 * This function has to be flowed by ecore_evas_extn_socket_listen(),
2082 * for starting ecore ipc service.
2085 * Eina_Bool res = EINA_FALSE;
2086 * Ecore_Evas *ee = ecore_evas_extn_socket_new(1, 1);
2088 * res = ecore_evas_extn_socket_listen("svcname", 1, EINA_FALSE);
2090 * ecore_evas_resize(ee, 240, 400);
2096 * Eina_Bool res = EINA_FALSE;
2097 * Ecore_Evas *ee = ecore_evas_extn_socket_new(240, 400);
2099 * res = ecore_evas_extn_socket_listen("svcname", 1, EINA_FALSE);
2103 * When a client(plug) connects, you will get the ECORE_EVAS_EXTN_CLIENT_ADD event
2104 * in the ecore event queue, with event_info being the image object pointer
2105 * passed as a void pointer. When a client disconnects you will get the
2106 * ECORE_EVAS_EXTN_CLIENT_DEL event.
2108 * You can set up event handles for these events as follows:
2111 * static void client_add_cb(void *data, int event, void *event_info)
2113 * Evas_Object *obj = event_info;
2114 * printf("client added to image object %p\n", obj);
2115 * evas_object_show(obj);
2118 * static void client_del_cb(void *data, int event, void *event_info)
2120 * Evas_Object *obj = event_info;
2121 * printf("client deleted from image object %p\n", obj);
2122 * evas_object_hide(obj);
2127 * ecore_event_handler_add(ECORE_EVAS_EXTN_CLIENT_ADD,
2128 * client_add_cb, NULL);
2129 * ecore_event_handler_add(ECORE_EVAS_EXTN_CLIENT_DEL,
2130 * client_del_cb, NULL);
2134 * Note that events come in later after the event happened. You may want to be
2135 * careful as data structures you had associated with the image object
2136 * may have been freed after deleting, but the object may still be around
2137 * awating cleanup and thus still be valid.You can change the size with something like:
2139 * @see ecore_evas_extn_socket_listen()
2140 * @see ecore_evas_extn_plug_new()
2141 * @see ecore_evas_extn_plug_object_data_lock()
2142 * @see ecore_evas_extn_plug_object_data_unlock()
2146 EAPI Ecore_Evas *ecore_evas_extn_socket_new(int w, int h);
2149 * @brief Create a socket to provide the service for external ecore evas
2152 * @param ee The Ecore_Evas.
2153 * @param svcname The name of the service to be advertised. ensure that it is
2154 * unique (when combined with @p svcnum) otherwise creation may fail.
2155 * @param svcnum A number (any value, @c 0 being the common default) to
2156 * differentiate multiple instances of services with the same name.
2157 * @param svcsys A boolean that if true, specifies to create a system-wide
2158 * service all users can connect to, otherwise the service is private to the
2159 * user ide that created the service.
2160 * @return @c EINA_TRUE if creation is successful, @c EINA_FALSE if it does
2163 * This creates socket specified by @p svcname, @p svcnum and @p svcsys. If
2164 * creation is successful, @c EINA_TRUE is returned or @c EINA_FALSE if
2167 * @see ecore_evas_extn_socket_new()
2168 * @see ecore_evas_extn_plug_new()
2169 * @see ecore_evas_extn_plug_object_data_lock()
2170 * @see ecore_evas_extn_plug_object_data_unlock()
2174 EAPI Eina_Bool ecore_evas_extn_socket_listen(Ecore_Evas *ee, const char *svcname, int svcnum, Eina_Bool svcsys);
2177 * @brief Lock the pixel data so the socket cannot change it
2179 * @param obj The image object returned by ecore_evas_extn_plug_new() to lock
2181 * You may need to get the image pixel data with evas_object_image_data_get()
2182 * from the image object, but need to ensure that it does not change while
2183 * you are using the data. This function lets you set an advisory lock on the
2184 * image data so the external plug process will not render to it or alter it.
2186 * You should only hold the lock for just as long as you need to read out the
2187 * image data or otherwise deal with it, and then unlock it with
2188 * ecore_evas_extn_plug_object_data_unlock(). Keeping a lock over more than
2189 * 1 iteration of the main ecore loop will be problematic, so avoid it. Also
2190 * forgetting to unlock may cause the socket process to freeze and thus create
2193 * @see ecore_evas_extn_plug_new()
2194 * @see ecore_evas_extn_plug_object_data_unlock()
2198 EAPI void ecore_evas_extn_plug_object_data_lock(Evas_Object *obj);
2201 * @brief Unlock the pixel data so the socket can change it again.
2203 * @param obj The image object returned by ecore_evas_extn_plug_new() to unlock
2205 * This unlocks after an advisor lock has been taken by
2206 * ecore_evas_extn_plug_object_data_lock().
2208 * @see ecore_evas_extn_plug_new()
2209 * @see ecore_evas_extn_plug_object_data_lock()
2213 EAPI void ecore_evas_extn_plug_object_data_unlock(Evas_Object *obj);
2216 * @brief Create a new external ecore evas plug
2218 * @param ee_target The Ecore_Evas containing the canvas in which the new image object will live.
2219 * @return An evas image object that will contain the image output of a socket.
2221 * This creates an image object that will contain the output of another
2222 * processes socket canvas when it connects. All input will be sent back to
2223 * this process as well, effectively swallowing or placing the socket process
2224 * in the canvas of the plug process in place of the image object. The image
2225 * object by default is created to be filled (equivalent of
2226 * evas_object_image_filled_add() on creation) so image content will scale
2227 * to fill the image unless otherwise reconfigured. The Ecore_Evas size
2228 * of the plug is the master size and determines size in pixels of the
2229 * plug canvas. You can change the size with something like:
2232 * Eina_Bool res = EINA_FALSE;
2233 * Evas_Object *obj = ecore_evas_extn_plug_new(ee);
2235 * res = ecore_evas_extn_plug_connect("svcname", 1, EINA_FALSE);
2237 * ecore_evas_resize(ee, 240, 400);
2240 * @see ecore_evas_extn_socket_new()
2241 * @see ecore_evas_extn_plug_connect()
2244 EAPI Evas_Object *ecore_evas_extn_plug_new(Ecore_Evas *ee_target);
2247 * @brief Connect an external ecore evas plug to service provided by external
2248 * ecore evas socket.
2250 * @param obj The Ecore_Evas containing the canvas in which the new image
2252 * @param svcname The service name to connect to set up by the socket.
2253 * @param svcnum The service number to connect to (set up by socket).
2254 * @param svcsys Boolean to set if the service is a system one or not (set up
2256 * @return @c EINA_TRUE if creation is successful, @c EINA_FALSE if it does
2259 * @see ecore_evas_extn_plug_new()
2263 EAPI Eina_Bool ecore_evas_extn_plug_connect(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys);