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