e4eddbbb05926eed6d7ebb3b7e1bb5cba54ca4b4
[profile/ivi/ecore.git] / src / lib / ecore_x / Ecore_X.h
1 #ifndef _ECORE_X_H
2 #define _ECORE_X_H
3
4 #include <Eina.h>
5
6 #ifdef EAPI
7 # undef EAPI
8 #endif // ifdef EAPI
9
10 #ifdef _MSC_VER
11 # ifdef BUILDING_DLL
12 #  define EAPI __declspec(dllexport)
13 # else // ifdef BUILDING_DLL
14 #  define EAPI __declspec(dllimport)
15 # endif // ifdef BUILDING_DLL
16 #else // ifdef _MSC_VER
17 # ifdef __GNUC__
18 #  if __GNUC__ >= 4
19 #   define EAPI __attribute__ ((visibility("default")))
20 #  else // if __GNUC__ >= 4
21 #   define EAPI
22 #  endif // if __GNUC__ >= 4
23 # else // ifdef __GNUC__
24 #  define EAPI
25 # endif // ifdef __GNUC__
26 #endif // ifdef _MSC_VER
27
28 #include <sys/types.h>
29
30 /**
31  * @file
32  * @brief Ecore functions for dealing with the X Windows System
33  *
34  * Ecore_X provides a wrapper and convenience functions for using the
35  * X Windows System.  Function groups for this part of the library
36  * include the following:
37  * @li @ref Ecore_X_Init_Group
38  * @li @ref Ecore_X_Display_Attr_Group
39  * @li @ref Ecore_X_Flush_Group
40  */
41
42 typedef unsigned int     Ecore_X_ID;
43 #ifndef _ECORE_X_WINDOW_PREDEF
44 typedef Ecore_X_ID       Ecore_X_Window;
45 #endif // ifndef _ECORE_X_WINDOW_PREDEF
46 #ifdef HAVE_ECORE_X_XCB
47 typedef Ecore_X_ID       Ecore_X_Visual;
48 #else // ifdef HAVE_ECORE_X_XCB
49 typedef void *           Ecore_X_Visual;
50 #endif /* HAVE_ECORE_X_XCB */
51 typedef Ecore_X_ID       Ecore_X_Pixmap;
52 typedef Ecore_X_ID       Ecore_X_Drawable;
53 #ifdef HAVE_ECORE_X_XCB
54 typedef Ecore_X_ID       Ecore_X_GC;
55 #else // ifdef HAVE_ECORE_X_XCB
56 typedef void *           Ecore_X_GC;
57 #endif /* HAVE_ECORE_X_XCB */
58 typedef Ecore_X_ID       Ecore_X_Atom;
59 typedef Ecore_X_ID       Ecore_X_Colormap;
60 typedef Ecore_X_ID       Ecore_X_Time;
61 typedef Ecore_X_ID       Ecore_X_Cursor;
62 typedef void             Ecore_X_Display;
63 typedef void             Ecore_X_Connection;
64 typedef void             Ecore_X_Screen;
65 typedef Ecore_X_ID       Ecore_X_Sync_Counter;
66 typedef Ecore_X_ID       Ecore_X_Sync_Alarm;
67 typedef void             Ecore_X_XRegion;
68
69 typedef Ecore_X_ID       Ecore_X_Randr_Output;
70 typedef Ecore_X_ID       Ecore_X_Randr_Crtc;
71 typedef Ecore_X_ID       Ecore_X_Randr_Mode;
72 typedef unsigned short   Ecore_X_Randr_Size_ID;
73 typedef int              Ecore_X_Randr_Screen;
74
75 typedef Ecore_X_ID       Ecore_X_Device;
76
77 #ifdef __cplusplus
78 extern "C" {
79 #endif // ifdef __cplusplus
80
81 typedef struct _Ecore_X_Rectangle
82 {
83    int          x, y;
84    unsigned int width, height;
85 } Ecore_X_Rectangle;
86
87 typedef struct _Ecore_X_Icon
88 {
89    unsigned int  width, height;
90    unsigned int *data;
91 } Ecore_X_Icon;
92
93 typedef enum _Ecore_X_GC_Value_Mask {
94    ECORE_X_GC_VALUE_MASK_FUNCTION = (1L << 0),
95    ECORE_X_GC_VALUE_MASK_PLANE_MASK = (1L << 1),
96    ECORE_X_GC_VALUE_MASK_FOREGROUND = (1L << 2),
97    ECORE_X_GC_VALUE_MASK_BACKGROUND = (1L << 3),
98    ECORE_X_GC_VALUE_MASK_LINE_WIDTH = (1L << 4),
99    ECORE_X_GC_VALUE_MASK_LINE_STYLE = (1L << 5),
100    ECORE_X_GC_VALUE_MASK_CAP_STYLE = (1L << 6),
101    ECORE_X_GC_VALUE_MASK_JOIN_STYLE = (1L << 7),
102    ECORE_X_GC_VALUE_MASK_FILL_STYLE = (1L << 8),
103    ECORE_X_GC_VALUE_MASK_FILL_RULE = (1L << 9),
104    ECORE_X_GC_VALUE_MASK_TILE = (1L << 10),
105    ECORE_X_GC_VALUE_MASK_STIPPLE = (1L << 11),
106    ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_X = (1L << 12),
107    ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_Y = (1L << 13),
108    ECORE_X_GC_VALUE_MASK_FONT = (1L << 14),
109    ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE = (1L << 15),
110    ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES = (1L << 16),
111    ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X = (1L << 17),
112    ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y = (1L << 18),
113    ECORE_X_GC_VALUE_MASK_CLIP_MASK = (1L << 19),
114    ECORE_X_GC_VALUE_MASK_DASH_OFFSET = (1L << 20),
115    ECORE_X_GC_VALUE_MASK_DASH_LIST = (1L << 21),
116    ECORE_X_GC_VALUE_MASK_ARC_MODE = (1L << 22)
117 } Ecore_X_GC_Value_Mask;
118
119 typedef enum _Ecore_X_Composite_Update_Type {
120    ECORE_X_COMPOSITE_UPDATE_AUTOMATIC,
121    ECORE_X_COMPOSITE_UPDATE_MANUAL
122 } Ecore_X_Composite_Update_Type;
123
124 typedef enum _Ecore_X_Window_State {
125    /* Unknown state */
126    ECORE_X_WINDOW_STATE_UNKNOWN = 0,
127    /** The window is iconified. */
128    ECORE_X_WINDOW_STATE_ICONIFIED,
129    /** The window is a modal dialog box. */
130    ECORE_X_WINDOW_STATE_MODAL,
131    /** The window manager should keep the window's position fixed
132     * even if the virtual desktop scrolls. */
133    ECORE_X_WINDOW_STATE_STICKY,
134    /** The window has the maximum vertical size. */
135    ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
136    /** The window has the maximum horizontal size. */
137    ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
138    /** The window is shaded. */
139    ECORE_X_WINDOW_STATE_SHADED,
140    /** The window should not be included in the taskbar. */
141    ECORE_X_WINDOW_STATE_SKIP_TASKBAR,
142    /** The window should not be included in the pager. */
143    ECORE_X_WINDOW_STATE_SKIP_PAGER,
144    /** The window is invisible (i.e. minimized/iconified) */
145    ECORE_X_WINDOW_STATE_HIDDEN,
146    /** The window should fill the entire screen and have no
147     * window border/decorations */
148    ECORE_X_WINDOW_STATE_FULLSCREEN,
149    /* The following are not documented because they are not
150     * intended for use in applications. */
151    ECORE_X_WINDOW_STATE_ABOVE,
152    ECORE_X_WINDOW_STATE_BELOW,
153    /* FIXME: Documentation */
154    ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION
155 } Ecore_X_Window_State;
156
157 typedef enum _Ecore_X_Window_State_Action {
158    ECORE_X_WINDOW_STATE_ACTION_REMOVE,
159    ECORE_X_WINDOW_STATE_ACTION_ADD,
160    ECORE_X_WINDOW_STATE_ACTION_TOGGLE
161 } Ecore_X_Window_State_Action;
162
163 typedef enum _Ecore_X_Window_Stack_Mode {
164    ECORE_X_WINDOW_STACK_ABOVE = 0,
165    ECORE_X_WINDOW_STACK_BELOW = 1,
166    ECORE_X_WINDOW_STACK_TOP_IF = 2,
167    ECORE_X_WINDOW_STACK_BOTTOM_IF = 3,
168    ECORE_X_WINDOW_STACK_OPPOSITE = 4
169 } Ecore_X_Window_Stack_Mode;
170
171 typedef enum _Ecore_X_Randr_Orientation {
172    ECORE_X_RANDR_ORIENTATION_ROT_0 = (1 << 0),
173    ECORE_X_RANDR_ORIENTATION_ROT_90 = (1 << 1),
174    ECORE_X_RANDR_ORIENTATION_ROT_180 = (1 << 2),
175    ECORE_X_RANDR_ORIENTATION_ROT_270 = (1 << 3),
176    ECORE_X_RANDR_ORIENTATION_FLIP_X = (1 << 4),
177    ECORE_X_RANDR_ORIENTATION_FLIP_Y = (1 << 5)
178 } Ecore_X_Randr_Orientation;
179
180 typedef enum _Ecore_X_Randr_Connection_Status {
181    ECORE_X_RANDR_CONNECTION_STATUS_CONNECTED = 0,
182    ECORE_X_RANDR_CONNECTION_STATUS_DISCONNECTED = 1,
183    ECORE_X_RANDR_CONNECTION_STATUS_UNKNOWN = 2
184 } Ecore_X_Randr_Connection_Status;
185
186 typedef enum _Ecore_X_Randr_Output_Policy {
187    ECORE_X_RANDR_OUTPUT_POLICY_ABOVE = 1,
188    ECORE_X_RANDR_OUTPUT_POLICY_RIGHT = 2,
189    ECORE_X_RANDR_OUTPUT_POLICY_BELOW = 3,
190    ECORE_X_RANDR_OUTPUT_POLICY_LEFT = 4,
191    ECORE_X_RANDR_OUTPUT_POLICY_CLONE = 5,
192    ECORE_X_RANDR_OUTPUT_POLICY_NONE = 6
193 } Ecore_X_Randr_Output_Policy;
194
195 typedef enum _Ecore_X_Randr_Relative_Alignment {
196    ECORE_X_RANDR_RELATIVE_ALIGNMENT_NONE = 0,
197    ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_REL = 1,
198    ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_SCR = 2
199 } Ecore_X_Randr_Relative_Alignment;
200
201 typedef enum _Ecore_X_Render_Subpixel_Order {
202    ECORE_X_RENDER_SUBPIXEL_ORDER_UNKNOWN = 0,
203    ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_RGB = 1,
204    ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_BGR = 2,
205    ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_RGB = 3,
206    ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_BGR = 4,
207    ECORE_X_RENDER_SUBPIXEL_ORDER_NONE = 5
208 } Ecore_X_Render_Subpixel_Order;
209
210 #define ECORE_X_SELECTION_TARGET_TARGETS       "TARGETS"
211 #define ECORE_X_SELECTION_TARGET_TEXT          "TEXT"
212 #define ECORE_X_SELECTION_TARGET_COMPOUND_TEXT "COMPOUND_TEXT"
213 #define ECORE_X_SELECTION_TARGET_STRING        "STRING"
214 #define ECORE_X_SELECTION_TARGET_UTF8_STRING   "UTF8_STRING"
215 #define ECORE_X_SELECTION_TARGET_FILENAME      "FILENAME"
216
217 #define ECORE_X_DND_VERSION                    5
218
219 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_COPY;
220 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_MOVE;
221 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_LINK;
222 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_ASK;
223 EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_PRIVATE;
224
225 typedef enum _Ecore_X_Selection {
226    ECORE_X_SELECTION_PRIMARY,
227    ECORE_X_SELECTION_SECONDARY,
228    ECORE_X_SELECTION_XDND,
229    ECORE_X_SELECTION_CLIPBOARD,
230    ECORE_X_SELECTION_OTHER
231 } Ecore_X_Selection;
232
233 typedef enum _Ecore_X_Event_Mode
234 {
235    ECORE_X_EVENT_MODE_NORMAL,
236    ECORE_X_EVENT_MODE_WHILE_GRABBED,
237    ECORE_X_EVENT_MODE_GRAB,
238    ECORE_X_EVENT_MODE_UNGRAB
239 } Ecore_X_Event_Mode;
240
241 typedef enum _Ecore_X_Event_Detail
242 {
243    ECORE_X_EVENT_DETAIL_ANCESTOR,
244    ECORE_X_EVENT_DETAIL_VIRTUAL,
245    ECORE_X_EVENT_DETAIL_INFERIOR,
246    ECORE_X_EVENT_DETAIL_NON_LINEAR,
247    ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL,
248    ECORE_X_EVENT_DETAIL_POINTER,
249    ECORE_X_EVENT_DETAIL_POINTER_ROOT,
250    ECORE_X_EVENT_DETAIL_DETAIL_NONE
251 } Ecore_X_Event_Detail;
252
253 typedef enum _Ecore_X_Event_Mask
254 {
255    ECORE_X_EVENT_MASK_NONE = 0L,
256    ECORE_X_EVENT_MASK_KEY_DOWN = (1L << 0),
257    ECORE_X_EVENT_MASK_KEY_UP = (1L << 1),
258    ECORE_X_EVENT_MASK_MOUSE_DOWN = (1L << 2),
259    ECORE_X_EVENT_MASK_MOUSE_UP = (1L << 3),
260    ECORE_X_EVENT_MASK_MOUSE_IN = (1L << 4),
261    ECORE_X_EVENT_MASK_MOUSE_OUT = (1L << 5),
262    ECORE_X_EVENT_MASK_MOUSE_MOVE = (1L << 6),
263    ECORE_X_EVENT_MASK_WINDOW_DAMAGE = (1L << 15),
264    ECORE_X_EVENT_MASK_WINDOW_VISIBILITY = (1L << 16),
265    ECORE_X_EVENT_MASK_WINDOW_CONFIGURE = (1L << 17),
266    ECORE_X_EVENT_MASK_WINDOW_RESIZE_MANAGE = (1L << 18),
267    ECORE_X_EVENT_MASK_WINDOW_MANAGE = (1L << 19),
268    ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE = (1L << 20),
269    ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE = (1L << 21),
270    ECORE_X_EVENT_MASK_WINDOW_PROPERTY = (1L << 22),
271    ECORE_X_EVENT_MASK_WINDOW_COLORMAP = (1L << 23),
272    ECORE_X_EVENT_MASK_WINDOW_GRAB = (1L << 24),
273    ECORE_X_EVENT_MASK_MOUSE_WHEEL = (1L << 29),
274    ECORE_X_EVENT_MASK_WINDOW_FOCUS_IN = (1L << 30),
275    ECORE_X_EVENT_MASK_WINDOW_FOCUS_OUT = (1L << 31)
276 } Ecore_X_Event_Mask;
277
278 typedef enum _Ecore_X_Gravity
279 {
280    ECORE_X_GRAVITY_FORGET = 0,
281    ECORE_X_GRAVITY_UNMAP = 0,
282    ECORE_X_GRAVITY_NW = 1,
283    ECORE_X_GRAVITY_N = 2,
284    ECORE_X_GRAVITY_NE = 3,
285    ECORE_X_GRAVITY_W = 4,
286    ECORE_X_GRAVITY_CENTER = 5,
287    ECORE_X_GRAVITY_E = 6,
288    ECORE_X_GRAVITY_SW = 7,
289    ECORE_X_GRAVITY_S = 8,
290    ECORE_X_GRAVITY_SE = 9,
291    ECORE_X_GRAVITY_STATIC = 10
292 } Ecore_X_Gravity;
293
294 /* Needed for ecore_x_region_window_shape_set */
295 typedef enum _Ecore_X_Shape_Type
296 {
297    ECORE_X_SHAPE_BOUNDING,
298    ECORE_X_SHAPE_CLIP,
299    ECORE_X_SHAPE_INPUT
300 } Ecore_X_Shape_Type;
301
302 typedef enum _Ecore_X_Mapping_Type
303 {
304    ECORE_X_MAPPING_MODIFIER,
305    ECORE_X_MAPPING_KEYBOARD,
306    ECORE_X_MAPPING_MOUSE
307 } Ecore_X_Mapping_Type;
308
309 typedef enum _Ecore_X_Randr_Property_Change
310 {
311    ECORE_X_RANDR_PROPERTY_CHANGE_ADD,
312    ECORE_X_RANDR_PROPERTY_CHANGE_DEL
313 } Ecore_X_Randr_Property_Change;
314   
315 typedef struct _Ecore_X_Event_Mouse_In            Ecore_X_Event_Mouse_In;
316 typedef struct _Ecore_X_Event_Mouse_Out           Ecore_X_Event_Mouse_Out;
317 typedef struct _Ecore_X_Event_Window_Focus_In     Ecore_X_Event_Window_Focus_In;
318 typedef struct _Ecore_X_Event_Window_Focus_Out    Ecore_X_Event_Window_Focus_Out;
319 typedef struct _Ecore_X_Event_Window_Keymap       Ecore_X_Event_Window_Keymap;
320 typedef struct _Ecore_X_Event_Window_Damage       Ecore_X_Event_Window_Damage;
321 typedef struct _Ecore_X_Event_Window_Visibility_Change Ecore_X_Event_Window_Visibility_Change;
322 typedef struct _Ecore_X_Event_Window_Create       Ecore_X_Event_Window_Create;
323 typedef struct _Ecore_X_Event_Window_Destroy      Ecore_X_Event_Window_Destroy;
324 typedef struct _Ecore_X_Event_Window_Hide         Ecore_X_Event_Window_Hide;
325 typedef struct _Ecore_X_Event_Window_Show         Ecore_X_Event_Window_Show;
326 typedef struct _Ecore_X_Event_Window_Show_Request Ecore_X_Event_Window_Show_Request;
327 typedef struct _Ecore_X_Event_Window_Reparent     Ecore_X_Event_Window_Reparent;
328 typedef struct _Ecore_X_Event_Window_Configure    Ecore_X_Event_Window_Configure;
329 typedef struct _Ecore_X_Event_Window_Configure_Request Ecore_X_Event_Window_Configure_Request;
330 typedef struct _Ecore_X_Event_Window_Gravity      Ecore_X_Event_Window_Gravity;
331 typedef struct _Ecore_X_Event_Window_Resize_Request Ecore_X_Event_Window_Resize_Request;
332 typedef struct _Ecore_X_Event_Window_Stack        Ecore_X_Event_Window_Stack;
333 typedef struct _Ecore_X_Event_Window_Stack_Request Ecore_X_Event_Window_Stack_Request;
334 typedef struct _Ecore_X_Event_Window_Property     Ecore_X_Event_Window_Property;
335 typedef struct _Ecore_X_Event_Window_Colormap     Ecore_X_Event_Window_Colormap;
336 typedef struct _Ecore_X_Event_Mapping_Change      Ecore_X_Event_Mapping_Change;
337 typedef struct _Ecore_X_Event_Window_Mapping      Ecore_X_Event_Window_Mapping;
338 typedef struct _Ecore_X_Event_Selection_Clear     Ecore_X_Event_Selection_Clear;
339 typedef struct _Ecore_X_Event_Selection_Request   Ecore_X_Event_Selection_Request;
340 typedef struct _Ecore_X_Event_Selection_Notify    Ecore_X_Event_Selection_Notify;
341 typedef struct _Ecore_X_Selection_Data            Ecore_X_Selection_Data;
342 typedef struct _Ecore_X_Selection_Data_Files      Ecore_X_Selection_Data_Files;
343 typedef struct _Ecore_X_Selection_Data_Text       Ecore_X_Selection_Data_Text;
344 typedef struct _Ecore_X_Selection_Data_Targets    Ecore_X_Selection_Data_Targets;
345 typedef struct _Ecore_X_Event_Xdnd_Enter          Ecore_X_Event_Xdnd_Enter;
346 typedef struct _Ecore_X_Event_Xdnd_Position       Ecore_X_Event_Xdnd_Position;
347 typedef struct _Ecore_X_Event_Xdnd_Status         Ecore_X_Event_Xdnd_Status;
348 typedef struct _Ecore_X_Event_Xdnd_Leave          Ecore_X_Event_Xdnd_Leave;
349 typedef struct _Ecore_X_Event_Xdnd_Drop           Ecore_X_Event_Xdnd_Drop;
350 typedef struct _Ecore_X_Event_Xdnd_Finished       Ecore_X_Event_Xdnd_Finished;
351 typedef struct _Ecore_X_Event_Client_Message      Ecore_X_Event_Client_Message;
352 typedef struct _Ecore_X_Event_Window_Shape        Ecore_X_Event_Window_Shape;
353 typedef struct _Ecore_X_Event_Screensaver_Notify  Ecore_X_Event_Screensaver_Notify;
354 typedef struct _Ecore_X_Event_Sync_Counter        Ecore_X_Event_Sync_Counter;
355 typedef struct _Ecore_X_Event_Sync_Alarm          Ecore_X_Event_Sync_Alarm;
356 typedef struct _Ecore_X_Event_Screen_Change       Ecore_X_Event_Screen_Change;
357 typedef struct _Ecore_X_Event_Randr_Crtc_Change   Ecore_X_Event_Randr_Crtc_Change;
358 typedef struct _Ecore_X_Event_Randr_Output_Change Ecore_X_Event_Randr_Output_Change;
359 typedef struct _Ecore_X_Event_Randr_Output_Property_Notify Ecore_X_Event_Randr_Output_Property_Notify;
360
361 typedef struct _Ecore_X_Event_Window_Delete_Request      Ecore_X_Event_Window_Delete_Request;
362 typedef struct _Ecore_X_Event_Window_Move_Resize_Request Ecore_X_Event_Window_Move_Resize_Request;
363 typedef struct _Ecore_X_Event_Window_State_Request       Ecore_X_Event_Window_State_Request;
364 typedef struct _Ecore_X_Event_Frame_Extents_Request      Ecore_X_Event_Frame_Extents_Request;
365 typedef struct _Ecore_X_Event_Ping                       Ecore_X_Event_Ping;
366 typedef struct _Ecore_X_Event_Desktop_Change             Ecore_X_Event_Desktop_Change;
367
368 typedef struct _Ecore_X_Event_Startup_Sequence   Ecore_X_Event_Startup_Sequence;
369
370 typedef struct _Ecore_X_Event_Generic            Ecore_X_Event_Generic;
371
372 typedef struct _Ecore_X_Randr_Screen_Size        Ecore_X_Randr_Screen_Size;
373 typedef struct _Ecore_X_Randr_Screen_Size_MM     Ecore_X_Randr_Screen_Size_MM;
374
375 typedef struct _Ecore_X_Xdnd_Position            Ecore_X_Xdnd_Position;
376
377 struct _Ecore_X_Event_Mouse_In
378 {
379    int                  modifiers;
380    int                  x, y;
381    Eina_Bool            same_screen : 1;
382    struct {
383       int               x, y;
384    } root;
385    Ecore_X_Window       win;
386    Ecore_X_Window       event_win;
387    Ecore_X_Window       root_win;
388    Ecore_X_Event_Mode   mode;
389    Ecore_X_Event_Detail detail;
390    Ecore_X_Time         time;
391 };
392
393 struct _Ecore_X_Event_Mouse_Out
394 {
395    int                  modifiers;
396    int                  x, y;
397    int                  same_screen;
398    struct {
399       int               x, y;
400    } root;
401    Ecore_X_Window       win;
402    Ecore_X_Window       event_win;
403    Ecore_X_Window       root_win;
404    Ecore_X_Event_Mode   mode;
405    Ecore_X_Event_Detail detail;
406    Ecore_X_Time         time;
407 };
408
409 struct _Ecore_X_Event_Window_Focus_In
410 {
411    Ecore_X_Window       win;
412    Ecore_X_Event_Mode   mode;
413    Ecore_X_Event_Detail detail;
414    Ecore_X_Time         time;
415 };
416
417 struct _Ecore_X_Event_Window_Focus_Out
418 {
419    Ecore_X_Window       win;
420    Ecore_X_Event_Mode   mode;
421    Ecore_X_Event_Detail detail;
422    Ecore_X_Time         time;
423 };
424
425 struct _Ecore_X_Event_Window_Keymap
426 {
427    Ecore_X_Window win;
428 };
429
430 struct _Ecore_X_Event_Window_Damage
431 {
432    Ecore_X_Window win;
433    int            x, y, w, h;
434    int            count;
435    Ecore_X_Time   time;
436 };
437
438 struct _Ecore_X_Event_Window_Visibility_Change
439 {
440    Ecore_X_Window win;
441    int            fully_obscured;
442    Ecore_X_Time   time;
443 };
444
445 struct _Ecore_X_Event_Window_Create
446 {
447    Ecore_X_Window win;
448    Ecore_X_Window parent;
449    int            override;
450    int            x, y, w, h;
451    int            border;
452    Ecore_X_Time   time;
453 };
454
455 struct _Ecore_X_Event_Window_Destroy
456 {
457    Ecore_X_Window win;
458    Ecore_X_Window event_win;
459    Ecore_X_Time   time;
460 };
461
462 struct _Ecore_X_Event_Window_Hide
463 {
464    Ecore_X_Window win;
465    Ecore_X_Window event_win;
466    Ecore_X_Time   time;
467 };
468
469 struct _Ecore_X_Event_Window_Show
470 {
471    Ecore_X_Window win;
472    Ecore_X_Window event_win;
473    Ecore_X_Time   time;
474 };
475
476 struct _Ecore_X_Event_Window_Show_Request
477 {
478    Ecore_X_Window win;
479    Ecore_X_Window parent;
480    Ecore_X_Time   time;
481 };
482
483 struct _Ecore_X_Event_Window_Reparent
484 {
485    Ecore_X_Window win;
486    Ecore_X_Window event_win;
487    Ecore_X_Window parent;
488    Ecore_X_Time   time;
489 };
490
491 struct _Ecore_X_Event_Window_Configure
492 {
493    Ecore_X_Window win;
494    Ecore_X_Window event_win;
495    Ecore_X_Window abovewin;
496    int            x, y, w, h;
497    int            border;
498    Eina_Bool      override : 1;
499    Eina_Bool      from_wm : 1;
500    Ecore_X_Time   time;
501 };
502
503 struct _Ecore_X_Event_Window_Configure_Request
504 {
505    Ecore_X_Window            win;
506    Ecore_X_Window            parent_win;
507    Ecore_X_Window            abovewin;
508    int                       x, y, w, h;
509    int                       border;
510    Ecore_X_Window_Stack_Mode detail;
511    unsigned long             value_mask;
512    Ecore_X_Time              time;
513 };
514
515 struct _Ecore_X_Event_Window_Gravity
516 {
517    Ecore_X_Window win;
518    Ecore_X_Window event_win;
519    Ecore_X_Time   time;
520 };
521
522 struct _Ecore_X_Event_Window_Resize_Request
523 {
524    Ecore_X_Window win;
525    int            w, h;
526    Ecore_X_Time   time;
527 };
528
529 struct _Ecore_X_Event_Window_Stack
530 {
531    Ecore_X_Window            win;
532    Ecore_X_Window            event_win;
533    Ecore_X_Window_Stack_Mode detail;
534    Ecore_X_Time              time;
535 };
536
537 struct _Ecore_X_Event_Window_Stack_Request
538 {
539    Ecore_X_Window            win;
540    Ecore_X_Window            parent;
541    Ecore_X_Window_Stack_Mode detail;
542    Ecore_X_Time              time;
543 };
544
545 struct _Ecore_X_Event_Window_Property
546 {
547    Ecore_X_Window win;
548    Ecore_X_Atom   atom;
549    Ecore_X_Time   time;
550 };
551
552 struct _Ecore_X_Event_Window_Colormap
553 {
554    Ecore_X_Window   win;
555    Ecore_X_Colormap cmap;
556    Eina_Bool        installed : 1;
557    Ecore_X_Time     time;
558 };
559
560 struct _Ecore_X_Event_Mapping_Change
561 {
562    Ecore_X_Mapping_Type type;
563    int                  keycode;
564    int                  num;
565 };
566
567 struct _Ecore_X_Event_Selection_Clear
568 {
569    Ecore_X_Window    win;
570    Ecore_X_Selection selection;
571    Ecore_X_Atom      atom;
572    Ecore_X_Time      time;
573 };
574
575 struct _Ecore_X_Event_Selection_Request
576 {
577    Ecore_X_Window owner;
578    Ecore_X_Window requestor;
579    Ecore_X_Time   time;
580    Ecore_X_Atom   selection;
581    Ecore_X_Atom   target;
582    Ecore_X_Atom   property;
583 };
584
585 struct _Ecore_X_Event_Selection_Notify
586 {
587    Ecore_X_Window    win;
588    Ecore_X_Time      time;
589    Ecore_X_Selection selection;
590    Ecore_X_Atom      atom;
591    char             *target;
592    void             *data;
593 };
594
595 struct _Ecore_X_Selection_Data
596 {
597    enum {
598       ECORE_X_SELECTION_CONTENT_NONE,
599       ECORE_X_SELECTION_CONTENT_TEXT,
600       ECORE_X_SELECTION_CONTENT_FILES,
601       ECORE_X_SELECTION_CONTENT_TARGETS,
602       ECORE_X_SELECTION_CONTENT_CUSTOM
603    } content;
604    unsigned char *data;
605    int            length;
606    int            format;
607    int            (*free)(void *data);
608 };
609
610 struct _Ecore_X_Selection_Data_Files
611 {
612    Ecore_X_Selection_Data data;
613    char                 **files;
614    int                    num_files;
615 };
616
617 struct _Ecore_X_Selection_Data_Text
618 {
619    Ecore_X_Selection_Data data;
620    char                  *text;
621 };
622
623 struct _Ecore_X_Selection_Data_Targets
624 {
625    Ecore_X_Selection_Data data;
626    char                 **targets;
627    int                    num_targets;
628 };
629
630 struct _Ecore_X_Event_Xdnd_Enter
631 {
632    Ecore_X_Window win, source;
633
634    char         **types;
635    int            num_types;
636 };
637
638 struct _Ecore_X_Event_Xdnd_Position
639 {
640    Ecore_X_Window win, source;
641    struct {
642      int          x, y;
643    } position;
644    Ecore_X_Atom   action;
645 };
646
647 struct _Ecore_X_Xdnd_Position
648 {
649    Ecore_X_Window win, prev;
650    struct {
651      int          x, y;
652    } position;
653 };
654
655 struct _Ecore_X_Event_Xdnd_Status
656 {
657    Ecore_X_Window    win, target;
658    Eina_Bool         will_accept : 1;
659    Ecore_X_Rectangle rectangle;
660    Ecore_X_Atom      action;
661 };
662
663 struct _Ecore_X_Event_Xdnd_Leave
664 {
665    Ecore_X_Window win, source;
666 };
667
668 struct _Ecore_X_Event_Xdnd_Drop
669 {
670    Ecore_X_Window win, source;
671    Ecore_X_Atom   action;
672    struct {
673       int         x, y;
674    } position;
675 };
676
677 struct _Ecore_X_Event_Xdnd_Finished
678 {
679    Ecore_X_Window win, target;
680    Eina_Bool           completed : 1;
681    Ecore_X_Atom   action;
682 };
683
684 struct _Ecore_X_Event_Client_Message
685 {
686    Ecore_X_Window win;
687    Ecore_X_Atom   message_type;
688    int            format;
689    union {
690       char        b[20];
691       short       s[10];
692       long        l[5];
693    } data;
694    Ecore_X_Time   time;
695 };
696
697 struct _Ecore_X_Event_Window_Shape
698 {
699    Ecore_X_Window     win;
700    Ecore_X_Time       time;
701    Ecore_X_Shape_Type type;
702    int                x, y, w, h;
703    Eina_Bool          shaped : 1;
704 };
705
706 struct _Ecore_X_Event_Screensaver_Notify
707 {
708    Ecore_X_Window win;
709    Eina_Bool      on : 1;
710    Ecore_X_Time   time;
711 };
712
713 struct _Ecore_X_Event_Sync_Counter
714 {
715    Ecore_X_Time time;
716 };
717
718 struct _Ecore_X_Event_Sync_Alarm
719 {
720    Ecore_X_Time       time;
721    Ecore_X_Sync_Alarm alarm;
722 };
723
724 struct _Ecore_X_Randr_Screen_Size
725 {
726    int width, height;
727 };
728
729 struct _Ecore_X_Randr_Screen_Size_MM
730 {
731    int width, height, width_mm, height_mm;
732 };
733
734 struct _Ecore_X_Event_Screen_Change
735 {
736    Ecore_X_Window                win;
737    Ecore_X_Window                root;
738    Ecore_X_Randr_Screen_Size_MM  size;  /* in pixel and millimeters */
739    Ecore_X_Time                  time;
740    Ecore_X_Time                  config_time;
741    Ecore_X_Randr_Orientation     orientation;
742    Ecore_X_Render_Subpixel_Order subpixel_order;
743    Ecore_X_Randr_Size_ID         size_id;
744 };
745
746 struct _Ecore_X_Event_Randr_Crtc_Change
747 {
748    Ecore_X_Window            win;
749    Ecore_X_Randr_Crtc        crtc;
750    Ecore_X_Randr_Mode        mode;
751    Ecore_X_Randr_Orientation orientation;
752    Eina_Rectangle            geo;
753 };
754
755 struct _Ecore_X_Event_Randr_Output_Change
756 {
757    Ecore_X_Window                  win;
758    Ecore_X_Randr_Output            output;
759    Ecore_X_Randr_Crtc              crtc;
760    Ecore_X_Randr_Mode              mode;
761    Ecore_X_Randr_Orientation       orientation;
762    Ecore_X_Randr_Connection_Status connection;
763    Ecore_X_Render_Subpixel_Order   subpixel_order;
764 };
765
766 struct _Ecore_X_Event_Randr_Output_Property_Notify
767 {
768    Ecore_X_Window                win;
769    Ecore_X_Randr_Output          output;
770    Ecore_X_Atom                  property;
771    Ecore_X_Time                  time;
772    Ecore_X_Randr_Property_Change state;
773 };
774
775 struct _Ecore_X_Event_Window_Delete_Request
776 {
777    Ecore_X_Window win;
778    Ecore_X_Time   time;
779 };
780
781 struct _Ecore_X_Event_Window_Prop_Title_Change
782 {
783    Ecore_X_Window win;
784    char          *title;
785    Ecore_X_Time   time;
786 };
787
788 struct _Ecore_X_Event_Window_Prop_Visible_Title_Change
789 {
790    Ecore_X_Window win;
791    char          *title;
792    Ecore_X_Time   time;
793 };
794
795 struct _Ecore_X_Event_Window_Prop_Icon_Name_Change
796 {
797    Ecore_X_Window win;
798    char          *name;
799    Ecore_X_Time   time;
800 };
801
802 struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change
803 {
804    Ecore_X_Window win;
805    char          *name;
806    Ecore_X_Time   time;
807 };
808
809 struct _Ecore_X_Event_Window_Prop_Client_Machine_Change
810 {
811    Ecore_X_Window win;
812    char          *name;
813    Ecore_X_Time   time;
814 };
815
816 struct _Ecore_X_Event_Window_Prop_Name_Class_Change
817 {
818    Ecore_X_Window win;
819    char          *name;
820    char          *clas;
821    Ecore_X_Time   time;
822 };
823
824 struct _Ecore_X_Event_Window_Prop_Pid_Change
825 {
826    Ecore_X_Window win;
827    pid_t          pid;
828    Ecore_X_Time   time;
829 };
830
831 struct _Ecore_X_Event_Window_Prop_Desktop_Change
832 {
833    Ecore_X_Window win;
834    long           desktop;
835    Ecore_X_Time   time;
836 };
837
838 struct _Ecore_X_Event_Startup_Sequence
839 {
840    Ecore_X_Window win;
841 };
842
843 struct _Ecore_X_Event_Window_Move_Resize_Request
844 {
845    Ecore_X_Window win;
846    int            x, y;
847    int            direction;
848    int            button;
849    int            source;
850 };
851
852 struct _Ecore_X_Event_Window_State_Request
853 {
854    Ecore_X_Window              win;
855    Ecore_X_Window_State_Action action;
856    Ecore_X_Window_State        state[2];
857    int                         source;
858 };
859
860 struct _Ecore_X_Event_Frame_Extents_Request
861 {
862    Ecore_X_Window win;
863 };
864
865 struct _Ecore_X_Event_Ping
866 {
867    Ecore_X_Window win;
868    Ecore_X_Window event_win;
869    Ecore_X_Time   time;
870 };
871
872 struct _Ecore_X_Event_Desktop_Change
873 {
874    Ecore_X_Window win;
875    unsigned int   desk;
876    int            source;
877 };
878
879 struct _Ecore_X_Event_Generic
880 {
881    int          extension;
882    int          evtype;
883    unsigned int cookie;
884    void        *data;
885 };
886
887 EAPI extern int ECORE_X_EVENT_ANY; /**< low level event dependent on
888                                         backend in use, if Xlib will be XEvent,
889                                         if XCB will be xcb_generic_event_t.
890                                         @warning avoid using it.
891                                     */
892 EAPI extern int ECORE_X_EVENT_MOUSE_IN;
893 EAPI extern int ECORE_X_EVENT_MOUSE_OUT;
894 EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_IN;
895 EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_OUT;
896 EAPI extern int ECORE_X_EVENT_WINDOW_KEYMAP;
897 EAPI extern int ECORE_X_EVENT_WINDOW_DAMAGE;
898 EAPI extern int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE;
899 EAPI extern int ECORE_X_EVENT_WINDOW_CREATE;
900 EAPI extern int ECORE_X_EVENT_WINDOW_DESTROY;
901 EAPI extern int ECORE_X_EVENT_WINDOW_HIDE;
902 EAPI extern int ECORE_X_EVENT_WINDOW_SHOW;
903 EAPI extern int ECORE_X_EVENT_WINDOW_SHOW_REQUEST;
904 EAPI extern int ECORE_X_EVENT_WINDOW_REPARENT;
905 EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE;
906 EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST;
907 EAPI extern int ECORE_X_EVENT_WINDOW_GRAVITY;
908 EAPI extern int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST;
909 EAPI extern int ECORE_X_EVENT_WINDOW_STACK;
910 EAPI extern int ECORE_X_EVENT_WINDOW_STACK_REQUEST;
911 EAPI extern int ECORE_X_EVENT_WINDOW_PROPERTY;
912 EAPI extern int ECORE_X_EVENT_WINDOW_COLORMAP;
913 EAPI extern int ECORE_X_EVENT_WINDOW_MAPPING;
914 EAPI extern int ECORE_X_EVENT_MAPPING_CHANGE;
915 EAPI extern int ECORE_X_EVENT_SELECTION_CLEAR;
916 EAPI extern int ECORE_X_EVENT_SELECTION_REQUEST;
917 EAPI extern int ECORE_X_EVENT_SELECTION_NOTIFY;
918 EAPI extern int ECORE_X_EVENT_CLIENT_MESSAGE;
919 EAPI extern int ECORE_X_EVENT_WINDOW_SHAPE;
920 EAPI extern int ECORE_X_EVENT_SCREENSAVER_NOTIFY;
921 EAPI extern int ECORE_X_EVENT_SYNC_COUNTER;
922 EAPI extern int ECORE_X_EVENT_SYNC_ALARM;
923 EAPI extern int ECORE_X_EVENT_SCREEN_CHANGE;
924 EAPI extern int ECORE_X_EVENT_RANDR_CRTC_CHANGE;
925 EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_CHANGE;
926 EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY;
927 EAPI extern int ECORE_X_EVENT_DAMAGE_NOTIFY;
928
929 EAPI extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST;
930 /*
931    EAPI extern int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE;
932    EAPI extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE;
933    EAPI extern int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE;
934    EAPI extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE;
935    EAPI extern int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE;
936    EAPI extern int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE;
937    EAPI extern int ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE;
938    EAPI extern int ECORE_X_EVENT_WINDOW_PROP_DESKTOP_CHANGE;
939  */
940
941 EAPI extern int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST;
942 EAPI extern int ECORE_X_EVENT_WINDOW_STATE_REQUEST;
943 EAPI extern int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST;
944 EAPI extern int ECORE_X_EVENT_PING;
945 EAPI extern int ECORE_X_EVENT_DESKTOP_CHANGE;
946
947 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW;
948 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
949 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
950
951 EAPI extern int ECORE_X_EVENT_GENERIC;
952
953 EAPI extern int ECORE_X_EVENT_XDND_ENTER;
954 EAPI extern int ECORE_X_EVENT_XDND_POSITION;
955 EAPI extern int ECORE_X_EVENT_XDND_STATUS;
956 EAPI extern int ECORE_X_EVENT_XDND_LEAVE;
957 EAPI extern int ECORE_X_EVENT_XDND_DROP;
958 EAPI extern int ECORE_X_EVENT_XDND_FINISHED;
959
960 EAPI extern int ECORE_X_LOCK_SCROLL;
961 EAPI extern int ECORE_X_LOCK_NUM;
962 EAPI extern int ECORE_X_LOCK_CAPS;
963
964 typedef enum _Ecore_X_WM_Protocol
965 {
966    /* If enabled the window manager will be asked to send a
967     * delete message instead of just closing (destroying) the window. */
968    ECORE_X_WM_PROTOCOL_DELETE_REQUEST,
969
970    /* If enabled the window manager will be told that the window
971     * explicitly sets input focus. */
972    ECORE_X_WM_PROTOCOL_TAKE_FOCUS,
973
974    /* If enabled the window manager can ping the window to check
975     * if it is alive. */
976    ECORE_X_NET_WM_PROTOCOL_PING,
977
978    /* If enabled the window manager can sync updating with the
979     * window (?) */
980    ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST,
981
982    /* Number of defined items */
983    ECORE_X_WM_PROTOCOL_NUM
984 } Ecore_X_WM_Protocol;
985
986 typedef enum _Ecore_X_Window_Input_Mode
987 {
988    /* The window can never be focused */
989    ECORE_X_WINDOW_INPUT_MODE_NONE,
990
991    /* The window can be focused by the WM but doesn't focus itself */
992    ECORE_X_WINDOW_INPUT_MODE_PASSIVE,
993
994    /* The window sets the focus itself if one of its sub-windows
995     * already is focused */
996    ECORE_X_WINDOW_INPUT_MODE_ACTIVE_LOCAL,
997
998    /* The window sets the focus itself even if another window
999     * is currently focused */
1000    ECORE_X_WINDOW_INPUT_MODE_ACTIVE_GLOBAL
1001 } Ecore_X_Window_Input_Mode;
1002
1003 typedef enum _Ecore_X_Window_State_Hint
1004 {
1005    /** Do not provide any state hint to the window manager */
1006    ECORE_X_WINDOW_STATE_HINT_NONE = -1,
1007
1008    /** The window wants to remain hidden and NOT iconified */
1009    ECORE_X_WINDOW_STATE_HINT_WITHDRAWN,
1010
1011    /** The window wants to be mapped normally */
1012    ECORE_X_WINDOW_STATE_HINT_NORMAL,
1013
1014    /** The window wants to start in an iconified state */
1015    ECORE_X_WINDOW_STATE_HINT_ICONIC
1016 } Ecore_X_Window_State_Hint;
1017
1018 typedef enum _Ecore_X_Window_Type
1019 {
1020    ECORE_X_WINDOW_TYPE_UNKNOWN = 0,
1021    ECORE_X_WINDOW_TYPE_DESKTOP,
1022    ECORE_X_WINDOW_TYPE_DOCK,
1023    ECORE_X_WINDOW_TYPE_TOOLBAR,
1024    ECORE_X_WINDOW_TYPE_MENU,
1025    ECORE_X_WINDOW_TYPE_UTILITY,
1026    ECORE_X_WINDOW_TYPE_SPLASH,
1027    ECORE_X_WINDOW_TYPE_DIALOG,
1028    ECORE_X_WINDOW_TYPE_NORMAL,
1029    ECORE_X_WINDOW_TYPE_DROPDOWN_MENU,
1030    ECORE_X_WINDOW_TYPE_POPUP_MENU,
1031    ECORE_X_WINDOW_TYPE_TOOLTIP,
1032    ECORE_X_WINDOW_TYPE_NOTIFICATION,
1033    ECORE_X_WINDOW_TYPE_COMBO,
1034    ECORE_X_WINDOW_TYPE_DND
1035 } Ecore_X_Window_Type;
1036
1037 typedef enum _Ecore_X_Action
1038 {
1039    ECORE_X_ACTION_MOVE,
1040    ECORE_X_ACTION_RESIZE,
1041    ECORE_X_ACTION_MINIMIZE,
1042    ECORE_X_ACTION_SHADE,
1043    ECORE_X_ACTION_STICK,
1044    ECORE_X_ACTION_MAXIMIZE_HORZ,
1045    ECORE_X_ACTION_MAXIMIZE_VERT,
1046    ECORE_X_ACTION_FULLSCREEN,
1047    ECORE_X_ACTION_CHANGE_DESKTOP,
1048    ECORE_X_ACTION_CLOSE,
1049    ECORE_X_ACTION_ABOVE,
1050    ECORE_X_ACTION_BELOW
1051 } Ecore_X_Action;
1052
1053 typedef enum _Ecore_X_Window_Configure_Mask
1054 {
1055    ECORE_X_WINDOW_CONFIGURE_MASK_X = (1 << 0),
1056    ECORE_X_WINDOW_CONFIGURE_MASK_Y = (1 << 1),
1057    ECORE_X_WINDOW_CONFIGURE_MASK_W = (1 << 2),
1058    ECORE_X_WINDOW_CONFIGURE_MASK_H = (1 << 3),
1059    ECORE_X_WINDOW_CONFIGURE_MASK_BORDER_WIDTH = (1 << 4),
1060    ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING = (1 << 5),
1061    ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE = (1 << 6)
1062 } Ecore_X_Window_Configure_Mask;
1063
1064 typedef enum _Ecore_X_Virtual_Keyboard_State
1065 {
1066    ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN = 0,
1067    ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF,
1068    ECORE_X_VIRTUAL_KEYBOARD_STATE_ON,
1069    ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA,
1070    ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC,
1071    ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN,
1072    ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER,
1073    ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX,
1074    ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL,
1075    ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD,
1076    ECORE_X_VIRTUAL_KEYBOARD_STATE_IP,
1077    ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST,
1078    ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE,
1079    ECORE_X_VIRTUAL_KEYBOARD_STATE_URL,
1080    ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD,
1081    ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME
1082 } Ecore_X_Virtual_Keyboard_State;
1083
1084 typedef enum _Ecore_X_Illume_Mode
1085 {
1086    ECORE_X_ILLUME_MODE_UNKNOWN = 0,
1087    ECORE_X_ILLUME_MODE_SINGLE,
1088    ECORE_X_ILLUME_MODE_DUAL_TOP,
1089    ECORE_X_ILLUME_MODE_DUAL_LEFT
1090 } Ecore_X_Illume_Mode;
1091
1092 typedef enum _Ecore_X_Illume_Quickpanel_State
1093 {
1094    ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN = 0,
1095    ECORE_X_ILLUME_QUICKPANEL_STATE_OFF,
1096    ECORE_X_ILLUME_QUICKPANEL_STATE_ON
1097 } Ecore_X_Illume_Quickpanel_State;
1098
1099 /* Window layer constants */
1100 #define ECORE_X_WINDOW_LAYER_BELOW  2
1101 #define ECORE_X_WINDOW_LAYER_NORMAL 4
1102 #define ECORE_X_WINDOW_LAYER_ABOVE  6
1103
1104 /* Property list operations */
1105 #define ECORE_X_PROP_LIST_REMOVE    0
1106 #define ECORE_X_PROP_LIST_ADD       1
1107 #define ECORE_X_PROP_LIST_TOGGLE    2
1108
1109 EAPI int                     ecore_x_init(const char *name);
1110 EAPI int                     ecore_x_shutdown(void);
1111 EAPI int                     ecore_x_disconnect(void);
1112 EAPI Ecore_X_Display *       ecore_x_display_get(void);
1113 EAPI Ecore_X_Connection *    ecore_x_connection_get(void);
1114 EAPI int                     ecore_x_fd_get(void);
1115 EAPI Ecore_X_Screen *        ecore_x_default_screen_get(void);
1116 EAPI void                    ecore_x_double_click_time_set(double t);
1117 EAPI double                  ecore_x_double_click_time_get(void);
1118 EAPI void                    ecore_x_flush(void);
1119 EAPI void                    ecore_x_sync(void);
1120 EAPI void                    ecore_x_killall(Ecore_X_Window root);
1121 EAPI void                    ecore_x_kill(Ecore_X_Window win);
1122 EAPI int                     ecore_x_dpi_get(void);
1123 EAPI Eina_Bool               ecore_x_bell(int percent);
1124
1125 EAPI Ecore_X_Time            ecore_x_current_time_get(void);
1126
1127 EAPI void                    ecore_x_error_handler_set(void (*func)(void *data), const void *data);
1128 EAPI void                    ecore_x_io_error_handler_set(void (*func)(
1129                                                              void *data), const void *data);
1130 EAPI int                     ecore_x_error_request_get(void);
1131 EAPI int                     ecore_x_error_code_get(void);
1132
1133 EAPI void                    ecore_x_event_mask_set(Ecore_X_Window     w,
1134                                                     Ecore_X_Event_Mask mask);
1135 EAPI void                    ecore_x_event_mask_unset(Ecore_X_Window     w,
1136                                                       Ecore_X_Event_Mask mask);
1137
1138 EAPI Eina_Bool               ecore_x_selection_notify_send(Ecore_X_Window requestor,
1139                                                            Ecore_X_Atom   selection,
1140                                                            Ecore_X_Atom   target,
1141                                                            Ecore_X_Atom   property,
1142                                                            Ecore_X_Time   time);
1143 EAPI void                    ecore_x_selection_primary_prefetch(void);
1144 EAPI void                    ecore_x_selection_primary_fetch(void);
1145 EAPI Eina_Bool               ecore_x_selection_primary_set(Ecore_X_Window w,
1146                                                            const void    *data,
1147                                                            int            size);
1148 EAPI Eina_Bool               ecore_x_selection_primary_clear(void);
1149 EAPI void                    ecore_x_selection_secondary_prefetch(void);
1150 EAPI void                    ecore_x_selection_secondary_fetch(void);
1151 EAPI Eina_Bool               ecore_x_selection_secondary_set(Ecore_X_Window w,
1152                                                              const void    *data,
1153                                                              int            size);
1154 EAPI Eina_Bool               ecore_x_selection_secondary_clear(void);
1155 EAPI void                    ecore_x_selection_xdnd_prefetch(void);
1156 EAPI void                    ecore_x_selection_xdnd_fetch(void);
1157 EAPI Eina_Bool               ecore_x_selection_xdnd_set(Ecore_X_Window w,
1158                                                         const void    *data,
1159                                                         int            size);
1160 EAPI Eina_Bool               ecore_x_selection_xdnd_clear(void);
1161 EAPI void                    ecore_x_selection_clipboard_prefetch(void);
1162 EAPI void                    ecore_x_selection_clipboard_fetch(void);
1163 EAPI Eina_Bool               ecore_x_selection_clipboard_set(Ecore_X_Window w,
1164                                                              const void    *data,
1165                                                              int            size);
1166 EAPI Eina_Bool               ecore_x_selection_clipboard_clear(void);
1167 EAPI void                    ecore_x_selection_primary_request(Ecore_X_Window w,
1168                                                                const char    *target);
1169 EAPI void                    ecore_x_selection_secondary_request(Ecore_X_Window w,
1170                                                                  const char    *target);
1171 EAPI void                    ecore_x_selection_xdnd_request(Ecore_X_Window w,
1172                                                             const char    *target);
1173 EAPI void                    ecore_x_selection_clipboard_request(Ecore_X_Window w,
1174                                                                  const char    *target);
1175 EAPI Eina_Bool               ecore_x_selection_convert(Ecore_X_Atom  selection,
1176                                                        Ecore_X_Atom  target,
1177                                                        void        **data_ret,
1178                                                        int          *len,
1179                                                        Ecore_X_Atom *targprop,
1180                                                        int          *targsize);
1181 EAPI void                    ecore_x_selection_converter_add(char *target, Eina_Bool (*func)(
1182                                                                 char  *target,
1183                                                                 void  *data,
1184                                                                 int    size,
1185                                                                 void **data_ret,
1186                                                                 int   *size_ret,
1187                                                                 Ecore_X_Atom *,
1188                                                                 int *));
1189 EAPI void      ecore_x_selection_converter_atom_add(Ecore_X_Atom target, Eina_Bool (*func)(
1190                                                        char         *target,
1191                                                        void         *data,
1192                                                        int           size,
1193                                                        void        **data_ret,
1194                                                        int          *size_ret,
1195                                                        Ecore_X_Atom *tprop,
1196                                                        int          *tsize));
1197 EAPI void                ecore_x_selection_converter_del(char *target);
1198 EAPI void                ecore_x_selection_converter_atom_del(
1199    Ecore_X_Atom target);
1200 EAPI void                ecore_x_selection_parser_add(const char *target,
1201                                                       void *(*func)(const char *target,
1202                                                                     void *data, int size,
1203                                                                     int format));
1204 EAPI void                ecore_x_selection_parser_del(const char *target);
1205
1206 EAPI void                ecore_x_dnd_aware_set(Ecore_X_Window win, Eina_Bool on);
1207 EAPI void                ecore_x_dnd_version_get_prefetch(Ecore_X_Window window);
1208 EAPI void                ecore_x_dnd_version_get_fetch(void);
1209 EAPI int                 ecore_x_dnd_version_get(Ecore_X_Window win);
1210 EAPI void                ecore_x_dnd_type_get_prefetch(Ecore_X_Window window);
1211 EAPI void                ecore_x_dnd_type_get_fetch(void);
1212 EAPI Eina_Bool           ecore_x_dnd_type_isset(Ecore_X_Window win,
1213                                                 const char    *type);
1214 EAPI void                ecore_x_dnd_type_set(Ecore_X_Window win,
1215                                               const char    *type,
1216                                               Eina_Bool      on);
1217 EAPI void                ecore_x_dnd_types_set(Ecore_X_Window win,
1218                                                const char   **types,
1219                                                unsigned int   num_types);
1220 EAPI void                ecore_x_dnd_actions_set(Ecore_X_Window win,
1221                                                  Ecore_X_Atom  *actions,
1222                                                  unsigned int   num_actions);
1223 EAPI void                ecore_x_dnd_begin_prefetch(Ecore_X_Window source);
1224 EAPI void                ecore_x_dnd_begin_fetch(void);
1225 EAPI Eina_Bool           ecore_x_dnd_begin(Ecore_X_Window source,
1226                                            unsigned char *data,
1227                                            int            size);
1228 EAPI Eina_Bool           ecore_x_dnd_drop(void);
1229 EAPI void                ecore_x_dnd_send_status(Eina_Bool         will_accept,
1230                                                  Eina_Bool         suppress,
1231                                                  Ecore_X_Rectangle rectangle,
1232                                                  Ecore_X_Atom      action);
1233 EAPI void                ecore_x_dnd_send_finished(void);
1234 EAPI void                ecore_x_dnd_source_action_set(Ecore_X_Atom action);
1235 EAPI Ecore_X_Atom        ecore_x_dnd_source_action_get(void);
1236 EAPI void                ecore_x_dnd_callback_pos_update_set(void (*cb)(void *, Ecore_X_Xdnd_Position *data),
1237                                                              const void *data);
1238
1239 EAPI Ecore_X_Window      ecore_x_window_new(Ecore_X_Window parent,
1240                                             int            x,
1241                                             int            y,
1242                                             int            w,
1243                                             int            h);
1244 EAPI Ecore_X_Window      ecore_x_window_override_new(Ecore_X_Window parent,
1245                                                      int            x,
1246                                                      int            y,
1247                                                      int            w,
1248                                                      int            h);
1249 EAPI int                 ecore_x_window_argb_get(Ecore_X_Window win);
1250 EAPI Ecore_X_Window      ecore_x_window_manager_argb_new(Ecore_X_Window parent,
1251                                                          int            x,
1252                                                          int            y,
1253                                                          int            w,
1254                                                          int            h);
1255 EAPI Ecore_X_Window      ecore_x_window_argb_new(Ecore_X_Window parent,
1256                                                  int            x,
1257                                                  int            y,
1258                                                  int            w,
1259                                                  int            h);
1260 EAPI Ecore_X_Window      ecore_x_window_override_argb_new(Ecore_X_Window parent,
1261                                                           int            x,
1262                                                           int            y,
1263                                                           int            w,
1264                                                           int            h);
1265 EAPI Ecore_X_Window      ecore_x_window_input_new(Ecore_X_Window parent,
1266                                                   int            x,
1267                                                   int            y,
1268                                                   int            w,
1269                                                   int            h);
1270 EAPI void                ecore_x_window_configure(
1271    Ecore_X_Window win,
1272    Ecore_X_Window_Configure_Mask
1273    mask,
1274    int            x,
1275    int            y,
1276    int            w,
1277    int            h,
1278    int            border_width,
1279    Ecore_X_Window sibling,
1280    int            stack_mode);
1281 EAPI void                ecore_x_window_cursor_set(Ecore_X_Window win,
1282                                                    Ecore_X_Cursor c);
1283 EAPI void                ecore_x_window_free(Ecore_X_Window win);
1284 EAPI void                ecore_x_window_ignore_set(Ecore_X_Window win,
1285                                                    int            ignore);
1286 EAPI Ecore_X_Window *    ecore_x_window_ignore_list(int *num);
1287
1288 EAPI void                ecore_x_window_delete_request_send(
1289    Ecore_X_Window win);
1290 EAPI void                ecore_x_window_show(Ecore_X_Window win);
1291 EAPI void                ecore_x_window_hide(Ecore_X_Window win);
1292 EAPI void                ecore_x_window_move(Ecore_X_Window win,
1293                                              int            x,
1294                                              int            y);
1295 EAPI void                ecore_x_window_resize(Ecore_X_Window win,
1296                                                int            w,
1297                                                int            h);
1298 EAPI void                ecore_x_window_move_resize(Ecore_X_Window win,
1299                                                     int            x,
1300                                                     int            y,
1301                                                     int            w,
1302                                                     int            h);
1303 EAPI void                ecore_x_window_focus(Ecore_X_Window win);
1304 EAPI void                ecore_x_window_focus_at_time(Ecore_X_Window win,
1305                                                       Ecore_X_Time   t);
1306 EAPI void                ecore_x_get_input_focus_prefetch(void);
1307 EAPI void                ecore_x_get_input_focus_fetch(void);
1308 EAPI Ecore_X_Window      ecore_x_window_focus_get(void);
1309 EAPI void                ecore_x_window_raise(Ecore_X_Window win);
1310 EAPI void                ecore_x_window_lower(Ecore_X_Window win);
1311 EAPI void                ecore_x_window_reparent(Ecore_X_Window win,
1312                                                  Ecore_X_Window new_parent,
1313                                                  int            x,
1314                                                  int            y);
1315 EAPI void                ecore_x_window_size_get(Ecore_X_Window win,
1316                                                  int           *w,
1317                                                  int           *h);
1318 EAPI void                ecore_x_window_geometry_get(Ecore_X_Window win,
1319                                                      int           *x,
1320                                                      int           *y,
1321                                                      int           *w,
1322                                                      int           *h);
1323 EAPI int                 ecore_x_window_border_width_get(
1324    Ecore_X_Window win);
1325 EAPI void                ecore_x_window_border_width_set(
1326    Ecore_X_Window win,
1327    int            width);
1328 EAPI int                 ecore_x_window_depth_get(Ecore_X_Window win);
1329 EAPI void                ecore_x_window_cursor_show(Ecore_X_Window win,
1330                                                     Eina_Bool      show);
1331 EAPI void                ecore_x_window_defaults_set(Ecore_X_Window win);
1332 EAPI int                 ecore_x_window_visible_get(Ecore_X_Window win);
1333 EAPI Ecore_X_Window      ecore_x_window_shadow_tree_at_xy_with_skip_get(
1334    Ecore_X_Window  base,
1335    int             x,
1336    int             y,
1337    Ecore_X_Window *skip,
1338    int             skip_num);
1339 EAPI Ecore_X_Window      ecore_x_window_shadow_parent_get(
1340    Ecore_X_Window root,
1341    Ecore_X_Window win);
1342 EAPI void                ecore_x_window_shadow_tree_flush(void);
1343 EAPI Ecore_X_Window      ecore_x_window_root_get(Ecore_X_Window win);
1344 EAPI Ecore_X_Window      ecore_x_window_at_xy_get(int x, int y);
1345 EAPI Ecore_X_Window      ecore_x_window_at_xy_with_skip_get(int             x,
1346                                                             int             y,
1347                                                             Ecore_X_Window *skip,
1348                                                             int             skip_num);
1349 EAPI Ecore_X_Window      ecore_x_window_at_xy_begin_get(
1350    Ecore_X_Window begin,
1351    int            x,
1352    int            y);
1353 EAPI void                ecore_x_query_tree_prefetch(
1354    Ecore_X_Window window);
1355 EAPI void                ecore_x_query_tree_fetch(void);
1356 EAPI Ecore_X_Window      ecore_x_window_parent_get(Ecore_X_Window win);
1357
1358 EAPI void                ecore_x_window_background_color_set(
1359    Ecore_X_Window win,
1360    unsigned
1361    short          r,
1362    unsigned
1363    short          g,
1364    unsigned
1365    short          b);
1366 EAPI void      ecore_x_window_gravity_set(Ecore_X_Window  win,
1367                                           Ecore_X_Gravity grav);
1368 EAPI void      ecore_x_window_pixel_gravity_set(
1369    Ecore_X_Window win,
1370    Ecore_X_Gravity
1371    grav);
1372 EAPI void      ecore_x_window_pixmap_set(Ecore_X_Window win,
1373                                          Ecore_X_Pixmap pmap);
1374 EAPI void      ecore_x_window_area_clear(Ecore_X_Window win,
1375                                          int            x,
1376                                          int            y,
1377                                          int            w,
1378                                          int            h);
1379 EAPI void      ecore_x_window_area_expose(Ecore_X_Window win,
1380                                           int            x,
1381                                           int            y,
1382                                           int            w,
1383                                           int            h);
1384 EAPI void      ecore_x_window_override_set(Ecore_X_Window win,
1385                                            Eina_Bool      override);
1386
1387 EAPI void      ecore_x_window_prop_card32_set(
1388    Ecore_X_Window win,
1389    Ecore_X_Atom   atom,
1390    unsigned int  *val,
1391    unsigned int   num);
1392 EAPI void      ecore_x_window_prop_card32_get_prefetch(
1393    Ecore_X_Window window,
1394    Ecore_X_Atom
1395    atom);
1396 EAPI void      ecore_x_window_prop_card32_get_fetch(void);
1397 EAPI int       ecore_x_window_prop_card32_get(
1398    Ecore_X_Window win,
1399    Ecore_X_Atom   atom,
1400    unsigned int  *val,
1401    unsigned int   len);
1402 EAPI int       ecore_x_window_prop_card32_list_get(
1403    Ecore_X_Window win,
1404    Ecore_X_Atom
1405    atom,
1406    unsigned int
1407                 **plst);
1408
1409 EAPI void      ecore_x_window_prop_xid_set(Ecore_X_Window win,
1410                                            Ecore_X_Atom   atom,
1411                                            Ecore_X_Atom   type,
1412                                            Ecore_X_ID    *lst,
1413                                            unsigned int   num);
1414 EAPI void      ecore_x_window_prop_xid_get_prefetch(
1415    Ecore_X_Window window,
1416    Ecore_X_Atom
1417    atom,
1418    Ecore_X_Atom
1419    type);
1420 EAPI void      ecore_x_window_prop_xid_get_fetch(void);
1421 EAPI int       ecore_x_window_prop_xid_get(Ecore_X_Window win,
1422                                            Ecore_X_Atom   atom,
1423                                            Ecore_X_Atom   type,
1424                                            Ecore_X_ID    *lst,
1425                                            unsigned int   len);
1426 EAPI int       ecore_x_window_prop_xid_list_get(
1427    Ecore_X_Window win,
1428    Ecore_X_Atom
1429    atom,
1430    Ecore_X_Atom
1431    type,
1432    Ecore_X_ID **
1433    plst);
1434 EAPI void      ecore_x_window_prop_xid_list_change(
1435    Ecore_X_Window win,
1436    Ecore_X_Atom
1437    atom,
1438    Ecore_X_Atom
1439    type,
1440    Ecore_X_ID
1441    item,
1442    int            op);
1443 EAPI void      ecore_x_window_prop_atom_set(Ecore_X_Window win,
1444                                             Ecore_X_Atom   atom,
1445                                             Ecore_X_Atom  *val,
1446                                             unsigned int   num);
1447 EAPI void      ecore_x_window_prop_atom_get_prefetch(
1448    Ecore_X_Window window,
1449    Ecore_X_Atom
1450    atom);
1451 EAPI void      ecore_x_window_prop_atom_get_fetch(void);
1452 EAPI int       ecore_x_window_prop_atom_get(Ecore_X_Window win,
1453                                             Ecore_X_Atom   atom,
1454                                             Ecore_X_Atom  *val,
1455                                             unsigned int   len);
1456 EAPI int       ecore_x_window_prop_atom_list_get(
1457    Ecore_X_Window win,
1458    Ecore_X_Atom
1459    atom,
1460    Ecore_X_Atom *
1461                  *plst);
1462 EAPI void      ecore_x_window_prop_atom_list_change(
1463    Ecore_X_Window win,
1464    Ecore_X_Atom
1465    atom,
1466    Ecore_X_Atom
1467    item,
1468    int            op);
1469 EAPI void      ecore_x_window_prop_window_set(
1470    Ecore_X_Window win,
1471    Ecore_X_Atom   atom,
1472    Ecore_X_Window *
1473    val,
1474    unsigned int   num);
1475 EAPI void      ecore_x_window_prop_window_get_prefetch(
1476    Ecore_X_Window window,
1477    Ecore_X_Atom
1478    atom);
1479 EAPI void      ecore_x_window_prop_window_get_fetch(void);
1480 EAPI int       ecore_x_window_prop_window_get(
1481    Ecore_X_Window win,
1482    Ecore_X_Atom   atom,
1483    Ecore_X_Window *
1484    val,
1485    unsigned int   len);
1486 EAPI int       ecore_x_window_prop_window_list_get(
1487    Ecore_X_Window win,
1488    Ecore_X_Atom
1489    atom,
1490    Ecore_X_Window
1491                 **plst);
1492
1493 EAPI Ecore_X_Atom      ecore_x_window_prop_any_type(void);
1494 EAPI void              ecore_x_window_prop_property_set(
1495    Ecore_X_Window win,
1496    Ecore_X_Atom   type,
1497    Ecore_X_Atom   format,
1498    int            size,
1499    void          *data,
1500    int            number);
1501 EAPI void      ecore_x_window_prop_property_get_prefetch(
1502    Ecore_X_Window window,
1503    Ecore_X_Atom
1504    property,
1505    Ecore_X_Atom
1506    type);
1507 EAPI void      ecore_x_window_prop_property_get_fetch(void);
1508 EAPI int       ecore_x_window_prop_property_get(
1509    Ecore_X_Window  win,
1510    Ecore_X_Atom    property,
1511    Ecore_X_Atom    type,
1512    int             size,
1513    unsigned char **data,
1514    int            *num);
1515 EAPI void                     ecore_x_window_prop_property_del(
1516    Ecore_X_Window win,
1517    Ecore_X_Atom   property);
1518 EAPI void                     ecore_x_window_prop_list_prefetch(
1519    Ecore_X_Window window);
1520 EAPI void                     ecore_x_window_prop_list_fetch(void);
1521 EAPI Ecore_X_Atom *           ecore_x_window_prop_list(Ecore_X_Window win,
1522                                                        int           *num_ret);
1523 EAPI void                     ecore_x_window_prop_string_set(
1524    Ecore_X_Window win,
1525    Ecore_X_Atom   type,
1526    const char    *str);
1527 EAPI void                     ecore_x_window_prop_string_get_prefetch(
1528    Ecore_X_Window window,
1529    Ecore_X_Atom
1530    type);
1531 EAPI void                     ecore_x_window_prop_string_get_fetch(void);
1532 EAPI char *                   ecore_x_window_prop_string_get(
1533    Ecore_X_Window win,
1534    Ecore_X_Atom   type);
1535 EAPI Eina_Bool                ecore_x_window_prop_protocol_isset(
1536    Ecore_X_Window      win,
1537    Ecore_X_WM_Protocol protocol);
1538 EAPI Ecore_X_WM_Protocol *    ecore_x_window_prop_protocol_list_get(
1539    Ecore_X_Window win,
1540    int           *num_ret);
1541
1542 EAPI void                     ecore_x_window_shape_mask_set(Ecore_X_Window win,
1543                                                             Ecore_X_Pixmap mask);
1544 EAPI void                     ecore_x_window_shape_window_set(
1545    Ecore_X_Window win,
1546    Ecore_X_Window shape_win);
1547 EAPI void                     ecore_x_window_shape_window_set_xy(
1548    Ecore_X_Window win,
1549    Ecore_X_Window shape_win,
1550    int            x,
1551    int            y);
1552 EAPI void                     ecore_x_window_shape_window_set_xy(
1553    Ecore_X_Window win,
1554    Ecore_X_Window shape_win,
1555    int            x,
1556    int            y);
1557 EAPI void                     ecore_x_window_shape_rectangle_set(
1558    Ecore_X_Window win,
1559    int            x,
1560    int            y,
1561    int            w,
1562    int            h);
1563 EAPI void                     ecore_x_window_shape_rectangles_set(
1564    Ecore_X_Window     win,
1565    Ecore_X_Rectangle *rects,
1566    int                num);
1567 EAPI void                     ecore_x_window_shape_input_rectangle_set(
1568    Ecore_X_Window win,
1569    int            x,
1570    int            y,
1571    int            w,
1572    int            h);
1573 EAPI void                     ecore_x_window_shape_input_rectangles_set(
1574    Ecore_X_Window     win,
1575    Ecore_X_Rectangle *rects,
1576    int                num);
1577 EAPI void                     ecore_x_window_shape_input_rectangle_add(
1578    Ecore_X_Window win,
1579    int            x,
1580    int            y,
1581    int            w,
1582    int            h);
1583 EAPI void                     ecore_x_window_shape_rectangle_subtract(
1584    Ecore_X_Window win,
1585    int            x,
1586    int            y,
1587    int            w,
1588    int            h);
1589 EAPI void                     ecore_x_window_shape_input_rectangle_subtract(
1590    Ecore_X_Window win,
1591    int            x,
1592    int            y,
1593    int            w,
1594    int            h);
1595 EAPI void                     ecore_x_window_shape_input_window_set_xy(
1596    Ecore_X_Window win,
1597    Ecore_X_Window shape_win,
1598    int            x,
1599    int            y);
1600 EAPI void                     ecore_x_window_shape_input_window_set(
1601    Ecore_X_Window win,
1602    Ecore_X_Window shape_win);
1603 EAPI void                     ecore_x_window_shape_window_add(
1604    Ecore_X_Window win,
1605    Ecore_X_Window shape_win);
1606 EAPI void                     ecore_x_window_shape_window_add_xy(
1607    Ecore_X_Window win,
1608    Ecore_X_Window shape_win,
1609    int            x,
1610    int            y);
1611 EAPI void                     ecore_x_window_shape_input_window_add_xy(
1612    Ecore_X_Window win,
1613    Ecore_X_Window shape_win,
1614    int            x,
1615    int            y);
1616 EAPI void                     ecore_x_window_shape_rectangle_add(
1617    Ecore_X_Window win,
1618    int            x,
1619    int            y,
1620    int            w,
1621    int            h);
1622 EAPI void                     ecore_x_window_shape_rectangle_clip(
1623    Ecore_X_Window win,
1624    int            x,
1625    int            y,
1626    int            w,
1627    int            h);
1628 EAPI void                     ecore_x_window_shape_input_rectangle_clip(
1629    Ecore_X_Window win,
1630    int            x,
1631    int            y,
1632    int            w,
1633    int            h);
1634 EAPI void                     ecore_x_window_shape_rectangles_add(
1635    Ecore_X_Window     win,
1636    Ecore_X_Rectangle *rects,
1637    int                num);
1638 EAPI void                     ecore_x_window_shape_input_rectangles_add(
1639    Ecore_X_Window     win,
1640    Ecore_X_Rectangle *rects,
1641    int                num);
1642 EAPI void                     ecore_x_window_shape_rectangles_get_prefetch(
1643    Ecore_X_Window window);
1644 EAPI void                     ecore_x_window_shape_rectangles_get_fetch(void);
1645 EAPI Ecore_X_Rectangle *      ecore_x_window_shape_rectangles_get(
1646    Ecore_X_Window win,
1647    int           *num_ret);
1648 EAPI Ecore_X_Rectangle *      ecore_x_window_shape_input_rectangles_get(
1649    Ecore_X_Window win,
1650    int           *num_ret);
1651 EAPI void                     ecore_x_window_shape_events_select(
1652    Ecore_X_Window win,
1653    Eina_Bool      on);
1654 EAPI void                     ecore_x_window_shape_input_mask_set(
1655    Ecore_X_Window win,
1656    Ecore_X_Pixmap mask);
1657
1658 EAPI Ecore_X_Pixmap           ecore_x_pixmap_new(Ecore_X_Window win,
1659                                                  int            w,
1660                                                  int            h,
1661                                                  int            dep);
1662 EAPI void                     ecore_x_pixmap_free(Ecore_X_Pixmap pmap);
1663 EAPI void                     ecore_x_pixmap_paste(Ecore_X_Pixmap   pmap,
1664                                                    Ecore_X_Drawable dest,
1665                                                    Ecore_X_GC       gc,
1666                                                    int              sx,
1667                                                    int              sy,
1668                                                    int              w,
1669                                                    int              h,
1670                                                    int              dx,
1671                                                    int              dy);
1672 EAPI void            ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap,
1673                                                  int           *x,
1674                                                  int           *y,
1675                                                  int           *w,
1676                                                  int           *h);
1677 EAPI int             ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap);
1678
1679 EAPI Ecore_X_GC      ecore_x_gc_new(Ecore_X_Drawable      draw,
1680                                     Ecore_X_GC_Value_Mask value_mask,
1681                                     const unsigned int   *value_list);
1682 EAPI void            ecore_x_gc_free(Ecore_X_GC gc);
1683
1684 EAPI Eina_Bool       ecore_x_client_message32_send(Ecore_X_Window     win,
1685                                                    Ecore_X_Atom       type,
1686                                                    Ecore_X_Event_Mask mask,
1687                                                    long               d0,
1688                                                    long               d1,
1689                                                    long               d2,
1690                                                    long               d3,
1691                                                    long               d4);
1692 EAPI Eina_Bool ecore_x_client_message8_send(Ecore_X_Window win,
1693                                             Ecore_X_Atom   type,
1694                                             const void    *data,
1695                                             int            len);
1696 EAPI Eina_Bool ecore_x_mouse_move_send(Ecore_X_Window win,
1697                                        int            x,
1698                                        int            y);
1699 EAPI Eina_Bool ecore_x_mouse_down_send(Ecore_X_Window win,
1700                                        int            x,
1701                                        int            y,
1702                                        int            b);
1703 EAPI Eina_Bool ecore_x_mouse_up_send(Ecore_X_Window win,
1704                                      int            x,
1705                                      int            y,
1706                                      int            b);
1707
1708 EAPI void      ecore_x_drawable_geometry_get_prefetch(
1709    Ecore_X_Drawable drawable);
1710 EAPI void      ecore_x_drawable_geometry_get_fetch(void);
1711 EAPI void      ecore_x_drawable_geometry_get(Ecore_X_Drawable d,
1712                                              int             *x,
1713                                              int             *y,
1714                                              int             *w,
1715                                              int             *h);
1716 EAPI int       ecore_x_drawable_border_width_get(
1717    Ecore_X_Drawable d);
1718 EAPI int       ecore_x_drawable_depth_get(Ecore_X_Drawable d);
1719 EAPI void      ecore_x_drawable_rectangle_fill(
1720    Ecore_X_Drawable d,
1721    Ecore_X_GC       gc,
1722    int              x,
1723    int              y,
1724    int              width,
1725    int              height);
1726
1727 EAPI Eina_Bool                      ecore_x_cursor_color_supported_get(void);
1728 EAPI Ecore_X_Cursor                 ecore_x_cursor_new(Ecore_X_Window win,
1729                                                        int           *pixels,
1730                                                        int            w,
1731                                                        int            h,
1732                                                        int            hot_x,
1733                                                        int            hot_y);
1734 EAPI void                           ecore_x_cursor_free(Ecore_X_Cursor c);
1735 EAPI Ecore_X_Cursor                 ecore_x_cursor_shape_get(int shape);
1736 EAPI void                           ecore_x_cursor_size_set(int size);
1737 EAPI int                            ecore_x_cursor_size_get(void);
1738
1739 /* FIXME: these funcs need categorising */
1740 EAPI Ecore_X_Window *               ecore_x_window_root_list(int *num_ret);
1741 EAPI Ecore_X_Window                 ecore_x_window_root_first_get(void);
1742 EAPI Eina_Bool                      ecore_x_window_manage(Ecore_X_Window win);
1743 EAPI void                           ecore_x_window_container_manage(
1744    Ecore_X_Window win);
1745 EAPI void                           ecore_x_window_client_manage(Ecore_X_Window win);
1746 EAPI void                           ecore_x_window_sniff(Ecore_X_Window win);
1747 EAPI void                           ecore_x_window_client_sniff(Ecore_X_Window win);
1748 EAPI void                           ecore_x_atom_get_prefetch(const char *name);
1749 EAPI void                           ecore_x_atom_get_fetch(void);
1750 EAPI Ecore_X_Atom                   ecore_x_atom_get(const char *name);
1751 EAPI void                           ecore_x_atoms_get(const char  **names,
1752                                                       int           num,
1753                                                       Ecore_X_Atom *atoms);
1754 EAPI void                           ecore_x_get_atom_name_prefetch(Ecore_X_Atom atom);
1755 EAPI void                           ecore_x_get_atom_name_fetch(void);
1756 EAPI char *                         ecore_x_atom_name_get(Ecore_X_Atom atom);
1757
1758 EAPI void                           ecore_x_icccm_init(void);
1759 EAPI void                           ecore_x_icccm_state_set(
1760    Ecore_X_Window win,
1761    Ecore_X_Window_State_Hint
1762    state);
1763 EAPI Ecore_X_Window_State_Hint      ecore_x_icccm_state_get(Ecore_X_Window win);
1764 EAPI void                           ecore_x_icccm_delete_window_send(
1765    Ecore_X_Window win,
1766    Ecore_X_Time   t);
1767 EAPI void                           ecore_x_icccm_take_focus_send(Ecore_X_Window win,
1768                                                                   Ecore_X_Time   t);
1769 EAPI void                           ecore_x_icccm_save_yourself_send(
1770    Ecore_X_Window win,
1771    Ecore_X_Time   t);
1772 EAPI void                           ecore_x_icccm_move_resize_send(
1773    Ecore_X_Window win,
1774    int            x,
1775    int            y,
1776    int            w,
1777    int            h);
1778 EAPI void                           ecore_x_icccm_hints_set(
1779    Ecore_X_Window win,
1780    Eina_Bool      accepts_focus,
1781    Ecore_X_Window_State_Hint
1782    initial_state,
1783    Ecore_X_Pixmap
1784    icon_pixmap,
1785    Ecore_X_Pixmap icon_mask,
1786    Ecore_X_Window
1787    icon_window,
1788    Ecore_X_Window
1789    window_group,
1790    Eina_Bool      is_urgent);
1791 EAPI Eina_Bool ecore_x_icccm_hints_get(Ecore_X_Window             win,
1792                                       Eina_Bool                 *accepts_focus,
1793                                       Ecore_X_Window_State_Hint *initial_state,
1794                                       Ecore_X_Pixmap            *icon_pixmap,
1795                                       Ecore_X_Pixmap            *icon_mask,
1796                                       Ecore_X_Window            *icon_window,
1797                                       Ecore_X_Window            *window_group,
1798                                       Eina_Bool                 *is_urgent);
1799 EAPI void      ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win,
1800                                                 Eina_Bool request_pos,
1801                                                 Ecore_X_Gravity gravity,
1802                                                 int min_w, int min_h,
1803                                                 int max_w, int max_h,
1804                                                 int base_w, int base_h,
1805                                                 int step_x, int step_y,
1806                                                 double min_aspect,
1807                                                 double max_aspect);
1808 EAPI Eina_Bool ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win,
1809                                                Eina_Bool *request_pos,
1810                                                Ecore_X_Gravity *gravity,
1811                                                int *min_w, int *min_h,
1812                                                int *max_w, int *max_h,
1813                                                int *base_w, int *base_h,
1814                                                int *step_x, int *step_y,
1815                                                double *min_aspect,
1816                                                double *max_aspect);
1817 EAPI void                ecore_x_icccm_title_set(Ecore_X_Window win, const char *t);
1818 EAPI char *              ecore_x_icccm_title_get(Ecore_X_Window win);
1819 EAPI void                ecore_x_icccm_protocol_atoms_set(Ecore_X_Window win,
1820                                                           Ecore_X_Atom  *protos,
1821                                                           int            num);
1822 EAPI void                ecore_x_icccm_protocol_set(Ecore_X_Window      win,
1823                                                     Ecore_X_WM_Protocol protocol,
1824                                                     Eina_Bool           on);
1825 EAPI Eina_Bool           ecore_x_icccm_protocol_isset(Ecore_X_Window      win,
1826                                                       Ecore_X_WM_Protocol protocol);
1827 EAPI void                ecore_x_icccm_name_class_set(Ecore_X_Window win,
1828                                                       const char    *n,
1829                                                       const char    *c);
1830 EAPI void                ecore_x_icccm_name_class_get(Ecore_X_Window win,
1831                                                       char         **n,
1832                                                       char         **c);
1833 EAPI char *              ecore_x_icccm_client_machine_get(Ecore_X_Window win);
1834 EAPI void                ecore_x_icccm_command_set(Ecore_X_Window win,
1835                                                    int            argc,
1836                                                    char         **argv);
1837 EAPI void                ecore_x_icccm_command_get(Ecore_X_Window win,
1838                                                    int           *argc,
1839                                                    char        ***argv);
1840 EAPI char *              ecore_x_icccm_icon_name_get(Ecore_X_Window win);
1841 EAPI void                ecore_x_icccm_icon_name_set(Ecore_X_Window win,
1842                                                      const char    *t);
1843 EAPI void                ecore_x_icccm_colormap_window_set(Ecore_X_Window win,
1844                                                            Ecore_X_Window subwin);
1845 EAPI void                ecore_x_icccm_colormap_window_unset(Ecore_X_Window win,
1846                                                              Ecore_X_Window subwin);
1847 EAPI void                ecore_x_icccm_transient_for_set(Ecore_X_Window win,
1848                                                          Ecore_X_Window forwin);
1849 EAPI void                ecore_x_icccm_transient_for_unset(Ecore_X_Window win);
1850 EAPI Ecore_X_Window      ecore_x_icccm_transient_for_get(Ecore_X_Window win);
1851 EAPI void                ecore_x_icccm_window_role_set(Ecore_X_Window win,
1852                                                        const char    *role);
1853 EAPI char *              ecore_x_icccm_window_role_get(Ecore_X_Window win);
1854 EAPI void                ecore_x_icccm_client_leader_set(Ecore_X_Window win,
1855                                                          Ecore_X_Window l);
1856 EAPI Ecore_X_Window      ecore_x_icccm_client_leader_get(Ecore_X_Window win);
1857 EAPI void                ecore_x_icccm_iconic_request_send(Ecore_X_Window win,
1858                                                            Ecore_X_Window root);
1859
1860 typedef enum _Ecore_X_MWM_Hint_Func
1861 {
1862    ECORE_X_MWM_HINT_FUNC_ALL = (1 << 0),
1863    ECORE_X_MWM_HINT_FUNC_RESIZE = (1 << 1),
1864    ECORE_X_MWM_HINT_FUNC_MOVE = (1 << 2),
1865    ECORE_X_MWM_HINT_FUNC_MINIMIZE = (1 << 3),
1866    ECORE_X_MWM_HINT_FUNC_MAXIMIZE = (1 << 4),
1867    ECORE_X_MWM_HINT_FUNC_CLOSE = (1 << 5)
1868 } Ecore_X_MWM_Hint_Func;
1869
1870 typedef enum _Ecore_X_MWM_Hint_Decor
1871 {
1872    ECORE_X_MWM_HINT_DECOR_ALL = (1 << 0),
1873    ECORE_X_MWM_HINT_DECOR_BORDER = (1 << 1),
1874    ECORE_X_MWM_HINT_DECOR_RESIZEH = (1 << 2),
1875    ECORE_X_MWM_HINT_DECOR_TITLE = (1 << 3),
1876    ECORE_X_MWM_HINT_DECOR_MENU = (1 << 4),
1877    ECORE_X_MWM_HINT_DECOR_MINIMIZE = (1 << 5),
1878    ECORE_X_MWM_HINT_DECOR_MAXIMIZE = (1 << 6)
1879 } Ecore_X_MWM_Hint_Decor;
1880
1881 typedef enum _Ecore_X_MWM_Hint_Input
1882 {
1883    ECORE_X_MWM_HINT_INPUT_MODELESS = 0,
1884    ECORE_X_MWM_HINT_INPUT_PRIMARY_APPLICATION_MODAL = 1,
1885    ECORE_X_MWM_HINT_INPUT_SYSTEM_MODAL = 2,
1886    ECORE_X_MWM_HINT_INPUT_FULL_APPLICATION_MODAL = 3
1887 } Ecore_X_MWM_Hint_Input;
1888
1889 EAPI void      ecore_x_mwm_hints_get_prefetch(
1890    Ecore_X_Window window);
1891 EAPI void      ecore_x_mwm_hints_get_fetch(void);
1892 EAPI Eina_Bool ecore_x_mwm_hints_get(
1893    Ecore_X_Window win,
1894    Ecore_X_MWM_Hint_Func
1895                  *fhint,
1896    Ecore_X_MWM_Hint_Decor
1897                  *dhint,
1898    Ecore_X_MWM_Hint_Input
1899                  *ihint);
1900 EAPI void      ecore_x_mwm_borderless_set(
1901    Ecore_X_Window win,
1902    Eina_Bool      borderless);
1903
1904 /* netwm */
1905 EAPI void      ecore_x_netwm_init(void);
1906 EAPI void      ecore_x_netwm_shutdown(void);
1907 EAPI void      ecore_x_netwm_wm_identify(
1908    Ecore_X_Window root,
1909    Ecore_X_Window check,
1910    const char    *wm_name);
1911 EAPI void      ecore_x_netwm_supported_set(
1912    Ecore_X_Window root,
1913    Ecore_X_Atom  *supported,
1914    int            num);
1915 EAPI void      ecore_x_netwm_supported_get_prefetch(
1916    Ecore_X_Window root);
1917 EAPI void      ecore_x_netwm_supported_get_fetch(void);
1918 EAPI Eina_Bool ecore_x_netwm_supported_get(
1919    Ecore_X_Window root,
1920    Ecore_X_Atom **supported,
1921    int           *num);
1922 EAPI void      ecore_x_netwm_desk_count_set(
1923    Ecore_X_Window root,
1924    unsigned int   n_desks);
1925 EAPI void      ecore_x_netwm_desk_roots_set(
1926    Ecore_X_Window  root,
1927    Ecore_X_Window *vroots,
1928    unsigned int    n_desks);
1929 EAPI void      ecore_x_netwm_desk_names_set(
1930    Ecore_X_Window root,
1931    const char   **names,
1932    unsigned int   n_desks);
1933 EAPI void      ecore_x_netwm_desk_size_set(
1934    Ecore_X_Window root,
1935    unsigned int   width,
1936    unsigned int   height);
1937 EAPI void      ecore_x_netwm_desk_workareas_set(
1938    Ecore_X_Window root,
1939    unsigned int  *areas,
1940    unsigned int   n_desks);
1941 EAPI void      ecore_x_netwm_desk_current_set(
1942    Ecore_X_Window root,
1943    unsigned int   desk);
1944 EAPI void      ecore_x_netwm_desk_viewports_set(
1945    Ecore_X_Window root,
1946    unsigned int  *origins,
1947    unsigned int   n_desks);
1948 EAPI void      ecore_x_netwm_desk_layout_set(
1949    Ecore_X_Window root,
1950    int            orientation,
1951    int            columns,
1952    int            rows,
1953    int            starting_corner);
1954 EAPI void      ecore_x_netwm_showing_desktop_set(
1955    Ecore_X_Window root,
1956    Eina_Bool      on);
1957 EAPI void      ecore_x_netwm_client_list_set(
1958    Ecore_X_Window  root,
1959    Ecore_X_Window *p_clients,
1960    unsigned int    n_clients);
1961 EAPI void      ecore_x_netwm_client_list_stacking_set(
1962    Ecore_X_Window  root,
1963    Ecore_X_Window *p_clients,
1964    unsigned int    n_clients);
1965 EAPI void      ecore_x_netwm_client_active_set(
1966    Ecore_X_Window root,
1967    Ecore_X_Window win);
1968 EAPI void      ecore_x_netwm_client_active_request(
1969    Ecore_X_Window root,
1970    Ecore_X_Window win,
1971    int            type,
1972    Ecore_X_Window current_win);
1973 EAPI void      ecore_x_netwm_name_set(Ecore_X_Window    win,
1974                                             const char *name);
1975 EAPI void      ecore_x_netwm_name_get_prefetch(
1976    Ecore_X_Window window);
1977 EAPI void      ecore_x_netwm_name_get_fetch(void);
1978 EAPI int       ecore_x_netwm_name_get(Ecore_X_Window win,
1979                                             char   **name);
1980 EAPI void      ecore_x_netwm_startup_id_set(
1981    Ecore_X_Window win,
1982    const char    *id);
1983 EAPI void      ecore_x_netwm_startup_id_get_prefetch(
1984    Ecore_X_Window window);
1985 EAPI void      ecore_x_netwm_startup_id_get_fetch(void);
1986 EAPI int       ecore_x_netwm_startup_id_get(
1987    Ecore_X_Window win,
1988    char         **id);
1989 EAPI void      ecore_x_netwm_visible_name_set(
1990    Ecore_X_Window win,
1991    const char    *name);
1992 EAPI void      ecore_x_netwm_visible_name_get_prefetch(
1993    Ecore_X_Window window);
1994 EAPI void      ecore_x_netwm_visible_name_get_fetch(void);
1995 EAPI int       ecore_x_netwm_visible_name_get(
1996    Ecore_X_Window win,
1997    char         **name);
1998 EAPI void      ecore_x_netwm_icon_name_set(
1999    Ecore_X_Window win,
2000    const char    *name);
2001 EAPI void      ecore_x_netwm_icon_name_get_prefetch(
2002    Ecore_X_Window window);
2003 EAPI void      ecore_x_netwm_icon_name_get_fetch(void);
2004 EAPI int       ecore_x_netwm_icon_name_get(
2005    Ecore_X_Window win,
2006    char         **name);
2007 EAPI void      ecore_x_netwm_visible_icon_name_set(
2008    Ecore_X_Window win,
2009    const char    *name);
2010 EAPI void
2011                ecore_x_netwm_visible_icon_name_get_prefetch(Ecore_X_Window window);
2012 EAPI void      ecore_x_netwm_visible_icon_name_get_fetch(
2013    void);
2014 EAPI int       ecore_x_netwm_visible_icon_name_get(
2015    Ecore_X_Window win,
2016    char         **name);
2017 EAPI void      ecore_x_netwm_desktop_set(
2018    Ecore_X_Window win,
2019    unsigned int   desk);
2020 EAPI void      ecore_x_netwm_desktop_get_prefetch(
2021    Ecore_X_Window window);
2022 EAPI void      ecore_x_netwm_desktop_get_fetch(void);
2023 EAPI Eina_Bool ecore_x_netwm_desktop_get(
2024    Ecore_X_Window win,
2025    unsigned int  *desk);
2026 EAPI void      ecore_x_netwm_strut_set(Ecore_X_Window win,
2027                                              int      left,
2028                                              int      right,
2029                                              int      top,
2030                                              int      bottom);
2031 EAPI void      ecore_x_netwm_strut_get_prefetch(
2032    Ecore_X_Window window);
2033 EAPI void      ecore_x_netwm_strut_get_fetch(void);
2034 EAPI Eina_Bool ecore_x_netwm_strut_get(Ecore_X_Window win,
2035                                              int     *left,
2036                                              int     *right,
2037                                              int     *top,
2038                                              int     *bottom);
2039 EAPI void      ecore_x_netwm_strut_partial_set(
2040    Ecore_X_Window win,
2041    int            left,
2042    int            right,
2043    int            top,
2044    int            bottom,
2045    int            left_start_y,
2046    int            left_end_y,
2047    int            right_start_y,
2048    int            right_end_y,
2049    int            top_start_x,
2050    int            top_end_x,
2051    int            bottom_start_x,
2052    int            bottom_end_x);
2053 EAPI void      ecore_x_netwm_strut_partial_get_prefetch(
2054    Ecore_X_Window window);
2055 EAPI void      ecore_x_netwm_strut_partial_get_fetch(void);
2056 EAPI Eina_Bool ecore_x_netwm_strut_partial_get(
2057    Ecore_X_Window win,
2058    int           *left,
2059    int           *right,
2060    int           *top,
2061    int           *bottom,
2062    int           *left_start_y,
2063    int           *left_end_y,
2064    int           *right_start_y,
2065    int           *right_end_y,
2066    int           *top_start_x,
2067    int           *top_end_x,
2068    int           *bottom_start_x,
2069    int           *bottom_end_x);
2070 EAPI void                                 ecore_x_netwm_icons_get_prefetch(
2071    Ecore_X_Window window);
2072 EAPI void                                 ecore_x_netwm_icons_get_fetch(void);
2073 EAPI Eina_Bool                            ecore_x_netwm_icons_get(Ecore_X_Window       win,
2074                                                                         Ecore_X_Icon **icon,
2075                                                                         int           *num);
2076 EAPI void                                 ecore_x_netwm_icon_geometry_set(
2077    Ecore_X_Window win,
2078    int            x,
2079    int            y,
2080    int            width,
2081    int            height);
2082 EAPI void                                 ecore_x_netwm_icon_geometry_get_prefetch(
2083    Ecore_X_Window window);
2084 EAPI void                                 ecore_x_netwm_icon_geometry_get_fetch(void);
2085 EAPI Eina_Bool                            ecore_x_netwm_icon_geometry_get(
2086    Ecore_X_Window win,
2087    int           *x,
2088    int           *y,
2089    int           *width,
2090    int           *height);
2091 EAPI void                                 ecore_x_netwm_pid_set(Ecore_X_Window win,
2092                                                                       int      pid);
2093 EAPI void                                 ecore_x_netwm_pid_get_prefetch(
2094    Ecore_X_Window window);
2095 EAPI void                                 ecore_x_netwm_pid_get_fetch(void);
2096 EAPI Eina_Bool                            ecore_x_netwm_pid_get(Ecore_X_Window win,
2097                                                                       int     *pid);
2098 EAPI void                                 ecore_x_netwm_handled_icons_set(
2099    Ecore_X_Window win);
2100 EAPI void                                 ecore_x_netwm_handled_icons_get_prefetch(
2101    Ecore_X_Window window);
2102 EAPI void                                 ecore_x_netwm_handled_icons_get_fetch(void);
2103 EAPI Eina_Bool                            ecore_x_netwm_handled_icons_get(
2104    Ecore_X_Window win);
2105 EAPI void                                 ecore_x_netwm_user_time_set(
2106    Ecore_X_Window win,
2107    unsigned int   time);
2108 EAPI void                                 ecore_x_netwm_user_time_get_prefetch(
2109    Ecore_X_Window window);
2110 EAPI void                                 ecore_x_netwm_user_time_get_fetch(void);
2111 EAPI Eina_Bool                            ecore_x_netwm_user_time_get(
2112    Ecore_X_Window win,
2113    unsigned int  *time);
2114 EAPI void                                 ecore_x_netwm_window_state_set(
2115    Ecore_X_Window        win,
2116    Ecore_X_Window_State *state,
2117    unsigned int          num);
2118 EAPI void                                 ecore_x_netwm_window_state_get_prefetch(
2119    Ecore_X_Window window);
2120 EAPI void                                 ecore_x_netwm_window_state_get_fetch(void);
2121 EAPI Eina_Bool                            ecore_x_netwm_window_state_get(
2122    Ecore_X_Window         win,
2123    Ecore_X_Window_State **state,
2124    unsigned int          *num);
2125 EAPI void                                 ecore_x_netwm_window_type_set(
2126    Ecore_X_Window      win,
2127    Ecore_X_Window_Type type);
2128 EAPI void                                 ecore_x_netwm_window_type_get_prefetch(
2129    Ecore_X_Window window);
2130 EAPI void                                 ecore_x_netwm_window_type_get_fetch(void);
2131 EAPI Eina_Bool                            ecore_x_netwm_window_type_get(
2132    Ecore_X_Window       win,
2133    Ecore_X_Window_Type *type);
2134 EAPI int                                  ecore_x_netwm_window_types_get(
2135    Ecore_X_Window        win,
2136    Ecore_X_Window_Type **types);
2137 EAPI Eina_Bool                            ecore_x_netwm_allowed_action_isset(
2138    Ecore_X_Window win,
2139    Ecore_X_Action action);
2140 EAPI void                                 ecore_x_netwm_allowed_action_set(
2141    Ecore_X_Window  win,
2142    Ecore_X_Action *action,
2143    unsigned int    num);
2144 EAPI void                                 ecore_x_netwm_allowed_action_get_prefetch(
2145    Ecore_X_Window window);
2146 EAPI void                                 ecore_x_netwm_allowed_action_get_fetch(
2147    void);
2148 EAPI Eina_Bool                            ecore_x_netwm_allowed_action_get(
2149    Ecore_X_Window   win,
2150    Ecore_X_Action **action,
2151    unsigned int    *num);
2152 EAPI void                                 ecore_x_netwm_opacity_set(
2153    Ecore_X_Window win,
2154    unsigned int   opacity);
2155 EAPI void                                 ecore_x_netwm_opacity_get_prefetch(
2156    Ecore_X_Window window);
2157 EAPI void                                 ecore_x_netwm_opacity_get_fetch(void);
2158 EAPI Eina_Bool                            ecore_x_netwm_opacity_get(
2159    Ecore_X_Window win,
2160    unsigned int  *opacity);
2161 EAPI void                                 ecore_x_netwm_frame_size_set(
2162    Ecore_X_Window win,
2163    int            fl,
2164    int            fr,
2165    int            ft,
2166    int            fb);
2167 EAPI void                                 ecore_x_netwm_frame_size_get_prefetch(
2168    Ecore_X_Window window);
2169 EAPI void                                 ecore_x_netwm_frame_size_get_fetch(void);
2170 EAPI Eina_Bool                            ecore_x_netwm_frame_size_get(
2171    Ecore_X_Window win,
2172    int           *fl,
2173    int           *fr,
2174    int           *ft,
2175    int           *fb);
2176 EAPI void                                 ecore_x_netwm_sync_counter_get_prefetch(
2177    Ecore_X_Window window);
2178 EAPI void                                 ecore_x_netwm_sync_counter_get_fetch(void);
2179 EAPI Eina_Bool                            ecore_x_netwm_sync_counter_get(
2180    Ecore_X_Window        win,
2181    Ecore_X_Sync_Counter *counter);
2182 EAPI void                                 ecore_x_netwm_ping_send(Ecore_X_Window win);
2183 EAPI void                                 ecore_x_netwm_sync_request_send(
2184    Ecore_X_Window win,
2185    unsigned int   serial);
2186 EAPI void                                 ecore_x_netwm_state_request_send(
2187    Ecore_X_Window       win,
2188    Ecore_X_Window       root,
2189    Ecore_X_Window_State s1,
2190    Ecore_X_Window_State s2,
2191    Eina_Bool            set);
2192 EAPI void                                 ecore_x_netwm_desktop_request_send(
2193    Ecore_X_Window win,
2194    Ecore_X_Window root,
2195    unsigned int   desktop);
2196
2197 EAPI void                                 ecore_x_e_init(void);
2198 EAPI void                                 ecore_x_e_frame_size_set(
2199    Ecore_X_Window win,
2200    int            fl,
2201    int            fr,
2202    int            ft,
2203    int            fb);
2204 EAPI void                                 ecore_x_e_virtual_keyboard_set(
2205    Ecore_X_Window win,
2206    unsigned int   is_keyboard);
2207 EAPI Eina_Bool                            ecore_x_e_virtual_keyboard_get(
2208    Ecore_X_Window win);
2209 EAPI void                                 ecore_x_e_virtual_keyboard_state_set(
2210    Ecore_X_Window                 win,
2211    Ecore_X_Virtual_Keyboard_State state);
2212 EAPI Ecore_X_Virtual_Keyboard_State       ecore_x_e_virtual_keyboard_state_get(
2213    Ecore_X_Window win);
2214 EAPI void                                 ecore_x_e_virtual_keyboard_state_send(
2215    Ecore_X_Window                 win,
2216    Ecore_X_Virtual_Keyboard_State state);
2217
2218 /* Illume functions */
2219 EAPI void                                 ecore_x_e_illume_zone_set(
2220    Ecore_X_Window win,
2221    Ecore_X_Window zone);
2222 EAPI Ecore_X_Window                       ecore_x_e_illume_zone_get(
2223    Ecore_X_Window win);
2224 EAPI void                                 ecore_x_e_illume_zone_list_set(
2225    Ecore_X_Window  win,
2226    Ecore_X_Window *zones,
2227    unsigned int    n_zones);
2228 EAPI void                                 ecore_x_e_illume_conformant_set(
2229    Ecore_X_Window win,
2230    unsigned int   is_conformant);
2231 EAPI Eina_Bool                            ecore_x_e_illume_conformant_get(
2232    Ecore_X_Window win);
2233 EAPI void                                 ecore_x_e_illume_mode_set(
2234    Ecore_X_Window      win,
2235    Ecore_X_Illume_Mode mode);
2236 EAPI Ecore_X_Illume_Mode                  ecore_x_e_illume_mode_get(
2237    Ecore_X_Window win);
2238 EAPI void                                 ecore_x_e_illume_mode_send(
2239    Ecore_X_Window      win,
2240    Ecore_X_Illume_Mode mode);
2241 EAPI void                                 ecore_x_e_illume_focus_back_send(
2242    Ecore_X_Window win);
2243 EAPI void                                 ecore_x_e_illume_focus_forward_send(
2244    Ecore_X_Window win);
2245 EAPI void                                 ecore_x_e_illume_focus_home_send(
2246    Ecore_X_Window win);
2247 EAPI void                                 ecore_x_e_illume_close_send(
2248    Ecore_X_Window win);
2249 EAPI void                                 ecore_x_e_illume_home_new_send(
2250    Ecore_X_Window win);
2251 EAPI void                                 ecore_x_e_illume_home_del_send(
2252    Ecore_X_Window win);
2253 EAPI void                                 ecore_x_e_illume_drag_set(
2254    Ecore_X_Window win,
2255    unsigned int   drag);
2256 EAPI Eina_Bool                            ecore_x_e_illume_drag_get(
2257    Ecore_X_Window win);
2258 EAPI void                                 ecore_x_e_illume_drag_locked_set(
2259    Ecore_X_Window win,
2260    unsigned int   is_locked);
2261 EAPI Eina_Bool                            ecore_x_e_illume_drag_locked_get(
2262    Ecore_X_Window win);
2263 EAPI void                                 ecore_x_e_illume_drag_start_send(
2264    Ecore_X_Window win);
2265 EAPI void                                 ecore_x_e_illume_drag_end_send(
2266    Ecore_X_Window win);
2267 EAPI void                                 ecore_x_e_illume_indicator_geometry_set(
2268    Ecore_X_Window win,
2269    int            x,
2270    int            y,
2271    int            w,
2272    int            h);
2273 EAPI Eina_Bool                            ecore_x_e_illume_indicator_geometry_get(
2274    Ecore_X_Window win,
2275    int           *x,
2276    int           *y,
2277    int           *w,
2278    int           *h);
2279 EAPI void                                 ecore_x_e_illume_softkey_geometry_set(
2280    Ecore_X_Window win,
2281    int            x,
2282    int            y,
2283    int            w,
2284    int            h);
2285 EAPI Eina_Bool                            ecore_x_e_illume_softkey_geometry_get(
2286    Ecore_X_Window win,
2287    int           *x,
2288    int           *y,
2289    int           *w,
2290    int           *h);
2291 EAPI void                                 ecore_x_e_illume_keyboard_geometry_set(
2292    Ecore_X_Window win,
2293    int            x,
2294    int            y,
2295    int            w,
2296    int            h);
2297 EAPI Eina_Bool                            ecore_x_e_illume_keyboard_geometry_get(
2298    Ecore_X_Window win,
2299    int           *x,
2300    int           *y,
2301    int           *w,
2302    int           *h);
2303 EAPI void                                 ecore_x_e_illume_quickpanel_set(
2304    Ecore_X_Window win,
2305    unsigned int   is_quickpanel);
2306 EAPI Eina_Bool                            ecore_x_e_illume_quickpanel_get(
2307    Ecore_X_Window win);
2308 EAPI void                                 ecore_x_e_illume_quickpanel_state_set(
2309    Ecore_X_Window                  win,
2310    Ecore_X_Illume_Quickpanel_State state);
2311 EAPI Ecore_X_Illume_Quickpanel_State      ecore_x_e_illume_quickpanel_state_get(
2312    Ecore_X_Window win);
2313 EAPI void                                 ecore_x_e_illume_quickpanel_state_send(
2314    Ecore_X_Window                  win,
2315    Ecore_X_Illume_Quickpanel_State state);
2316 EAPI void                                 ecore_x_e_illume_quickpanel_state_toggle(
2317    Ecore_X_Window win);
2318 EAPI void                                 ecore_x_e_illume_quickpanel_priority_major_set(
2319    Ecore_X_Window win,
2320    unsigned int   priority);
2321 EAPI int                                  ecore_x_e_illume_quickpanel_priority_major_get(
2322    Ecore_X_Window win);
2323 EAPI void                                 ecore_x_e_illume_quickpanel_priority_minor_set(
2324    Ecore_X_Window win,
2325    unsigned int   priority);
2326 EAPI int                                  ecore_x_e_illume_quickpanel_priority_minor_get(
2327    Ecore_X_Window win);
2328 EAPI void                                 ecore_x_e_illume_quickpanel_zone_set(
2329    Ecore_X_Window win,
2330    unsigned int   zone);
2331 EAPI int                                  ecore_x_e_illume_quickpanel_zone_get(
2332    Ecore_X_Window win);
2333 EAPI void
2334                                           ecore_x_e_illume_quickpanel_zone_request_send(
2335    Ecore_X_Window win);
2336 EAPI void
2337                                           ecore_x_e_illume_quickpanel_position_update_send(
2338    Ecore_X_Window win);
2339
2340 /* added by doyoun.kang - for sliding window */
2341 EAPI void                                 ecore_x_e_illume_sliding_win_state_set(
2342    Ecore_X_Window win,
2343    unsigned int   is_visible);
2344 EAPI int                                  ecore_x_e_illume_sliding_win_state_get(
2345    Ecore_X_Window win);
2346 EAPI void                                 ecore_x_e_illume_sliding_win_geometry_set(
2347    Ecore_X_Window win, 
2348    int            x,
2349    int            y,
2350    int            w,
2351    int            h);
2352 EAPI int                                  ecore_x_e_illume_sliding_win_geometry_get(
2353    Ecore_X_Window win,
2354    int           *x,
2355    int           *y,
2356    int           *w,
2357    int           *h);
2358
2359 EAPI void                                 ecore_x_e_comp_sync_counter_set(
2360    Ecore_X_Window       win,
2361    Ecore_X_Sync_Counter counter);
2362 EAPI Ecore_X_Sync_Counter                 ecore_x_e_comp_sync_counter_get(
2363    Ecore_X_Window win);
2364 EAPI void                                 ecore_x_e_comp_sync_draw_done_send(
2365    Ecore_X_Window root,
2366    Ecore_X_Window win);
2367 EAPI void                                 ecore_x_e_comp_sync_draw_size_done_send(
2368    Ecore_X_Window root,
2369    Ecore_X_Window win,
2370    int w,
2371    int h);
2372 EAPI void                                 ecore_x_e_comp_sync_supported_set(
2373    Ecore_X_Window root,
2374    Eina_Bool      enabled);
2375 EAPI Eina_Bool                            ecore_x_e_comp_sync_supported_get(
2376    Ecore_X_Window root);
2377 EAPI void                                 ecore_x_e_comp_sync_begin_send(
2378    Ecore_X_Window win);
2379 EAPI void                                 ecore_x_e_comp_sync_end_send(
2380    Ecore_X_Window win);
2381 EAPI void                                 ecore_x_e_comp_sync_cancel_send(
2382    Ecore_X_Window win);
2383
2384 EAPI void                                 ecore_x_e_comp_flush_send(
2385    Ecore_X_Window win);
2386 EAPI void                                 ecore_x_e_comp_dump_send(
2387    Ecore_X_Window win);
2388 EAPI void                                 ecore_x_e_comp_pixmap_set(
2389    Ecore_X_Window win,
2390    Ecore_X_Pixmap pixmap);
2391 EAPI Ecore_X_Pixmap                       ecore_x_e_comp_pixmap_get(
2392    Ecore_X_Window win);
2393
2394 EAPI void                 ecore_x_e_comp_dri_buff_flip_supported_set(Ecore_X_Window root, Eina_Bool enabled);
2395 EAPI Eina_Bool            ecore_x_e_comp_dri_buff_flip_supported_get(Ecore_X_Window root);
2396   
2397 EAPI Ecore_X_Sync_Alarm                   ecore_x_sync_alarm_new(
2398    Ecore_X_Sync_Counter counter);
2399 EAPI Eina_Bool                            ecore_x_sync_alarm_free(
2400    Ecore_X_Sync_Alarm alarm);
2401 EAPI Eina_Bool                            ecore_x_sync_counter_query(
2402    Ecore_X_Sync_Counter counter,
2403    unsigned int        *val);
2404 EAPI Ecore_X_Sync_Counter                 ecore_x_sync_counter_new(int val);
2405 EAPI void                                 ecore_x_sync_counter_free(
2406    Ecore_X_Sync_Counter counter);
2407 EAPI void                                 ecore_x_sync_counter_inc(
2408    Ecore_X_Sync_Counter counter,
2409    int                  by);
2410 EAPI void                                 ecore_x_sync_counter_val_wait(
2411    Ecore_X_Sync_Counter counter,
2412    int                  val);
2413    
2414    EAPI void ecore_x_sync_counter_set(Ecore_X_Sync_Counter counter, int val);
2415    EAPI void ecore_x_sync_counter_2_set(Ecore_X_Sync_Counter counter, int val_hi, unsigned int val_lo);
2416    EAPI Eina_Bool ecore_x_sync_counter_2_query(Ecore_X_Sync_Counter counter, int *val_hi, unsigned int *val_lo);
2417    
2418 EAPI void                                 ecore_x_xinerama_query_screens_prefetch(
2419    void);
2420 EAPI void                                 ecore_x_xinerama_query_screens_fetch(void);
2421 EAPI int                                  ecore_x_xinerama_screen_count_get(void);
2422 EAPI Eina_Bool                            ecore_x_xinerama_screen_geometry_get(
2423    int  screen,
2424    int *x,
2425    int *y,
2426    int *w,
2427    int *h);
2428
2429 EAPI Eina_Bool ecore_x_screensaver_event_available_get(
2430    void);
2431 EAPI void      ecore_x_screensaver_idle_time_prefetch(
2432    void);
2433 EAPI void      ecore_x_screensaver_idle_time_fetch(void);
2434 EAPI int       ecore_x_screensaver_idle_time_get(void);
2435 EAPI void      ecore_x_get_screensaver_prefetch(void);
2436 EAPI void      ecore_x_get_screensaver_fetch(void);
2437 EAPI void      ecore_x_screensaver_set(int timeout,
2438                                        int interval,
2439                                        int prefer_blanking,
2440                                        int allow_exposures);
2441 EAPI void      ecore_x_screensaver_timeout_set(
2442    int timeout);
2443 EAPI int       ecore_x_screensaver_timeout_get(void);
2444 EAPI void      ecore_x_screensaver_blank_set(int timeout);
2445 EAPI int       ecore_x_screensaver_blank_get(void);
2446 EAPI void      ecore_x_screensaver_expose_set(int timeout);
2447 EAPI int       ecore_x_screensaver_expose_get(void);
2448 EAPI void      ecore_x_screensaver_interval_set(
2449    int timeout);
2450 EAPI int       ecore_x_screensaver_interval_get(void);
2451 EAPI void      ecore_x_screensaver_event_listen_set(
2452    Eina_Bool on);
2453
2454 /* FIXME: these funcs need categorising */
2455
2456 typedef struct _Ecore_X_Window_Attributes
2457 {
2458    Ecore_X_Window root;
2459    int            x, y, w, h;
2460    int            border;
2461    int            depth;
2462    unsigned char  visible : 1;
2463    unsigned char  viewable : 1;
2464    unsigned char  override : 1;
2465    unsigned char  input_only : 1;
2466    unsigned char  save_under : 1;
2467    struct
2468    {
2469       Ecore_X_Event_Mask mine;
2470       Ecore_X_Event_Mask all;
2471       Ecore_X_Event_Mask no_propagate;
2472    } event_mask;
2473    Ecore_X_Gravity  window_gravity;
2474    Ecore_X_Gravity  pixel_gravity;
2475    Ecore_X_Colormap colormap;
2476    Ecore_X_Visual   visual;
2477    /* FIXME: missing
2478     * int map_installed;
2479     * Screen *screen;
2480     */
2481 } Ecore_X_Window_Attributes;
2482
2483 EAPI void                 ecore_x_get_window_attributes_prefetch(
2484    Ecore_X_Window window);
2485 EAPI void                 ecore_x_get_window_attributes_fetch(void);
2486 EAPI Eina_Bool            ecore_x_window_attributes_get(
2487    Ecore_X_Window win,
2488    Ecore_X_Window_Attributes *
2489    att_ret);
2490 EAPI void                 ecore_x_window_save_set_add(Ecore_X_Window win);
2491 EAPI void                 ecore_x_window_save_set_del(Ecore_X_Window win);
2492 EAPI Ecore_X_Window *     ecore_x_window_children_get(Ecore_X_Window win, int *num);
2493
2494 EAPI Eina_Bool            ecore_x_pointer_control_set(int accel_num,
2495                                                       int accel_denom,
2496                                                       int threshold);
2497 EAPI void                 ecore_x_pointer_control_get_prefetch(void);
2498 EAPI void                 ecore_x_pointer_control_get_fetch(void);
2499 EAPI Eina_Bool            ecore_x_pointer_control_get(int *accel_num,
2500                                                       int *accel_denom,
2501                                                       int *threshold);
2502 EAPI Eina_Bool            ecore_x_pointer_mapping_set(unsigned char *map, int nmap);
2503 EAPI void                 ecore_x_pointer_mapping_get_prefetch(void);
2504 EAPI void                 ecore_x_pointer_mapping_get_fetch(void);
2505 EAPI Eina_Bool            ecore_x_pointer_mapping_get(unsigned char *map, int nmap);
2506 EAPI Eina_Bool            ecore_x_pointer_grab(Ecore_X_Window win);
2507 EAPI Eina_Bool            ecore_x_pointer_confine_grab(Ecore_X_Window win);
2508 EAPI void                 ecore_x_pointer_ungrab(void);
2509 EAPI Eina_Bool            ecore_x_pointer_warp(Ecore_X_Window win, int x, int y);
2510 EAPI Eina_Bool            ecore_x_keyboard_grab(Ecore_X_Window win);
2511 EAPI void                 ecore_x_keyboard_ungrab(void);
2512 EAPI void                 ecore_x_grab(void);
2513 EAPI void                 ecore_x_ungrab(void);
2514 EAPI void                 ecore_x_passive_grab_replay_func_set(Eina_Bool               (*func)(void *data,
2515                                                                                  int   event_type,
2516                                                                                  void *event),
2517                                                                void                   *data);
2518 EAPI void                 ecore_x_window_button_grab(Ecore_X_Window win, int button,
2519                                                      Ecore_X_Event_Mask event_mask,
2520                                                      int mod, int any_mod);
2521 EAPI void                 ecore_x_window_button_ungrab(Ecore_X_Window win,
2522                                                        int            button,
2523                                                        int            mod,
2524                                                        int            any_mod);
2525 EAPI void                 ecore_x_window_key_grab(Ecore_X_Window win,
2526                                                   const char    *key,
2527                                                   int            mod,
2528                                                   int            any_mod);
2529 EAPI void                 ecore_x_window_key_ungrab(Ecore_X_Window win,
2530                                                     const char    *key,
2531                                                     int            mod,
2532                                                     int            any_mod);
2533
2534 EAPI void                 ecore_x_focus_reset(void);
2535 EAPI void                 ecore_x_events_allow_all(void);
2536 EAPI void                 ecore_x_pointer_last_xy_get(int *x, int *y);
2537 EAPI void                 ecore_x_pointer_xy_get_prefetch(Ecore_X_Window window);
2538 EAPI void                 ecore_x_pointer_xy_get_fetch(void);
2539 EAPI void                 ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y);
2540
2541 /* ecore_x_region.c */
2542 EAPI Ecore_X_XRegion *    ecore_x_xregion_new(void);
2543 EAPI void                 ecore_x_xregion_free(Ecore_X_XRegion *region);
2544 EAPI Eina_Bool            ecore_x_xregion_set(Ecore_X_XRegion *region,
2545                                               Ecore_X_GC       gc);
2546 EAPI void                 ecore_x_xregion_translate(Ecore_X_XRegion *region,
2547                                                     int              x,
2548                                                     int              y);
2549 EAPI Eina_Bool            ecore_x_xregion_intersect(Ecore_X_XRegion *dst,
2550                                                     Ecore_X_XRegion *r1,
2551                                                     Ecore_X_XRegion *r2);
2552 EAPI Eina_Bool            ecore_x_xregion_union(Ecore_X_XRegion *dst,
2553                                                 Ecore_X_XRegion *r1,
2554                                                 Ecore_X_XRegion *r2);
2555 EAPI Eina_Bool            ecore_x_xregion_union_rect(Ecore_X_XRegion   *dst,
2556                                                      Ecore_X_XRegion   *src,
2557                                                      Ecore_X_Rectangle *rect);
2558 EAPI Eina_Bool            ecore_x_xregion_subtract(Ecore_X_XRegion *dst,
2559                                                    Ecore_X_XRegion *r1,
2560                                                    Ecore_X_XRegion *r2);
2561 EAPI Eina_Bool            ecore_x_xregion_is_empty(Ecore_X_XRegion *region);
2562 EAPI Eina_Bool            ecore_x_xregion_is_equal(Ecore_X_XRegion *r1,
2563                                                    Ecore_X_XRegion *r2);
2564 EAPI Eina_Bool            ecore_x_xregion_point_contain(Ecore_X_XRegion *region,
2565                                                         int              x,
2566                                                         int              y);
2567 EAPI Eina_Bool            ecore_x_xregion_rect_contain(Ecore_X_XRegion   *region,
2568                                                        Ecore_X_Rectangle *rect);
2569
2570 /* ecore_x_randr.c */
2571
2572 /* The usage of 'Ecore_X_Randr_None' or 'Ecore_X_Randr_Unset'
2573  * depends on the context. In most cases 'Ecore_X_Randr_Unset'
2574  * can be used, but in some cases -1 is a special value to
2575  * functions, thus 'Ecore_X_Randr_None' (=0) musst be used.
2576  */
2577
2578 typedef short Ecore_X_Randr_Refresh_Rate;
2579 typedef int   Ecore_X_Randr_Crtc_Gamma;
2580 typedef int   Ecore_X_Randr_Signal_Format;
2581 typedef int   Ecore_X_Randr_Signal_Property;
2582 typedef int   Ecore_X_Randr_Connector_Type;
2583
2584 typedef struct _Ecore_X_Randr_Mode_Info
2585 {
2586    Ecore_X_ID xid;
2587    unsigned int width;
2588    unsigned int height;
2589    unsigned long dotClock;
2590    unsigned int hSyncStart;
2591    unsigned int hSyncEnd;
2592    unsigned int hTotal;
2593    unsigned int hSkew;
2594    unsigned int vSyncStart;
2595    unsigned int vSyncEnd;
2596    unsigned int vTotal;
2597    char *name;
2598    unsigned int nameLength;
2599    unsigned long modeFlags;
2600 } Ecore_X_Randr_Mode_Info;
2601
2602 EAPI int             ecore_x_randr_version_get(
2603    void);
2604 EAPI Eina_Bool ecore_x_randr_query(void);
2605
2606 /* ecore_x_randr_11.c */
2607 EAPI Ecore_X_Randr_Orientation
2608                      ecore_x_randr_screen_primary_output_orientations_get(
2609    Ecore_X_Window root);
2610 EAPI Ecore_X_Randr_Orientation
2611                      ecore_x_randr_screen_primary_output_orientation_get(
2612    Ecore_X_Window root);
2613 EAPI Eina_Bool
2614                      ecore_x_randr_screen_primary_output_orientation_set(
2615    Ecore_X_Window root,
2616    Ecore_X_Randr_Orientation
2617    orientation);
2618 EAPI Ecore_X_Randr_Screen_Size_MM *
2619                      ecore_x_randr_screen_primary_output_sizes_get(
2620    Ecore_X_Window root,
2621    int *num);
2622 EAPI void
2623                      ecore_x_randr_screen_primary_output_current_size_get(
2624    Ecore_X_Window root,
2625    int *w,
2626    int *h,
2627    int *w_mm,
2628    int *h_mm,
2629    int *size_index);
2630 EAPI Eina_Bool
2631 ecore_x_randr_screen_primary_output_size_set(Ecore_X_Window root,
2632                                              int size_index);
2633 EAPI Ecore_X_Randr_Refresh_Rate
2634 ecore_x_randr_screen_primary_output_current_refresh_rate_get(
2635    Ecore_X_Window root);
2636 EAPI Ecore_X_Randr_Refresh_Rate *
2637 ecore_x_randr_screen_primary_output_refresh_rates_get(Ecore_X_Window root,
2638                                                       int size_index,
2639                                                       int *num);
2640 EAPI Eina_Bool
2641 ecore_x_randr_screen_primary_output_refresh_rate_set(
2642    Ecore_X_Window root,
2643    int size_index,
2644    Ecore_X_Randr_Refresh_Rate
2645    rate);
2646
2647 /* ecore_x_randr_12.c */
2648 EAPI void
2649 ecore_x_randr_events_select(Ecore_X_Window win,
2650                             Eina_Bool on);
2651
2652 EAPI void
2653 ecore_x_randr_screen_current_size_get(Ecore_X_Window root,
2654                                       int *w,
2655                                       int *h,
2656                                       int *w_mm,
2657                                       int *h_mm);
2658 EAPI void
2659           ecore_x_randr_screen_size_range_get(Ecore_X_Window root,
2660                                     int *wmin,
2661                                     int *hmin,
2662                                     int *wmax,
2663                                     int *hmax);
2664 EAPI void ecore_x_randr_screen_reset(
2665    Ecore_X_Window root);
2666 EAPI Eina_Bool
2667           ecore_x_randr_screen_current_size_set(Ecore_X_Window root,
2668                                       int w,
2669                                       int h,
2670                                       int w_mm,
2671                                       int h_mm);
2672 EAPI Ecore_X_Randr_Mode_Info **
2673                            ecore_x_randr_modes_info_get(Ecore_X_Window root,
2674                              int *num);
2675 EAPI Ecore_X_Randr_Mode_Info *
2676                            ecore_x_randr_mode_info_get(Ecore_X_Window root,
2677                             Ecore_X_Randr_Mode mode);
2678 EAPI void
2679                            ecore_x_randr_mode_info_free(
2680    Ecore_X_Randr_Mode_Info *mode_info);
2681 EAPI Ecore_X_Randr_Crtc *  ecore_x_randr_crtcs_get(
2682    Ecore_X_Window root,
2683    int *num);
2684 EAPI Ecore_X_Randr_Output *ecore_x_randr_outputs_get(
2685    Ecore_X_Window root,
2686    int *num);
2687 EAPI Ecore_X_Randr_Output *
2688                            ecore_x_randr_current_output_get(
2689    Ecore_X_Window window,
2690    int *num);
2691 EAPI Ecore_X_Randr_Crtc *
2692                            ecore_x_randr_current_crtc_get(Ecore_X_Window window,
2693                                int *num);
2694 EAPI Ecore_X_Randr_Output *
2695                            ecore_x_randr_crtc_outputs_get(Ecore_X_Window root,
2696                                Ecore_X_Randr_Crtc crtc,
2697                                int *num);
2698 EAPI Ecore_X_Randr_Output *
2699                            ecore_x_randr_crtc_possible_outputs_get(
2700    Ecore_X_Window root,
2701    Ecore_X_Randr_Crtc crtc,
2702    int *num);
2703 EAPI void
2704                            ecore_x_randr_crtc_geometry_get(Ecore_X_Window root,
2705                                 Ecore_X_Randr_Crtc crtc,
2706                                 int *x,
2707                                 int *y,
2708                                 int *w,
2709                                 int *h);
2710 EAPI void
2711 ecore_x_randr_crtc_pos_get(Ecore_X_Window root,
2712                            Ecore_X_Randr_Crtc crtc,
2713                            int *x,
2714                            int *y);
2715 EAPI Eina_Bool
2716 ecore_x_randr_crtc_pos_set(Ecore_X_Window root,
2717                            Ecore_X_Randr_Crtc crtc,
2718                            int x,
2719                            int y);
2720 EAPI Ecore_X_Randr_Mode
2721 ecore_x_randr_crtc_mode_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2722 EAPI Eina_Bool
2723 ecore_x_randr_crtc_mode_set(Ecore_X_Window root,
2724                             Ecore_X_Randr_Crtc crtc,
2725                             Ecore_X_Randr_Output *outputs,
2726                             int noutputs,
2727                             Ecore_X_Randr_Mode mode);
2728 EAPI void
2729 ecore_x_randr_crtc_size_get(Ecore_X_Window root,
2730                             Ecore_X_Randr_Crtc crtc,
2731                             int *w,
2732                             int *h);
2733 EAPI Ecore_X_Randr_Refresh_Rate
2734 ecore_x_randr_crtc_refresh_rate_get(Ecore_X_Window root,
2735                                     Ecore_X_Randr_Crtc crtc,
2736                                     Ecore_X_Randr_Mode mode);
2737 EAPI Ecore_X_Randr_Orientation
2738 ecore_x_randr_crtc_orientations_get(Ecore_X_Window root,
2739                                     Ecore_X_Randr_Crtc crtc);
2740 EAPI Ecore_X_Randr_Orientation
2741 ecore_x_randr_crtc_orientation_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2742 EAPI Eina_Bool
2743 ecore_x_randr_crtc_orientation_set(Ecore_X_Window root,
2744                                    Ecore_X_Randr_Crtc crtc,
2745                                    const Ecore_X_Randr_Orientation orientation);
2746 EAPI Eina_Bool
2747 ecore_x_randr_crtc_clone_set(Ecore_X_Window root,
2748                              Ecore_X_Randr_Crtc original,
2749                              Ecore_X_Randr_Crtc clone);
2750 EAPI Eina_Bool
2751 ecore_x_randr_crtc_settings_set(Ecore_X_Window root,
2752                                 Ecore_X_Randr_Crtc crtc,
2753                                 Ecore_X_Randr_Output *outputs,
2754                                 int noutputs,
2755                                 int x,
2756                                 int y,
2757                                 Ecore_X_Randr_Mode mode,
2758                                 Ecore_X_Randr_Orientation orientation);
2759 EAPI Eina_Bool
2760 ecore_x_randr_crtc_pos_relative_set(Ecore_X_Window root,
2761                                     Ecore_X_Randr_Crtc crtc_r1,
2762                                     Ecore_X_Randr_Crtc crtc_r2,
2763                                     Ecore_X_Randr_Output_Policy policy,
2764                                     Ecore_X_Randr_Relative_Alignment alignment);
2765 EAPI Ecore_X_Randr_Mode *
2766                      ecore_x_randr_output_modes_get(Ecore_X_Window root,
2767                                Ecore_X_Randr_Output output,
2768                                int *num,
2769                                int *npreferred);
2770 EAPI Ecore_X_Randr_Output * ecore_x_randr_output_clones_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2771 EAPI Ecore_X_Randr_Crtc * ecore_x_randr_output_possible_crtcs_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2772 EAPI Ecore_X_Randr_Crtc
2773                      ecore_x_randr_output_crtc_get(Ecore_X_Window root,
2774                               Ecore_X_Randr_Output output);
2775 EAPI char *
2776                      ecore_x_randr_output_name_get(Ecore_X_Window root,
2777                               Ecore_X_Randr_Output output,
2778                               int *len);
2779 EAPI int
2780                      ecore_x_randr_crtc_gamma_ramp_size_get(
2781    Ecore_X_Randr_Crtc crtc);
2782 EAPI Ecore_X_Randr_Crtc_Gamma **
2783                      ecore_x_randr_crtc_gamma_ramps_get(Ecore_X_Randr_Crtc crtc);
2784 EAPI Eina_Bool
2785                      ecore_x_randr_crtc_gamma_ramps_set(Ecore_X_Randr_Crtc crtc,
2786                                    const Ecore_X_Randr_Crtc_Gamma *red,
2787                                    const Ecore_X_Randr_Crtc_Gamma *green,
2788                                    const Ecore_X_Randr_Crtc_Gamma *blue);
2789 EAPI Eina_Bool
2790                      ecore_x_randr_move_all_crtcs_but(Ecore_X_Window root,
2791                                  const Ecore_X_Randr_Crtc *not_moved,
2792                                  int nnot_moved,
2793                                  int dx,
2794                                  int dy);
2795 EAPI Eina_Bool ecore_x_randr_move_crtcs(
2796    Ecore_X_Window root,
2797    const Ecore_X_Randr_Crtc *crtcs,
2798    int ncrtc,
2799    int dx,
2800    int dy);
2801 EAPI void
2802 ecore_x_randr_mode_size_get(Ecore_X_Window root,
2803                             Ecore_X_Randr_Mode mode,
2804                             int *w,
2805                             int *h);
2806 EAPI Ecore_X_Randr_Connection_Status
2807 ecore_x_randr_output_connection_status_get(Ecore_X_Window root,
2808                                            Ecore_X_Randr_Output output);
2809 EAPI void
2810 ecore_x_randr_output_size_mm_get(Ecore_X_Window root,
2811                                  Ecore_X_Randr_Output output,
2812                                  int *w,
2813                                  int *h);
2814 EAPI Eina_Bool
2815 ecore_x_randr_output_crtc_set(Ecore_X_Window root,
2816                               Ecore_X_Randr_Output output,
2817                               const Ecore_X_Randr_Crtc crtc);
2818
2819 /* ecore_x_randr_13.c */
2820 EAPI void
2821 ecore_x_randr_screen_backlight_level_set(Ecore_X_Window root, double level);
2822 EAPI double
2823 ecore_x_randr_output_backlight_level_get(Ecore_X_Window root,
2824                                          Ecore_X_Randr_Output output);
2825 EAPI Eina_Bool
2826 ecore_x_randr_output_backlight_level_set(Ecore_X_Window root,
2827                                          Ecore_X_Randr_Output output,
2828                                          double level);
2829 EAPI Ecore_X_Randr_Output
2830 ecore_x_randr_primary_output_get(Ecore_X_Window root);
2831 EAPI void
2832 ecore_x_randr_primary_output_set(Ecore_X_Window root,
2833                                  Ecore_X_Randr_Output output);
2834 EAPI Ecore_X_Render_Subpixel_Order
2835 ecore_x_randr_output_subpixel_order_get(Ecore_X_Window root,
2836                                         Ecore_X_Randr_Output output);
2837 EAPI unsigned char *
2838 ecore_x_randr_output_edid_get(Ecore_X_Window root,
2839                               Ecore_X_Randr_Output output,
2840                               unsigned long *length);
2841 EAPI Ecore_X_Randr_Output *
2842 ecore_x_randr_output_wired_clones_get(Ecore_X_Window root,
2843                                       Ecore_X_Randr_Output output,
2844                                       int *num);
2845 EAPI Ecore_X_Randr_Output **
2846 ecore_x_randr_output_compatibility_list_get(Ecore_X_Window root,
2847                                             Ecore_X_Randr_Output output,
2848                                             int *num);
2849 EAPI Ecore_X_Randr_Signal_Format *
2850 ecore_x_randr_output_signal_formats_get(Ecore_X_Window root,
2851                                         Ecore_X_Randr_Output output,
2852                                         int *num);
2853 EAPI Eina_Bool
2854 ecore_x_randr_output_signal_format_set(Ecore_X_Window root,
2855                                        Ecore_X_Randr_Output output,
2856                                        Ecore_X_Randr_Signal_Format *signal);
2857 EAPI Ecore_X_Randr_Signal_Property *
2858 ecore_x_randr_output_signal_properties_get(Ecore_X_Window root,
2859                                            Ecore_X_Randr_Output output,
2860                                            int *num);
2861 EAPI int
2862 ecore_x_randr_output_connector_number_get(Ecore_X_Window root,
2863                                           Ecore_X_Randr_Output output);
2864 EAPI Ecore_X_Randr_Connector_Type
2865 ecore_x_randr_output_connector_type_get(Ecore_X_Window root,
2866                                         Ecore_X_Randr_Output output);
2867 EAPI Eina_Rectangle *
2868 ecore_x_randr_crtc_panning_area_get(Ecore_X_Window root,
2869                                     Ecore_X_Randr_Crtc crtc,
2870                                     int *x,
2871                                     int *y,
2872                                     int *w,
2873                                     int *h);
2874 EAPI Eina_Bool
2875 ecore_x_randr_crtc_panning_area_set(Ecore_X_Window root,
2876                                     Ecore_X_Randr_Crtc crtc,
2877                                     int x,
2878                                     const int y,
2879                                     const int w,
2880                                     const int h);
2881 EAPI Eina_Rectangle *
2882 ecore_x_randr_crtc_tracking_area_get(Ecore_X_Window root,
2883                                      Ecore_X_Randr_Crtc crtc,
2884                                      int *x,
2885                                      int *y,
2886                                      int *w,
2887                                      int *h);
2888 EAPI Eina_Bool
2889 ecore_x_randr_crtc_tracking_area_set(Ecore_X_Window root,
2890                                      Ecore_X_Randr_Crtc crtc,
2891                                      int x,
2892                                      const int y,
2893                                      const int w,
2894                                      const int h);
2895 EAPI Eina_Rectangle *
2896 ecore_x_randr_crtc_border_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2897 EAPI Eina_Bool
2898 ecore_x_randr_crtc_border_area_set(Ecore_X_Window root,
2899                                    Ecore_X_Randr_Crtc crtc,
2900                                    int left,
2901                                    const int top,
2902                                    const int right,
2903                                    const int bottom);
2904
2905 /* XRender Support (horrendously incomplete) */
2906 typedef Ecore_X_ID   Ecore_X_Picture;
2907
2908 /* XFixes Extension Support */
2909 typedef Ecore_X_ID   Ecore_X_Region;
2910
2911 typedef enum _Ecore_X_Region_Type {
2912    ECORE_X_REGION_BOUNDING,
2913    ECORE_X_REGION_CLIP
2914 } Ecore_X_Region_Type;
2915
2916 EAPI Ecore_X_Region         ecore_x_region_new(Ecore_X_Rectangle *rects, int num);
2917 EAPI Ecore_X_Region         ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap);
2918 EAPI Ecore_X_Region         ecore_x_region_new_from_window(Ecore_X_Window      win,
2919                                                            Ecore_X_Region_Type type);
2920 EAPI Ecore_X_Region         ecore_x_region_new_from_gc(Ecore_X_GC gc);
2921 EAPI Ecore_X_Region         ecore_x_region_new_from_picture(Ecore_X_Picture picture);
2922 EAPI void                   ecore_x_region_free(Ecore_X_Region region);
2923 EAPI void                   ecore_x_region_set(Ecore_X_Region     region,
2924                                                Ecore_X_Rectangle *rects,
2925                                                int                num);
2926 EAPI void                   ecore_x_region_copy(Ecore_X_Region dest,
2927                                                 Ecore_X_Region source);
2928 EAPI void                   ecore_x_region_combine(Ecore_X_Region dest,
2929                                                    Ecore_X_Region source1,
2930                                                    Ecore_X_Region source2);
2931 EAPI void                   ecore_x_region_intersect(Ecore_X_Region dest,
2932                                                      Ecore_X_Region source1,
2933                                                      Ecore_X_Region source2);
2934 EAPI void                   ecore_x_region_subtract(Ecore_X_Region dest,
2935                                                     Ecore_X_Region source1,
2936                                                     Ecore_X_Region source2);
2937 EAPI void                   ecore_x_region_invert(Ecore_X_Region     dest,
2938                                                   Ecore_X_Rectangle *bounds,
2939                                                   Ecore_X_Region     source);
2940 EAPI void                   ecore_x_region_translate(Ecore_X_Region region,
2941                                                      int            dx,
2942                                                      int            dy);
2943 EAPI void                   ecore_x_region_extents(Ecore_X_Region dest,
2944                                                    Ecore_X_Region source);
2945 EAPI void                   ecore_x_region_fetch_prefetch(Ecore_X_Region region);
2946 EAPI void                   ecore_x_region_fetch_fetch(void);
2947 EAPI Ecore_X_Rectangle *    ecore_x_region_fetch(Ecore_X_Region     region,
2948                                                  int               *num,
2949                                                  Ecore_X_Rectangle *bounds);
2950 EAPI void                   ecore_x_region_expand(Ecore_X_Region dest,
2951                                                   Ecore_X_Region source,
2952                                                   unsigned int   left,
2953                                                   unsigned int   right,
2954                                                   unsigned int   top,
2955                                                   unsigned int   bottom);
2956 EAPI void                   ecore_x_region_gc_clip_set(Ecore_X_Region region,
2957                                                        Ecore_X_GC     gc,
2958                                                        int            x_origin,
2959                                                        int            y_origin);
2960 EAPI void                   ecore_x_region_window_shape_set(Ecore_X_Region     region,
2961                                                             Ecore_X_Window     win,
2962                                                             Ecore_X_Shape_Type type,
2963                                                             int                x_offset,
2964                                                             int                y_offset);
2965 EAPI void                   ecore_x_region_picture_clip_set(Ecore_X_Region  region,
2966                                                             Ecore_X_Picture picture,
2967                                                             int             x_origin,
2968                                                             int             y_origin);
2969
2970 /* XComposite Extension Support */
2971 EAPI Eina_Bool              ecore_x_composite_query(void);
2972 EAPI void                   ecore_x_composite_redirect_window(Ecore_X_Window                win,
2973                                                               Ecore_X_Composite_Update_Type type);
2974 EAPI void                   ecore_x_composite_redirect_subwindows(Ecore_X_Window                win,
2975                                                                   Ecore_X_Composite_Update_Type type);
2976 EAPI void                   ecore_x_composite_unredirect_window(Ecore_X_Window                win,
2977                                                                 Ecore_X_Composite_Update_Type type);
2978 EAPI void                   ecore_x_composite_unredirect_subwindows(Ecore_X_Window                win,
2979                                                                     Ecore_X_Composite_Update_Type type);
2980 EAPI Ecore_X_Pixmap         ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win);
2981 EAPI void                   ecore_x_composite_window_events_disable(Ecore_X_Window win);
2982 EAPI void                   ecore_x_composite_window_events_enable(Ecore_X_Window win);
2983 EAPI Ecore_X_Window         ecore_x_composite_render_window_enable(Ecore_X_Window root);
2984 EAPI void                   ecore_x_composite_render_window_disable(Ecore_X_Window root);
2985
2986 /* XDamage Extension Support */
2987 typedef Ecore_X_ID   Ecore_X_Damage;
2988
2989 typedef enum _Ecore_X_Damage_Report_Level {
2990    ECORE_X_DAMAGE_REPORT_RAW_RECTANGLES,
2991    ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES,
2992    ECORE_X_DAMAGE_REPORT_BOUNDING_BOX,
2993    ECORE_X_DAMAGE_REPORT_NON_EMPTY
2994 } Ecore_X_Damage_Report_Level;
2995
2996 struct _Ecore_X_Event_Damage
2997 {
2998    Ecore_X_Damage_Report_Level level;
2999    Ecore_X_Drawable            drawable;
3000    Ecore_X_Damage              damage;
3001    int                         more;
3002    Ecore_X_Time                time;
3003    Ecore_X_Rectangle           area;
3004    Ecore_X_Rectangle           geometry;
3005 };
3006
3007 typedef struct _Ecore_X_Event_Damage   Ecore_X_Event_Damage;
3008
3009 EAPI Eina_Bool           ecore_x_damage_query(void);
3010 EAPI Ecore_X_Damage      ecore_x_damage_new(Ecore_X_Drawable            d,
3011                                             Ecore_X_Damage_Report_Level level);
3012 EAPI void                ecore_x_damage_free(Ecore_X_Damage damage);
3013 EAPI void                ecore_x_damage_subtract(Ecore_X_Damage damage,
3014                                                  Ecore_X_Region repair,
3015                                                  Ecore_X_Region parts);
3016
3017 EAPI Eina_Bool           ecore_x_screen_is_composited(int screen);
3018 EAPI void                ecore_x_screen_is_composited_set(int            screen,
3019                                                           Ecore_X_Window win);
3020
3021 EAPI Eina_Bool           ecore_x_dpms_query(void);
3022 EAPI void                ecore_x_dpms_capable_get_prefetch(void);
3023 EAPI void                ecore_x_dpms_capable_get_fetch(void);
3024 EAPI Eina_Bool           ecore_x_dpms_capable_get(void);
3025 EAPI void                ecore_x_dpms_enable_get_prefetch(void);
3026 EAPI void                ecore_x_dpms_enable_get_fetch(void);
3027 EAPI Eina_Bool           ecore_x_dpms_enabled_get(void);
3028 EAPI void                ecore_x_dpms_enabled_set(int enabled);
3029 EAPI void                ecore_x_dpms_timeouts_get_prefetch(void);
3030 EAPI void                ecore_x_dpms_timeouts_get_fetch(void);
3031 EAPI void                ecore_x_dpms_timeouts_get(unsigned int *standby,
3032                                                    unsigned int *suspend,
3033                                                    unsigned int *off);
3034 EAPI Eina_Bool           ecore_x_dpms_timeouts_set(unsigned int standby,
3035                                                    unsigned int suspend,
3036                                                    unsigned int off);
3037 EAPI unsigned int        ecore_x_dpms_timeout_standby_get(void);
3038 EAPI unsigned int        ecore_x_dpms_timeout_suspend_get(void);
3039 EAPI unsigned int        ecore_x_dpms_timeout_off_get(void);
3040 EAPI void                ecore_x_dpms_timeout_standby_set(unsigned int new_timeout);
3041 EAPI void                ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout);
3042 EAPI void                ecore_x_dpms_timeout_off_set(unsigned int new_timeout);
3043
3044 EAPI Eina_Bool           ecore_x_test_fake_key_down(const char *key);
3045 EAPI Eina_Bool           ecore_x_test_fake_key_up(const char *key);
3046 EAPI Eina_Bool           ecore_x_test_fake_key_press(const char *key);
3047 EAPI const char *        ecore_x_keysym_string_get(int keysym);
3048
3049 typedef struct _Ecore_X_Image   Ecore_X_Image;
3050
3051 EAPI Ecore_X_Image *     ecore_x_image_new(int            w,
3052                                            int            h,
3053                                            Ecore_X_Visual vis,
3054                                            int            depth);
3055 EAPI void                ecore_x_image_free(Ecore_X_Image *im);
3056 EAPI Eina_Bool           ecore_x_image_get(Ecore_X_Image   *im,
3057                                            Ecore_X_Drawable draw,
3058                                            int              x,
3059                                            int              y,
3060                                            int              sx,
3061                                            int              sy,
3062                                            int              w,
3063                                            int              h);
3064 EAPI void      ecore_x_image_put(Ecore_X_Image   *im,
3065                                  Ecore_X_Drawable draw,
3066                                  Ecore_X_GC       gc,
3067                                  int              x,
3068                                  int              y,
3069                                  int              sx,
3070                                  int              sy,
3071                                  int              w,
3072                                  int              h);
3073 EAPI void *         ecore_x_image_data_get(Ecore_X_Image *im,
3074                                            int           *bpl,
3075                                            int           *rows,
3076                                            int           *bpp);
3077 EAPI Eina_Bool      ecore_x_image_is_argb32_get(Ecore_X_Image *im);
3078          
3079 EAPI Eina_Bool      ecore_x_image_to_argb_convert(void *src, int sbpp, 
3080                                                   int sbpl,
3081                                                   Ecore_X_Colormap c, 
3082                                                   Ecore_X_Visual v, 
3083                                                   int x, int y, int w, int h, 
3084                                                   unsigned int *dst,
3085                                                   int dbpl, 
3086                                                   int dx, int dy);
3087
3088 EAPI Eina_Bool      ecore_x_input_multi_select(Ecore_X_Window win);
3089
3090 #ifdef __cplusplus
3091 }
3092 #endif // ifdef __cplusplus
3093
3094 #include <Ecore_X_Atoms.h>
3095 #include <Ecore_X_Cursor.h>
3096
3097 #endif // ifndef _ECORE_X_H