a2ea00dd9893fc028653c135f44b3163026842fb
[framework/uifw/ecore.git] / src / lib / ecore_evas / Ecore_Evas.h
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  * @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
45  */
46
47 /* FIXME:
48  * to do soon:
49  * - iconfication api needs to work
50  * - maximization api needs to work
51  * - document all calls
52  *
53  * later:
54  * - buffer back-end that renders to an evas_image_object ???
55  * - qt back-end ???
56  * - dfb back-end ??? (dfb's threads make this REALLY HARD)
57  */
58
59 #ifdef __cplusplus
60 extern "C" {
61 #endif
62
63 /**
64  * @defgroup Ecore_Evas_Group Ecore_Evas wrapper/helper set of functions
65  *
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.
71  *
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
76  * in games.
77  *
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
85  *
86  * @{
87  */
88
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.
91  */
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
105
106 typedef enum _Ecore_Evas_Engine_Type
107 {
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;
132
133 typedef enum _Ecore_Evas_Avoid_Damage_Type
134 {
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;
139
140 typedef enum _Ecore_Evas_Object_Associate_Flags
141 {
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;
147
148 #ifndef _ECORE_X_H
149 #define _ECORE_X_WINDOW_PREDEF
150 typedef unsigned int Ecore_X_Window;
151 #endif
152
153 #ifndef _ECORE_DIRECTFB_H
154 #define _ECORE_DIRECTFB_WINDOW_PREDEF
155 typedef struct _Ecore_DirectFB_Window Ecore_DirectFB_Window;
156 #endif
157
158 #ifndef __ECORE_WIN32_H__
159 typedef struct _Ecore_Win32_Window Ecore_Win32_Window;
160 #endif
161
162 #ifndef __ECORE_WINCE_H__
163 typedef struct _Ecore_WinCE_Window Ecore_WinCE_Window;
164 #endif
165
166 #ifndef __ECORE_COCOA_H__
167 typedef struct _Ecore_Cocoa_Window Ecore_Cocoa_Window;
168 #endif
169
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 */
174 #endif
175
176 #ifndef _ECORE_WAYLAND_H_
177 #define _ECORE_WAYLAND_WINDOW_PREDEF
178 typedef struct _Ecore_Wl_Window Ecore_Wl_Window;
179 #endif
180
181 /* module setup/shutdown calls */
182
183 EAPI int         ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine);
184
185 /**
186  * @brief Init the Ecore_Evas system.
187  *
188  * @return How many times the lib has been initialized, 0 indicates failure.
189  *
190  * Set up the Evas wrapper system. Init Evas and Ecore libraries.
191  *
192  * @see ecore_evas_shutdown()
193  */
194 EAPI int         ecore_evas_init(void);
195 /**
196  * @brief Shut down the Ecore_Evas system.
197  *
198  * @return 0 if ecore evas is fully shut down, or > 0 if it still being used.
199  *
200  * This closes the Evas wrapper system down. Shut down Evas and Ecore libraries.
201  *
202  * @see ecore_evas_init()
203  */
204 EAPI int         ecore_evas_shutdown(void);
205
206 EAPI void        ecore_evas_app_comp_sync_set(Eina_Bool do_sync);
207 EAPI Eina_Bool   ecore_evas_app_comp_sync_get(void);
208
209 /**
210  * @brief Returns a list of supported engines names.
211  *
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().
215  */
216 EAPI Eina_List  *ecore_evas_engines_get(void);
217 /**
218  * @brief Free list returned by ecore_evas_engines_get()
219  */
220 EAPI void        ecore_evas_engines_free(Eina_List *engines);
221 /**
222  * @brief Creates a new Ecore_Evas based on engine name and common parameters.
223  *
224  * @param engine_name engine name as returned by
225  *        ecore_evas_engines_get() or @c NULL to use environment variable
226  *        ECORE_EVAS_ENGINE, that can be undefined and in this case
227  *        this call will try to find the first working engine.
228  * @param x horizontal position of window (not supported in all engines)
229  * @param y vertical position of window (not supported in all engines)
230  * @param w width of window
231  * @param h height of window
232  * @param extra_options string with extra parameter, dependent on engines
233  *        or @ NULL. String is usually in the form: 'key1=value1;key2=value2'.
234  *        Pay attention that when getting that from shell commands, most
235  *        consider ';' as the command terminator, so you need to escape
236  *        it or use quotes.
237  *
238  * @return Ecore_Evas instance or @c NULL if creation failed.
239  */
240 EAPI Ecore_Evas *ecore_evas_new(const char *engine_name, int x, int y, int w, int h, const char *extra_options);
241 /**
242  * @brief Set whether an Ecore_Evas has an alpha channel or not.
243  *
244  * @param ee The Ecore_Evas to shape
245  * @param alpha @c EINA_TRUE to enable the alpha channel, @c EINA_FALSE to
246  * disable it
247  *
248  * This function allows you to make an Ecore_Evas translucent using an
249  * alpha channel. See ecore_evas_shaped_set() for details. The difference
250  * between a shaped window and a window with an alpha channel is that an
251  * alpha channel supports multiple levels of transparency, as opposed to
252  * the 1 bit transparency of a shaped window (a pixel is either opaque, or
253  * it's transparent).
254  *
255  * @warning Support for this depends on the underlying windowing system.
256  */
257 EAPI void        ecore_evas_alpha_set(Ecore_Evas *ee, Eina_Bool alpha);
258 /**
259  * @brief Query whether an Ecore_Evas has an alpha channel.
260  * @param ee The Ecore_Evas to query.
261  * @return @c EINA_TRUE if ee has an alpha channel, @c EINA_FALSE if it does
262  * not.
263  *
264  * This function returns @c EINA_TRUE if @p ee has an alpha channel, and
265  * @c EINA_FALSE if it does not.
266  *
267  * @see ecore_evas_alpha_set()
268  */
269 EAPI Eina_Bool   ecore_evas_alpha_get(const Ecore_Evas *ee);
270 /**
271  * @brief Set whether an Ecore_Evas has an transparent window or not.
272  *
273  * @param ee The Ecore_Evas to shape
274  * @param transparent @c EINA_TRUE to enable the transparent window,
275  * @c EINA_FALSE to disable it
276  *
277  * This function sets some translucency options, for more complete support see
278  * ecore_evas_alpha_set().
279  *
280  * @warning Support for this depends on the underlying windowing system.
281  *
282  * @see ecore_evas_alpha_set()
283  */
284 EAPI void        ecore_evas_transparent_set(Ecore_Evas *ee, Eina_Bool transparent);
285 /**
286  * @brief  Query whether an Ecore_Evas is transparent.
287  *
288  * @param ee The Ecore_Evas to query.
289  * @return @c EINA_TRUE if ee is transparent, @c EINA_FALSE if it isn't.
290  *
291  * @see ecore_evas_transparent_set()
292  */
293 EAPI Eina_Bool   ecore_evas_transparent_get(const Ecore_Evas *ee);
294 /**
295  * @brief  Get the geometry of an Ecore_Evas.
296  *
297  * @param ee The Ecore_Evas whose geometry y
298  * @param x A pointer to an int to place the x coordinate in
299  * @param y A pointer to an int to place the y coordinate in
300  * @param w A pointer to an int to place the w size in
301  * @param h A pointer to an int to place the h size in
302  *
303  * This function takes four pointers to (already allocated) ints, and places
304  * the geometry of @p ee in them. If any of the parameters is not desired you
305  * may pass @c NULL on them.
306  *
307  * @code
308  * int x, y, w, h;
309  * ecore_evas_geometry_get(ee, &x, &y, &w, &h);
310  * @endcode
311  *
312  * @see ecore_evas_new()
313  * @see ecore_evas_resize()
314  * @see ecore_evas_move()
315  * @see ecore_evas_move_resize()
316  */
317 EAPI void        ecore_evas_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
318 /**
319  * @brief  Get the geometry which an Ecore_Evas was latest recently requested.
320  *
321  * @param ee The Ecore_Evas whose geometry y
322  * @param x A pointer to an int to place the x coordinate in
323  * @param y A pointer to an int to place the y coordinate in
324  * @param w A pointer to an int to place the w size in
325  * @param h A pointer to an int to place the h size in
326  *
327  * This function takes four pointers to (already allocated) ints, and places
328  * the geometry which @p ee was latest recently requested . If any of the
329  * parameters is not desired you may pass @c NULL on them.
330  * This function can represent recently requested geometry.
331  * ecore_evas_geometry_get function returns the value is updated after engine
332  * finished request. By comparison, ecore_evas_request_geometry_get returns
333  * recently requested value.
334  *
335  * @code
336  * int x, y, w, h;
337  * ecore_evas_request_geometry_get(ee, &x, &y, &w, &h);
338  * @endcode
339  *
340  * @since 1.1
341  */
342 EAPI void        ecore_evas_request_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
343 /**
344  * @brief Set the focus of an Ecore_Evas' window.
345  *
346  * @param ee The Ecore_Evas
347  * @param on @c EINA_TRUE for focus, @c EINA_FALSE to defocus.
348  *
349  * This function focuses @p ee if @p on is @c EINA_TRUE, or unfocuses @p ee if
350  * @p on is @c EINA_FALSE.
351  *
352  * @warning Support for this depends on the underlying windowing system.
353  */
354 EAPI void        ecore_evas_focus_set(Ecore_Evas *ee, Eina_Bool on);
355 /**
356  * @brief Query whether an Ecore_Evas' window is focused or not.
357  *
358  * @param ee The Ecore_Evas to set
359  * @return @c EINA_TRUE if @p ee if focused, @c EINA_FALSE if not.
360  *
361  * @see ecore_evas_focus_set()
362  */
363 EAPI Eina_Bool   ecore_evas_focus_get(const Ecore_Evas *ee);
364 /**
365  * @brief Iconify or uniconify an Ecore_Evas' window.
366  *
367  * @param ee The Ecore_Evas
368  * @param on @c EINA_TRUE to iconify, @c EINA_FALSE to uniconify.
369  *
370  * This function iconifies @p ee if @p on is @c EINA_TRUE, or uniconifies @p ee
371  * if @p on is @c EINA_FALSE.
372  *
373  * @note Iconify and minimize are synonyms.
374  *
375  * @warning Support for this depends on the underlying windowing system.
376  */
377 EAPI void        ecore_evas_iconified_set(Ecore_Evas *ee, Eina_Bool on);
378 /**
379  * @brief Query whether an Ecore_Evas' window is iconified or not.
380  *
381  * @param ee The Ecore_Evas to set
382  * @return @c EINA_TRUE if @p ee is iconified, @c EINA_FALSE if not.
383  *
384  * @note Iconify and minimize are synonyms.
385  *
386  * @see ecore_evas_iconified_set()
387  */
388 EAPI Eina_Bool   ecore_evas_iconified_get(const Ecore_Evas *ee);
389 /**
390  * @brief Set whether an Ecore_Evas' window is borderless or not.
391  *
392  * @param ee The Ecore_Evas
393  * @param on @c EINA_TRUE for borderless, @c EINA_FALSE for bordered.
394  *
395  * This function makes @p ee borderless if @p on is @c EINA_TRUE, or bordered
396  * if @p on is @c EINA_FALSE.
397  *
398  * @warning Support for this depends on the underlying windowing system.
399  */
400 EAPI void        ecore_evas_borderless_set(Ecore_Evas *ee, Eina_Bool on);
401 /**
402  * @brief Query whether an Ecore_Evas' window is borderless or not.
403  *
404  * @param ee The Ecore_Evas to set
405  * @return @c EINA_TRUE if @p ee is borderless, @c EINA_FALSE if not.
406  *
407  * @see ecore_evas_borderless_set()
408  */
409 EAPI Eina_Bool   ecore_evas_borderless_get(const Ecore_Evas *ee);
410 /**
411  * @brief Set whether or not an Ecore_Evas' window is fullscreen.
412  *
413  * @param ee The Ecore_Evas
414  * @param on @c EINA_TRUE fullscreen, @c EINA_FALSE not.
415  *
416  * This function causes @p ee to be fullscreen if @p on is @c EINA_TRUE, or
417  * not if @p on is @c EINA_FALSE.
418  *
419  * @warning Support for this depends on the underlying windowing system.
420  */
421 EAPI void        ecore_evas_fullscreen_set(Ecore_Evas *ee, Eina_Bool on);
422 /**
423  * @brief Query whether an Ecore_Evas' window is fullscreen or not.
424  *
425  * @param ee The Ecore_Evas to set
426  * @return @c EINA_TRUE if @p ee is fullscreen, @c EINA_FALSE if not.
427  *
428  * @see ecore_evas_fullscreen_set()
429  */
430 EAPI Eina_Bool   ecore_evas_fullscreen_get(const Ecore_Evas *ee);
431 /**
432  * @brief Set another window that this window is a group member of
433  *
434  * @param ee The Ecore_Evas
435  * @param ee_group The other group member
436  *
437  * If @p ee_group is @c NULL, @p ee is removed from the group, otherwise it is
438  * added. Note that if you free the @p ee_group canvas before @p ee, then
439  * getting the group canvas with ecore_evas_window_group_get() will return
440  * an invalid handle.
441  *
442  * @warning Support for this depends on the underlying windowing system.
443  * @since 1.2
444  */
445 EAPI void        ecore_evas_window_group_set(Ecore_Evas *ee, const Ecore_Evas *ee_group);
446 /**
447  * @brief Get the canvas group set.
448  *
449  * This returns the handle set by ecore_evas_window_group_set().
450  *
451  * @param ee The Ecore_Evas to set
452  * @return The Canvas group handle
453  *
454  * @see ecore_evas_window_group_set()
455  * @since 1.2
456  */
457 EAPI const Ecore_Evas *ecore_evas_window_group_get(const Ecore_Evas *ee);
458 /**
459  * @brief Set the aspect ratio of a canvas window
460  *
461  * @param ee The Ecore_Evas
462  * @param aspect The aspect ratio (width divided by height), or 0 to disable
463  *
464  * This sets the desired aspect ratio of a canvas window
465  *
466  * @warning Support for this depends on the underlying windowing system.
467  * @since 1.2
468  */
469 EAPI void        ecore_evas_aspect_set(Ecore_Evas *ee, double aspect);
470 /**
471  * @brief Get the aspect ratio of a canvas window
472  *
473  * This returns the value set by ecore_evas_aspect_set().
474  *
475  * @param ee The Ecore_Evas to set
476  * @return The aspect ratio
477  *
478  * @see ecore_evas_aspect_set()
479  * @since 1.2
480  */
481 EAPI double      ecore_evas_aspect_get(const Ecore_Evas *ee);
482 /**
483  * @brief Set The urgent hint flag
484  *
485  * @param ee The Ecore_Evas
486  * @param urgent The urgent state flag
487  *
488  * This sets the "urgent" state hint on a window so the desktop environment
489  * can highlight it somehow.
490  *
491  * @warning Support for this depends on the underlying windowing system.
492  * @since 1.2
493  */
494 EAPI void        ecore_evas_urgent_set(Ecore_Evas *ee, Eina_Bool urgent);
495 /**
496  * @brief Get the urgent state on the cavas window
497  *
498  * This returns the value set by ecore_evas_urgent_set()
499  *
500  * @param ee The Ecore_Evas to set
501  * @return The urgent state set
502  *
503  * @see ecore_evas_urgent_set()
504  * @since 1.2
505  */
506 EAPI Eina_Bool   ecore_evas_urgent_get(const Ecore_Evas *ee);
507 /**
508  * @brief Set the modal state flag on the canvas window
509  *
510  * @param ee The Ecore_Evas
511  * @param modal The modal hint flag
512  *
513  * This hints if the window should be modal (eg if it is also transient
514  * for another window, the other window will maybe be denied focus by
515  * the desktop window manager).
516  *
517  * @warning Support for this depends on the underlying windowing system.
518  * @since 1.2
519  */
520 EAPI void        ecore_evas_modal_set(Ecore_Evas *ee, Eina_Bool modal);
521 /**
522  * @brief Get The modal flag
523  *
524  * This returns the value set by ecore_evas_modal_set().
525  *
526  * @param ee The Ecore_Evas to set
527  * @return The modal flag
528  *
529  * @see ecore_evas_modal_set()
530  * @since 1.2
531  */
532 EAPI Eina_Bool   ecore_evas_modal_get(const Ecore_Evas *ee);
533 /**
534  * @brief Set the "i demand attention" flag on a canvas window
535  *
536  * @param ee The Ecore_Evas
537  * @param demand The flag state to set
538  *
539  * A window may demand attention now (eg you must enter a password before
540  * continuing), and so it may flag a window with this.
541  *
542  * @warning Support for this depends on the underlying windowing system.
543  * @since 1.2
544  */
545 EAPI void        ecore_evas_demand_attention_set(Ecore_Evas *ee, Eina_Bool demand);
546 /**
547  * @brief Get the "i demand attention" flag
548  *
549  * This returns the value set by ecore_evas_demand_attention_set().
550  *
551  * @param ee The Ecore_Evas to set
552  * @return The "i demand attention" flag.
553  *
554  * @see ecore_evas_demand_attention_set()
555  * @since 1.2
556  */
557 EAPI Eina_Bool   ecore_evas_demand_attention_get(const Ecore_Evas *ee);
558 /**
559  * @brief Set the "focus skip" flag
560  *
561  * @param ee The Ecore_Evas
562  * @param skip The "focus skip" state to set.
563  *
564  * A window may not want to accept focus, be in the taskbar, pager etc.
565  * sometimes (example for a small notification window that hovers around
566  * a taskbar or panel, or hovers around a window until some activity
567  * dismisses it).
568  *
569  * @warning Support for this depends on the underlying windowing system.
570  * @since 1.2
571  */
572 EAPI void        ecore_evas_focus_skip_set(Ecore_Evas *ee, Eina_Bool skip);
573 /**
574  * @brief Get the "focus skip" flag
575  *
576  * This returns the value set by ecore_evas_focus_skip_set().
577  *
578  * @param ee The Ecore_Evas to set
579  * @return The "focus skip" flag.
580  *
581  * @see ecore_evas_focus_skip_set()
582  * @since 1.2
583  */
584 EAPI Eina_Bool   ecore_evas_focus_skip_get(const Ecore_Evas *ee);
585
586 /**
587  * @brief Set if this evas should ignore @b all events.
588  *
589  * @param ee The Ecore_Evas whose window's to ignore events.
590  * @param ignore The Ecore_Evas new ignore state.
591  *
592  * @warning Support for this depends on the underlying windowing system.
593  */
594 EAPI void        ecore_evas_ignore_events_set(Ecore_Evas *ee, Eina_Bool ignore);
595 /**
596  * @brief Returns the ignore state of an Ecore_Evas' window.
597  *
598  * @param ee The Ecore_Evas whose window's ignore events state is returned.
599  * @return The Ecore_Evas window's ignore state.
600  *
601  * @see ecore_evas_ignore_events_set()
602  */
603 EAPI Eina_Bool   ecore_evas_ignore_events_get(const Ecore_Evas *ee);
604 /**
605  * @brief Query whether an Ecore_Evas' window is visible or not.
606  *
607  * @param ee The Ecore_Evas to query.
608  * @return 1 if visible, 0 if not.
609  *
610  * This function queries @p ee and returns 1 if it is visible, and 0 if not.
611  *
612  * @see ecore_evas_show()
613  * @see ecore_evas_hide()
614  */
615 EAPI int         ecore_evas_visibility_get(const Ecore_Evas *ee);
616 /**
617  * @brief Set the layer of an Ecore_Evas' window.
618  *
619  * @param ee The Ecore_Evas
620  * @param layer The layer to put @p ee on.
621  *
622  * This function moves @p ee to the layer @p layer.
623  *
624  * @warning Support for this depends on the underlying windowing system.
625  *
626  * @see ecore_evas_lower()
627  * @see ecore_evas_raise()
628  */
629 EAPI void        ecore_evas_layer_set(Ecore_Evas *ee, int layer);
630 /**
631  * @brief Get the layer of an Ecore_Evas' window.
632  *
633  * @param ee The Ecore_Evas to set
634  * @return the layer @p ee's window is on.
635  *
636  * @see ecore_evas_layer_set()
637  * @see ecore_evas_lower()
638  * @see ecore_evas_raise()
639  */
640 EAPI int         ecore_evas_layer_get(const Ecore_Evas *ee);
641 /**
642  * @brief Maximize (or unmaximize) an Ecore_Evas' window.
643  *
644  * @param ee The Ecore_Evas
645  * @param on @c EINA_TRUE to maximize, @c EINA_FALSE to unmaximize.
646  *
647  * This function maximizes @p ee if @p on is @c EINA_TRUE, or unmaximizes @p ee
648  * if @p on is @c EINA_FALSE.
649  *
650  * @warning Support for this depends on the underlying windowing system.
651  */
652 EAPI void        ecore_evas_maximized_set(Ecore_Evas *ee, Eina_Bool on);
653 /**
654  * @brief Query whether an Ecore_Evas' window is maximized or not.
655  *
656  * @param ee The Ecore_Evas to set
657  * @return @c EINA_TRUE if @p ee is maximized, @c EINA_FALSE if not.
658  *
659  * @see ecore_evas_maximized_set()
660  */
661 EAPI Eina_Bool   ecore_evas_maximized_get(const Ecore_Evas *ee);
662 /**
663  * @brief Set Ecore_Evas's window profile list.
664  *
665  * @param ee The Ecore_Evas
666  * @param profiles The profile name list
667  * @param num_profiles The number of profile names
668  *
669  * @warning Support for this depends on the underlying windowing system.
670  * @since 1.3.0
671  */
672 EAPI void        ecore_evas_profiles_set(Ecore_Evas *ee, const char **profiles, unsigned int num_profiles);
673 /**
674  * @brief Get Ecore_Evas's window profile name.
675  *
676  * @param ee The Ecore_Evas
677  * @return The profile name
678  *
679  * @since 1.3.0
680  */
681 EAPI const char *ecore_evas_profile_get(const Ecore_Evas *ee);
682 /**
683  * @brief Move an Ecore_Evas.
684  *
685  * @param ee The Ecore_Evas to move
686  * @param x The x coordinate to move to
687  * @param y The y coordinate to move to
688  *
689  * This moves @p ee to the screen coordinates (@p x, @p y)
690  *
691  * @warning Support for this depends on the underlying windowing system.
692  *
693  * @see ecore_evas_new()
694  * @see ecore_evas_resize()
695  * @see ecore_evas_move_resize()
696  */
697 EAPI void        ecore_evas_move(Ecore_Evas *ee, int x, int y);
698 /**
699  * @brief Resize an Ecore_Evas.
700  *
701  * @param ee The Ecore_Evas to move
702  * @param w The w coordinate to resize to
703  * @param h The h coordinate to resize to
704  *
705  * This resizes @p ee to @p w x @p h.
706  *
707  * @warning Support for this depends on the underlying windowing system.
708  *
709  * @see ecore_evas_new()
710  * @see ecore_evas_move()
711  * @see ecore_evas_move_resize()
712  */
713 EAPI void        ecore_evas_resize(Ecore_Evas *ee, int w, int h);
714 /**
715  * @brief Move and resize an Ecore_Evas
716  *
717  * @param ee The Ecore_Evas to move and resize
718  * @param x The x coordinate to move to
719  * @param y The y coordinate to move to
720  * @param w The w coordinate to resize to
721  * @param h The h coordinate to resize to
722  *
723  * This moves @p ee to the screen coordinates (@p x, @p y) and  resizes
724  * it to @p w x @p h.
725  *
726  * @warning Support for this depends on the underlying windowing system.
727  *
728  * @see ecore_evas_new()
729  * @see ecore_evas_move()
730  * @see ecore_evas_resize()
731  */
732 EAPI void        ecore_evas_move_resize(Ecore_Evas *ee, int x, int y, int w, int h);
733 /**
734  * @brief Set the rotation of an Ecore_Evas' window.
735  *
736  * @param ee The Ecore_Evas
737  * @param rot the angle (in degrees) of rotation.
738  *
739  * The allowed values of @p rot depend on the engine being used. Most only
740  * allow multiples of 90.
741  *
742  * @warning Support for this depends on the underlying windowing system.
743  *
744  * @see ecore_evas_rotation_with_resize_set()
745  */
746 EAPI void        ecore_evas_rotation_set(Ecore_Evas *ee, int rot);
747 /**
748  * @brief Set the rotation of an Ecore_Evas' window
749  *
750  * @param ee The Ecore_Evas
751  * @param rot the angle (in degrees) of rotation.
752  *
753  * Like ecore_evas_rotation_set(), but it also resizes the window's contents so
754  * that they fit inside the current window geometry.
755  *
756  * @warning Support for this depends on the underlying windowing system.
757  *
758  * @see ecore_evas_rotation_set()
759  */
760 EAPI void        ecore_evas_rotation_with_resize_set(Ecore_Evas *ee, int rot);
761 /**
762  * @brief Get the rotation of an Ecore_Evas' window
763  *
764  * @param ee The Ecore_Evas
765  * @return the angle (in degrees) of rotation.
766  *
767  * @see ecore_evas_rotation_set()
768  * @see ecore_evas_rotation_with_resize_set()
769  */
770 EAPI int         ecore_evas_rotation_get(const Ecore_Evas *ee);
771 /**
772  * @brief Raise an Ecore_Evas' window.
773  *
774  * @param ee The Ecore_Evas to raise.
775  *
776  * This functions raises the Ecore_Evas to the front.
777  *
778  * @warning Support for this depends on the underlying windowing system.
779  *
780  * @see ecore_evas_lower()
781  * @see ecore_evas_layer_set()
782  */
783 EAPI void        ecore_evas_raise(Ecore_Evas *ee);
784 /**
785  * @brief Lower an Ecore_Evas' window.
786  *
787  * @param ee The Ecore_Evas to raise.
788  *
789  * This functions lowers the Ecore_Evas to the back.
790  *
791  * @warning Support for this depends on the underlying windowing system.
792  *
793  * @see ecore_evas_raise()
794  * @see ecore_evas_layer_set()
795  */
796 EAPI void        ecore_evas_lower(Ecore_Evas *ee);
797 /**
798  * @brief Set the title of an Ecore_Evas' window.
799  *
800  * @param ee The Ecore_Evas whose title you wish to set.
801  * @param t The title
802  *
803  * This function sets the title of @p ee to @p t.
804  *
805  * @warning Support for this depends on the underlying windowing system.
806  */
807 EAPI void        ecore_evas_title_set(Ecore_Evas *ee, const char *t);
808 /**
809  * @brief Get the title of an Ecore_Evas' window.
810  *
811  * @param ee The Ecore_Evas whose title you wish to get.
812  * @return The title of @p ee.
813  *
814  * This function returns the title of @p ee.
815  *
816  * @see ecore_evas_title_set()
817  */
818 EAPI const char *ecore_evas_title_get(const Ecore_Evas *ee);
819 /**
820  * @brief Set the name and class of an Ecore_Evas' window.
821  *
822  * @param ee the Ecore_Evas
823  * @param n the name
824  * @param c the class
825  *
826  * This function sets the name of @p ee to @p n, and its class to @p c. The
827  * meaning of @p name and @p class depends on the underlying windowing system.
828  *
829  * @warning Support for this depends on the underlying windowing system.
830  */
831 EAPI void        ecore_evas_name_class_set(Ecore_Evas *ee, const char *n, const char *c);
832 /**
833  * @brief Get the name and class of an Ecore_Evas' window
834  *
835  * This function gets the name of @p ee into @p n, and its class into
836  * @p c.
837  *
838  * @param ee The Ecore_Evas to query.
839  * @param n A pointer to a string to place the name in.
840  * @param c A pointer to a string to place the class in.
841  * @see ecore_evas_name_class_set()
842  */
843 EAPI void        ecore_evas_name_class_get(const Ecore_Evas *ee, const char **n, const char **c);
844 /**
845  * @brief Returns a pointer to the underlying window.
846  *
847  * @param ee The Ecore_Evas whose window is desired.
848  * @return A pointer to the underlying window.
849  *
850  * @warning Support for this depends on the underlying windowing system.
851  */
852 EAPI Ecore_Window ecore_evas_window_get(const Ecore_Evas *ee);
853
854
855 /* engine/target specific init calls */
856 EAPI Ecore_Evas     *ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
857 EAPI Ecore_X_Window  ecore_evas_software_x11_window_get(const Ecore_Evas *ee);
858 EAPI void            ecore_evas_software_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
859 EAPI Eina_Bool       ecore_evas_software_x11_direct_resize_get(const Ecore_Evas *ee);
860 EAPI void            ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
861
862 #define ECORE_EVAS_GL_X11_OPT_NONE     0
863 #define ECORE_EVAS_GL_X11_OPT_INDIRECT 1
864 #define ECORE_EVAS_GL_X11_OPT_VSYNC    2
865 #define ECORE_EVAS_GL_X11_OPT_LAST     3
866
867 EAPI Ecore_Evas     *ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
868 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);
869 EAPI Ecore_X_Window  ecore_evas_gl_x11_window_get(const Ecore_Evas *ee);
870 EAPI void            ecore_evas_gl_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
871 EAPI Eina_Bool       ecore_evas_gl_x11_direct_resize_get(const Ecore_Evas *ee);
872 EAPI void            ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
873 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));
874
875 EAPI Ecore_Evas     *ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
876 EAPI Ecore_X_Window  ecore_evas_xrender_x11_window_get(const Ecore_Evas *ee);
877 EAPI void            ecore_evas_xrender_x11_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
878 EAPI Eina_Bool       ecore_evas_xrender_x11_direct_resize_get(const Ecore_Evas *ee);
879 EAPI void            ecore_evas_xrender_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
880
881 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);
882 EAPI Ecore_X_Window  ecore_evas_software_x11_8_window_get(const Ecore_Evas *ee);
883 EAPI Ecore_X_Window  ecore_evas_software_x11_8_subwindow_get(const Ecore_Evas *ee);
884 EAPI void            ecore_evas_software_x11_8_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
885 EAPI Eina_Bool       ecore_evas_software_x11_8_direct_resize_get(const Ecore_Evas *ee);
886 EAPI void            ecore_evas_software_x11_8_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
887
888 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);
889 EAPI Ecore_X_Window  ecore_evas_software_x11_16_window_get(const Ecore_Evas *ee);
890 EAPI void            ecore_evas_software_x11_16_direct_resize_set(Ecore_Evas *ee, Eina_Bool on);
891 EAPI Eina_Bool       ecore_evas_software_x11_16_direct_resize_get(const Ecore_Evas *ee);
892 EAPI void            ecore_evas_software_x11_16_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
893
894 EAPI Ecore_Evas     *ecore_evas_fb_new(const char *disp_name, int rotation, int w, int h);
895
896 EAPI Ecore_Evas     *ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w, int h);
897 EAPI Ecore_DirectFB_Window *ecore_evas_directfb_window_get(const Ecore_Evas *ee);
898
899
900 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);
901 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);
902 EAPI void            ecore_evas_wayland_resize(Ecore_Evas *ee, int location);
903 EAPI void            ecore_evas_wayland_move(Ecore_Evas *ee, int x, int y);
904
905 /* EAPI void            ecore_evas_wayland_drag_start(Ecore_Evas *ee, Ecore_Evas *drag_ee, void *source); */
906 EAPI void            ecore_evas_wayland_pointer_set(Ecore_Evas *ee, int hot_x, int hot_y);
907 EAPI void            ecore_evas_wayland_type_set(Ecore_Evas *ee, int type);
908 EAPI Ecore_Wl_Window *ecore_evas_wayland_window_get(const Ecore_Evas *ee);
909
910 /**
911  * @brief Create a new @c Ecore_Evas canvas bound to the Evas
912  * @b buffer engine
913  *
914  * @param w The width of the canvas, in pixels
915  * @param h The height of the canvas, in pixels
916  * @return A new @c Ecore_Evas instance or @c NULL, on failure
917  *
918  * This creates a new buffer canvas wrapper, with image data array
919  * @b bound to the ARGB format, 8 bits per pixel.
920  *
921  * This function will allocate the needed pixels array with canonical
922  * @c malloc(). If you wish a custom function to allocate it, consider
923  * using ecore_evas_buffer_allocfunc_new(), instead.
924  *
925  * @note This function actually is a wrapper on
926  * ecore_evas_buffer_allocfunc_new(), using the same @a w and @a h
927  * arguments and canonical @c malloc() and @c free() to the memory
928  * allocation and freeing functions. See that function's documentation
929  * for more details.
930  */
931 EAPI Ecore_Evas     *ecore_evas_buffer_new(int w, int h);
932
933 /**
934  * @brief Create a new @c Ecore_Evas canvas bound to the Evas
935  * @b buffer engine, giving custom allocation and freeing functions for
936  * the canvas memory region
937  *
938  * @param w The width of the canvas, in canvas units
939  * @param h The height of the canvas, in canvas units
940  * @param alloc_func Function to be called to allocate the memory
941  * needed for the new buffer canvas. @a data will be passed the same
942  * value as the @p data of this function, while @a size will be passed
943  * @p w times @p h times @c sizeof(int).
944  * @param free_func Function to be called to free the memory used by
945  * the new buffer canvas. @a data will be passed the same value as the
946  * @p data of this function, while @a pix will be passed the canvas
947  * memory pointer.
948  * @param data Custom data to be passed to the allocation and freeing
949  * functions
950  * @return A new @c Ecore_Evas instance or @c NULL, on failure
951  *
952  * This creates a new buffer canvas wrapper, with image data array
953  * @b bound to the ARGB format, 8 bits per pixel.
954  *
955  * This function is useful when one wants an @c Ecore_Evas buffer
956  * canvas with a custom allocation function, like one getting memory
957  * chunks from a memory pool, for example.
958  *
959  * On any resizing of this @c Ecore_Evas buffer canvas, its image data
960  * will be @b freed, to be allocated again with the new size.
961  *
962  * @note @p w and @p h sizes have to greater or equal to 1. Otherwise,
963  * they'll be interpreted as 1, exactly.
964  *
965  * @see ecore_evas_buffer_new()
966  */
967 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);
968
969 /**
970  * @brief Grab a pointer to the actual pixels array of a given
971  * @c Ecore_Evas @b buffer canvas/window.
972  *
973  * @param ee An @c Ecore_Evas handle
974  * @return A pointer to the internal pixels array of @p ee
975  *
976  * Besides returning a pointer to the actual pixel array of the given
977  * canvas, this call will force a <b>rendering update on @p ee</b>,
978  * first.
979  *
980  * A common use case for this call is to create an image object, from
981  * @b another canvas, to have as data @p ee's contents, thus
982  * snapshoting the canvas. For that case, one can also use the
983  * ecore_evas_object_image_new() helper function.
984  */
985 EAPI const void     *ecore_evas_buffer_pixels_get(Ecore_Evas *ee);
986
987 /**
988  * @brief Create a new @c Ecore_Evas canvas bound to the Evas
989  * @b ews (Ecore + Evas Single Process Windowing System) engine
990  *
991  * EWS is a simple single process windowing system. The backing store
992  * is also an @c Ecore_Evas that can be setup with
993  * ecore_evas_ews_setup() and retrieved with
994  * ecore_evas_ews_ecore_evas_get(). It will allow window management
995  * using events prefixed with @c ECORE_EVAS_EVENT_EWS_.
996  *
997  * The EWS windows (returned by this function or
998  * ecore_evas_new("ews"...)) will all be software buffer windows
999  * automatic rendered to the backing store.
1000  *
1001  * @param x horizontal position of window, in pixels
1002  * @param y vertical position of window, in pixels
1003  * @param w The width of the canvas, in pixels
1004  * @param h The height of the canvas, in pixels
1005  * @return A new @c Ecore_Evas instance or @c NULL, on failure
1006  *
1007  * @see ecore_evas_ews_setup()
1008  * @see ecore_evas_ews_ecore_evas_get()
1009  *
1010  * @since 1.1
1011  */
1012 EAPI Ecore_Evas     *ecore_evas_ews_new(int x, int y, int w, int h);
1013
1014
1015 /**
1016  * Returns the backing store image object that represents the given
1017  * window in EWS.
1018  * @return The evas object of EWS backing store.
1019  *
1020  * @note This should not be modified anyhow, but may be helpful to
1021  *       determine stacking and geometry of it for window managers
1022  *       that decorate windows.
1023  *
1024  * @param ee The Ecore_Evas from which to get the backing store.
1025  * @see ecore_evas_ews_manager_set()
1026  * @see ecore_evas_ews_evas_get()
1027  * @since 1.1
1028  */
1029 EAPI Evas_Object *ecore_evas_ews_backing_store_get(const Ecore_Evas *ee);
1030
1031 /**
1032  * Calls the window to be deleted (freed), but can let user decide to
1033  * forbid it by using ecore_evas_callback_delete_request_set()
1034  *
1035  * @param ee The Ecore_Evas for which window will be deleted.
1036  * @since 1.1
1037  */
1038 EAPI void ecore_evas_ews_delete_request(Ecore_Evas *ee);
1039
1040 /**
1041  * @brief Create an Evas image object with image data <b>bound to an
1042  * own, internal @c Ecore_Evas canvas wrapper</b>
1043  *
1044  * @param ee_target @c Ecore_Evas to have the canvas receiving the new
1045  * image object
1046  * @return A handle to the new image object
1047  *
1048  * This will create a @b special Evas image object. The image's pixel
1049  * array will get bound to the same image data array of an @b internal
1050  * @b buffer @c Ecore_Evas canvas. The user of this function is, then,
1051  * supposed to grab that @c Ecore_Evas handle, with
1052  * ecore_evas_object_ecore_evas_get(), and use its canvas to render
1053  * whichever contents he/she wants, @b independently of the contents
1054  * of the canvas owned by @p ee_target. Those contents will reflect on
1055  * the canvas of @p ee, though, being exactly the image data of the
1056  * object returned by this function.
1057  *
1058  * This is a helper function for the scenario of one wanting to grab a
1059  * buffer canvas' contents (with ecore_evas_buffer_pixels_get()) to be
1060  * used on another canvas, for whichever reason. The most common goal
1061  * of this setup is to @b save an image file with a whole canvas as
1062  * contents, which could not be achieved by using an image file within
1063  * the target canvas.
1064  *
1065  * @warning Always resize the returned image and its underlying
1066  * @c Ecore_Evas handle accordingly. They must be kept with same sizes
1067  * for things to work as expected. Also, you @b must issue
1068  * @c evas_object_image_size_set() on the image with that same size. If
1069  * the image is to be shown in a canvas bound to an engine different
1070  * than the buffer one, then you must also set this image's @b fill
1071  * properties accordingly.
1072  *
1073  * @note The image returned will always be bound to the
1074  * @c EVAS_COLORSPACE_ARGB8888 colorspace, always.
1075  *
1076  * @note Use ecore_evas_object_evas_get() to grab the image's internal
1077  * own canvas directly.
1078  *
1079  * @note If snapshoting this image's internal canvas, remember to
1080  * flush its internal @c Ecore_Evas firstly, with
1081  * ecore_evas_manual_render().
1082  */
1083 EAPI Evas_Object    *ecore_evas_object_image_new(Ecore_Evas *ee_target);
1084
1085 /**
1086  * @brief Retrieve the internal @c Ecore_Evas handle of an image
1087  * object created via ecore_evas_object_image_new()
1088  *
1089  * @param obj A handle to an image object created via
1090  * ecore_evas_object_image_new()
1091  * @return The underlying @c Ecore_Evas handle in @p obj
1092  */
1093 EAPI Ecore_Evas     *ecore_evas_object_ecore_evas_get(Evas_Object *obj);
1094
1095 /**
1096  * @brief Retrieve the canvas bound to the internal @c Ecore_Evas
1097  * handle of an image object created via ecore_evas_object_image_new()
1098  *
1099  * @param obj A handle to an image object created via
1100  * ecore_evas_object_image_new()
1101  * @return A handle to @p obj's underlying @c Ecore_Evas's canvas
1102  */
1103 EAPI Evas           *ecore_evas_object_evas_get(Evas_Object *obj);
1104
1105 EAPI Ecore_Evas     *ecore_evas_software_gdi_new(Ecore_Win32_Window *parent,
1106                                                  int                 x,
1107                                                  int                 y,
1108                                                  int                 width,
1109                                                  int                 height);
1110
1111 EAPI Ecore_Evas     *ecore_evas_software_ddraw_new(Ecore_Win32_Window *parent,
1112                                                    int                 x,
1113                                                    int                 y,
1114                                                    int                 width,
1115                                                    int                 height);
1116
1117 EAPI Ecore_Evas     *ecore_evas_software_16_ddraw_new(Ecore_Win32_Window *parent,
1118                                                       int                 x,
1119                                                       int                 y,
1120                                                       int                 width,
1121                                                       int                 height);
1122
1123 EAPI Ecore_Evas     *ecore_evas_direct3d_new(Ecore_Win32_Window *parent,
1124                                              int                 x,
1125                                              int                 y,
1126                                              int                 width,
1127                                              int                 height);
1128
1129 EAPI Ecore_Evas *ecore_evas_gl_glew_new(Ecore_Win32_Window *parent,
1130                                         int                 x,
1131                                         int                 y,
1132                                         int                 width,
1133                                         int                 height);
1134
1135 EAPI Ecore_Win32_Window *ecore_evas_win32_window_get(const Ecore_Evas *ee);
1136
1137 EAPI Ecore_Evas     *ecore_evas_sdl_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha);
1138 EAPI Ecore_Evas     *ecore_evas_sdl16_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha);
1139 EAPI Ecore_Evas     *ecore_evas_gl_sdl_new(const char* name, int w, int h, int fullscreen, int noframe);
1140
1141 EAPI Ecore_Evas     *ecore_evas_software_wince_new(Ecore_WinCE_Window *parent,
1142                                                    int                 x,
1143                                                    int                 y,
1144                                                    int                 width,
1145                                                    int                 height);
1146
1147 EAPI Ecore_Evas     *ecore_evas_software_wince_fb_new(Ecore_WinCE_Window *parent,
1148                                                       int                 x,
1149                                                       int                 y,
1150                                                       int                 width,
1151                                                       int                 height);
1152
1153 EAPI Ecore_Evas     *ecore_evas_software_wince_gapi_new(Ecore_WinCE_Window *parent,
1154                                                         int                 x,
1155                                                         int                 y,
1156                                                         int                 width,
1157                                                         int                 height);
1158
1159 EAPI Ecore_Evas     *ecore_evas_software_wince_ddraw_new(Ecore_WinCE_Window *parent,
1160                                                          int                 x,
1161                                                          int                 y,
1162                                                          int                 width,
1163                                                          int                 height);
1164
1165 EAPI Ecore_Evas     *ecore_evas_software_wince_gdi_new(Ecore_WinCE_Window *parent,
1166                                                        int                 x,
1167                                                        int                 y,
1168                                                        int                 width,
1169                                                        int                 height);
1170
1171 EAPI Ecore_WinCE_Window *ecore_evas_software_wince_window_get(const Ecore_Evas *ee);
1172
1173 EAPI Ecore_Evas *ecore_evas_cocoa_new(Ecore_Cocoa_Window *parent,
1174                                       int x,
1175                                       int y,
1176                                       int w,
1177                                       int h);
1178
1179 EAPI Ecore_Evas *ecore_evas_psl1ght_new(const char* name, int w, int h);
1180
1181
1182 /* generic manipulation calls */
1183 /**
1184  * @brief Get the engine name used by this Ecore_Evas(window).
1185  *
1186  * @param ee Ecore_Evas whose engine's name is desired.
1187  * @return A string that can(usually) be used in ecore_evas_new()
1188  *
1189  * @see ecore_evas_free()
1190  */
1191 EAPI const char *ecore_evas_engine_name_get(const Ecore_Evas *ee);
1192 /**
1193  * @brief Return the Ecore_Evas for this Evas
1194  *
1195  * @param e The Evas to get the Ecore_Evas from
1196  * @return The Ecore_Evas that holds this Evas, or @c NULL if not held by one.
1197  *
1198  * @warning Only use on Evas' created with ecore evas!
1199  */
1200 EAPI Ecore_Evas *ecore_evas_ecore_evas_get(const Evas *e);
1201 /**
1202  * @brief Free an Ecore_Evas
1203  *
1204  * @param ee The Ecore_Evas to free
1205  *
1206  * This frees up any memory used by the Ecore_Evas.
1207  */
1208 EAPI void        ecore_evas_free(Ecore_Evas *ee);
1209 /**
1210  * @brief Retrieve user data associated with an Ecore_Evas.
1211  *
1212  * @param ee The Ecore_Evas to retrieve the user data from.
1213  * @param key The key which the user data to be retrieved is associated with.
1214  *
1215  * This function retrieves user specific data that has been stored within an
1216  * Ecore_Evas structure with ecore_evas_data_set().
1217  *
1218  * @returns @c NULL on error or no data found, A pointer to the user data on
1219  *     success.
1220  *
1221  * @see ecore_evas_data_set()
1222  */
1223 EAPI void       *ecore_evas_data_get(const Ecore_Evas *ee, const char *key);
1224 /**
1225  * @brief Store user data in an Ecore_Evas structure.
1226  *
1227  * @param ee The Ecore_Evas to store the user data in.
1228  * @param key A unique string to associate the user data against. Cannot
1229  * be NULL.
1230  * @param data A pointer to the user data to store.
1231  *
1232  * This function associates the @p data with a @p key which is stored by
1233  * the Ecore_Evas @p ee. Be aware that a call to ecore_evas_free() will
1234  * not free any memory for the associated user data, this is the responsibility
1235  * of the caller.
1236  *
1237  * @see ecore_evas_callback_pre_free_set()
1238  * @see ecore_evas_free()
1239  * @see ecore_evas_data_get()
1240  */
1241 EAPI void        ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data);
1242 /**
1243  * Set a callback for Ecore_Evas resize events.
1244  * @param ee The Ecore_Evas to set callbacks on
1245  * @param func The function to call
1246
1247  * A call to this function will set a callback on an Ecore_Evas, causing
1248  * @p func to be called whenever @p ee is resized.
1249  *
1250  * @warning If and when this function is called depends on the underlying
1251  * windowing system.
1252  */
1253 EAPI void        ecore_evas_callback_resize_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1254 /**
1255  * Set a callback for Ecore_Evas move events.
1256  * @param ee The Ecore_Evas to set callbacks on
1257  * @param func The function to call
1258
1259  * A call to this function will set a callback on an Ecore_Evas, causing
1260  * @p func to be called whenever @p ee is moved.
1261  *
1262  * @warning If and when this function is called depends on the underlying
1263  * windowing system.
1264  */
1265 EAPI void        ecore_evas_callback_move_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1266 /**
1267  * Set a callback for Ecore_Evas show events.
1268  * @param ee The Ecore_Evas to set callbacks on
1269  * @param func The function to call
1270
1271  * A call to this function will set a callback on an Ecore_Evas, causing
1272  * @p func to be called whenever @p ee is shown.
1273  *
1274  * @warning If and when this function is called depends on the underlying
1275  * windowing system.
1276  */
1277 EAPI void        ecore_evas_callback_show_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1278 /**
1279  * Set a callback for Ecore_Evas hide events.
1280  * @param ee The Ecore_Evas to set callbacks on
1281  * @param func The function to call
1282
1283  * A call to this function will set a callback on an Ecore_Evas, causing
1284  * @p func to be called whenever @p ee is hidden.
1285  *
1286  * @warning If and when this function is called depends on the underlying
1287  * windowing system.
1288  */
1289 EAPI void        ecore_evas_callback_hide_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1290 /**
1291  * Set a callback for Ecore_Evas delete request events.
1292  * @param ee The Ecore_Evas to set callbacks on
1293  * @param func The function to call
1294
1295  * A call to this function will set a callback on an Ecore_Evas, causing
1296  * @p func to be called whenever @p ee gets a delete request.
1297  *
1298  * @warning If and when this function is called depends on the underlying
1299  * windowing system.
1300  */
1301 EAPI void        ecore_evas_callback_delete_request_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1302 /**
1303  * Set a callback for Ecore_Evas destroy events.
1304  * @param ee The Ecore_Evas to set callbacks on
1305  * @param func The function to call
1306
1307  * A call to this function will set a callback on an Ecore_Evas, causing
1308  * @p func to be called whenever @p ee is destroyed.
1309  *
1310  * @warning If and when this function is called depends on the underlying
1311  * windowing system.
1312  */
1313 EAPI void        ecore_evas_callback_destroy_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1314 /**
1315  * Set a callback for Ecore_Evas focus in events.
1316  * @param ee The Ecore_Evas to set callbacks on
1317  * @param func The function to call
1318
1319  * A call to this function will set a callback on an Ecore_Evas, causing
1320  * @p func to be called whenever @p ee gets focus.
1321  *
1322  * @warning If and when this function is called depends on the underlying
1323  * windowing system.
1324  */
1325 EAPI void        ecore_evas_callback_focus_in_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1326 /**
1327  * Set a callback for Ecore_Evas focus out events.
1328  * @param ee The Ecore_Evas to set callbacks on
1329  * @param func The function to call
1330
1331  * A call to this function will set a callback on an Ecore_Evas, causing
1332  * @p func to be called whenever @p ee loses focus.
1333  *
1334  * @warning If and when this function is called depends on the underlying
1335  * windowing system.
1336  */
1337 EAPI void        ecore_evas_callback_focus_out_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1338 /**
1339  * Set a callback for Ecore_Evas sticky events.
1340  * @param ee The Ecore_Evas to set callbacks on
1341  * @param func The function to call
1342
1343  * A call to this function will set a callback on an Ecore_Evas, causing
1344  * @p func to be called whenever @p ee becomes sticky.
1345  *
1346  * @warning If and when this function is called depends on the underlying
1347  * windowing system.
1348  */
1349 EAPI void        ecore_evas_callback_sticky_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1350 /**
1351  * Set a callback for Ecore_Evas un-sticky events.
1352  * @param ee The Ecore_Evas to set callbacks on
1353  * @param func The function to call
1354
1355  * A call to this function will set a callback on an Ecore_Evas, causing
1356  * @p func to be called whenever @p ee becomes un-sticky.
1357  *
1358  * @warning If and when this function is called depends on the underlying
1359  * windowing system.
1360  */
1361 EAPI void        ecore_evas_callback_unsticky_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1362 /**
1363  * Set a callback for Ecore_Evas mouse in events.
1364  * @param ee The Ecore_Evas to set callbacks on
1365  * @param func The function to call
1366
1367  * A call to this function will set a callback on an Ecore_Evas, causing
1368  * @p func to be called whenever the mouse enters @p ee.
1369  *
1370  * @warning If and when this function is called depends on the underlying
1371  * windowing system.
1372  */
1373 EAPI void        ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1374 /**
1375  * Set a callback for Ecore_Evas mouse out events.
1376  * @param ee The Ecore_Evas to set callbacks on
1377  * @param func The function to call
1378
1379  * A call to this function will set a callback on an Ecore_Evas, causing
1380  * @p func to be called whenever the mouse leaves @p ee.
1381  *
1382  * @warning If and when this function is called depends on the underlying
1383  * windowing system.
1384  */
1385 EAPI void        ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1386 /**
1387  * Set a callback for Ecore_Evas pre render events.
1388  * @param ee The Ecore_Evas to set callbacks on
1389  * @param func The function to call
1390
1391  * A call to this function will set a callback on an Ecore_Evas, causing
1392  * @p func to be called just before the evas in @p ee is rendered.
1393  *
1394  * @warning If and when this function is called depends on the underlying
1395  * windowing system.
1396  */
1397 EAPI void        ecore_evas_callback_pre_render_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1398 /**
1399  * Set a callback for Ecore_Evas mouse post render events.
1400  * @param ee The Ecore_Evas to set callbacks on
1401  * @param func The function to call
1402
1403  * A call to this function will set a callback on an Ecore_Evas, causing
1404  * @p func to be called just after the evas in @p ee is rendered.
1405  *
1406  * @warning If and when this function is called depends on the underlying
1407  * windowing system.
1408  */
1409 EAPI void        ecore_evas_callback_post_render_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1410 /**
1411  * Set a callback for Ecore_Evas pre-free event.
1412  * @param ee The Ecore_Evas to set callbacks on
1413  * @param func The function to call
1414  *
1415  * A call to this function will set a callback on an Ecore_Evas, causing
1416  * @p func to be called just before the instance @p ee is freed.
1417  *
1418  * @warning If and when this function is called depends on the underlying
1419  * windowing system.
1420  */
1421 EAPI void        ecore_evas_callback_pre_free_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1422 /**
1423  * Set a callback for Ecore_Evas state changes.
1424  * @param ee The Ecore_Evas to set callbacks on
1425  * @param func The function to call
1426
1427  * A call to this function will set a callback on an Ecore_Evas, causing
1428  * @p func to be called whenever @p ee changes state.
1429  *
1430  * @since 1.2
1431  * @warning If and when this function is called depends on the underlying
1432  * windowing system.
1433  */
1434 EAPI void        ecore_evas_callback_state_change_set(Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
1435
1436 /**
1437  * Get an Ecore_Evas's Evas
1438  * @param ee The Ecore_Evas whose Evas you wish to get
1439  * @return The Evas wrapped by @p ee
1440  *
1441  * This function returns the Evas contained within @p ee.
1442  */
1443 EAPI Evas       *ecore_evas_get(const Ecore_Evas *ee);
1444
1445 /**
1446  * Provide Managed move co-ordinates for an Ecore_Evas
1447  * @param ee The Ecore_Evas to move
1448  * @param x The x coordinate to set as the managed location
1449  * @param y The y coordinate to set as the managed location
1450  *
1451  * This sets the managed geometry position of the @p ee to (@p x, @p y)
1452  */
1453 EAPI void        ecore_evas_managed_move(Ecore_Evas *ee, int x, int y);
1454
1455 /**
1456  * Set whether an Ecore_Evas is shaped or not.
1457  *
1458  * @param ee The Ecore_Evas to shape.
1459  * @param shaped @c EINA_TRUE to shape, @c EINA_FALSE to not.
1460  *
1461  * This function allows one to make an Ecore_Evas shaped to the contents of the
1462  * evas. If @p shaped is @c EINA_TRUE, @p ee will be transparent in parts of
1463  * the evas that contain no objects. If @p shaped is @c EINA_FALSE, then @p ee
1464  * will be rectangular, and parts with no data will show random framebuffer
1465  * artifacting. For non-shaped Ecore_Evases, it is recommended to cover the
1466  * entire evas with a background object.
1467  */
1468 EAPI void        ecore_evas_shaped_set(Ecore_Evas *ee, Eina_Bool shaped);
1469
1470 /**
1471  * Query whether an Ecore_Evas is shaped or not.
1472  *
1473  * @param ee The Ecore_Evas to query.
1474  * @return @c EINA_TRUE if shaped, @c EINA_FALSE if not.
1475  *
1476  * This function returns @c EINA_TRUE if @p ee is shaped, and @c EINA_FALSE if not.
1477  */
1478 EAPI Eina_Bool   ecore_evas_shaped_get(const Ecore_Evas *ee);
1479 /**
1480  * @brief Show an Ecore_Evas' window
1481  *
1482  * @param ee The Ecore_Evas to show.
1483  *
1484  * This function makes @p ee visible.
1485  */
1486 EAPI void        ecore_evas_show(Ecore_Evas *ee);
1487 /**
1488  * @brief Hide an Ecore_Evas' window
1489  *
1490  * @param ee The Ecore_Evas to hide.
1491  *
1492  * This function makes @p ee hidden(not visible).
1493  */
1494 EAPI void        ecore_evas_hide(Ecore_Evas *ee);
1495
1496 /**
1497  * Activate (set focus to, via the window manager) an Ecore_Evas' window.
1498  * @param ee The Ecore_Evas to activate.
1499  *
1500  * This functions activates the Ecore_Evas.
1501  */
1502 EAPI void        ecore_evas_activate(Ecore_Evas *ee);
1503
1504
1505 /**
1506  * Set the minimum size of a given @c Ecore_Evas window
1507  *
1508  * @param ee An @c Ecore_Evas window's handle
1509  * @param w The minimum width
1510  * @param h The minimum height
1511  *
1512  * This function sets the minimum size of @p ee to be @p w x @p h.
1513  * One won't be able to resize that window to dimensions smaller than
1514  * the ones set.
1515  *
1516  * @note When base sizes are set, via ecore_evas_size_base_set(),
1517  * they'll be used to calculate a window's minimum size, instead of
1518  * those set by this function.
1519  *
1520  * @see ecore_evas_size_min_get()
1521  */
1522 EAPI void        ecore_evas_size_min_set(Ecore_Evas *ee, int w, int h);
1523
1524 /**
1525  * Get the minimum size set for a given @c Ecore_Evas window
1526  *
1527  * @param ee An @c Ecore_Evas window's handle
1528  * @param w A pointer to an int to place the minimum width in.
1529  * @param h A pointer to an int to place the minimum height in.
1530  *
1531  * @note Use @c NULL pointers on the size components you're not
1532  * interested in: they'll be ignored by the function.
1533  *
1534  * @see ecore_evas_size_min_set() for more details
1535  */
1536 EAPI void        ecore_evas_size_min_get(const Ecore_Evas *ee, int *w, int *h);
1537
1538 /**
1539  * Set the maximum size of a given @c Ecore_Evas window
1540  *
1541  * @param ee An @c Ecore_Evas window's handle
1542  * @param w The maximum width
1543  * @param h The maximum height
1544  *
1545  * This function sets the maximum size of @p ee to be @p w x @p h.
1546  * One won't be able to resize that window to dimensions bigger than
1547  * the ones set.
1548  *
1549  * @see ecore_evas_size_max_get()
1550  */
1551 EAPI void        ecore_evas_size_max_set(Ecore_Evas *ee, int w, int h);
1552
1553 /**
1554  * Get the maximum size set for a given @c Ecore_Evas window
1555  *
1556  * @param ee An @c Ecore_Evas window's handle
1557  * @param w A pointer to an int to place the maximum width in.
1558  * @param h A pointer to an int to place the maximum height in.
1559  *
1560  * @note Use @c NULL pointers on the size components you're not
1561  * interested in: they'll be ignored by the function.
1562  *
1563  * @see ecore_evas_size_max_set() for more details
1564  */
1565 EAPI void        ecore_evas_size_max_get(const Ecore_Evas *ee, int *w, int *h);
1566
1567 /**
1568  * Set the base size for a given @c Ecore_Evas window
1569  *
1570  * @param ee An @c Ecore_Evas window's handle
1571  * @param w The base width
1572  * @param h The base height
1573  *
1574  * This function sets the @b base size of @p ee to be @p w x @p h.
1575  * When base sizes are set, they'll be used to calculate a window's
1576  * @b minimum size, instead of those set by ecore_evas_size_min_get().
1577  *
1578  * @see ecore_evas_size_base_get()
1579  */
1580 EAPI void        ecore_evas_size_base_set(Ecore_Evas *ee, int w, int h);
1581
1582 /**
1583  * Get the base size set for a given @c Ecore_Evas window
1584  *
1585  * @param ee An @c Ecore_Evas window's handle
1586  * @param w A pointer to an int to place the base width in.
1587  * @param h A pointer to an int to place the base height in.
1588  *
1589  * @note Use @c NULL pointers on the size components you're not
1590  * interested in: they'll be ignored by the function.
1591  *
1592  * @see ecore_evas_size_base_set() for more details
1593  */
1594 EAPI void        ecore_evas_size_base_get(const Ecore_Evas *ee, int *w, int *h);
1595
1596 /**
1597  * Set the "size step" for a given @c Ecore_Evas window
1598  *
1599  * @param ee An @c Ecore_Evas window's handle
1600  * @param w The step width
1601  * @param h The step height
1602  *
1603  * This function sets the size steps of @p ee to be @p w x @p h. This
1604  * limits the size of this @c Ecore_Evas window to be @b always an
1605  * integer multiple of the step size, for each axis.
1606  */
1607 EAPI void        ecore_evas_size_step_set(Ecore_Evas *ee, int w, int h);
1608
1609 /**
1610  * Get the "size step" set for a given @c Ecore_Evas window
1611  *
1612  * @param ee An @c Ecore_Evas window's handle
1613  * @param w A pointer to an int to place the step width in.
1614  * @param h A pointer to an int to place the step height in.
1615  *
1616  * @note Use @c NULL pointers on the size components you're not
1617  * interested in: they'll be ignored by the function.
1618  *
1619  * @see ecore_evas_size_base_set() for more details
1620  */
1621 EAPI void        ecore_evas_size_step_get(const Ecore_Evas *ee, int *w, int *h);
1622
1623 /**
1624  * @brief Set the cursor of an Ecore_Evas.
1625  *
1626  * @param ee The Ecore_Evas
1627  * @param file  The path to an image file for the cursor.
1628  * @param layer The layer in which the cursor will appear.
1629  * @param hot_x The x coordinate of the cursor's hot spot.
1630  * @param hot_y The y coordinate of the cursor's hot spot.
1631  *
1632  * This function makes the mouse cursor over @p ee be the image specified by
1633  * @p file. The actual point within the image that the mouse is at is specified
1634  * by @p hot_x and @p hot_y, which are coordinates with respect to the top left
1635  * corner of the cursor image.
1636  *
1637  * @note This function creates an object from the image and uses
1638  * ecore_evas_object_cursor_set().
1639  *
1640  * @see ecore_evas_object_cursor_set()
1641  */
1642 EAPI void        ecore_evas_cursor_set(Ecore_Evas *ee, const char *file, int layer, int hot_x, int hot_y);
1643 /**
1644  * @brief Get information about an Ecore_Evas' cursor
1645  *
1646  * @param ee The Ecore_Evas to set
1647  * @param obj A pointer to an Evas_Object to place the cursor Evas_Object.
1648  * @param layer A pointer to an int to place the cursor's layer in.
1649  * @param hot_x A pointer to an int to place the cursor's hot_x coordinate in.
1650  * @param hot_y A pointer to an int to place the cursor's hot_y coordinate in.
1651  *
1652  * This function queries information about an Ecore_Evas' cursor.
1653  *
1654  * @see ecore_evas_cursor_set()
1655  * @see ecore_evas_object_cursor_set()
1656  */
1657 EAPI void        ecore_evas_cursor_get(const Ecore_Evas *ee, Evas_Object **obj, int *layer, int *hot_x, int *hot_y);
1658 /**
1659  * @brief Set the cursor of an Ecore_Evas
1660  *
1661  * @param ee The Ecore_Evas
1662  *
1663  * @param obj The Evas_Object which will be the cursor.
1664  * @param layer The layer in which the cursor will appear.
1665  * @param hot_x The x coordinate of the cursor's hot spot.
1666  * @param hot_y The y coordinate of the cursor's hot spot.
1667  *
1668  * This function makes the mouse cursor over @p ee be the object specified by
1669  * @p obj. The actual point within the object that the mouse is at is specified
1670  * by @p hot_x and @p hot_y, which are coordinates with respect to the top left
1671  * corner of the cursor object.
1672  *
1673  * @see ecore_evas_cursor_set()
1674  */
1675 EAPI void        ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
1676
1677 /**
1678  * Tell the WM whether or not to ignore an Ecore_Evas' window
1679  *
1680  * @param ee The Ecore_Evas.
1681  * @param on @c EINA_TRUE to ignore, @c EINA_FALSE to not.
1682  *
1683  * This function causes the window manager to ignore @p ee if @p on is
1684  * @c EINA_TRUE, or not ignore @p ee if @p on is @c EINA_FALSE.
1685  */
1686 EAPI void        ecore_evas_override_set(Ecore_Evas *ee, Eina_Bool on);
1687
1688 /**
1689  * Query whether an Ecore_Evas' window is overridden or not
1690  *
1691  * @param ee The Ecore_Evas to set.
1692  * @return @c EINA_TRUE if @p ee is overridden, @c EINA_FALSE if not.
1693  */
1694 EAPI Eina_Bool   ecore_evas_override_get(const Ecore_Evas *ee);
1695
1696 /**
1697  * Set whether or not an Ecore_Evas' window should avoid damage
1698  *
1699  * @param ee The Ecore_Evas
1700  * @param on The type of the damage management
1701  *
1702  * This function causes @p ee to be drawn to a pixmap to avoid recalculations.
1703  * On expose events it will copy from the pixmap to the window.
1704  */
1705 EAPI void        ecore_evas_avoid_damage_set(Ecore_Evas *ee, Ecore_Evas_Avoid_Damage_Type on);
1706
1707 /**
1708  * Query whether an Ecore_Evas' window avoids damage or not
1709  * @param ee The Ecore_Evas to set
1710  * @return The type of the damage management
1711  *
1712  */
1713 EAPI Ecore_Evas_Avoid_Damage_Type ecore_evas_avoid_damage_get(const Ecore_Evas *ee);
1714
1715 /**
1716  * Set the withdrawn state of an Ecore_Evas' window.
1717  * @param ee The Ecore_Evas whose window's withdrawn state is set.
1718  * @param withdrawn The Ecore_Evas window's new withdrawn state.
1719  *
1720  */
1721 EAPI void        ecore_evas_withdrawn_set(Ecore_Evas *ee, Eina_Bool withdrawn);
1722
1723 /**
1724  * Returns the withdrawn state of an Ecore_Evas' window.
1725  * @param ee The Ecore_Evas whose window's withdrawn state is returned.
1726  * @return The Ecore_Evas window's withdrawn state.
1727  *
1728  */
1729 EAPI Eina_Bool   ecore_evas_withdrawn_get(const Ecore_Evas *ee);
1730
1731 /**
1732  * Set the sticky state of an Ecore_Evas window.
1733  *
1734  * @param ee The Ecore_Evas whose window's sticky state is set.
1735  * @param sticky The Ecore_Evas window's new sticky state.
1736  *
1737  */
1738 EAPI void        ecore_evas_sticky_set(Ecore_Evas *ee, Eina_Bool sticky);
1739
1740 /**
1741  * Returns the sticky state of an Ecore_Evas' window.
1742  *
1743  * @param ee The Ecore_Evas whose window's sticky state is returned.
1744  * @return The Ecore_Evas window's sticky state.
1745  *
1746  */
1747 EAPI Eina_Bool   ecore_evas_sticky_get(const Ecore_Evas *ee);
1748 EAPI void        ecore_evas_manual_render_set(Ecore_Evas *ee, Eina_Bool manual_render);
1749 EAPI Eina_Bool   ecore_evas_manual_render_get(const Ecore_Evas *ee);
1750
1751 /**
1752  * @brief Registers an @c Ecore_Evas to receive events through ecore_input_evas.
1753  *
1754  * @param ee The @c Ecore_Evas handle.
1755  *
1756  * This function calls ecore_event_window_register() with the @p ee as its @c
1757  * id argument, @c window argument, and uses its @c Evas too. It is useful when
1758  * no @c window information is available on a given @c Ecore_Evas backend.
1759  *
1760  * @see ecore_evas_input_event_unregister()
1761  * @since 1.1
1762  */
1763 EAPI void        ecore_evas_input_event_register(Ecore_Evas *ee);
1764 /**
1765  * @brief Unregisters an @c Ecore_Evas receiving events through ecore_input_evas.
1766  *
1767  * @param ee The @c Ecore_Evas handle.
1768  *
1769  * @see ecore_evas_input_event_register()
1770  * @since 1.1
1771  */
1772 EAPI void        ecore_evas_input_event_unregister(Ecore_Evas *ee);
1773
1774 /**
1775  * @brief Force immediate rendering on a given @c Ecore_Evas window
1776  *
1777  * @param ee An @c Ecore_Evas handle
1778  *
1779  * Use this call to forcefully flush the @p ee's canvas rendering
1780  * pipeline, thus bring its window to an up to date state.
1781  */
1782 EAPI void        ecore_evas_manual_render(Ecore_Evas *ee);
1783 EAPI void        ecore_evas_comp_sync_set(Ecore_Evas *ee, Eina_Bool do_sync);
1784 EAPI Eina_Bool   ecore_evas_comp_sync_get(const Ecore_Evas *ee);
1785 /**
1786  * @brief Get geometry of screen associated with this Ecore_Evas.
1787  *
1788  * @param ee The Ecore_Evas whose window's to query container screen geometry.
1789  * @param x where to return the horizontal offset value. May be @c NULL.
1790  * @param y where to return the vertical offset value. May be @c NULL.
1791  * @param w where to return the width value. May be @c NULL.
1792  * @param h where to return the height value. May be @c NULL.
1793  *
1794  * @since 1.1
1795  */
1796 EAPI void        ecore_evas_screen_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
1797
1798 EAPI void        ecore_evas_draw_frame_set(Ecore_Evas *ee, Eina_Bool draw_frame);
1799 EAPI Eina_Bool   ecore_evas_draw_frame_get(const Ecore_Evas *ee);
1800
1801 /**
1802  * @brief Associate the given object to this ecore evas.
1803  *
1804  * @param ee The Ecore_Evas to associate to @a obj
1805  * @param obj The object to associate to @a ee
1806  * @param flags The association flags.
1807  * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
1808  *
1809  * Association means that operations on one will affect the other, for
1810  * example moving the object will move the window, resize the object will
1811  * also affect the ecore evas window, hide and show applies as well.
1812  *
1813  * This is meant to simplify development, since you often need to associate
1814  * these events with your "base" objects, background or bottom-most object.
1815  *
1816  * Be aware that some methods might not be what you would like, deleting
1817  * either the window or the object will delete the other. If you want to
1818  * change that behavior, let's say to hide window when it's closed, you
1819  * must use ecore_evas_callback_delete_request_set() and set your own code,
1820  * like ecore_evas_hide(). Just remember that if you override delete_request
1821  * and still want to delete the window/object, you must do that yourself.
1822  *
1823  * Since we now define delete_request, deleting windows will not quit
1824  * main loop, if you wish to do so, you should listen for EVAS_CALLBACK_FREE
1825  * on the object, that way you get notified and you can call
1826  * ecore_main_loop_quit().
1827  *
1828  * Flags can be OR'ed of:
1829  * @li ECORE_EVAS_OBJECT_ASSOCIATE_BASE (or 0): to listen to basic events
1830  *     like delete, resize and move, but no stacking or layer are used.
1831  * @li ECORE_EVAS_OBJECT_ASSOCIATE_STACK: stacking operations will act
1832  *     on the Ecore_Evas, not the object. So evas_object_raise() will
1833  *     call ecore_evas_raise(). Relative operations (stack_above, stack_below)
1834  *     are still not implemented.
1835  * @li ECORE_EVAS_OBJECT_ASSOCIATE_LAYER: stacking operations will act
1836  *     on the Ecore_Evas, not the object. So evas_object_layer_set() will
1837  *     call ecore_evas_layer_set().
1838  * @li ECORE_EVAS_OBJECT_ASSOCIATE_DEL: the object delete will delete the
1839  *     ecore_evas as well as delete_requests on the ecore_evas will delete
1840  *     etc.
1841  */
1842 EAPI Eina_Bool    ecore_evas_object_associate(Ecore_Evas *ee, Evas_Object *obj, Ecore_Evas_Object_Associate_Flags flags);
1843 /**
1844  * @brief Cancel the association set with ecore_evas_object_associate().
1845  *
1846  * @param ee The Ecore_Evas to dissociate from @a obj
1847  * @param obj The object to dissociate from @a ee
1848  * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
1849  */
1850 EAPI Eina_Bool    ecore_evas_object_dissociate(Ecore_Evas *ee, Evas_Object *obj);
1851 /**
1852  * @brief Get the object associated with @p ee
1853  *
1854  * @param ee The Ecore_Evas to get the object from.
1855  * @return The associated object, or @c NULL if there is no associated object.
1856  */
1857 EAPI Evas_Object *ecore_evas_object_associate_get(const Ecore_Evas *ee);
1858
1859 /* helper function to be used with ECORE_GETOPT_CALLBACK_*() */
1860 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);
1861
1862 /**
1863  * @brief Get a list of all the ecore_evases.
1864  *
1865  * @return A list of ecore_evases.
1866  *
1867  * The returned list of ecore evases is only valid until the canvases are
1868  * destroyed (and should not be cached for instance). The list can be freed by
1869  * just deleting the list.
1870  */
1871 EAPI Eina_List   *ecore_evas_ecore_evas_list_get(void);
1872
1873 /* specific calls to an x11 environment ecore_evas */
1874 EAPI void           ecore_evas_x11_leader_set(Ecore_Evas *ee, Ecore_X_Window win);
1875 EAPI Ecore_X_Window ecore_evas_x11_leader_get(Ecore_Evas *ee);
1876 EAPI void           ecore_evas_x11_leader_default_set(Ecore_Evas *ee);
1877 EAPI void           ecore_evas_x11_shape_input_rectangle_set(Ecore_Evas *ee, int x, int y, int w, int h);
1878 EAPI void           ecore_evas_x11_shape_input_rectangle_add(Ecore_Evas *ee, int x, int y, int w, int h);
1879 EAPI void           ecore_evas_x11_shape_input_rectangle_subtract(Ecore_Evas *ee, int x, int y, int w, int h);
1880 EAPI void           ecore_evas_x11_shape_input_empty(Ecore_Evas *ee);
1881 EAPI void           ecore_evas_x11_shape_input_reset(Ecore_Evas *ee);
1882 EAPI void           ecore_evas_x11_shape_input_apply(Ecore_Evas *ee);
1883
1884 /**
1885  * @defgroup Ecore_Evas_Ews Ecore_Evas Single Process Windowing System.
1886  *
1887  * These are global scope functions to manage the EWS to be used by
1888  * ecore_evas_ews_new().
1889  *
1890  * @since 1.1
1891  * @{
1892  */
1893
1894 /**
1895  * Sets the engine to be used by the backing store engine.
1896  *
1897  * @param engine The engine to be set.
1898  * @param options The options of the engine to be set.
1899  * @return @c EINA_TRUE on success, @c EINA_FALSE if ews is already in use.
1900  * @since 1.1
1901  */
1902 EAPI Eina_Bool ecore_evas_ews_engine_set(const char *engine, const char *options);
1903
1904 /**
1905  * Reconfigure the backing store used.
1906  *
1907  * @param x The X coordinate to be used.
1908  * @param y The Y coordinate to be used.
1909  * @param w The width of the Ecore_Evas to setup.
1910  * @param h The height of the Ecore_Evas to setup.
1911  * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
1912  * @since 1.1
1913  */
1914 EAPI Eina_Bool ecore_evas_ews_setup(int x, int y, int w, int h);
1915
1916 /**
1917  * Return the internal backing store in use.
1918  *
1919  * @return The internal backing store in use.
1920  * @note this will forced it to be created, making future calls to
1921  * ecore_evas_ews_engine_set() void.
1922  *
1923  * @see ecore_evas_ews_evas_get()
1924  * @since 1.1
1925  */
1926 EAPI Ecore_Evas *ecore_evas_ews_ecore_evas_get(void);
1927
1928 /**
1929  * Return the internal backing store in use.
1930  *
1931  * @return The internal backing store in use.
1932  * @note this will forced it to be created, making future calls to
1933  * ecore_evas_ews_engine_set() void.
1934  *
1935  * @see ecore_evas_ews_ecore_evas_get()
1936  * @since 1.1
1937  */
1938 EAPI Evas *ecore_evas_ews_evas_get(void);
1939
1940 /**
1941  * Get the current background.
1942  */
1943 EAPI Evas_Object *ecore_evas_ews_background_get(void);
1944
1945 /**
1946  * Set the current background, must be created at evas ecore_evas_ews_evas_get()
1947  *
1948  * It will be kept at lowest layer (EVAS_LAYER_MIN) and below
1949  * everything else. You can set any object, default is a black
1950  * rectangle.
1951  *
1952  * @note previous object will be deleted!
1953  * @param o The Evas_Object for which to set the background.
1954  */
1955 EAPI void ecore_evas_ews_background_set(Evas_Object *o);
1956
1957 /**
1958  * Return all Ecore_Evas* created by EWS.
1959  *
1960  * @return An eina list of Ecore_evases.
1961  e @note Do not change the returned list or its contents.
1962  * @since 1.1
1963  */
1964 EAPI const Eina_List *ecore_evas_ews_children_get(void);
1965
1966 /**
1967  * Set the identifier of the manager taking care of internal windows.
1968  *
1969  * The ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE event is issued. Consider
1970  * handling it to know if you should stop handling events yourself
1971  * (ie: another manager took over)
1972  *
1973  * @param manager any unique identifier address.
1974  *
1975  * @see ecore_evas_ews_manager_get()
1976  * @since 1.1
1977  */
1978 EAPI void        ecore_evas_ews_manager_set(const void *manager);
1979
1980 /**
1981  * Get the identifier of the manager taking care of internal windows.
1982  *
1983  * @return the value set by ecore_evas_ews_manager_set()
1984  * @since 1.1
1985  */
1986 EAPI const void *ecore_evas_ews_manager_get(void);
1987
1988 EAPI extern int ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE; /**< manager was changed @since 1.1 */
1989 EAPI extern int ECORE_EVAS_EWS_EVENT_ADD; /**< window was created @since 1.1 */
1990 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 */
1991 EAPI extern int ECORE_EVAS_EWS_EVENT_RESIZE; /**< window was resized @since 1.1 */
1992 EAPI extern int ECORE_EVAS_EWS_EVENT_MOVE; /**< window was moved @since 1.1 */
1993 EAPI extern int ECORE_EVAS_EWS_EVENT_SHOW; /**< window become visible @since 1.1 */
1994 EAPI extern int ECORE_EVAS_EWS_EVENT_HIDE; /**< window become hidden @since 1.1 */
1995 EAPI extern int ECORE_EVAS_EWS_EVENT_FOCUS; /**< window was focused @since 1.1 */
1996 EAPI extern int ECORE_EVAS_EWS_EVENT_UNFOCUS; /**< window lost focus @since 1.1 */
1997 EAPI extern int ECORE_EVAS_EWS_EVENT_RAISE; /**< window was raised @since 1.1 */
1998 EAPI extern int ECORE_EVAS_EWS_EVENT_LOWER; /**< window was lowered @since 1.1 */
1999 EAPI extern int ECORE_EVAS_EWS_EVENT_ACTIVATE; /**< window was activated @since 1.1 */
2000
2001 EAPI extern int ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE; /**< window minimized/iconified changed @since 1.1 */
2002 EAPI extern int ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE; /**< window maximized changed @since 1.1 */
2003 EAPI extern int ECORE_EVAS_EWS_EVENT_LAYER_CHANGE; /**< window layer changed @since 1.1 */
2004 EAPI extern int ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE; /**< window fullscreen changed @since 1.1 */
2005 EAPI extern int ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE; /**< some other window property changed (title, name, class, alpha, transparent, shaped...) @since 1.1 */
2006
2007 /**
2008  * @}
2009  */
2010
2011 /**
2012  * @defgroup Ecore_Evas_Extn External plug/socket infrastructure to remote canvases
2013  *
2014  * These functions allow 1 process to create a "socket" was pluged into which another
2015  * process can create a "plug" remotely to plug into.
2016  * Socket can provides content for several plugs.
2017  * This is best for small sized objects (about the size range
2018  * of a small icon up to a few large icons). Sine the plug is actually an
2019  * image object, you can fetch the pixel data
2020  *
2021  * @since 1.2
2022  * @{
2023  */
2024
2025 EAPI extern int ECORE_EVAS_EXTN_CLIENT_ADD; /**< this event is received when a plug has connected to an extn socket @since 1.2 */
2026 EAPI extern int ECORE_EVAS_EXTN_CLIENT_DEL; /**< this event is received when a plug has disconnected from an extn socket @since 1.2 */
2027
2028 /**
2029  * @brief Create a new Ecore_Evas canvas for the new external ecore evas socket
2030  *
2031  * @param w The width of the canvas, in pixels
2032  * @param h The height of the canvas, in pixels
2033  * @return A new @c Ecore_Evas instance or @c NULL, on failure
2034  *
2035  * This creates a new extn_socket canvas wrapper, with image data array
2036  * @b bound to the ARGB format, 8 bits per pixel.
2037  *
2038  * If creation is successful, an Ecore_Evas handle is returned or @c NULL if
2039  * creation fails. Also focus, show, hide etc. callbacks will also be called
2040  * if the plug object is shown, or already visible on connect, or if it is
2041  * hidden later, focused or unfocused.
2042  *
2043  * This function has to be flowed by ecore_evas_extn_socket_listen(),
2044  * for starting ecore ipc service.
2045  *
2046  * @code
2047  * Eina_Bool res = EINA_FALSE;
2048  * Ecore_Evas *ee = ecore_evas_extn_socket_new(1, 1);
2049  *
2050  * res = ecore_evas_extn_socket_listen("svcname", 1, EINA_FALSE);
2051  * if (!res) return;
2052  * ecore_evas_resize(ee, 240, 400);
2053  * @endcode
2054  *
2055  * or
2056  *
2057  * @code
2058  * Eina_Bool res = EINA_FALSE;
2059  * Ecore_Evas *ee = ecore_evas_extn_socket_new(240, 400);
2060  *
2061  * res = ecore_evas_extn_socket_listen("svcname", 1, EINA_FALSE);
2062  * if (!res) return;
2063  * @endcode
2064  *
2065  * When a client(plug) connects, you will get the ECORE_EVAS_EXTN_CLIENT_ADD event
2066  * in the ecore event queue, with event_info being the image object pointer
2067  * passed as a void pointer. When a client disconnects you will get the
2068  * ECORE_EVAS_EXTN_CLIENT_DEL event.
2069  *
2070  * You can set up event handles for these events as follows:
2071  *
2072  * @code
2073  * static void client_add_cb(void *data, int event, void *event_info)
2074  * {
2075  *   Evas_Object *obj = event_info;
2076  *   printf("client added to image object %p\n", obj);
2077  *   evas_object_show(obj);
2078  * }
2079  *
2080  * static void client_del_cb(void *data, int event, void *event_info)
2081  * {
2082  *   Evas_Object *obj = event_info;
2083  *   printf("client deleted from image object %p\n", obj);
2084  *   evas_object_hide(obj);
2085  * }
2086  *
2087  * void setup(void)
2088  * {
2089  *   ecore_event_handler_add(ECORE_EVAS_EXTN_CLIENT_ADD,
2090  *                           client_add_cb, NULL);
2091  *   ecore_event_handler_add(ECORE_EVAS_EXTN_CLIENT_DEL,
2092  *                           client_del_cb, NULL);
2093  * }
2094  * @endcode
2095  *
2096  * Note that events come in later after the event happened. You may want to be
2097  * careful as data structures you had associated with the image object
2098  * may have been freed after deleting, but the object may still be around
2099  * awating cleanup and thus still be valid.You can change the size with something like:
2100  *
2101  * @see ecore_evas_extn_socket_listen()
2102  * @see ecore_evas_extn_plug_new()
2103  * @see ecore_evas_extn_plug_object_data_lock()
2104  * @see ecore_evas_extn_plug_object_data_unlock()
2105  *
2106  * @since 1.2
2107  */
2108 EAPI Ecore_Evas *ecore_evas_extn_socket_new(int w, int h);
2109
2110 /**
2111  * @brief Create a socket to provide the service for external ecore evas
2112  * socket.
2113  *
2114  * @param ee The Ecore_Evas.
2115  * @param svcname The name of the service to be advertised. ensure that it is
2116  * unique (when combined with @p svcnum) otherwise creation may fail.
2117  * @param svcnum A number (any value, @c 0 being the common default) to
2118  * differentiate multiple instances of services with the same name.
2119  * @param svcsys A boolean that if true, specifies to create a system-wide
2120  * service all users can connect to, otherwise the service is private to the
2121  * user ide that created the service.
2122  * @return @c EINA_TRUE if creation is successful, @c EINA_FALSE if it does
2123  * not.
2124  *
2125  * This creates socket specified by @p svcname, @p svcnum and @p svcsys. If
2126  * creation is successful, @c EINA_TRUE is returned or @c EINA_FALSE if
2127  * creation fails.
2128  *
2129  * @see ecore_evas_extn_socket_new()
2130  * @see ecore_evas_extn_plug_new()
2131  * @see ecore_evas_extn_plug_object_data_lock()
2132  * @see ecore_evas_extn_plug_object_data_unlock()
2133  *
2134  * @since 1.2
2135  */
2136 EAPI Eina_Bool ecore_evas_extn_socket_listen(Ecore_Evas *ee, const char *svcname, int svcnum, Eina_Bool svcsys);
2137
2138 /**
2139  * @brief Lock the pixel data so the socket cannot change it
2140  *
2141  * @param obj The image object returned by ecore_evas_extn_plug_new() to lock
2142  *
2143  * You may need to get the image pixel data with evas_object_image_data_get()
2144  * from the image object, but need to ensure that it does not change while
2145  * you are using the data. This function lets you set an advisory lock on the
2146  * image data so the external plug process will not render to it or alter it.
2147  *
2148  * You should only hold the lock for just as long as you need to read out the
2149  * image data or otherwise deal with it, and then unlock it with
2150  * ecore_evas_extn_plug_object_data_unlock(). Keeping a lock over more than
2151  * 1 iteration of the main ecore loop will be problematic, so avoid it. Also
2152  * forgetting to unlock may cause the socket process to freeze and thus create
2153  * odd behavior.
2154  *
2155  * @see ecore_evas_extn_plug_new()
2156  * @see ecore_evas_extn_plug_object_data_unlock()
2157  *
2158  * @since 1.2
2159  */
2160 EAPI void ecore_evas_extn_plug_object_data_lock(Evas_Object *obj);
2161
2162 /**
2163  * @brief Unlock the pixel data so the socket can change it again.
2164  *
2165  * @param obj The image object returned by ecore_evas_extn_plug_new() to unlock
2166  *
2167  * This unlocks after an advisor lock has been taken by
2168  * ecore_evas_extn_plug_object_data_lock().
2169  *
2170  * @see ecore_evas_extn_plug_new()
2171  * @see ecore_evas_extn_plug_object_data_lock()
2172  *
2173  * @since 1.2
2174  */
2175 EAPI void ecore_evas_extn_plug_object_data_unlock(Evas_Object *obj);
2176
2177 /**
2178  * @brief Create a new external ecore evas plug
2179  *
2180  * @param ee_target The Ecore_Evas containing the canvas in which the new image object will live.
2181  * @return An evas image object that will contain the image output of a socket.
2182  *
2183  * This creates an image object that will contain the output of another
2184  * processes socket canvas when it connects. All input will be sent back to
2185  * this process as well, effectively swallowing or placing the socket process
2186  * in the canvas of the plug process in place of the image object. The image
2187  * object by default is created to be filled (equivalent of
2188  * evas_object_image_filled_add() on creation) so image content will scale
2189  * to fill the image unless otherwise reconfigured. The Ecore_Evas size
2190  * of the plug is the master size and determines size in pixels of the
2191  * plug canvas. You can change the size with something like:
2192  *
2193  * @code
2194  * Eina_Bool res = EINA_FALSE;
2195  * Evas_Object *obj = ecore_evas_extn_plug_new(ee);
2196  *
2197  * res = ecore_evas_extn_plug_connect("svcname", 1, EINA_FALSE);
2198  * if (!res) return;
2199  * ecore_evas_resize(ee, 240, 400);
2200  * @endcode
2201  *
2202  * @see ecore_evas_extn_socket_new()
2203  * @see ecore_evas_extn_plug_connect()
2204  * @since 1.2
2205  */
2206 EAPI Evas_Object *ecore_evas_extn_plug_new(Ecore_Evas *ee_target);
2207
2208 /**
2209  * @brief Connect an external ecore evas plug to service provided by external
2210  * ecore evas socket.
2211  *
2212  * @param obj The Ecore_Evas containing the canvas in which the new image
2213  * object will live.
2214  * @param svcname The service name to connect to set up by the socket.
2215  * @param svcnum The service number to connect to (set up by socket).
2216  * @param svcsys Boolean to set if the service is a system one or not (set up
2217  * by socket).
2218  * @return @c EINA_TRUE if creation is successful, @c EINA_FALSE if it does
2219  * not.
2220  *
2221  * @see ecore_evas_extn_plug_new()
2222  *
2223  * @since 1.2
2224  */
2225 EAPI Eina_Bool ecore_evas_extn_plug_connect(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys);
2226
2227 /**
2228  * @}
2229  */
2230
2231 /**
2232  * @}
2233  */
2234
2235 #ifdef __cplusplus
2236 }
2237 #endif
2238
2239 #endif