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