svn update: 48958 (latest:48959)
[framework/uifw/ecore.git] / src / lib / ecore_x / Ecore_X.h
1 /*
2  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
3  */
4
5 #ifndef _ECORE_X_H
6 #define _ECORE_X_H
7
8 #include <Eina.h>
9
10 #ifdef EAPI
11 # undef EAPI
12 #endif
13
14 #ifdef _MSC_VER
15 # ifdef BUILDING_DLL
16 #  define EAPI __declspec(dllexport)
17 # else
18 #  define EAPI __declspec(dllimport)
19 # endif
20 #else
21 # ifdef __GNUC__
22 #  if __GNUC__ >= 4
23 #   define EAPI __attribute__ ((visibility("default")))
24 #  else
25 #   define EAPI
26 #  endif
27 # else
28 #  define EAPI
29 # endif
30 #endif
31
32 #include <sys/types.h>
33
34 /**
35  * @file
36  * @brief Ecore functions for dealing with the X Windows System
37  *
38  * Ecore_X provides a wrapper and convenience functions for using the
39  * X Windows System.  Function groups for this part of the library
40  * include the following:
41  * @li @ref Ecore_X_Init_Group
42  * @li @ref Ecore_X_Display_Attr_Group
43  * @li @ref Ecore_X_Flush_Group
44  */
45
46
47 typedef unsigned int Ecore_X_ID;
48 #ifndef _ECORE_X_WINDOW_PREDEF
49 typedef Ecore_X_ID   Ecore_X_Window;
50 #endif
51 #ifdef HAVE_ECORE_X_XCB
52 typedef Ecore_X_ID   Ecore_X_Visual;
53 #else
54 typedef void       * Ecore_X_Visual;
55 #endif /* HAVE_ECORE_X_XCB */
56 typedef Ecore_X_ID   Ecore_X_Pixmap;
57 typedef Ecore_X_ID   Ecore_X_Drawable;
58 #ifdef HAVE_ECORE_X_XCB
59 typedef Ecore_X_ID   Ecore_X_GC;
60 #else
61 typedef void       * Ecore_X_GC;
62 #endif /* HAVE_ECORE_X_XCB */
63 typedef Ecore_X_ID   Ecore_X_Atom;
64 typedef Ecore_X_ID   Ecore_X_Colormap;
65 typedef Ecore_X_ID   Ecore_X_Time;
66 typedef Ecore_X_ID   Ecore_X_Cursor;
67 typedef void         Ecore_X_Display;
68 typedef void         Ecore_X_Connection;
69 typedef void         Ecore_X_Screen;
70 typedef Ecore_X_ID   Ecore_X_Sync_Counter;
71 typedef Ecore_X_ID   Ecore_X_Sync_Alarm;
72 typedef void         Ecore_X_XRegion;
73
74 typedef Ecore_X_ID     Ecore_X_Randr_Output;
75 typedef Ecore_X_ID     Ecore_X_Randr_Crtc;
76 typedef Ecore_X_ID     Ecore_X_Randr_Mode;
77 typedef unsigned short Ecore_X_Randr_Size_ID;
78
79 typedef Ecore_X_ID   Ecore_X_Device;
80
81 #ifdef __cplusplus
82 extern "C" {
83 #endif
84
85 typedef struct _Ecore_X_Rectangle {
86    int x, y;
87    unsigned int width, height;
88 } Ecore_X_Rectangle;
89
90 typedef struct _Ecore_X_Icon {
91    unsigned int  width, height;
92    unsigned int *data;
93 } Ecore_X_Icon;
94
95 typedef enum _Ecore_X_GC_Value_Mask {
96    ECORE_X_GC_VALUE_MASK_FUNCTION = (1L << 0),
97    ECORE_X_GC_VALUE_MASK_PLANE_MASK = (1L << 1),
98    ECORE_X_GC_VALUE_MASK_FOREGROUND = (1L << 2),
99    ECORE_X_GC_VALUE_MASK_BACKGROUND = (1L << 3),
100    ECORE_X_GC_VALUE_MASK_LINE_WIDTH = (1L << 4),
101    ECORE_X_GC_VALUE_MASK_LINE_STYLE = (1L << 5),
102    ECORE_X_GC_VALUE_MASK_CAP_STYLE = (1L << 6),
103    ECORE_X_GC_VALUE_MASK_JOIN_STYLE = (1L << 7),
104    ECORE_X_GC_VALUE_MASK_FILL_STYLE = (1L << 8),
105    ECORE_X_GC_VALUE_MASK_FILL_RULE = (1L << 9),
106    ECORE_X_GC_VALUE_MASK_TILE = (1L << 10),
107    ECORE_X_GC_VALUE_MASK_STIPPLE = (1L << 11),
108    ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_X = (1L << 12),
109    ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_Y = (1L << 13),
110    ECORE_X_GC_VALUE_MASK_FONT = (1L << 14),
111    ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE = (1L << 15),
112    ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES = (1L << 16),
113    ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X = (1L << 17),
114    ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y = (1L << 18),
115    ECORE_X_GC_VALUE_MASK_CLIP_MASK = (1L << 19),
116    ECORE_X_GC_VALUE_MASK_DASH_OFFSET = (1L << 20),
117    ECORE_X_GC_VALUE_MASK_DASH_LIST = (1L << 21),
118    ECORE_X_GC_VALUE_MASK_ARC_MODE = (1L << 22)
119 } Ecore_X_GC_Value_Mask;
120
121 typedef enum _Ecore_X_Composite_Update_Type {
122    ECORE_X_COMPOSITE_UPDATE_AUTOMATIC,
123    ECORE_X_COMPOSITE_UPDATE_MANUAL
124 } Ecore_X_Composite_Update_Type;
125
126 typedef enum _Ecore_X_Window_State {
127     /* Unknown state */
128     ECORE_X_WINDOW_STATE_UNKNOWN = 0,
129     /** The window is iconified. */
130     ECORE_X_WINDOW_STATE_ICONIFIED,
131     /** The window is a modal dialog box. */
132     ECORE_X_WINDOW_STATE_MODAL,
133     /** The window manager should keep the window's position fixed
134      * even if the virtual desktop scrolls. */
135     ECORE_X_WINDOW_STATE_STICKY,
136     /** The window has the maximum vertical size. */
137     ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
138     /** The window has the maximum horizontal size. */
139     ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
140     /** The window is shaded. */
141     ECORE_X_WINDOW_STATE_SHADED,
142     /** The window should not be included in the taskbar. */
143     ECORE_X_WINDOW_STATE_SKIP_TASKBAR,
144     /** The window should not be included in the pager. */
145     ECORE_X_WINDOW_STATE_SKIP_PAGER,
146     /** The window is invisible (i.e. minimized/iconified) */
147     ECORE_X_WINDOW_STATE_HIDDEN,
148     /** The window should fill the entire screen and have no
149      * window border/decorations */
150     ECORE_X_WINDOW_STATE_FULLSCREEN,
151     /* The following are not documented because they are not
152      * intended for use in applications. */
153     ECORE_X_WINDOW_STATE_ABOVE,
154     ECORE_X_WINDOW_STATE_BELOW,
155     /* FIXME: Documentation */
156     ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION
157 } Ecore_X_Window_State;
158
159 typedef enum _Ecore_X_Window_State_Action {
160      ECORE_X_WINDOW_STATE_ACTION_REMOVE,
161      ECORE_X_WINDOW_STATE_ACTION_ADD,
162      ECORE_X_WINDOW_STATE_ACTION_TOGGLE
163 } Ecore_X_Window_State_Action;
164
165 typedef enum _Ecore_X_Window_Stack_Mode {
166    ECORE_X_WINDOW_STACK_ABOVE = 0,
167    ECORE_X_WINDOW_STACK_BELOW = 1,
168    ECORE_X_WINDOW_STACK_TOP_IF = 2,
169    ECORE_X_WINDOW_STACK_BOTTOM_IF = 3,
170    ECORE_X_WINDOW_STACK_OPPOSITE = 4
171 } Ecore_X_Window_Stack_Mode;
172
173 typedef enum _Ecore_X_Randr_Rotation {
174    ECORE_X_RANDR_ROT_0 = (1 << 0),
175    ECORE_X_RANDR_ROT_90 = (1 << 1),
176    ECORE_X_RANDR_ROT_180 = (1 << 2),
177    ECORE_X_RANDR_ROT_270 = (1 << 3),
178    ECORE_X_RANDR_FLIP_X = (1 << 4),
179    ECORE_X_RANDR_FLIP_Y = (1 << 5)
180 } Ecore_X_Randr_Rotation;
181
182 typedef enum _Ecore_X_Randr_Connection {
183   ECORE_X_RANDR_CONNECTED = 0,
184   ECORE_X_RANDR_DISCONNECTED = 1,
185   ECORE_X_RANDR_UNKNOWN_CONNECTION = 2
186 } Ecore_X_Randr_Connection;
187
188 typedef enum _Ecore_X_Render_Subpixel_Order {
189    ECORE_X_RENDER_SUBPIXEL_ORDER_UNKNOWN = 0,
190    ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_RGB = 1,
191    ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_BGR = 2,
192    ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_RGB = 3,
193    ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_BGR = 4,
194    ECORE_X_RENDER_SUBPIXEL_ORDER_NONE = 5
195 } Ecore_X_Render_Subpixel_Order;
196
197 #define ECORE_X_SELECTION_TARGET_TARGETS "TARGETS"
198 #define ECORE_X_SELECTION_TARGET_TEXT "TEXT"
199 #define ECORE_X_SELECTION_TARGET_COMPOUND_TEXT "COMPOUND_TEXT"
200 #define ECORE_X_SELECTION_TARGET_STRING "STRING"
201 #define ECORE_X_SELECTION_TARGET_UTF8_STRING "UTF8_STRING"
202 #define ECORE_X_SELECTION_TARGET_FILENAME "FILENAME"
203
204 #define ECORE_X_DND_VERSION 5
205
206 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_COPY;
207 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_MOVE;
208 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_LINK;
209 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_ASK;
210 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_PRIVATE;
211
212 typedef enum _Ecore_X_Selection {
213    ECORE_X_SELECTION_PRIMARY,
214    ECORE_X_SELECTION_SECONDARY,
215    ECORE_X_SELECTION_XDND,
216    ECORE_X_SELECTION_CLIPBOARD,
217    ECORE_X_SELECTION_OTHER
218 } Ecore_X_Selection;
219
220 typedef enum _Ecore_X_Event_Mode
221 {
222    ECORE_X_EVENT_MODE_NORMAL,
223    ECORE_X_EVENT_MODE_WHILE_GRABBED,
224    ECORE_X_EVENT_MODE_GRAB,
225    ECORE_X_EVENT_MODE_UNGRAB
226 } Ecore_X_Event_Mode;
227
228 typedef enum _Ecore_X_Event_Detail
229 {
230    ECORE_X_EVENT_DETAIL_ANCESTOR,
231    ECORE_X_EVENT_DETAIL_VIRTUAL,
232    ECORE_X_EVENT_DETAIL_INFERIOR,
233    ECORE_X_EVENT_DETAIL_NON_LINEAR,
234    ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL,
235    ECORE_X_EVENT_DETAIL_POINTER,
236    ECORE_X_EVENT_DETAIL_POINTER_ROOT,
237    ECORE_X_EVENT_DETAIL_DETAIL_NONE
238 } Ecore_X_Event_Detail;
239
240 typedef enum _Ecore_X_Event_Mask
241 {
242    ECORE_X_EVENT_MASK_NONE                   = 0L,
243    ECORE_X_EVENT_MASK_KEY_DOWN               = (1L << 0),
244    ECORE_X_EVENT_MASK_KEY_UP                 = (1L << 1),
245    ECORE_X_EVENT_MASK_MOUSE_DOWN             = (1L << 2),
246    ECORE_X_EVENT_MASK_MOUSE_UP               = (1L << 3),
247    ECORE_X_EVENT_MASK_MOUSE_IN               = (1L << 4),
248    ECORE_X_EVENT_MASK_MOUSE_OUT              = (1L << 5),
249    ECORE_X_EVENT_MASK_MOUSE_MOVE             = (1L << 6),
250    ECORE_X_EVENT_MASK_WINDOW_DAMAGE          = (1L << 15),
251    ECORE_X_EVENT_MASK_WINDOW_VISIBILITY      = (1L << 16),
252    ECORE_X_EVENT_MASK_WINDOW_CONFIGURE       = (1L << 17),
253    ECORE_X_EVENT_MASK_WINDOW_RESIZE_MANAGE   = (1L << 18),
254    ECORE_X_EVENT_MASK_WINDOW_MANAGE          = (1L << 19),
255    ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE = (1L << 20),
256    ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE    = (1L << 21),
257    ECORE_X_EVENT_MASK_WINDOW_PROPERTY        = (1L << 22),
258    ECORE_X_EVENT_MASK_WINDOW_COLORMAP        = (1L << 23),
259    ECORE_X_EVENT_MASK_WINDOW_GRAB            = (1L << 24),
260    ECORE_X_EVENT_MASK_MOUSE_WHEEL            = (1L << 29),
261    ECORE_X_EVENT_MASK_WINDOW_FOCUS_IN        = (1L << 30),
262    ECORE_X_EVENT_MASK_WINDOW_FOCUS_OUT       = (1L << 31)
263 } Ecore_X_Event_Mask;
264
265 typedef enum _Ecore_X_Gravity
266 {
267    ECORE_X_GRAVITY_FORGET = 0,
268    ECORE_X_GRAVITY_UNMAP = 0,
269    ECORE_X_GRAVITY_NW = 1,
270    ECORE_X_GRAVITY_N = 2,
271    ECORE_X_GRAVITY_NE = 3,
272    ECORE_X_GRAVITY_W = 4,
273    ECORE_X_GRAVITY_CENTER = 5,
274    ECORE_X_GRAVITY_E = 6,
275    ECORE_X_GRAVITY_SW = 7,
276    ECORE_X_GRAVITY_S = 8,
277    ECORE_X_GRAVITY_SE = 9,
278    ECORE_X_GRAVITY_STATIC = 10
279 } Ecore_X_Gravity;
280
281 /* Needed for ecore_x_region_window_shape_set */
282 typedef enum _Ecore_X_Shape_Type
283 {
284    ECORE_X_SHAPE_BOUNDING,
285    ECORE_X_SHAPE_CLIP
286 } Ecore_X_Shape_Type;
287
288 typedef struct _Ecore_X_Event_Mouse_In                 Ecore_X_Event_Mouse_In;
289 typedef struct _Ecore_X_Event_Mouse_Out                Ecore_X_Event_Mouse_Out;
290 typedef struct _Ecore_X_Event_Window_Focus_In          Ecore_X_Event_Window_Focus_In;
291 typedef struct _Ecore_X_Event_Window_Focus_Out         Ecore_X_Event_Window_Focus_Out;
292 typedef struct _Ecore_X_Event_Window_Keymap            Ecore_X_Event_Window_Keymap;
293 typedef struct _Ecore_X_Event_Window_Damage            Ecore_X_Event_Window_Damage;
294 typedef struct _Ecore_X_Event_Window_Visibility_Change Ecore_X_Event_Window_Visibility_Change;
295 typedef struct _Ecore_X_Event_Window_Create            Ecore_X_Event_Window_Create;
296 typedef struct _Ecore_X_Event_Window_Destroy           Ecore_X_Event_Window_Destroy;
297 typedef struct _Ecore_X_Event_Window_Hide              Ecore_X_Event_Window_Hide;
298 typedef struct _Ecore_X_Event_Window_Show              Ecore_X_Event_Window_Show;
299 typedef struct _Ecore_X_Event_Window_Show_Request      Ecore_X_Event_Window_Show_Request;
300 typedef struct _Ecore_X_Event_Window_Reparent          Ecore_X_Event_Window_Reparent;
301 typedef struct _Ecore_X_Event_Window_Configure         Ecore_X_Event_Window_Configure;
302 typedef struct _Ecore_X_Event_Window_Configure_Request Ecore_X_Event_Window_Configure_Request;
303 typedef struct _Ecore_X_Event_Window_Gravity           Ecore_X_Event_Window_Gravity;
304 typedef struct _Ecore_X_Event_Window_Resize_Request    Ecore_X_Event_Window_Resize_Request;
305 typedef struct _Ecore_X_Event_Window_Stack             Ecore_X_Event_Window_Stack;
306 typedef struct _Ecore_X_Event_Window_Stack_Request     Ecore_X_Event_Window_Stack_Request;
307 typedef struct _Ecore_X_Event_Window_Property          Ecore_X_Event_Window_Property;
308 typedef struct _Ecore_X_Event_Window_Colormap          Ecore_X_Event_Window_Colormap;
309 typedef struct _Ecore_X_Event_Window_Mapping           Ecore_X_Event_Window_Mapping;
310 typedef struct _Ecore_X_Event_Selection_Clear          Ecore_X_Event_Selection_Clear;
311 typedef struct _Ecore_X_Event_Selection_Request        Ecore_X_Event_Selection_Request;
312 typedef struct _Ecore_X_Event_Selection_Notify         Ecore_X_Event_Selection_Notify;
313 typedef struct _Ecore_X_Selection_Data                 Ecore_X_Selection_Data;
314 typedef struct _Ecore_X_Selection_Data_Files           Ecore_X_Selection_Data_Files;
315 typedef struct _Ecore_X_Selection_Data_Text            Ecore_X_Selection_Data_Text;
316 typedef struct _Ecore_X_Selection_Data_Targets         Ecore_X_Selection_Data_Targets;
317 typedef struct _Ecore_X_Event_Xdnd_Enter               Ecore_X_Event_Xdnd_Enter;
318 typedef struct _Ecore_X_Event_Xdnd_Position            Ecore_X_Event_Xdnd_Position;
319 typedef struct _Ecore_X_Event_Xdnd_Status              Ecore_X_Event_Xdnd_Status;
320 typedef struct _Ecore_X_Event_Xdnd_Leave               Ecore_X_Event_Xdnd_Leave;
321 typedef struct _Ecore_X_Event_Xdnd_Drop                Ecore_X_Event_Xdnd_Drop;
322 typedef struct _Ecore_X_Event_Xdnd_Finished            Ecore_X_Event_Xdnd_Finished;
323 typedef struct _Ecore_X_Event_Client_Message           Ecore_X_Event_Client_Message;
324 typedef struct _Ecore_X_Event_Window_Shape             Ecore_X_Event_Window_Shape;
325 typedef struct _Ecore_X_Event_Screensaver_Notify       Ecore_X_Event_Screensaver_Notify;
326 typedef struct _Ecore_X_Event_Sync_Counter             Ecore_X_Event_Sync_Counter;
327 typedef struct _Ecore_X_Event_Sync_Alarm               Ecore_X_Event_Sync_Alarm;
328 typedef struct _Ecore_X_Event_Screen_Change            Ecore_X_Event_Screen_Change;
329 typedef struct _Ecore_X_Event_Randr_Crtc_Change            Ecore_X_Event_Randr_Crtc_Change;
330 typedef struct _Ecore_X_Event_Randr_Output_Change          Ecore_X_Event_Randr_Output_Change;
331 typedef struct _Ecore_X_Event_Randr_Output_Property_Notify Ecore_X_Event_Randr_Output_Property_Notify;
332
333 typedef struct _Ecore_X_Event_Window_Delete_Request                Ecore_X_Event_Window_Delete_Request;
334 typedef struct _Ecore_X_Event_Window_Prop_Title_Change             Ecore_X_Event_Window_Prop_Title_Change;
335 typedef struct _Ecore_X_Event_Window_Prop_Visible_Title_Change     Ecore_X_Event_Window_Prop_Visible_Title_Change;
336 typedef struct _Ecore_X_Event_Window_Prop_Icon_Name_Change         Ecore_X_Event_Window_Prop_Icon_Name_Change;
337 typedef struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change;
338 typedef struct _Ecore_X_Event_Window_Prop_Client_Machine_Change    Ecore_X_Event_Window_Prop_Client_Machine_Change;
339 typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change        Ecore_X_Event_Window_Prop_Name_Class_Change;
340 typedef struct _Ecore_X_Event_Window_Prop_Pid_Change               Ecore_X_Event_Window_Prop_Pid_Change;
341 typedef struct _Ecore_X_Event_Window_Prop_Desktop_Change           Ecore_X_Event_Window_Prop_Desktop_Change;
342
343 typedef struct _Ecore_X_Event_Window_Move_Resize_Request Ecore_X_Event_Window_Move_Resize_Request;
344 typedef struct _Ecore_X_Event_Window_State_Request       Ecore_X_Event_Window_State_Request;
345 typedef struct _Ecore_X_Event_Frame_Extents_Request      Ecore_X_Event_Frame_Extents_Request;
346 typedef struct _Ecore_X_Event_Ping                       Ecore_X_Event_Ping;
347 typedef struct _Ecore_X_Event_Desktop_Change             Ecore_X_Event_Desktop_Change;
348
349 typedef struct _Ecore_X_Event_Startup_Sequence           Ecore_X_Event_Startup_Sequence;
350
351 typedef struct _Ecore_X_Event_Generic                    Ecore_X_Event_Generic;
352
353 struct _Ecore_X_Event_Mouse_In
354 {
355    int                  modifiers;
356    int                  x, y;
357    int                  same_screen;
358    struct {
359       int  x, y;
360    } root;
361    Ecore_X_Window               win;
362    Ecore_X_Window               event_win;
363    Ecore_X_Window               root_win;
364    Ecore_X_Event_Mode           mode;
365    Ecore_X_Event_Detail         detail;
366    Ecore_X_Time                 time;
367 };
368
369 struct _Ecore_X_Event_Mouse_Out
370 {
371    int                  modifiers;
372    int                  x, y;
373    int                  same_screen;
374    struct {
375       int  x, y;
376    } root;
377    Ecore_X_Window               win;
378    Ecore_X_Window               event_win;
379    Ecore_X_Window               root_win;
380    Ecore_X_Event_Mode           mode;
381    Ecore_X_Event_Detail         detail;
382    Ecore_X_Time                 time;
383 };
384
385 struct _Ecore_X_Event_Window_Focus_In
386 {
387    Ecore_X_Window       win;
388    Ecore_X_Event_Mode   mode;
389    Ecore_X_Event_Detail detail;
390    Ecore_X_Time         time;
391 };
392
393 struct _Ecore_X_Event_Window_Focus_Out
394 {
395    Ecore_X_Window       win;
396    Ecore_X_Event_Mode   mode;
397    Ecore_X_Event_Detail detail;
398    Ecore_X_Time         time;
399 };
400
401 struct _Ecore_X_Event_Window_Keymap
402 {
403    Ecore_X_Window  win;
404 };
405
406 struct _Ecore_X_Event_Window_Damage
407 {
408    Ecore_X_Window  win;
409    int             x, y, w, h;
410    int             count;
411    Ecore_X_Time    time;
412 };
413
414 struct _Ecore_X_Event_Window_Visibility_Change
415 {
416    Ecore_X_Window  win;
417    int             fully_obscured;
418    Ecore_X_Time    time;
419 };
420
421 struct _Ecore_X_Event_Window_Create
422 {
423    Ecore_X_Window  win;
424    Ecore_X_Window  parent;
425    int             override;
426    int             x, y, w, h;
427    int             border;
428    Ecore_X_Time    time;
429 };
430
431 struct _Ecore_X_Event_Window_Destroy
432 {
433    Ecore_X_Window  win;
434    Ecore_X_Window  event_win;
435    Ecore_X_Time    time;
436 };
437
438 struct _Ecore_X_Event_Window_Hide
439 {
440    Ecore_X_Window  win;
441    Ecore_X_Window  event_win;
442    Ecore_X_Time    time;
443 };
444
445 struct _Ecore_X_Event_Window_Show
446 {
447    Ecore_X_Window  win;
448    Ecore_X_Window  event_win;
449    Ecore_X_Time    time;
450 };
451
452 struct _Ecore_X_Event_Window_Show_Request
453 {
454    Ecore_X_Window  win;
455    Ecore_X_Window  parent;
456    Ecore_X_Time    time;
457 };
458
459 struct _Ecore_X_Event_Window_Reparent
460 {
461    Ecore_X_Window  win;
462    Ecore_X_Window  event_win; 
463    Ecore_X_Window  parent;
464    Ecore_X_Time    time;
465 };
466
467 struct _Ecore_X_Event_Window_Configure
468 {
469    Ecore_X_Window  win;
470    Ecore_X_Window  event_win;
471    Ecore_X_Window  abovewin;
472    int             x, y, w, h;
473    int             border;
474    unsigned int    override : 1;
475    unsigned int    from_wm : 1;
476    Ecore_X_Time    time;
477 };
478
479 struct _Ecore_X_Event_Window_Configure_Request
480 {
481    Ecore_X_Window  win;
482    Ecore_X_Window  parent_win;
483    Ecore_X_Window  abovewin;
484    int             x, y, w, h;
485    int             border;
486    Ecore_X_Window_Stack_Mode detail;
487    unsigned long   value_mask;
488    Ecore_X_Time    time;
489 };
490
491 struct _Ecore_X_Event_Window_Gravity
492 {
493    Ecore_X_Window  win;
494    Ecore_X_Window  event_win;
495    Ecore_X_Time    time;
496 };
497
498 struct _Ecore_X_Event_Window_Resize_Request
499 {
500    Ecore_X_Window  win;
501    int             w, h;
502    Ecore_X_Time    time;
503 };
504
505 struct _Ecore_X_Event_Window_Stack
506 {
507    Ecore_X_Window  win;
508    Ecore_X_Window  event_win;
509    Ecore_X_Window_Stack_Mode detail;
510    Ecore_X_Time    time;
511 };
512
513 struct _Ecore_X_Event_Window_Stack_Request
514 {
515    Ecore_X_Window  win;
516    Ecore_X_Window  parent;
517    Ecore_X_Window_Stack_Mode detail;
518    Ecore_X_Time    time;
519 };
520
521 struct _Ecore_X_Event_Window_Property
522 {
523    Ecore_X_Window  win;
524    Ecore_X_Atom    atom;
525    Ecore_X_Time    time;
526 };
527
528 struct _Ecore_X_Event_Window_Colormap
529 {
530    Ecore_X_Window   win;
531    Ecore_X_Colormap cmap;
532    int              installed;
533    Ecore_X_Time     time;
534 };
535
536 struct _Ecore_X_Event_Selection_Clear
537 {
538    Ecore_X_Window    win;
539    Ecore_X_Selection selection;
540    Ecore_X_Atom      atom;
541    Ecore_X_Time      time;
542 };
543
544 struct _Ecore_X_Event_Selection_Request
545 {
546    Ecore_X_Window    owner;
547    Ecore_X_Window    requestor;
548    Ecore_X_Time      time;
549    Ecore_X_Atom      selection;
550    Ecore_X_Atom      target;
551    Ecore_X_Atom      property;
552 };
553
554 struct _Ecore_X_Event_Selection_Notify
555 {
556    Ecore_X_Window             win;
557    Ecore_X_Time               time;
558    Ecore_X_Selection          selection;
559    Ecore_X_Atom               atom;
560    char                      *target;
561    void                      *data;
562 };
563
564 struct _Ecore_X_Selection_Data
565 {
566    enum {
567         ECORE_X_SELECTION_CONTENT_NONE,
568         ECORE_X_SELECTION_CONTENT_TEXT,
569         ECORE_X_SELECTION_CONTENT_FILES,
570         ECORE_X_SELECTION_CONTENT_TARGETS,
571         ECORE_X_SELECTION_CONTENT_CUSTOM
572    } content;
573    unsigned char    *data;
574    int               length;
575    int               format;
576
577    int             (*free)(void *data);
578 };
579
580 struct _Ecore_X_Selection_Data_Files
581 {
582    Ecore_X_Selection_Data data;
583    char     **files;
584    int        num_files;
585 };
586
587 struct _Ecore_X_Selection_Data_Text
588 {
589    Ecore_X_Selection_Data data;
590    char     *text;
591 };
592
593 struct _Ecore_X_Selection_Data_Targets
594 {
595    Ecore_X_Selection_Data data;
596    char     **targets;
597    int        num_targets;
598 };
599
600 struct _Ecore_X_Event_Xdnd_Enter
601 {
602    Ecore_X_Window       win, source;
603
604    char               **types;
605    int                  num_types;
606 };
607
608 struct _Ecore_X_Event_Xdnd_Position
609 {
610    Ecore_X_Window       win, source;
611    struct {
612       int x, y;
613    } position;
614    Ecore_X_Atom         action;
615 };
616
617 struct _Ecore_X_Event_Xdnd_Status
618 {
619    Ecore_X_Window       win, target;
620    int                  will_accept;
621    Ecore_X_Rectangle    rectangle;
622    Ecore_X_Atom         action;
623 };
624
625 struct _Ecore_X_Event_Xdnd_Leave
626 {
627    Ecore_X_Window       win, source;
628 };
629
630 struct _Ecore_X_Event_Xdnd_Drop
631 {
632    Ecore_X_Window       win, source;
633    Ecore_X_Atom         action;
634    struct {
635       int x, y;
636    } position;
637 };
638
639 struct _Ecore_X_Event_Xdnd_Finished
640 {
641    Ecore_X_Window       win, target;
642    int                  completed;
643    Ecore_X_Atom         action;
644 };
645
646 struct _Ecore_X_Event_Client_Message
647 {
648    Ecore_X_Window       win;
649    Ecore_X_Atom         message_type;
650    int                  format;
651    union {
652       char              b[20];
653       short             s[10];
654       long              l[5];
655    }                    data;
656    Ecore_X_Time         time;
657 };
658
659 struct _Ecore_X_Event_Window_Shape
660 {
661    Ecore_X_Window  win;
662    Ecore_X_Time    time;
663 };
664
665 struct _Ecore_X_Event_Screensaver_Notify
666 {
667    Ecore_X_Window  win;
668    int             on;
669    Ecore_X_Time    time;
670 };
671
672 struct _Ecore_X_Event_Sync_Counter
673 {
674    Ecore_X_Time    time;
675 };
676
677 struct _Ecore_X_Event_Sync_Alarm
678 {
679    Ecore_X_Time       time;
680    Ecore_X_Sync_Alarm alarm;
681 };
682
683 struct _Ecore_X_Event_Screen_Change
684 {
685    Ecore_X_Window                win;
686    Ecore_X_Window                root;
687    int                           width;
688    int                           height;
689    Ecore_X_Time                  time;
690    Ecore_X_Time                  config_time;
691    int                           mm_width;   /* in millimeters */
692    int                           mm_height;  /* in millimeters */
693    Ecore_X_Randr_Rotation        rotation;
694    Ecore_X_Render_Subpixel_Order subpixel_order;
695    Ecore_X_Randr_Size_ID         size_id;
696 };
697
698 struct _Ecore_X_Event_Randr_Crtc_Change
699 {
700    Ecore_X_Window                win;
701    Ecore_X_Randr_Crtc            crtc;
702    Ecore_X_Randr_Mode            mode;
703    Ecore_X_Randr_Rotation        rotation;
704    int                           x;
705    int                           y;
706    int                           width;
707    int                           height;
708 };
709
710 struct _Ecore_X_Event_Randr_Output_Change
711 {
712    Ecore_X_Window                win;
713    Ecore_X_Randr_Output          output;
714    Ecore_X_Randr_Crtc            crtc;
715    Ecore_X_Randr_Mode            mode;
716    Ecore_X_Randr_Rotation        rotation;
717    Ecore_X_Randr_Connection      connection;
718    Ecore_X_Render_Subpixel_Order subpixel_order;
719 };
720
721 struct _Ecore_X_Event_Randr_Output_Property_Notify
722 {
723    Ecore_X_Window                win;
724    Ecore_X_Randr_Output          output;
725    Ecore_X_Atom                  property;
726    Ecore_X_Time                  time;
727    int                           state; /* NewValue, Deleted */
728 };
729
730 struct _Ecore_X_Event_Window_Delete_Request
731 {
732    Ecore_X_Window  win;
733    Ecore_X_Time    time;
734 };
735
736 struct _Ecore_X_Event_Window_Prop_Title_Change
737 {
738    Ecore_X_Window  win;
739    char   *title;
740    Ecore_X_Time    time;
741 };
742
743 struct _Ecore_X_Event_Window_Prop_Visible_Title_Change
744 {
745    Ecore_X_Window  win;
746    char   *title;
747    Ecore_X_Time    time;
748 };
749
750 struct _Ecore_X_Event_Window_Prop_Icon_Name_Change
751 {
752    Ecore_X_Window  win;
753    char   *name;
754    Ecore_X_Time    time;
755 };
756
757 struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change
758 {
759    Ecore_X_Window  win;
760    char   *name;
761    Ecore_X_Time    time;
762 };
763
764 struct _Ecore_X_Event_Window_Prop_Client_Machine_Change
765 {
766    Ecore_X_Window  win;
767    char   *name;
768    Ecore_X_Time    time;
769 };
770
771 struct _Ecore_X_Event_Window_Prop_Name_Class_Change
772 {
773    Ecore_X_Window  win;
774    char   *name;
775    char   *clas;
776    Ecore_X_Time    time;
777 };
778
779 struct _Ecore_X_Event_Window_Prop_Pid_Change
780 {
781    Ecore_X_Window  win;
782    pid_t   pid;
783    Ecore_X_Time    time;
784 };
785
786 struct _Ecore_X_Event_Window_Prop_Desktop_Change
787 {
788    Ecore_X_Window  win;
789    long    desktop;
790    Ecore_X_Time    time;
791 };
792
793 struct _Ecore_X_Event_Startup_Sequence
794 {
795    Ecore_X_Window  win;
796 };
797
798 struct _Ecore_X_Event_Window_Move_Resize_Request
799 {
800    Ecore_X_Window win;
801    int            x, y;
802    int            direction;
803    int            button;
804    int            source;
805 };
806
807 struct _Ecore_X_Event_Window_State_Request
808 {
809    Ecore_X_Window              win;
810    Ecore_X_Window_State_Action action;
811    Ecore_X_Window_State        state[2];
812    int                         source;
813 };
814
815 struct _Ecore_X_Event_Frame_Extents_Request
816 {
817    Ecore_X_Window              win;
818 };
819
820 struct _Ecore_X_Event_Ping
821 {
822    Ecore_X_Window  win;
823    Ecore_X_Window  event_win;
824    Ecore_X_Time    time;
825 };
826
827 struct _Ecore_X_Event_Desktop_Change
828 {
829    Ecore_X_Window              win;
830    unsigned int                desk;
831    int                         source;
832 };
833
834 struct _Ecore_X_Event_Generic
835 {
836    int            extension;
837    int            evtype;
838    unsigned int   cookie;
839    void           *data;
840 };
841
842 EAPI extern int ECORE_X_EVENT_ANY; /**< low level event dependent on
843                                         backend in use, if Xlib will be XEvent,
844                                         if XCB will be xcb_generic_event_t.
845                                         @warning avoid using it.
846                                    */
847 EAPI extern int ECORE_X_EVENT_MOUSE_IN;
848 EAPI extern int ECORE_X_EVENT_MOUSE_OUT;
849 EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_IN;
850 EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_OUT;
851 EAPI extern int ECORE_X_EVENT_WINDOW_KEYMAP;
852 EAPI extern int ECORE_X_EVENT_WINDOW_DAMAGE;
853 EAPI extern int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE;
854 EAPI extern int ECORE_X_EVENT_WINDOW_CREATE;
855 EAPI extern int ECORE_X_EVENT_WINDOW_DESTROY;
856 EAPI extern int ECORE_X_EVENT_WINDOW_HIDE;
857 EAPI extern int ECORE_X_EVENT_WINDOW_SHOW;
858 EAPI extern int ECORE_X_EVENT_WINDOW_SHOW_REQUEST;
859 EAPI extern int ECORE_X_EVENT_WINDOW_REPARENT;
860 EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE;
861 EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST;
862 EAPI extern int ECORE_X_EVENT_WINDOW_GRAVITY;
863 EAPI extern int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST;
864 EAPI extern int ECORE_X_EVENT_WINDOW_STACK;
865 EAPI extern int ECORE_X_EVENT_WINDOW_STACK_REQUEST;
866 EAPI extern int ECORE_X_EVENT_WINDOW_PROPERTY;
867 EAPI extern int ECORE_X_EVENT_WINDOW_COLORMAP;
868 EAPI extern int ECORE_X_EVENT_WINDOW_MAPPING;
869 EAPI extern int ECORE_X_EVENT_SELECTION_CLEAR;
870 EAPI extern int ECORE_X_EVENT_SELECTION_REQUEST;
871 EAPI extern int ECORE_X_EVENT_SELECTION_NOTIFY;
872 EAPI extern int ECORE_X_EVENT_CLIENT_MESSAGE;
873 EAPI extern int ECORE_X_EVENT_WINDOW_SHAPE;
874 EAPI extern int ECORE_X_EVENT_SCREENSAVER_NOTIFY;
875 EAPI extern int ECORE_X_EVENT_SYNC_COUNTER;
876 EAPI extern int ECORE_X_EVENT_SYNC_ALARM;
877 EAPI extern int ECORE_X_EVENT_SCREEN_CHANGE;
878 EAPI extern int ECORE_X_EVENT_RANDR_CRTC_CHANGE;
879 EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_CHANGE;
880 EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY;
881 EAPI extern int ECORE_X_EVENT_DAMAGE_NOTIFY;
882
883 EAPI extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST;
884 /*
885 EAPI extern int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE;
886 EAPI extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE;
887 EAPI extern int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE;
888 EAPI extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE;
889 EAPI extern int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE;
890 EAPI extern int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE;
891 EAPI extern int ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE;
892 EAPI extern int ECORE_X_EVENT_WINDOW_PROP_DESKTOP_CHANGE;
893 */
894
895 EAPI extern int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST;
896 EAPI extern int ECORE_X_EVENT_WINDOW_STATE_REQUEST;
897 EAPI extern int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST;
898 EAPI extern int ECORE_X_EVENT_PING;
899 EAPI extern int ECORE_X_EVENT_DESKTOP_CHANGE;
900
901 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW;
902 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
903 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
904
905 EAPI extern int ECORE_X_EVENT_GENERIC;
906
907 EAPI extern int ECORE_X_EVENT_XDND_ENTER;
908 EAPI extern int ECORE_X_EVENT_XDND_POSITION;
909 EAPI extern int ECORE_X_EVENT_XDND_STATUS;
910 EAPI extern int ECORE_X_EVENT_XDND_LEAVE;
911 EAPI extern int ECORE_X_EVENT_XDND_DROP;
912 EAPI extern int ECORE_X_EVENT_XDND_FINISHED;
913
914 EAPI extern int ECORE_X_LOCK_SCROLL;
915 EAPI extern int ECORE_X_LOCK_NUM;
916 EAPI extern int ECORE_X_LOCK_CAPS;
917
918 typedef enum _Ecore_X_WM_Protocol 
919 {
920    /* If enabled the window manager will be asked to send a
921     * delete message instead of just closing (destroying) the window. */
922    ECORE_X_WM_PROTOCOL_DELETE_REQUEST,
923
924    /* If enabled the window manager will be told that the window
925     * explicitly sets input focus. */
926    ECORE_X_WM_PROTOCOL_TAKE_FOCUS,
927
928    /* If enabled the window manager can ping the window to check
929     * if it is alive. */
930    ECORE_X_NET_WM_PROTOCOL_PING,
931
932    /* If enabled the window manager can sync updating with the
933     * window (?) */
934    ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST,
935
936    /* Number of defined items */
937    ECORE_X_WM_PROTOCOL_NUM
938 } Ecore_X_WM_Protocol;
939
940 typedef enum _Ecore_X_Window_Input_Mode 
941 {
942    /* The window can never be focused */
943    ECORE_X_WINDOW_INPUT_MODE_NONE,
944
945    /* The window can be focused by the WM but doesn't focus itself */
946    ECORE_X_WINDOW_INPUT_MODE_PASSIVE,
947
948    /* The window sets the focus itself if one of its sub-windows
949     * already is focused */
950    ECORE_X_WINDOW_INPUT_MODE_ACTIVE_LOCAL,
951
952    /* The window sets the focus itself even if another window
953     * is currently focused */
954    ECORE_X_WINDOW_INPUT_MODE_ACTIVE_GLOBAL
955 } Ecore_X_Window_Input_Mode;
956
957 typedef enum _Ecore_X_Window_State_Hint 
958 {
959    /** Do not provide any state hint to the window manager */
960    ECORE_X_WINDOW_STATE_HINT_NONE = -1,
961
962    /** The window wants to remain hidden and NOT iconified */
963    ECORE_X_WINDOW_STATE_HINT_WITHDRAWN,
964
965    /** The window wants to be mapped normally */
966    ECORE_X_WINDOW_STATE_HINT_NORMAL,
967
968    /** The window wants to start in an iconified state */
969    ECORE_X_WINDOW_STATE_HINT_ICONIC
970 } Ecore_X_Window_State_Hint;
971
972 typedef enum _Ecore_X_Window_Type 
973 {
974      ECORE_X_WINDOW_TYPE_UNKNOWN = 0,
975      ECORE_X_WINDOW_TYPE_DESKTOP,
976      ECORE_X_WINDOW_TYPE_DOCK,
977      ECORE_X_WINDOW_TYPE_TOOLBAR,
978      ECORE_X_WINDOW_TYPE_MENU,
979      ECORE_X_WINDOW_TYPE_UTILITY,
980      ECORE_X_WINDOW_TYPE_SPLASH,
981      ECORE_X_WINDOW_TYPE_DIALOG,
982      ECORE_X_WINDOW_TYPE_NORMAL,
983      ECORE_X_WINDOW_TYPE_DROPDOWN_MENU,
984      ECORE_X_WINDOW_TYPE_POPUP_MENU,
985      ECORE_X_WINDOW_TYPE_TOOLTIP,
986      ECORE_X_WINDOW_TYPE_NOTIFICATION,
987      ECORE_X_WINDOW_TYPE_COMBO,
988      ECORE_X_WINDOW_TYPE_DND
989 } Ecore_X_Window_Type;
990
991 typedef enum _Ecore_X_Action 
992 {
993    ECORE_X_ACTION_MOVE,
994    ECORE_X_ACTION_RESIZE,
995    ECORE_X_ACTION_MINIMIZE,
996    ECORE_X_ACTION_SHADE,
997    ECORE_X_ACTION_STICK,
998    ECORE_X_ACTION_MAXIMIZE_HORZ,
999    ECORE_X_ACTION_MAXIMIZE_VERT,
1000    ECORE_X_ACTION_FULLSCREEN,
1001    ECORE_X_ACTION_CHANGE_DESKTOP,
1002    ECORE_X_ACTION_CLOSE,
1003    ECORE_X_ACTION_ABOVE,
1004    ECORE_X_ACTION_BELOW
1005 } Ecore_X_Action;
1006
1007 typedef enum _Ecore_X_Window_Configure_Mask 
1008 {
1009    ECORE_X_WINDOW_CONFIGURE_MASK_X = (1 << 0),
1010    ECORE_X_WINDOW_CONFIGURE_MASK_Y = (1 << 1),
1011    ECORE_X_WINDOW_CONFIGURE_MASK_W = (1 << 2),
1012    ECORE_X_WINDOW_CONFIGURE_MASK_H = (1 << 3),
1013    ECORE_X_WINDOW_CONFIGURE_MASK_BORDER_WIDTH = (1 << 4),
1014    ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING = (1 << 5),
1015    ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE = (1 << 6)
1016 } Ecore_X_Window_Configure_Mask;
1017
1018 typedef enum _Ecore_X_Virtual_Keyboard_State 
1019 {
1020    ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN = 0,
1021    ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF,
1022    ECORE_X_VIRTUAL_KEYBOARD_STATE_ON,
1023    ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA,
1024    ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC,
1025    ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN,
1026    ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER,
1027    ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX,
1028    ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL,
1029    ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD,
1030    ECORE_X_VIRTUAL_KEYBOARD_STATE_IP,
1031    ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST,
1032    ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE,
1033    ECORE_X_VIRTUAL_KEYBOARD_STATE_URL,
1034    ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD,
1035    ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME
1036 } Ecore_X_Virtual_Keyboard_State;
1037
1038 typedef enum _Ecore_X_Illume_Mode 
1039 {
1040    ECORE_X_ILLUME_MODE_UNKNOWN = 0, 
1041    ECORE_X_ILLUME_MODE_SINGLE, 
1042    ECORE_X_ILLUME_MODE_DUAL_TOP, 
1043    ECORE_X_ILLUME_MODE_DUAL_LEFT
1044 } Ecore_X_Illume_Mode;
1045
1046 typedef enum _Ecore_X_Illume_Quickpanel_State 
1047 {
1048    ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN = 0, 
1049    ECORE_X_ILLUME_QUICKPANEL_STATE_OFF, 
1050    ECORE_X_ILLUME_QUICKPANEL_STATE_ON
1051 } Ecore_X_Illume_Quickpanel_State;
1052
1053 /* Window layer constants */
1054 #define ECORE_X_WINDOW_LAYER_BELOW 2
1055 #define ECORE_X_WINDOW_LAYER_NORMAL 4
1056 #define ECORE_X_WINDOW_LAYER_ABOVE 6
1057
1058 /* Property list operations */
1059 #define ECORE_X_PROP_LIST_REMOVE 0
1060 #define ECORE_X_PROP_LIST_ADD 1
1061 #define ECORE_X_PROP_LIST_TOGGLE 2
1062
1063 EAPI int              ecore_x_init(const char *name);
1064 EAPI int              ecore_x_shutdown(void);
1065 EAPI int              ecore_x_disconnect(void);
1066 EAPI Ecore_X_Display *ecore_x_display_get(void);
1067 EAPI Ecore_X_Connection *ecore_x_connection_get(void);
1068 EAPI int              ecore_x_fd_get(void);
1069 EAPI Ecore_X_Screen  *ecore_x_default_screen_get(void);
1070 EAPI void             ecore_x_double_click_time_set(double t);
1071 EAPI double           ecore_x_double_click_time_get(void);
1072 EAPI void             ecore_x_flush(void);
1073 EAPI void             ecore_x_sync(void);
1074 EAPI void             ecore_x_killall(Ecore_X_Window root);
1075 EAPI void             ecore_x_kill(Ecore_X_Window win);
1076 EAPI int              ecore_x_dpi_get(void);
1077
1078 EAPI Ecore_X_Time     ecore_x_current_time_get(void);
1079
1080 EAPI void             ecore_x_error_handler_set(void (*func) (void *data), const void *data);
1081 EAPI void             ecore_x_io_error_handler_set(void (*func) (void *data), const void *data);
1082 EAPI int              ecore_x_error_request_get(void);
1083 EAPI int              ecore_x_error_code_get(void);
1084
1085 EAPI void             ecore_x_event_mask_set(Ecore_X_Window w, Ecore_X_Event_Mask mask);
1086 EAPI void             ecore_x_event_mask_unset(Ecore_X_Window w, Ecore_X_Event_Mask mask);
1087
1088 EAPI int              ecore_x_selection_notify_send(Ecore_X_Window requestor, Ecore_X_Atom selection, Ecore_X_Atom target, Ecore_X_Atom property, Ecore_X_Time time);
1089 EAPI void             ecore_x_selection_primary_prefetch(void);
1090 EAPI void             ecore_x_selection_primary_fetch(void);
1091 EAPI int              ecore_x_selection_primary_set(Ecore_X_Window w, const void *data, int size);
1092 EAPI int              ecore_x_selection_primary_clear(void);
1093 EAPI void             ecore_x_selection_secondary_prefetch(void);
1094 EAPI void             ecore_x_selection_secondary_fetch(void);
1095 EAPI int              ecore_x_selection_secondary_set(Ecore_X_Window w, const void *data, int size);
1096 EAPI int              ecore_x_selection_secondary_clear(void);
1097 EAPI void             ecore_x_selection_xdnd_prefetch(void);
1098 EAPI void             ecore_x_selection_xdnd_fetch(void);
1099 EAPI int              ecore_x_selection_xdnd_set(Ecore_X_Window w, const void *data, int size);
1100 EAPI int              ecore_x_selection_xdnd_clear(void);
1101 EAPI void             ecore_x_selection_clipboard_prefetch(void);
1102 EAPI void             ecore_x_selection_clipboard_fetch(void);
1103 EAPI int              ecore_x_selection_clipboard_set(Ecore_X_Window w, const void *data, int size);
1104 EAPI int              ecore_x_selection_clipboard_clear(void);
1105 EAPI void             ecore_x_selection_primary_request(Ecore_X_Window w, const char *target);
1106 EAPI void             ecore_x_selection_secondary_request(Ecore_X_Window w, const char *target);
1107 EAPI void             ecore_x_selection_xdnd_request(Ecore_X_Window w, const char *target);
1108 EAPI void             ecore_x_selection_clipboard_request(Ecore_X_Window w, const char *target);
1109 EAPI int              ecore_x_selection_convert(Ecore_X_Atom selection, Ecore_X_Atom target, void **data_ret);
1110 EAPI void             ecore_x_selection_converter_add(char *target, int (*func)(char *target, void *data, int size, void **data_ret, int *size_ret));
1111 EAPI void             ecore_x_selection_converter_atom_add(Ecore_X_Atom target, int (*func)(char *target, void *data, int size, void **data_ret, int *size_ret));
1112 EAPI void             ecore_x_selection_converter_del(char *target);
1113 EAPI void             ecore_x_selection_converter_atom_del(Ecore_X_Atom target);
1114 EAPI void             ecore_x_selection_parser_add(const char *target, void *(*func)(const char *target, void *data, int size, int format));
1115 EAPI void             ecore_x_selection_parser_del(const char *target);
1116
1117 EAPI void             ecore_x_dnd_aware_set(Ecore_X_Window win, int on);
1118 EAPI void             ecore_x_dnd_version_get_prefetch(Ecore_X_Window window);
1119 EAPI void             ecore_x_dnd_version_get_fetch(void);
1120 EAPI int              ecore_x_dnd_version_get(Ecore_X_Window win);
1121 EAPI void             ecore_x_dnd_type_get_prefetch(Ecore_X_Window window);
1122 EAPI void             ecore_x_dnd_type_get_fetch(void);
1123 EAPI int              ecore_x_dnd_type_isset(Ecore_X_Window win, const char *type);
1124 EAPI void             ecore_x_dnd_type_set(Ecore_X_Window win, const char *type, int on);
1125 EAPI void             ecore_x_dnd_types_set(Ecore_X_Window win, const char **types, unsigned int num_types);
1126 EAPI void             ecore_x_dnd_actions_set(Ecore_X_Window win, Ecore_X_Atom *actions, unsigned int num_actions);
1127 EAPI void             ecore_x_dnd_begin_prefetch(Ecore_X_Window source);
1128 EAPI void             ecore_x_dnd_begin_fetch(void);
1129 EAPI int              ecore_x_dnd_begin(Ecore_X_Window source, unsigned char *data, int size);
1130 EAPI int              ecore_x_dnd_drop(void);
1131 EAPI void             ecore_x_dnd_send_status(int will_accept, int suppress, Ecore_X_Rectangle rectangle, Ecore_X_Atom action);
1132 EAPI void             ecore_x_dnd_send_finished(void);
1133 EAPI void             ecore_x_dnd_source_action_set(Ecore_X_Atom action);
1134 EAPI Ecore_X_Atom     ecore_x_dnd_source_action_get(void);
1135
1136 EAPI Ecore_X_Window   ecore_x_window_new(Ecore_X_Window parent, int x, int y, int w, int h);
1137 EAPI Ecore_X_Window   ecore_x_window_override_new(Ecore_X_Window parent, int x, int y, int w, int h);
1138 EAPI int              ecore_x_window_argb_get(Ecore_X_Window win);
1139 EAPI Ecore_X_Window   ecore_x_window_manager_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1140 EAPI Ecore_X_Window   ecore_x_window_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1141 EAPI Ecore_X_Window   ecore_x_window_override_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1142 EAPI Ecore_X_Window   ecore_x_window_input_new(Ecore_X_Window parent, int x, int y, int w, int h);
1143 EAPI void             ecore_x_window_configure(Ecore_X_Window win,
1144                                                Ecore_X_Window_Configure_Mask mask,
1145                                                int x, int y, int w, int h,
1146                                                int border_width,
1147                                                Ecore_X_Window sibling,
1148                                                int stack_mode);
1149 EAPI void             ecore_x_window_cursor_set(Ecore_X_Window win, Ecore_X_Cursor c);
1150 EAPI void             ecore_x_window_free(Ecore_X_Window win);
1151 EAPI void             ecore_x_window_ignore_set(Ecore_X_Window win, int ignore);
1152 EAPI Ecore_X_Window  *ecore_x_window_ignore_list(int *num);
1153
1154 EAPI void             ecore_x_window_delete_request_send(Ecore_X_Window win);
1155 EAPI void             ecore_x_window_show(Ecore_X_Window win);
1156 EAPI void             ecore_x_window_hide(Ecore_X_Window win);
1157 EAPI void             ecore_x_window_move(Ecore_X_Window win, int x, int y);
1158 EAPI void             ecore_x_window_resize(Ecore_X_Window win, int w, int h);
1159 EAPI void             ecore_x_window_move_resize(Ecore_X_Window win, int x, int y, int w, int h);
1160 EAPI void             ecore_x_window_focus(Ecore_X_Window win);
1161 EAPI void             ecore_x_window_focus_at_time(Ecore_X_Window win, Ecore_X_Time t);
1162 EAPI void             ecore_x_get_input_focus_prefetch(void);
1163 EAPI void             ecore_x_get_input_focus_fetch(void);
1164 EAPI Ecore_X_Window   ecore_x_window_focus_get(void);
1165 EAPI void             ecore_x_window_raise(Ecore_X_Window win);
1166 EAPI void             ecore_x_window_lower(Ecore_X_Window win);
1167 EAPI void             ecore_x_window_reparent(Ecore_X_Window win, Ecore_X_Window new_parent, int x, int y);
1168 EAPI void             ecore_x_window_size_get(Ecore_X_Window win, int *w, int *h);
1169 EAPI void             ecore_x_window_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1170 EAPI int              ecore_x_window_border_width_get(Ecore_X_Window win);
1171 EAPI void             ecore_x_window_border_width_set(Ecore_X_Window win, int width);
1172 EAPI int              ecore_x_window_depth_get(Ecore_X_Window win);
1173 EAPI void             ecore_x_window_cursor_show(Ecore_X_Window win, int show);
1174 EAPI void             ecore_x_window_defaults_set(Ecore_X_Window win);
1175 EAPI int              ecore_x_window_visible_get(Ecore_X_Window win);
1176 EAPI Ecore_X_Window   ecore_x_window_shadow_tree_at_xy_with_skip_get(Ecore_X_Window base, int x, int y, Ecore_X_Window *skip, int skip_num);
1177 EAPI Ecore_X_Window   ecore_x_window_shadow_parent_get(Ecore_X_Window root, Ecore_X_Window win);
1178 EAPI void             ecore_x_window_shadow_tree_flush(void);
1179 EAPI Ecore_X_Window   ecore_x_window_root_get(Ecore_X_Window win);
1180 EAPI Ecore_X_Window   ecore_x_window_at_xy_get(int x, int y);
1181 EAPI Ecore_X_Window   ecore_x_window_at_xy_with_skip_get(int x, int y, Ecore_X_Window *skip, int skip_num);
1182 EAPI Ecore_X_Window   ecore_x_window_at_xy_begin_get(Ecore_X_Window begin, int x, int y);
1183 EAPI void             ecore_x_query_tree_prefetch(Ecore_X_Window window);
1184 EAPI void             ecore_x_query_tree_fetch(void);
1185 EAPI Ecore_X_Window   ecore_x_window_parent_get(Ecore_X_Window win);
1186
1187 EAPI void             ecore_x_window_background_color_set(Ecore_X_Window win,
1188                                                           unsigned short r,
1189                                                           unsigned short g,
1190                                                           unsigned short b);
1191 EAPI void             ecore_x_window_gravity_set(Ecore_X_Window win,
1192                                                  Ecore_X_Gravity grav);
1193 EAPI void             ecore_x_window_pixel_gravity_set(Ecore_X_Window win,
1194                                                        Ecore_X_Gravity grav);
1195 EAPI void             ecore_x_window_pixmap_set(Ecore_X_Window win,
1196                                                 Ecore_X_Pixmap pmap);
1197 EAPI void             ecore_x_window_area_clear(Ecore_X_Window win,
1198                                                 int x, int y, int w, int h);
1199 EAPI void             ecore_x_window_area_expose(Ecore_X_Window win,
1200                                                  int x, int y, int w, int h);
1201 EAPI void             ecore_x_window_override_set(Ecore_X_Window win, int override);
1202
1203 EAPI void             ecore_x_window_prop_card32_set(Ecore_X_Window win, Ecore_X_Atom atom,
1204                                                      unsigned int *val, unsigned int num);
1205 EAPI void             ecore_x_window_prop_card32_get_prefetch(Ecore_X_Window window,
1206                                                               Ecore_X_Atom atom);
1207 EAPI void             ecore_x_window_prop_card32_get_fetch(void);
1208 EAPI int              ecore_x_window_prop_card32_get(Ecore_X_Window win, Ecore_X_Atom atom,
1209                                                      unsigned int *val, unsigned int len);
1210 EAPI int              ecore_x_window_prop_card32_list_get(Ecore_X_Window win,
1211                                                           Ecore_X_Atom atom,
1212                                                           unsigned int **plst);
1213
1214 EAPI void             ecore_x_window_prop_xid_set(Ecore_X_Window win,
1215                                                   Ecore_X_Atom atom,
1216                                                   Ecore_X_Atom type,
1217                                                   Ecore_X_ID * lst,
1218                                                   unsigned int num);
1219 EAPI void             ecore_x_window_prop_xid_get_prefetch(Ecore_X_Window window,
1220                                                            Ecore_X_Atom   atom,
1221                                                            Ecore_X_Atom   type);
1222 EAPI void             ecore_x_window_prop_xid_get_fetch(void);
1223 EAPI int              ecore_x_window_prop_xid_get(Ecore_X_Window win,
1224                                                   Ecore_X_Atom atom,
1225                                                   Ecore_X_Atom type,
1226                                                   Ecore_X_ID * lst,
1227                                                   unsigned int len);
1228 EAPI int              ecore_x_window_prop_xid_list_get(Ecore_X_Window win,
1229                                                        Ecore_X_Atom atom,
1230                                                        Ecore_X_Atom type,
1231                                                        Ecore_X_ID ** plst);
1232 EAPI void             ecore_x_window_prop_xid_list_change(Ecore_X_Window win,
1233                                                           Ecore_X_Atom atom,
1234                                                           Ecore_X_Atom type,
1235                                                           Ecore_X_ID item,
1236                                                           int op);
1237 EAPI void             ecore_x_window_prop_atom_set(Ecore_X_Window win,
1238                                                    Ecore_X_Atom atom,
1239                                                    Ecore_X_Atom * val,
1240                                                    unsigned int num);
1241 EAPI void             ecore_x_window_prop_atom_get_prefetch(Ecore_X_Window window,
1242                                                             Ecore_X_Atom   atom);
1243 EAPI void             ecore_x_window_prop_atom_get_fetch(void);
1244 EAPI int              ecore_x_window_prop_atom_get(Ecore_X_Window win,
1245                                                    Ecore_X_Atom atom,
1246                                                    Ecore_X_Atom * val,
1247                                                    unsigned int len);
1248 EAPI int              ecore_x_window_prop_atom_list_get(Ecore_X_Window win,
1249                                                         Ecore_X_Atom atom,
1250                                                         Ecore_X_Atom ** plst);
1251 EAPI void             ecore_x_window_prop_atom_list_change(Ecore_X_Window win,
1252                                                            Ecore_X_Atom atom,
1253                                                            Ecore_X_Atom item,
1254                                                            int op);
1255 EAPI void             ecore_x_window_prop_window_set(Ecore_X_Window win,
1256                                                      Ecore_X_Atom atom,
1257                                                      Ecore_X_Window * val,
1258                                                      unsigned int num);
1259 EAPI void             ecore_x_window_prop_window_get_prefetch(Ecore_X_Window window,
1260                                                               Ecore_X_Atom   atom);
1261 EAPI void             ecore_x_window_prop_window_get_fetch(void);
1262 EAPI int              ecore_x_window_prop_window_get(Ecore_X_Window win,
1263                                                      Ecore_X_Atom atom,
1264                                                      Ecore_X_Window * val,
1265                                                      unsigned int len);
1266 EAPI int              ecore_x_window_prop_window_list_get(Ecore_X_Window win,
1267                                                           Ecore_X_Atom atom,
1268                                                           Ecore_X_Window ** plst);
1269
1270 EAPI Ecore_X_Atom     ecore_x_window_prop_any_type(void);
1271 EAPI void             ecore_x_window_prop_property_set(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Atom format, int size, void *data, int number);
1272 EAPI void             ecore_x_window_prop_property_get_prefetch(Ecore_X_Window window,
1273                                                                 Ecore_X_Atom   property,
1274                                                                 Ecore_X_Atom   type);
1275 EAPI void             ecore_x_window_prop_property_get_fetch(void);
1276 EAPI int              ecore_x_window_prop_property_get(Ecore_X_Window win, Ecore_X_Atom property, Ecore_X_Atom type, int size, unsigned char **data, int *num);
1277 EAPI void             ecore_x_window_prop_property_del(Ecore_X_Window win, Ecore_X_Atom property);
1278 EAPI void             ecore_x_window_prop_list_prefetch(Ecore_X_Window window);
1279 EAPI void             ecore_x_window_prop_list_fetch(void);
1280 EAPI Ecore_X_Atom    *ecore_x_window_prop_list(Ecore_X_Window win, int *num_ret);
1281 EAPI void             ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, const char *str);
1282 EAPI void             ecore_x_window_prop_string_get_prefetch(Ecore_X_Window window,
1283                                                               Ecore_X_Atom   type);
1284 EAPI void             ecore_x_window_prop_string_get_fetch(void);
1285 EAPI char            *ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type);
1286 EAPI int              ecore_x_window_prop_protocol_isset(Ecore_X_Window win, Ecore_X_WM_Protocol protocol);
1287 EAPI Ecore_X_WM_Protocol *ecore_x_window_prop_protocol_list_get(Ecore_X_Window win, int *num_ret);
1288
1289 EAPI void               ecore_x_window_shape_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask);
1290 EAPI void               ecore_x_window_shape_window_set(Ecore_X_Window win, Ecore_X_Window shape_win);
1291 EAPI void               ecore_x_window_shape_window_set_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1292 EAPI void               ecore_x_window_shape_rectangle_set(Ecore_X_Window win, int x, int y, int w, int h);
1293 EAPI void               ecore_x_window_shape_rectangles_set(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1294 EAPI void               ecore_x_window_shape_window_add(Ecore_X_Window win, Ecore_X_Window shape_win);
1295 EAPI void               ecore_x_window_shape_window_add_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1296 EAPI void               ecore_x_window_shape_rectangle_add(Ecore_X_Window win, int x, int y, int w, int h);
1297 EAPI void               ecore_x_window_shape_rectangle_clip(Ecore_X_Window win, int x, int y, int w, int h);
1298 EAPI void               ecore_x_window_shape_rectangles_add(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1299 EAPI void               ecore_x_window_shape_rectangles_get_prefetch(Ecore_X_Window window);
1300 EAPI void               ecore_x_window_shape_rectangles_get_fetch(void);
1301 EAPI Ecore_X_Rectangle *ecore_x_window_shape_rectangles_get(Ecore_X_Window win, int *num_ret);
1302 EAPI void               ecore_x_window_shape_events_select(Ecore_X_Window win, int on);
1303 EAPI void               ecore_x_window_shape_input_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask);
1304
1305 EAPI Ecore_X_Pixmap   ecore_x_pixmap_new(Ecore_X_Window win, int w, int h, int dep);
1306 EAPI void             ecore_x_pixmap_free(Ecore_X_Pixmap pmap);
1307 EAPI void             ecore_x_pixmap_paste(Ecore_X_Pixmap pmap, Ecore_X_Drawable dest, Ecore_X_GC gc, int sx, int sy, int w, int h, int dx, int dy);
1308 EAPI void             ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap, int *x, int *y, int *w, int *h);
1309 EAPI int              ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap);
1310
1311 EAPI Ecore_X_GC       ecore_x_gc_new(Ecore_X_Drawable draw, Ecore_X_GC_Value_Mask value_mask, const unsigned int *value_list);
1312 EAPI void             ecore_x_gc_free(Ecore_X_GC gc);
1313
1314 EAPI int              ecore_x_client_message32_send(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Event_Mask mask, long d0, long d1, long d2, long d3, long d4);
1315 EAPI int              ecore_x_client_message8_send(Ecore_X_Window win, Ecore_X_Atom type, const void *data, int len);
1316 EAPI int              ecore_x_mouse_move_send(Ecore_X_Window win, int x, int y);
1317 EAPI int              ecore_x_mouse_down_send(Ecore_X_Window win, int x, int y, int b);
1318 EAPI int              ecore_x_mouse_up_send(Ecore_X_Window win, int x, int y, int b);
1319
1320 EAPI void            ecore_x_drawable_geometry_get_prefetch(Ecore_X_Drawable drawable);
1321 EAPI void            ecore_x_drawable_geometry_get_fetch(void);
1322 EAPI void            ecore_x_drawable_geometry_get(Ecore_X_Drawable d, int *x, int *y, int *w, int *h);
1323 EAPI int             ecore_x_drawable_border_width_get(Ecore_X_Drawable d);
1324 EAPI int             ecore_x_drawable_depth_get(Ecore_X_Drawable d);
1325 EAPI void            ecore_x_drawable_rectangle_fill(Ecore_X_Drawable d, Ecore_X_GC gc, int x, int y, int width, int height);
1326
1327 EAPI int  ecore_x_cursor_color_supported_get(void);
1328 EAPI Ecore_X_Cursor ecore_x_cursor_new(Ecore_X_Window win, int *pixels, int w, int h, int hot_x, int hot_y);
1329 EAPI void ecore_x_cursor_free(Ecore_X_Cursor c);
1330 EAPI Ecore_X_Cursor ecore_x_cursor_shape_get(int shape);
1331 EAPI void ecore_x_cursor_size_set(int size);
1332 EAPI int  ecore_x_cursor_size_get(void);
1333
1334
1335 /* FIXME: these funcs need categorising */
1336 EAPI Ecore_X_Window *ecore_x_window_root_list(int *num_ret);
1337 EAPI Ecore_X_Window  ecore_x_window_root_first_get(void);
1338 EAPI int             ecore_x_window_manage(Ecore_X_Window win);
1339 EAPI void            ecore_x_window_container_manage(Ecore_X_Window win);
1340 EAPI void            ecore_x_window_client_manage(Ecore_X_Window win);
1341 EAPI void            ecore_x_window_sniff(Ecore_X_Window win);
1342 EAPI void            ecore_x_window_client_sniff(Ecore_X_Window win);
1343 EAPI void            ecore_x_atom_get_prefetch(const char *name);
1344 EAPI void            ecore_x_atom_get_fetch(void);
1345 EAPI Ecore_X_Atom    ecore_x_atom_get(const char *name);
1346 EAPI void            ecore_x_atoms_get(const char **names, int num, Ecore_X_Atom *atoms);
1347 EAPI void            ecore_x_get_atom_name_prefetch(Ecore_X_Atom atom);
1348 EAPI void            ecore_x_get_atom_name_fetch(void);
1349 EAPI char           *ecore_x_atom_name_get(Ecore_X_Atom atom);
1350
1351
1352 EAPI void            ecore_x_icccm_init(void);
1353 EAPI void            ecore_x_icccm_state_set(Ecore_X_Window win, Ecore_X_Window_State_Hint state);
1354 EAPI Ecore_X_Window_State_Hint ecore_x_icccm_state_get(Ecore_X_Window win);
1355 EAPI void            ecore_x_icccm_delete_window_send(Ecore_X_Window win, Ecore_X_Time t);
1356 EAPI void            ecore_x_icccm_take_focus_send(Ecore_X_Window win, Ecore_X_Time t);
1357 EAPI void            ecore_x_icccm_save_yourself_send(Ecore_X_Window win, Ecore_X_Time t);
1358 EAPI void            ecore_x_icccm_move_resize_send(Ecore_X_Window win, int x, int y, int w, int h);
1359 EAPI void  ecore_x_icccm_hints_set(Ecore_X_Window win,
1360                                    int accepts_focus,
1361                                    Ecore_X_Window_State_Hint initial_state,
1362                                    Ecore_X_Pixmap icon_pixmap,
1363                                    Ecore_X_Pixmap icon_mask,
1364                                    Ecore_X_Window icon_window,
1365                                    Ecore_X_Window window_group,
1366                                    int is_urgent);
1367 EAPI int  ecore_x_icccm_hints_get(Ecore_X_Window win,
1368                                   int *accepts_focus,
1369                                   Ecore_X_Window_State_Hint *initial_state,
1370                                   Ecore_X_Pixmap *icon_pixmap,
1371                                   Ecore_X_Pixmap *icon_mask,
1372                                   Ecore_X_Window *icon_window,
1373                                   Ecore_X_Window *window_group,
1374                                   int *is_urgent);
1375 EAPI void  ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win,
1376                                             int request_pos,
1377                                             Ecore_X_Gravity gravity,
1378                                             int min_w, int min_h,
1379                                             int max_w, int max_h,
1380                                             int base_w, int base_h,
1381                                             int step_x, int step_y,
1382                                             double min_aspect,
1383                                             double max_aspect);
1384 EAPI int   ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win,
1385                                             int *request_pos,
1386                                             Ecore_X_Gravity *gravity,
1387                                             int *min_w, int *min_h,
1388                                             int *max_w, int *max_h,
1389                                             int *base_w, int *base_h,
1390                                             int *step_x, int *step_y,
1391                                             double *min_aspect,
1392                                             double *max_aspect);
1393 EAPI void  ecore_x_icccm_title_set(Ecore_X_Window win, const char *t);
1394 EAPI char *ecore_x_icccm_title_get(Ecore_X_Window win);
1395 EAPI void  ecore_x_icccm_protocol_atoms_set(Ecore_X_Window win,
1396                                              Ecore_X_Atom *protos, int num);
1397 EAPI void  ecore_x_icccm_protocol_set(Ecore_X_Window win,
1398                                       Ecore_X_WM_Protocol protocol,
1399                                       int on);
1400 EAPI int   ecore_x_icccm_protocol_isset(Ecore_X_Window win,
1401                                         Ecore_X_WM_Protocol protocol);
1402 EAPI void  ecore_x_icccm_name_class_set(Ecore_X_Window win,
1403                                         const char *n,
1404                                         const char *c);
1405 EAPI void  ecore_x_icccm_name_class_get(Ecore_X_Window win,
1406                                         char **n,
1407                                         char **c);
1408 EAPI char *ecore_x_icccm_client_machine_get(Ecore_X_Window win);
1409 EAPI void  ecore_x_icccm_command_set(Ecore_X_Window win, int argc, char **argv);
1410 EAPI void  ecore_x_icccm_command_get(Ecore_X_Window win, int *argc, char ***argv);
1411 EAPI char *ecore_x_icccm_icon_name_get(Ecore_X_Window win);
1412 EAPI void  ecore_x_icccm_icon_name_set(Ecore_X_Window win, const char *t);
1413 EAPI void  ecore_x_icccm_colormap_window_set(Ecore_X_Window win, Ecore_X_Window subwin);
1414 EAPI void  ecore_x_icccm_colormap_window_unset(Ecore_X_Window win, Ecore_X_Window subwin);
1415 EAPI void  ecore_x_icccm_transient_for_set(Ecore_X_Window win, Ecore_X_Window forwin);
1416 EAPI void  ecore_x_icccm_transient_for_unset(Ecore_X_Window win);
1417 EAPI Ecore_X_Window ecore_x_icccm_transient_for_get(Ecore_X_Window win);
1418 EAPI void  ecore_x_icccm_window_role_set(Ecore_X_Window win, const char *role);
1419 EAPI char *ecore_x_icccm_window_role_get(Ecore_X_Window win);
1420 EAPI void  ecore_x_icccm_client_leader_set(Ecore_X_Window win, Ecore_X_Window l);
1421 EAPI Ecore_X_Window ecore_x_icccm_client_leader_get(Ecore_X_Window win);
1422 EAPI void ecore_x_icccm_iconic_request_send(Ecore_X_Window win, Ecore_X_Window root);
1423
1424
1425 typedef enum _Ecore_X_MWM_Hint_Func
1426 {
1427    ECORE_X_MWM_HINT_FUNC_ALL = (1 << 0),
1428    ECORE_X_MWM_HINT_FUNC_RESIZE = (1 << 1),
1429    ECORE_X_MWM_HINT_FUNC_MOVE = (1 << 2),
1430    ECORE_X_MWM_HINT_FUNC_MINIMIZE = (1 << 3),
1431    ECORE_X_MWM_HINT_FUNC_MAXIMIZE = (1 << 4),
1432    ECORE_X_MWM_HINT_FUNC_CLOSE = (1 << 5)
1433 } Ecore_X_MWM_Hint_Func;
1434
1435 typedef enum _Ecore_X_MWM_Hint_Decor
1436 {
1437    ECORE_X_MWM_HINT_DECOR_ALL = (1 << 0),
1438    ECORE_X_MWM_HINT_DECOR_BORDER = (1 << 1),
1439    ECORE_X_MWM_HINT_DECOR_RESIZEH = (1 << 2),
1440    ECORE_X_MWM_HINT_DECOR_TITLE = (1 << 3),
1441    ECORE_X_MWM_HINT_DECOR_MENU = (1 << 4),
1442    ECORE_X_MWM_HINT_DECOR_MINIMIZE = (1 << 5),
1443    ECORE_X_MWM_HINT_DECOR_MAXIMIZE = (1 << 6)
1444 } Ecore_X_MWM_Hint_Decor;
1445
1446 typedef enum _Ecore_X_MWM_Hint_Input
1447 {
1448    ECORE_X_MWM_HINT_INPUT_MODELESS = 0,
1449    ECORE_X_MWM_HINT_INPUT_PRIMARY_APPLICATION_MODAL = 1,
1450    ECORE_X_MWM_HINT_INPUT_SYSTEM_MODAL = 2,
1451    ECORE_X_MWM_HINT_INPUT_FULL_APPLICATION_MODAL = 3
1452 } Ecore_X_MWM_Hint_Input;
1453
1454 EAPI void ecore_x_mwm_hints_get_prefetch(Ecore_X_Window window);
1455 EAPI void ecore_x_mwm_hints_get_fetch(void);
1456 EAPI int  ecore_x_mwm_hints_get(Ecore_X_Window win,
1457                                 Ecore_X_MWM_Hint_Func *fhint,
1458                                 Ecore_X_MWM_Hint_Decor *dhint,
1459                                 Ecore_X_MWM_Hint_Input *ihint);
1460 EAPI void ecore_x_mwm_borderless_set(Ecore_X_Window win, int borderless);
1461
1462 /* netwm */
1463 EAPI void                ecore_x_netwm_init(void);
1464 EAPI void                ecore_x_netwm_shutdown(void);
1465 EAPI void                ecore_x_netwm_wm_identify(Ecore_X_Window root, Ecore_X_Window check, const char *wm_name);
1466 EAPI void                ecore_x_netwm_supported_set(Ecore_X_Window root, Ecore_X_Atom *supported, int num);
1467 EAPI void                ecore_x_netwm_supported_get_prefetch(Ecore_X_Window root);
1468 EAPI void                ecore_x_netwm_supported_get_fetch(void);
1469 EAPI int                 ecore_x_netwm_supported_get(Ecore_X_Window root, Ecore_X_Atom **supported, int *num);
1470 EAPI void                ecore_x_netwm_desk_count_set(Ecore_X_Window root, unsigned int n_desks);
1471 EAPI void                ecore_x_netwm_desk_roots_set(Ecore_X_Window root, Ecore_X_Window *vroots, unsigned int n_desks);
1472 EAPI void                ecore_x_netwm_desk_names_set(Ecore_X_Window root, const char **names, unsigned int n_desks);
1473 EAPI void                ecore_x_netwm_desk_size_set(Ecore_X_Window root, unsigned int width, unsigned int height);
1474 EAPI void                ecore_x_netwm_desk_workareas_set(Ecore_X_Window root, unsigned int *areas, unsigned int n_desks);
1475 EAPI void                ecore_x_netwm_desk_current_set(Ecore_X_Window root, unsigned int desk);
1476 EAPI void                ecore_x_netwm_desk_viewports_set(Ecore_X_Window root, unsigned int *origins, unsigned int n_desks);
1477 EAPI void                ecore_x_netwm_desk_layout_set(Ecore_X_Window root, int orientation, int columns, int rows, int starting_corner);
1478 EAPI void                ecore_x_netwm_showing_desktop_set(Ecore_X_Window root, int on);
1479 EAPI void                ecore_x_netwm_client_list_set(Ecore_X_Window root, Ecore_X_Window *p_clients, unsigned int n_clients);
1480 EAPI void                ecore_x_netwm_client_list_stacking_set(Ecore_X_Window root, Ecore_X_Window *p_clients, unsigned int n_clients);
1481 EAPI void                ecore_x_netwm_client_active_set(Ecore_X_Window root, Ecore_X_Window win);
1482 EAPI void                ecore_x_netwm_client_active_request(Ecore_X_Window root, Ecore_X_Window win, int type, Ecore_X_Window current_win);
1483 EAPI void                ecore_x_netwm_name_set(Ecore_X_Window win, const char *name);
1484 EAPI void                ecore_x_netwm_name_get_prefetch(Ecore_X_Window window);
1485 EAPI void                ecore_x_netwm_name_get_fetch(void);
1486 EAPI int                 ecore_x_netwm_name_get(Ecore_X_Window win, char **name);
1487 EAPI void                ecore_x_netwm_startup_id_set(Ecore_X_Window win, const char *id);
1488 EAPI void                ecore_x_netwm_startup_id_get_prefetch(Ecore_X_Window window);
1489 EAPI void                ecore_x_netwm_startup_id_get_fetch(void);
1490 EAPI int                 ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id);
1491 EAPI void                ecore_x_netwm_visible_name_set(Ecore_X_Window win, const char *name);
1492 EAPI void                ecore_x_netwm_visible_name_get_prefetch(Ecore_X_Window window);
1493 EAPI void                ecore_x_netwm_visible_name_get_fetch(void);
1494 EAPI int                 ecore_x_netwm_visible_name_get(Ecore_X_Window win, char **name);
1495 EAPI void                ecore_x_netwm_icon_name_set(Ecore_X_Window win, const char *name);
1496 EAPI void                ecore_x_netwm_icon_name_get_prefetch(Ecore_X_Window window);
1497 EAPI void                ecore_x_netwm_icon_name_get_fetch(void);
1498 EAPI int                 ecore_x_netwm_icon_name_get(Ecore_X_Window win, char **name);
1499 EAPI void                ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win, const char *name);
1500 EAPI void                ecore_x_netwm_visible_icon_name_get_prefetch(Ecore_X_Window window);
1501 EAPI void                ecore_x_netwm_visible_icon_name_get_fetch(void);
1502 EAPI int                 ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win, char **name);
1503 EAPI void                ecore_x_netwm_desktop_set(Ecore_X_Window win, unsigned int desk);
1504 EAPI void                ecore_x_netwm_desktop_get_prefetch(Ecore_X_Window window);
1505 EAPI void                ecore_x_netwm_desktop_get_fetch(void);
1506 EAPI int                 ecore_x_netwm_desktop_get(Ecore_X_Window win, unsigned int *desk);
1507 EAPI void                ecore_x_netwm_strut_set(Ecore_X_Window win, int left, int right, int top, int bottom);
1508 EAPI void                ecore_x_netwm_strut_get_prefetch(Ecore_X_Window window);
1509 EAPI void                ecore_x_netwm_strut_get_fetch(void);
1510 EAPI int                 ecore_x_netwm_strut_get(Ecore_X_Window win, int *left, int *right, int *top, int *bottom);
1511 EAPI void                ecore_x_netwm_strut_partial_set(Ecore_X_Window win, int left, int right, int top, int bottom, int left_start_y, int left_end_y, int right_start_y, int right_end_y, int top_start_x, int top_end_x, int bottom_start_x, int bottom_end_x);
1512 EAPI void                ecore_x_netwm_strut_partial_get_prefetch(Ecore_X_Window window);
1513 EAPI void                ecore_x_netwm_strut_partial_get_fetch(void);
1514 EAPI int                 ecore_x_netwm_strut_partial_get(Ecore_X_Window win, int *left, int *right, int *top, int *bottom, int *left_start_y, int *left_end_y, int *right_start_y, int *right_end_y, int *top_start_x, int *top_end_x, int *bottom_start_x, int *bottom_end_x);
1515 EAPI void                ecore_x_netwm_icons_get_prefetch(Ecore_X_Window window);
1516 EAPI void                ecore_x_netwm_icons_get_fetch(void);
1517 EAPI int                 ecore_x_netwm_icons_get(Ecore_X_Window win, Ecore_X_Icon **icon, int *num);
1518 EAPI void                ecore_x_netwm_icon_geometry_set(Ecore_X_Window win, int x, int y, int width, int height);
1519 EAPI void                ecore_x_netwm_icon_geometry_get_prefetch(Ecore_X_Window window);
1520 EAPI void                ecore_x_netwm_icon_geometry_get_fetch(void);
1521 EAPI int                 ecore_x_netwm_icon_geometry_get(Ecore_X_Window win, int *x, int *y, int *width, int *height);
1522 EAPI void                ecore_x_netwm_pid_set(Ecore_X_Window win, int pid);
1523 EAPI void                ecore_x_netwm_pid_get_prefetch(Ecore_X_Window window);
1524 EAPI void                ecore_x_netwm_pid_get_fetch(void);
1525 EAPI int                 ecore_x_netwm_pid_get(Ecore_X_Window win, int *pid);
1526 EAPI void                ecore_x_netwm_handled_icons_set(Ecore_X_Window win);
1527 EAPI void                ecore_x_netwm_handled_icons_get_prefetch(Ecore_X_Window window);
1528 EAPI void                ecore_x_netwm_handled_icons_get_fetch(void);
1529 EAPI int                 ecore_x_netwm_handled_icons_get(Ecore_X_Window win);
1530 EAPI void                ecore_x_netwm_user_time_set(Ecore_X_Window win, unsigned int time);
1531 EAPI void                ecore_x_netwm_user_time_get_prefetch(Ecore_X_Window window);
1532 EAPI void                ecore_x_netwm_user_time_get_fetch(void);
1533 EAPI int                 ecore_x_netwm_user_time_get(Ecore_X_Window win, unsigned int *time);
1534 EAPI void                ecore_x_netwm_window_state_set(Ecore_X_Window win, Ecore_X_Window_State *state, unsigned int num);
1535 EAPI void                ecore_x_netwm_window_state_get_prefetch(Ecore_X_Window window);
1536 EAPI void                ecore_x_netwm_window_state_get_fetch(void);
1537 EAPI int                 ecore_x_netwm_window_state_get(Ecore_X_Window win, Ecore_X_Window_State **state, unsigned int *num);
1538 EAPI void                ecore_x_netwm_window_type_set(Ecore_X_Window win, Ecore_X_Window_Type type);
1539 EAPI void                ecore_x_netwm_window_type_get_prefetch(Ecore_X_Window window);
1540 EAPI void                ecore_x_netwm_window_type_get_fetch(void);
1541 EAPI int                 ecore_x_netwm_window_type_get(Ecore_X_Window win, Ecore_X_Window_Type *type);
1542 EAPI int                 ecore_x_netwm_window_types_get(Ecore_X_Window win, Ecore_X_Window_Type **types);
1543 EAPI int                 ecore_x_netwm_allowed_action_isset(Ecore_X_Window win, Ecore_X_Action action);
1544 EAPI void                ecore_x_netwm_allowed_action_set(Ecore_X_Window win, Ecore_X_Action *action, unsigned int num);
1545 EAPI void                ecore_x_netwm_allowed_action_get_prefetch(Ecore_X_Window window);
1546 EAPI void                ecore_x_netwm_allowed_action_get_fetch(void);
1547 EAPI int                 ecore_x_netwm_allowed_action_get(Ecore_X_Window win, Ecore_X_Action **action, unsigned int *num);
1548 EAPI void                ecore_x_netwm_opacity_set(Ecore_X_Window win, unsigned int opacity);
1549 EAPI void                ecore_x_netwm_opacity_get_prefetch(Ecore_X_Window window);
1550 EAPI void                ecore_x_netwm_opacity_get_fetch(void);
1551 EAPI int                 ecore_x_netwm_opacity_get(Ecore_X_Window win, unsigned int *opacity);
1552 EAPI void                ecore_x_netwm_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
1553 EAPI void                ecore_x_netwm_frame_size_get_prefetch(Ecore_X_Window window);
1554 EAPI void                ecore_x_netwm_frame_size_get_fetch(void);
1555 EAPI int                 ecore_x_netwm_frame_size_get(Ecore_X_Window win, int *fl, int *fr, int *ft, int *fb);
1556 EAPI void                ecore_x_netwm_sync_counter_get_prefetch(Ecore_X_Window window);
1557 EAPI void                ecore_x_netwm_sync_counter_get_fetch(void);
1558 EAPI int                 ecore_x_netwm_sync_counter_get(Ecore_X_Window win, Ecore_X_Sync_Counter *counter);
1559 EAPI void                ecore_x_netwm_ping_send(Ecore_X_Window win);
1560 EAPI void                ecore_x_netwm_sync_request_send(Ecore_X_Window win, unsigned int serial);
1561 EAPI void                ecore_x_netwm_state_request_send(Ecore_X_Window win, Ecore_X_Window root, Ecore_X_Window_State s1, Ecore_X_Window_State s2, int set);
1562 EAPI void                ecore_x_netwm_desktop_request_send(Ecore_X_Window win, Ecore_X_Window root, unsigned int desktop);
1563
1564
1565 EAPI void                ecore_x_e_init(void);
1566 EAPI void                ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
1567 EAPI void                ecore_x_e_virtual_keyboard_set(Ecore_X_Window win, unsigned int is_keyboard);
1568 EAPI int                 ecore_x_e_virtual_keyboard_get(Ecore_X_Window win);
1569 EAPI void                ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
1570 EAPI Ecore_X_Virtual_Keyboard_State ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win);
1571 EAPI void                ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
1572
1573
1574 /* Illume functions */
1575 EAPI void ecore_x_e_illume_zone_set(Ecore_X_Window win, Ecore_X_Window zone);
1576 EAPI Ecore_X_Window ecore_x_e_illume_zone_get(Ecore_X_Window win);
1577 EAPI void ecore_x_e_illume_zone_list_set(Ecore_X_Window win, Ecore_X_Window *zones, unsigned int n_zones);
1578 EAPI void ecore_x_e_illume_conformant_set(Ecore_X_Window win, unsigned int is_conformant);
1579 EAPI int ecore_x_e_illume_conformant_get(Ecore_X_Window win);
1580 EAPI void ecore_x_e_illume_mode_set(Ecore_X_Window win, Ecore_X_Illume_Mode mode);
1581 EAPI Ecore_X_Illume_Mode ecore_x_e_illume_mode_get(Ecore_X_Window win);
1582 EAPI void ecore_x_e_illume_mode_send(Ecore_X_Window win, Ecore_X_Illume_Mode mode);
1583 EAPI void ecore_x_e_illume_focus_back_send(Ecore_X_Window win);
1584 EAPI void ecore_x_e_illume_focus_forward_send(Ecore_X_Window win);
1585 EAPI void ecore_x_e_illume_focus_home_send(Ecore_X_Window win);
1586 EAPI void ecore_x_e_illume_close_send(Ecore_X_Window win);
1587 EAPI void ecore_x_e_illume_home_new_send(Ecore_X_Window win);
1588 EAPI void ecore_x_e_illume_home_del_send(Ecore_X_Window win);
1589 EAPI void ecore_x_e_illume_drag_set(Ecore_X_Window win, unsigned int drag);
1590 EAPI int ecore_x_e_illume_drag_get(Ecore_X_Window win);
1591 EAPI void ecore_x_e_illume_drag_locked_set(Ecore_X_Window win, unsigned int is_locked);
1592 EAPI int ecore_x_e_illume_drag_locked_get(Ecore_X_Window win);
1593 EAPI void ecore_x_e_illume_drag_start_send(Ecore_X_Window win);
1594 EAPI void ecore_x_e_illume_drag_end_send(Ecore_X_Window win);
1595 EAPI void ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1596 EAPI int ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1597 EAPI void ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1598 EAPI int ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1599 EAPI void ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1600 EAPI int ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1601 EAPI void ecore_x_e_illume_quickpanel_set(Ecore_X_Window win, unsigned int is_quickpanel);
1602 EAPI int ecore_x_e_illume_quickpanel_get(Ecore_X_Window win);
1603 EAPI void ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win, Ecore_X_Illume_Quickpanel_State state);
1604 EAPI Ecore_X_Illume_Quickpanel_State ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win);
1605 EAPI void ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win, Ecore_X_Illume_Quickpanel_State state);
1606 EAPI void ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win);
1607 EAPI void ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win, unsigned int priority);
1608 EAPI int ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win);
1609 EAPI void ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win, unsigned int priority);
1610 EAPI int ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win);
1611 EAPI void ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win, unsigned int zone);
1612 EAPI int ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win);
1613 EAPI void ecore_x_e_illume_quickpanel_zone_request_send(Ecore_X_Window win);
1614 EAPI void ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win);
1615
1616 EAPI void                 ecore_x_e_comp_sync_counter_set(Ecore_X_Window win, Ecore_X_Sync_Counter counter);
1617 EAPI Ecore_X_Sync_Counter ecore_x_e_comp_sync_counter_get(Ecore_X_Window win);
1618 EAPI void                 ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root, Ecore_X_Window win);
1619 EAPI void                 ecore_x_e_comp_sync_supported_set(Ecore_X_Window root, Eina_Bool enabled);
1620 EAPI Eina_Bool            ecore_x_e_comp_sync_supported_get(Ecore_X_Window root);
1621 EAPI void                 ecore_x_e_comp_sync_begin_send(Ecore_X_Window win);
1622 EAPI void                 ecore_x_e_comp_sync_end_send(Ecore_X_Window win);
1623 EAPI void                 ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win);
1624
1625 EAPI void                 ecore_x_e_comp_flush_send(Ecore_X_Window win);
1626 EAPI void                 ecore_x_e_comp_dump_send(Ecore_X_Window win);
1627        
1628 EAPI Ecore_X_Sync_Alarm   ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter);
1629 EAPI int                  ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm);
1630 EAPI int                  ecore_x_sync_counter_query(Ecore_X_Sync_Counter counter, unsigned int *val);
1631 EAPI Ecore_X_Sync_Counter ecore_x_sync_counter_new(int val);
1632 EAPI void                 ecore_x_sync_counter_free(Ecore_X_Sync_Counter counter);
1633 EAPI void                 ecore_x_sync_counter_inc(Ecore_X_Sync_Counter counter, int by);
1634 EAPI void                 ecore_x_sync_counter_val_wait(Ecore_X_Sync_Counter counter, int val);
1635        
1636 EAPI void                ecore_x_xinerama_query_screens_prefetch(void);
1637 EAPI void                ecore_x_xinerama_query_screens_fetch(void);
1638 EAPI int                 ecore_x_xinerama_screen_count_get(void);
1639 EAPI int                 ecore_x_xinerama_screen_geometry_get(int screen, int *x, int *y, int *w, int *h);
1640
1641 EAPI int                 ecore_x_screensaver_event_available_get(void);
1642 EAPI void                ecore_x_screensaver_idle_time_prefetch(void);
1643 EAPI void                ecore_x_screensaver_idle_time_fetch(void);
1644 EAPI int                 ecore_x_screensaver_idle_time_get(void);
1645 EAPI void                ecore_x_get_screensaver_prefetch(void);
1646 EAPI void                ecore_x_get_screensaver_fetch(void);
1647 EAPI void                ecore_x_screensaver_set(int timeout, int interval, int prefer_blanking, int allow_exposures);
1648 EAPI void                ecore_x_screensaver_timeout_set(int timeout);
1649 EAPI int                 ecore_x_screensaver_timeout_get(void);
1650 EAPI void                ecore_x_screensaver_blank_set(int timeout);
1651 EAPI int                 ecore_x_screensaver_blank_get(void);
1652 EAPI void                ecore_x_screensaver_expose_set(int timeout);
1653 EAPI int                 ecore_x_screensaver_expose_get(void);
1654 EAPI void                ecore_x_screensaver_interval_set(int timeout);
1655 EAPI int                 ecore_x_screensaver_interval_get(void);
1656 EAPI void                ecore_x_screensaver_event_listen_set(int on);
1657
1658 /* FIXME: these funcs need categorising */
1659
1660 typedef struct _Ecore_X_Window_Attributes
1661 {
1662    Ecore_X_Window     root;
1663    int                x, y, w, h;
1664    int                border;
1665    int                depth;
1666    unsigned char      visible : 1;
1667    unsigned char      viewable : 1;
1668    unsigned char      override : 1;
1669    unsigned char      input_only : 1;
1670    unsigned char      save_under : 1;
1671    struct {
1672       Ecore_X_Event_Mask mine;
1673       Ecore_X_Event_Mask all;
1674       Ecore_X_Event_Mask no_propagate;
1675    } event_mask;
1676    Ecore_X_Gravity    window_gravity;
1677    Ecore_X_Gravity    pixel_gravity;
1678    Ecore_X_Colormap   colormap;
1679    Ecore_X_Visual     visual;
1680    /* FIXME: missing
1681     * int map_installed;
1682     * Screen *screen;
1683     */
1684 } Ecore_X_Window_Attributes;
1685    
1686 EAPI void ecore_x_get_window_attributes_prefetch(Ecore_X_Window window);
1687 EAPI void ecore_x_get_window_attributes_fetch(void);
1688 EAPI int  ecore_x_window_attributes_get(Ecore_X_Window win, Ecore_X_Window_Attributes *att_ret);
1689 EAPI void ecore_x_window_save_set_add(Ecore_X_Window win);
1690 EAPI void ecore_x_window_save_set_del(Ecore_X_Window win);
1691 EAPI Ecore_X_Window *ecore_x_window_children_get(Ecore_X_Window win, int *num);
1692
1693 EAPI int  ecore_x_pointer_control_set(int accel_num, int accel_denom, int threshold);
1694 EAPI void ecore_x_pointer_control_get_prefetch(void);
1695 EAPI void ecore_x_pointer_control_get_fetch(void);
1696 EAPI int  ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold);
1697 EAPI int  ecore_x_pointer_mapping_set(unsigned char *map, int nmap);
1698 EAPI void ecore_x_pointer_mapping_get_prefetch(void);
1699 EAPI void ecore_x_pointer_mapping_get_fetch(void);
1700 EAPI int  ecore_x_pointer_mapping_get(unsigned char *map, int nmap);
1701 EAPI int  ecore_x_pointer_grab(Ecore_X_Window win);
1702 EAPI int  ecore_x_pointer_confine_grab(Ecore_X_Window win);
1703 EAPI void ecore_x_pointer_ungrab(void);
1704 EAPI int  ecore_x_pointer_warp(Ecore_X_Window win, int x, int y);
1705 EAPI int  ecore_x_keyboard_grab(Ecore_X_Window win);
1706 EAPI void ecore_x_keyboard_ungrab(void);
1707 EAPI void ecore_x_grab(void);
1708 EAPI void ecore_x_ungrab(void);
1709 EAPI void ecore_x_passive_grab_replay_func_set(int (*func) (void *data, int event_type, void *event), void *data);
1710 EAPI void ecore_x_window_button_grab(Ecore_X_Window win, int button,
1711                                      Ecore_X_Event_Mask event_mask,
1712                                      int mod, int any_mod);
1713 EAPI void ecore_x_window_button_ungrab(Ecore_X_Window win, int button,
1714                                        int mod, int any_mod);
1715 EAPI void ecore_x_window_key_grab(Ecore_X_Window win, const char *key,
1716                                   int mod, int any_mod);
1717 EAPI void ecore_x_window_key_ungrab(Ecore_X_Window win, const char *key,
1718                                     int mod, int any_mod);
1719
1720 EAPI void ecore_x_focus_reset(void);
1721 EAPI void ecore_x_events_allow_all(void);
1722 EAPI void ecore_x_pointer_last_xy_get(int *x, int *y);
1723 EAPI void ecore_x_pointer_xy_get_prefetch(Ecore_X_Window window);
1724 EAPI void ecore_x_pointer_xy_get_fetch(void);
1725 EAPI void ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y);
1726
1727 /* ecore_x_region.c */
1728 EAPI Ecore_X_XRegion *ecore_x_xregion_new();
1729 EAPI void             ecore_x_xregion_free(Ecore_X_XRegion *region);
1730 EAPI int              ecore_x_xregion_set(Ecore_X_XRegion *region, Ecore_X_GC gc);
1731 EAPI void             ecore_x_xregion_translate(Ecore_X_XRegion *region, int x, int y);
1732 EAPI int              ecore_x_xregion_intersect(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
1733 EAPI int              ecore_x_xregion_union(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
1734 EAPI int              ecore_x_xregion_union_rect(Ecore_X_XRegion *dst, Ecore_X_XRegion *src, Ecore_X_Rectangle *rect);
1735 EAPI int              ecore_x_xregion_subtract(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
1736 EAPI int              ecore_x_xregion_is_empty(Ecore_X_XRegion *region);
1737 EAPI int              ecore_x_xregion_is_equal(Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
1738 EAPI int              ecore_x_xregion_point_contain(Ecore_X_XRegion *region, int x, int y);
1739 EAPI int              ecore_x_xregion_rect_contain(Ecore_X_XRegion *region, Ecore_X_Rectangle *rect);
1740
1741 /* ecore_x_randr.c */
1742 typedef struct _Ecore_X_Screen_Size Ecore_X_Screen_Size;
1743 struct _Ecore_X_Screen_Size
1744 {
1745    int width, height;
1746 };
1747
1748 typedef struct _Ecore_X_Screen_Refresh_Rate Ecore_X_Screen_Refresh_Rate;
1749 struct _Ecore_X_Screen_Refresh_Rate
1750 {
1751    int rate;
1752 };
1753
1754 EAPI int                     ecore_x_randr_query(void);
1755 EAPI int                     ecore_x_randr_events_select(Ecore_X_Window win, int on);
1756 EAPI void                    ecore_x_randr_get_screen_info_prefetch(Ecore_X_Window window);
1757 EAPI void                    ecore_x_randr_get_screen_info_fetch(void);
1758 EAPI Ecore_X_Randr_Rotation  ecore_x_randr_screen_rotations_get(Ecore_X_Window root);
1759 EAPI Ecore_X_Randr_Rotation  ecore_x_randr_screen_rotation_get(Ecore_X_Window root);
1760 EAPI void                    ecore_x_randr_screen_rotation_set(Ecore_X_Window root, Ecore_X_Randr_Rotation rot);
1761 EAPI Ecore_X_Screen_Size    *ecore_x_randr_screen_sizes_get(Ecore_X_Window root, int *num);
1762 EAPI Ecore_X_Screen_Size     ecore_x_randr_current_screen_size_get(Ecore_X_Window root);
1763 EAPI int                     ecore_x_randr_screen_size_set(Ecore_X_Window root, Ecore_X_Screen_Size size);
1764
1765 EAPI Ecore_X_Screen_Refresh_Rate *ecore_x_randr_screen_refresh_rates_get(Ecore_X_Window root, int size_id, int *num);
1766 EAPI Ecore_X_Screen_Refresh_Rate  ecore_x_randr_current_screen_refresh_rate_get(Ecore_X_Window root);
1767
1768 EAPI int ecore_x_randr_screen_refresh_rate_set(Ecore_X_Window root, Ecore_X_Screen_Size size, Ecore_X_Screen_Refresh_Rate rate);
1769
1770 /* XRender Support (horrendously incomplete) */
1771 typedef Ecore_X_ID  Ecore_X_Picture;
1772
1773 /* XFixes Extension Support */
1774 typedef Ecore_X_ID  Ecore_X_Region;
1775
1776 typedef enum _Ecore_X_Region_Type {
1777      ECORE_X_REGION_BOUNDING,
1778      ECORE_X_REGION_CLIP
1779 } Ecore_X_Region_Type;
1780
1781 EAPI Ecore_X_Region ecore_x_region_new(Ecore_X_Rectangle *rects, int num);
1782 EAPI Ecore_X_Region ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap);
1783 EAPI Ecore_X_Region ecore_x_region_new_from_window(Ecore_X_Window win, Ecore_X_Region_Type type);
1784 EAPI Ecore_X_Region ecore_x_region_new_from_gc(Ecore_X_GC gc);
1785 EAPI Ecore_X_Region ecore_x_region_new_from_picture(Ecore_X_Picture picture);
1786 EAPI void           ecore_x_region_free(Ecore_X_Region region);
1787 EAPI void           ecore_x_region_set(Ecore_X_Region region, Ecore_X_Rectangle *rects, int num);
1788 EAPI void           ecore_x_region_copy(Ecore_X_Region dest, Ecore_X_Region source);
1789 EAPI void           ecore_x_region_combine(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
1790 EAPI void           ecore_x_region_intersect(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
1791 EAPI void           ecore_x_region_subtract(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
1792 EAPI void           ecore_x_region_invert(Ecore_X_Region dest, Ecore_X_Rectangle *bounds, Ecore_X_Region source);
1793 EAPI void           ecore_x_region_translate(Ecore_X_Region region, int dx, int dy);
1794 EAPI void           ecore_x_region_extents(Ecore_X_Region dest, Ecore_X_Region source);
1795 EAPI void           ecore_x_region_fetch_prefetch(Ecore_X_Region region);
1796 EAPI void           ecore_x_region_fetch_fetch(void);
1797 EAPI Ecore_X_Rectangle *ecore_x_region_fetch(Ecore_X_Region region, int *num, Ecore_X_Rectangle *bounds);
1798 EAPI void           ecore_x_region_expand(Ecore_X_Region dest, Ecore_X_Region source, unsigned int left, unsigned int right, unsigned int top, unsigned int bottom);
1799 EAPI void           ecore_x_region_gc_clip_set(Ecore_X_Region region, Ecore_X_GC gc, int x_origin, int y_origin);
1800 EAPI void           ecore_x_region_window_shape_set(Ecore_X_Region region, Ecore_X_Window win, Ecore_X_Shape_Type type, int x_offset, int y_offset);
1801 EAPI void           ecore_x_region_picture_clip_set(Ecore_X_Region region, Ecore_X_Picture picture, int x_origin, int y_origin);
1802
1803 /* XComposite Extension Support */
1804 EAPI int               ecore_x_composite_query(void);
1805 EAPI void              ecore_x_composite_redirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
1806 EAPI void              ecore_x_composite_redirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
1807 EAPI void              ecore_x_composite_unredirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
1808 EAPI void              ecore_x_composite_unredirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
1809 EAPI Ecore_X_Pixmap    ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win);
1810 EAPI Ecore_X_Window    ecore_x_composite_render_window_enable(Ecore_X_Window root);
1811 EAPI void              ecore_x_composite_render_window_disable(Ecore_X_Window root);
1812        
1813 /* XDamage Extension Support */
1814 typedef Ecore_X_ID  Ecore_X_Damage;
1815
1816 typedef enum _Ecore_X_Damage_Report_Level {
1817      ECORE_X_DAMAGE_REPORT_RAW_RECTANGLES,
1818      ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES,
1819      ECORE_X_DAMAGE_REPORT_BOUNDING_BOX,
1820      ECORE_X_DAMAGE_REPORT_NON_EMPTY
1821 } Ecore_X_Damage_Report_Level;
1822
1823 struct _Ecore_X_Event_Damage {
1824      Ecore_X_Damage_Report_Level level;
1825      Ecore_X_Drawable drawable;
1826      Ecore_X_Damage   damage;
1827      int              more;
1828      Ecore_X_Time     time;
1829      Ecore_X_Rectangle  area;
1830      Ecore_X_Rectangle  geometry;
1831 };
1832
1833 typedef struct _Ecore_X_Event_Damage  Ecore_X_Event_Damage;
1834
1835 EAPI int               ecore_x_damage_query(void);
1836 EAPI Ecore_X_Damage    ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level);
1837 EAPI void              ecore_x_damage_free(Ecore_X_Damage damage);
1838 EAPI void              ecore_x_damage_subtract(Ecore_X_Damage damage, Ecore_X_Region repair, Ecore_X_Region parts);
1839
1840 EAPI int               ecore_x_screen_is_composited(int screen);
1841 EAPI void              ecore_x_screen_is_composited_set(int screen, Ecore_X_Window win);
1842        
1843 EAPI int               ecore_x_dpms_query(void);
1844 EAPI void              ecore_x_dpms_capable_get_prefetch(void);
1845 EAPI void              ecore_x_dpms_capable_get_fetch(void);
1846 EAPI int               ecore_x_dpms_capable_get(void);
1847 EAPI void              ecore_x_dpms_enable_get_prefetch(void);
1848 EAPI void              ecore_x_dpms_enable_get_fetch(void);
1849 EAPI int               ecore_x_dpms_enabled_get(void);
1850 EAPI void              ecore_x_dpms_enabled_set(int enabled);
1851 EAPI void              ecore_x_dpms_timeouts_get_prefetch(void);
1852 EAPI void              ecore_x_dpms_timeouts_get_fetch(void);
1853 EAPI void              ecore_x_dpms_timeouts_get(unsigned int *standby, unsigned int *suspend, unsigned int *off);
1854 EAPI int               ecore_x_dpms_timeouts_set(unsigned int standby, unsigned int suspend, unsigned int off);
1855 EAPI unsigned int      ecore_x_dpms_timeout_standby_get(void);
1856 EAPI unsigned int      ecore_x_dpms_timeout_suspend_get(void);
1857 EAPI unsigned int      ecore_x_dpms_timeout_off_get(void);
1858 EAPI void              ecore_x_dpms_timeout_standby_set(unsigned int new_timeout);
1859 EAPI void              ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout);
1860 EAPI void              ecore_x_dpms_timeout_off_set(unsigned int new_timeout);
1861
1862 EAPI int ecore_x_test_fake_key_down(const char *key);
1863 EAPI int ecore_x_test_fake_key_up(const char *key);
1864 EAPI int ecore_x_test_fake_key_press(const char *key);
1865 EAPI const char *ecore_x_keysym_string_get(int keysym);
1866
1867 typedef struct _Ecore_X_Image Ecore_X_Image;
1868
1869 EAPI Ecore_X_Image    *ecore_x_image_new(int w, int h, Ecore_X_Visual vis, int depth);
1870 EAPI void              ecore_x_image_free(Ecore_X_Image *im);
1871 EAPI Eina_Bool         ecore_x_image_get(Ecore_X_Image *im, Ecore_X_Drawable draw, int x, int y, int sx, int sy, int w, int h);
1872 EAPI void              ecore_x_image_put(Ecore_X_Image *im, Ecore_X_Drawable draw, int x, int y, int sx, int sy, int w, int h);
1873 EAPI void             *ecore_x_image_data_get(Ecore_X_Image *im, int *bpl, int *rows, int *bpp);
1874
1875 EAPI Eina_Bool         ecore_x_input_multi_select(Ecore_X_Window win);
1876        
1877 #ifdef __cplusplus
1878 }
1879 #endif
1880
1881 #include <Ecore_X_Atoms.h>
1882 #include <Ecore_X_Cursor.h>
1883
1884 #endif