[Upstream migration @62307] Merge remote branch 'origin/upstream'
[profile/ivi/ecore.git] / src / lib / ecore_x / Ecore_X.h
1 #ifndef _ECORE_X_H
2 #define _ECORE_X_H
3
4 #include <Eina.h>
5
6 #ifdef EAPI
7 # undef EAPI
8 #endif // ifdef EAPI
9
10 #ifdef _MSC_VER
11 # ifdef BUILDING_DLL
12 #  define EAPI __declspec(dllexport)
13 # else // ifdef BUILDING_DLL
14 #  define EAPI __declspec(dllimport)
15 # endif // ifdef BUILDING_DLL
16 #else // ifdef _MSC_VER
17 # ifdef __GNUC__
18 #  if __GNUC__ >= 4
19 #   define EAPI __attribute__ ((visibility("default")))
20 #  else // if __GNUC__ >= 4
21 #   define EAPI
22 #  endif // if __GNUC__ >= 4
23 # else // ifdef __GNUC__
24 #  define EAPI
25 # endif // ifdef __GNUC__
26 #endif // ifdef _MSC_VER
27
28 #include <sys/types.h>
29
30 /**
31  * @file
32  * @brief Ecore functions for dealing with the X Windows System
33  *
34  * Ecore_X provides a wrapper and convenience functions for using the
35  * X Windows System.  Function groups for this part of the library
36  * include the following:
37  * @li @ref Ecore_X_Init_Group
38  * @li @ref Ecore_X_Display_Attr_Group
39  * @li @ref Ecore_X_Flush_Group
40  */
41
42 typedef unsigned int     Ecore_X_ID;
43 #ifndef _ECORE_X_WINDOW_PREDEF
44 typedef Ecore_X_ID       Ecore_X_Window;
45 #endif // ifndef _ECORE_X_WINDOW_PREDEF
46 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                     ecore_x_init(const char *name);
1161 EAPI int                     ecore_x_shutdown(void);
1162 EAPI int                     ecore_x_disconnect(void);
1163 EAPI Ecore_X_Display *       ecore_x_display_get(void);
1164 EAPI Ecore_X_Connection *    ecore_x_connection_get(void);
1165 EAPI int                     ecore_x_fd_get(void);
1166 EAPI Ecore_X_Screen *        ecore_x_default_screen_get(void);
1167 EAPI void                    ecore_x_screen_size_get(const Ecore_X_Screen *screen, int *w, int *h);
1168 EAPI int                     ecore_x_screen_count_get(void);
1169 EAPI int                     ecore_x_screen_index_get(const Ecore_X_Screen *screen);
1170 EAPI Ecore_X_Screen *        ecore_x_screen_get(int index);
1171
1172 EAPI void                    ecore_x_double_click_time_set(double t);
1173 EAPI double                  ecore_x_double_click_time_get(void);
1174 EAPI void                    ecore_x_flush(void);
1175 EAPI void                    ecore_x_sync(void);
1176 EAPI void                    ecore_x_killall(Ecore_X_Window root);
1177 EAPI void                    ecore_x_kill(Ecore_X_Window win);
1178 EAPI int                     ecore_x_dpi_get(void);
1179 EAPI Eina_Bool               ecore_x_bell(int percent);
1180 EAPI unsigned int            ecore_x_visual_id_get(Ecore_X_Visual visual);
1181
1182 EAPI Ecore_X_Visual          ecore_x_default_visual_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1183 EAPI Ecore_X_Colormap        ecore_x_default_colormap_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1184 EAPI int                     ecore_x_default_depth_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1185
1186 EAPI Ecore_X_Time            ecore_x_current_time_get(void);
1187
1188 EAPI void                    ecore_x_error_handler_set(void (*func)(void *data), const void *data);
1189 EAPI void                    ecore_x_io_error_handler_set(void (*func)(
1190                                                              void *data), const void *data);
1191 EAPI int                     ecore_x_error_request_get(void);
1192 EAPI int                     ecore_x_error_code_get(void);
1193
1194 EAPI void                    ecore_x_event_mask_set(Ecore_X_Window     w,
1195                                                     Ecore_X_Event_Mask mask);
1196 EAPI void                    ecore_x_event_mask_unset(Ecore_X_Window     w,
1197                                                       Ecore_X_Event_Mask mask);
1198
1199 EAPI Eina_Bool               ecore_x_selection_notify_send(Ecore_X_Window requestor,
1200                                                            Ecore_X_Atom   selection,
1201                                                            Ecore_X_Atom   target,
1202                                                            Ecore_X_Atom   property,
1203                                                            Ecore_X_Time   time);
1204 EAPI Eina_Bool               ecore_x_selection_primary_set(Ecore_X_Window w,
1205                                                            const void    *data,
1206                                                            int            size);
1207 EAPI Eina_Bool               ecore_x_selection_primary_clear(void);
1208 EAPI Eina_Bool               ecore_x_selection_secondary_set(Ecore_X_Window w,
1209                                                              const void    *data,
1210                                                              int            size);
1211 EAPI Eina_Bool               ecore_x_selection_secondary_clear(void);
1212 EAPI Eina_Bool               ecore_x_selection_xdnd_set(Ecore_X_Window w,
1213                                                         const void    *data,
1214                                                         int            size);
1215 EAPI Eina_Bool               ecore_x_selection_xdnd_clear(void);
1216 EAPI Eina_Bool               ecore_x_selection_clipboard_set(Ecore_X_Window w,
1217                                                              const void    *data,
1218                                                              int            size);
1219 EAPI Eina_Bool               ecore_x_selection_clipboard_clear(void);
1220 EAPI void                    ecore_x_selection_primary_request(Ecore_X_Window w,
1221                                                                const char    *target);
1222 EAPI void                    ecore_x_selection_secondary_request(Ecore_X_Window w,
1223                                                                  const char    *target);
1224 EAPI void                    ecore_x_selection_xdnd_request(Ecore_X_Window w,
1225                                                             const char    *target);
1226 EAPI void                    ecore_x_selection_clipboard_request(Ecore_X_Window w,
1227                                                                  const char    *target);
1228 EAPI Eina_Bool               ecore_x_selection_convert(Ecore_X_Atom  selection,
1229                                                        Ecore_X_Atom  target,
1230                                                        void        **data_ret,
1231                                                        int          *len,
1232                                                        Ecore_X_Atom *targprop,
1233                                                        int          *targsize);
1234 EAPI void                    ecore_x_selection_converter_add(char *target, Eina_Bool (*func)(
1235                                                                 char  *target,
1236                                                                 void  *data,
1237                                                                 int    size,
1238                                                                 void **data_ret,
1239                                                                 int   *size_ret,
1240                                                                 Ecore_X_Atom *,
1241                                                                 int *));
1242 EAPI void                ecore_x_selection_converter_atom_add(Ecore_X_Atom target, Eina_Bool (*func)(
1243                                                        char         *target,
1244                                                        void         *data,
1245                                                        int           size,
1246                                                        void        **data_ret,
1247                                                        int          *size_ret,
1248                                                        Ecore_X_Atom *tprop,
1249                                                        int          *tsize));
1250 EAPI void                ecore_x_selection_converter_del(char *target);
1251 EAPI void                ecore_x_selection_converter_atom_del(Ecore_X_Atom target);
1252 EAPI void                ecore_x_selection_parser_add(const char *target,
1253                                                       void *(*func)(const char *target,
1254                                                                     void *data, int size,
1255                                                                     int format));
1256 EAPI void                ecore_x_selection_parser_del(const char *target);
1257 EAPI void                ecore_x_selection_owner_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Time tm);
1258 EAPI Ecore_X_Window      ecore_x_selection_owner_get(Ecore_X_Atom atom);
1259
1260 EAPI void                ecore_x_dnd_aware_set(Ecore_X_Window win, Eina_Bool on);
1261 EAPI int                 ecore_x_dnd_version_get(Ecore_X_Window win);
1262 EAPI Eina_Bool           ecore_x_dnd_type_isset(Ecore_X_Window win,
1263                                                 const char    *type);
1264 EAPI void                ecore_x_dnd_type_set(Ecore_X_Window win,
1265                                               const char    *type,
1266                                               Eina_Bool      on);
1267 EAPI void                ecore_x_dnd_types_set(Ecore_X_Window win,
1268                                                const char   **types,
1269                                                unsigned int   num_types);
1270 EAPI void                ecore_x_dnd_actions_set(Ecore_X_Window win,
1271                                                  Ecore_X_Atom  *actions,
1272                                                  unsigned int   num_actions);
1273 EAPI Eina_Bool           ecore_x_dnd_begin(Ecore_X_Window source,
1274                                            unsigned char *data,
1275                                            int            size);
1276 EAPI Eina_Bool           ecore_x_dnd_drop(void);
1277 EAPI void                ecore_x_dnd_send_status(Eina_Bool         will_accept,
1278                                                  Eina_Bool         suppress,
1279                                                  Ecore_X_Rectangle rectangle,
1280                                                  Ecore_X_Atom      action);
1281 EAPI void                ecore_x_dnd_send_finished(void);
1282 EAPI void                ecore_x_dnd_source_action_set(Ecore_X_Atom action);
1283 EAPI Ecore_X_Atom        ecore_x_dnd_source_action_get(void);
1284 EAPI void                ecore_x_dnd_callback_pos_update_set(void (*cb)(void *, Ecore_X_Xdnd_Position *data),
1285                                                              const void *data);
1286
1287 EAPI Ecore_X_Window      ecore_x_window_new(Ecore_X_Window parent,
1288                                             int            x,
1289                                             int            y,
1290                                             int            w,
1291                                             int            h);
1292 EAPI Ecore_X_Window      ecore_x_window_override_new(Ecore_X_Window parent,
1293                                                      int            x,
1294                                                      int            y,
1295                                                      int            w,
1296                                                      int            h);
1297 EAPI int                 ecore_x_window_argb_get(Ecore_X_Window win);
1298 EAPI Ecore_X_Window      ecore_x_window_manager_argb_new(Ecore_X_Window parent,
1299                                                          int            x,
1300                                                          int            y,
1301                                                          int            w,
1302                                                          int            h);
1303 EAPI Ecore_X_Window      ecore_x_window_argb_new(Ecore_X_Window parent,
1304                                                  int            x,
1305                                                  int            y,
1306                                                  int            w,
1307                                                  int            h);
1308 EAPI Ecore_X_Window      ecore_x_window_override_argb_new(Ecore_X_Window parent,
1309                                                           int            x,
1310                                                           int            y,
1311                                                           int            w,
1312                                                           int            h);
1313 EAPI Ecore_X_Window      ecore_x_window_input_new(Ecore_X_Window parent,
1314                                                   int            x,
1315                                                   int            y,
1316                                                   int            w,
1317                                                   int            h);
1318 EAPI void                ecore_x_window_configure(
1319    Ecore_X_Window win,
1320    Ecore_X_Window_Configure_Mask
1321    mask,
1322    int            x,
1323    int            y,
1324    int            w,
1325    int            h,
1326    int            border_width,
1327    Ecore_X_Window sibling,
1328    int            stack_mode);
1329 EAPI void                ecore_x_window_cursor_set(Ecore_X_Window win,
1330                                                    Ecore_X_Cursor c);
1331 EAPI void                ecore_x_window_free(Ecore_X_Window win);
1332 EAPI void                ecore_x_window_ignore_set(Ecore_X_Window win,
1333                                                    int            ignore);
1334 EAPI Ecore_X_Window *    ecore_x_window_ignore_list(int *num);
1335
1336 EAPI void                ecore_x_window_delete_request_send(
1337    Ecore_X_Window win);
1338 EAPI void                ecore_x_window_show(Ecore_X_Window win);
1339 EAPI void                ecore_x_window_hide(Ecore_X_Window win);
1340 EAPI void                ecore_x_window_move(Ecore_X_Window win,
1341                                              int            x,
1342                                              int            y);
1343 EAPI void                ecore_x_window_resize(Ecore_X_Window win,
1344                                                int            w,
1345                                                int            h);
1346 EAPI void                ecore_x_window_move_resize(Ecore_X_Window win,
1347                                                     int            x,
1348                                                     int            y,
1349                                                     int            w,
1350                                                     int            h);
1351 EAPI void                ecore_x_window_focus(Ecore_X_Window win);
1352 EAPI void                ecore_x_window_focus_at_time(Ecore_X_Window win,
1353                                                       Ecore_X_Time   t);
1354 EAPI Ecore_X_Window      ecore_x_window_focus_get(void);
1355 EAPI void                ecore_x_window_raise(Ecore_X_Window win);
1356 EAPI void                ecore_x_window_lower(Ecore_X_Window win);
1357 EAPI void                ecore_x_window_reparent(Ecore_X_Window win,
1358                                                  Ecore_X_Window new_parent,
1359                                                  int            x,
1360                                                  int            y);
1361 EAPI void                ecore_x_window_size_get(Ecore_X_Window win,
1362                                                  int           *w,
1363                                                  int           *h);
1364 EAPI void                ecore_x_window_geometry_get(Ecore_X_Window win,
1365                                                      int           *x,
1366                                                      int           *y,
1367                                                      int           *w,
1368                                                      int           *h);
1369 EAPI int                 ecore_x_window_border_width_get(
1370    Ecore_X_Window win);
1371 EAPI void                ecore_x_window_border_width_set(
1372    Ecore_X_Window win,
1373    int            width);
1374 EAPI int                 ecore_x_window_depth_get(Ecore_X_Window win);
1375 EAPI void                ecore_x_window_cursor_show(Ecore_X_Window win,
1376                                                     Eina_Bool      show);
1377 EAPI void                ecore_x_window_defaults_set(Ecore_X_Window win);
1378 EAPI int                 ecore_x_window_visible_get(Ecore_X_Window win);
1379 EAPI Ecore_X_Window      ecore_x_window_shadow_tree_at_xy_with_skip_get(
1380    Ecore_X_Window  base,
1381    int             x,
1382    int             y,
1383    Ecore_X_Window *skip,
1384    int             skip_num);
1385 EAPI Ecore_X_Window      ecore_x_window_shadow_parent_get(
1386    Ecore_X_Window root,
1387    Ecore_X_Window win);
1388 EAPI void                ecore_x_window_shadow_tree_flush(void);
1389 EAPI Ecore_X_Window      ecore_x_window_root_get(Ecore_X_Window win);
1390 EAPI Ecore_X_Window      ecore_x_window_at_xy_get(int x, int y);
1391 EAPI Ecore_X_Window      ecore_x_window_at_xy_with_skip_get(int             x,
1392                                                             int             y,
1393                                                             Ecore_X_Window *skip,
1394                                                             int             skip_num);
1395 EAPI Ecore_X_Window      ecore_x_window_at_xy_begin_get(
1396    Ecore_X_Window begin,
1397    int            x,
1398    int            y);
1399 EAPI Ecore_X_Window      ecore_x_window_parent_get(Ecore_X_Window win);
1400
1401 EAPI void                ecore_x_window_background_color_set(
1402    Ecore_X_Window win,
1403    unsigned
1404    short          r,
1405    unsigned
1406    short          g,
1407    unsigned
1408    short          b);
1409 EAPI void      ecore_x_window_gravity_set(Ecore_X_Window  win,
1410                                           Ecore_X_Gravity grav);
1411 EAPI void      ecore_x_window_pixel_gravity_set(
1412    Ecore_X_Window win,
1413    Ecore_X_Gravity
1414    grav);
1415 EAPI void      ecore_x_window_pixmap_set(Ecore_X_Window win,
1416                                          Ecore_X_Pixmap pmap);
1417 EAPI void      ecore_x_window_area_clear(Ecore_X_Window win,
1418                                          int            x,
1419                                          int            y,
1420                                          int            w,
1421                                          int            h);
1422 EAPI void      ecore_x_window_area_expose(Ecore_X_Window win,
1423                                           int            x,
1424                                           int            y,
1425                                           int            w,
1426                                           int            h);
1427 EAPI void      ecore_x_window_override_set(Ecore_X_Window win,
1428                                            Eina_Bool      override);
1429
1430 EAPI void      ecore_x_window_prop_card32_set(
1431    Ecore_X_Window win,
1432    Ecore_X_Atom   atom,
1433    unsigned int  *val,
1434    unsigned int   num);
1435 EAPI int       ecore_x_window_prop_card32_get(
1436    Ecore_X_Window win,
1437    Ecore_X_Atom   atom,
1438    unsigned int  *val,
1439    unsigned int   len);
1440 EAPI int       ecore_x_window_prop_card32_list_get(
1441    Ecore_X_Window win,
1442    Ecore_X_Atom
1443    atom,
1444    unsigned int
1445                 **plst);
1446
1447 EAPI void      ecore_x_window_prop_xid_set(Ecore_X_Window win,
1448                                            Ecore_X_Atom   atom,
1449                                            Ecore_X_Atom   type,
1450                                            Ecore_X_ID    *lst,
1451                                            unsigned int   num);
1452 EAPI int       ecore_x_window_prop_xid_get(Ecore_X_Window win,
1453                                            Ecore_X_Atom   atom,
1454                                            Ecore_X_Atom   type,
1455                                            Ecore_X_ID    *lst,
1456                                            unsigned int   len);
1457 EAPI int       ecore_x_window_prop_xid_list_get(
1458    Ecore_X_Window win,
1459    Ecore_X_Atom
1460    atom,
1461    Ecore_X_Atom
1462    type,
1463    Ecore_X_ID **
1464    plst);
1465 EAPI void      ecore_x_window_prop_xid_list_change(
1466    Ecore_X_Window win,
1467    Ecore_X_Atom
1468    atom,
1469    Ecore_X_Atom
1470    type,
1471    Ecore_X_ID
1472    item,
1473    int            op);
1474 EAPI void      ecore_x_window_prop_atom_set(Ecore_X_Window win,
1475                                             Ecore_X_Atom   atom,
1476                                             Ecore_X_Atom  *val,
1477                                             unsigned int   num);
1478 EAPI int       ecore_x_window_prop_atom_get(Ecore_X_Window win,
1479                                             Ecore_X_Atom   atom,
1480                                             Ecore_X_Atom  *val,
1481                                             unsigned int   len);
1482 EAPI int       ecore_x_window_prop_atom_list_get(
1483    Ecore_X_Window win,
1484    Ecore_X_Atom
1485    atom,
1486    Ecore_X_Atom *
1487                  *plst);
1488 EAPI void      ecore_x_window_prop_atom_list_change(
1489    Ecore_X_Window win,
1490    Ecore_X_Atom
1491    atom,
1492    Ecore_X_Atom
1493    item,
1494    int            op);
1495 EAPI void      ecore_x_window_prop_window_set(
1496    Ecore_X_Window win,
1497    Ecore_X_Atom   atom,
1498    Ecore_X_Window *
1499    val,
1500    unsigned int   num);
1501 EAPI int       ecore_x_window_prop_window_get(
1502    Ecore_X_Window win,
1503    Ecore_X_Atom   atom,
1504    Ecore_X_Window *
1505    val,
1506    unsigned int   len);
1507 EAPI int       ecore_x_window_prop_window_list_get(
1508    Ecore_X_Window win,
1509    Ecore_X_Atom
1510    atom,
1511    Ecore_X_Window
1512                 **plst);
1513
1514 EAPI Ecore_X_Atom      ecore_x_window_prop_any_type(void);
1515 EAPI void              ecore_x_window_prop_property_set(
1516    Ecore_X_Window win,
1517    Ecore_X_Atom   type,
1518    Ecore_X_Atom   format,
1519    int            size,
1520    void          *data,
1521    int            number);
1522 EAPI int       ecore_x_window_prop_property_get(
1523    Ecore_X_Window  win,
1524    Ecore_X_Atom    property,
1525    Ecore_X_Atom    type,
1526    int             size,
1527    unsigned char **data,
1528    int            *num);
1529 EAPI void                     ecore_x_window_prop_property_del(
1530    Ecore_X_Window win,
1531    Ecore_X_Atom   property);
1532 EAPI Ecore_X_Atom *           ecore_x_window_prop_list(Ecore_X_Window win,
1533                                                        int           *num_ret);
1534 EAPI void                     ecore_x_window_prop_string_set(
1535    Ecore_X_Window win,
1536    Ecore_X_Atom   type,
1537    const char    *str);
1538 EAPI char *                   ecore_x_window_prop_string_get(
1539    Ecore_X_Window win,
1540    Ecore_X_Atom   type);
1541 EAPI Eina_Bool                ecore_x_window_prop_protocol_isset(
1542    Ecore_X_Window      win,
1543    Ecore_X_WM_Protocol protocol);
1544 EAPI Ecore_X_WM_Protocol *    ecore_x_window_prop_protocol_list_get(
1545    Ecore_X_Window win,
1546    int           *num_ret);
1547
1548 EAPI void                     ecore_x_window_shape_mask_set(Ecore_X_Window win,
1549                                                             Ecore_X_Pixmap mask);
1550 EAPI void                     ecore_x_window_shape_window_set(
1551    Ecore_X_Window win,
1552    Ecore_X_Window shape_win);
1553 EAPI void                     ecore_x_window_shape_window_set_xy(
1554    Ecore_X_Window win,
1555    Ecore_X_Window shape_win,
1556    int            x,
1557    int            y);
1558 EAPI void                     ecore_x_window_shape_window_set_xy(
1559    Ecore_X_Window win,
1560    Ecore_X_Window shape_win,
1561    int            x,
1562    int            y);
1563 EAPI void                     ecore_x_window_shape_rectangle_set(
1564    Ecore_X_Window win,
1565    int            x,
1566    int            y,
1567    int            w,
1568    int            h);
1569 EAPI void                     ecore_x_window_shape_rectangles_set(
1570    Ecore_X_Window     win,
1571    Ecore_X_Rectangle *rects,
1572    int                num);
1573 EAPI void                     ecore_x_window_shape_input_rectangle_set(
1574    Ecore_X_Window win,
1575    int            x,
1576    int            y,
1577    int            w,
1578    int            h);
1579 EAPI void                     ecore_x_window_shape_input_rectangles_set(
1580    Ecore_X_Window     win,
1581    Ecore_X_Rectangle *rects,
1582    int                num);
1583 EAPI void                     ecore_x_window_shape_input_rectangle_add(
1584    Ecore_X_Window win,
1585    int            x,
1586    int            y,
1587    int            w,
1588    int            h);
1589 EAPI void                     ecore_x_window_shape_rectangle_subtract(
1590    Ecore_X_Window win,
1591    int            x,
1592    int            y,
1593    int            w,
1594    int            h);
1595 EAPI void                     ecore_x_window_shape_input_rectangle_subtract(
1596    Ecore_X_Window win,
1597    int            x,
1598    int            y,
1599    int            w,
1600    int            h);
1601 EAPI void                     ecore_x_window_shape_input_window_set_xy(
1602    Ecore_X_Window win,
1603    Ecore_X_Window shape_win,
1604    int            x,
1605    int            y);
1606 EAPI void                     ecore_x_window_shape_input_window_set(
1607    Ecore_X_Window win,
1608    Ecore_X_Window shape_win);
1609 EAPI void                     ecore_x_window_shape_window_add(
1610    Ecore_X_Window win,
1611    Ecore_X_Window shape_win);
1612 EAPI void                     ecore_x_window_shape_window_add_xy(
1613    Ecore_X_Window win,
1614    Ecore_X_Window shape_win,
1615    int            x,
1616    int            y);
1617 EAPI void                     ecore_x_window_shape_input_window_add_xy(
1618    Ecore_X_Window win,
1619    Ecore_X_Window shape_win,
1620    int            x,
1621    int            y);
1622 EAPI void                     ecore_x_window_shape_rectangle_add(
1623    Ecore_X_Window win,
1624    int            x,
1625    int            y,
1626    int            w,
1627    int            h);
1628 EAPI void                     ecore_x_window_shape_rectangle_clip(
1629    Ecore_X_Window win,
1630    int            x,
1631    int            y,
1632    int            w,
1633    int            h);
1634 EAPI void                     ecore_x_window_shape_input_rectangle_clip(
1635    Ecore_X_Window win,
1636    int            x,
1637    int            y,
1638    int            w,
1639    int            h);
1640 EAPI void                     ecore_x_window_shape_rectangles_add(
1641    Ecore_X_Window     win,
1642    Ecore_X_Rectangle *rects,
1643    int                num);
1644 EAPI void                     ecore_x_window_shape_input_rectangles_add(
1645    Ecore_X_Window     win,
1646    Ecore_X_Rectangle *rects,
1647    int                num);
1648 EAPI Ecore_X_Rectangle *      ecore_x_window_shape_rectangles_get(
1649    Ecore_X_Window win,
1650    int           *num_ret);
1651 EAPI Ecore_X_Rectangle *      ecore_x_window_shape_input_rectangles_get(
1652    Ecore_X_Window win,
1653    int           *num_ret);
1654 EAPI void                     ecore_x_window_shape_events_select(
1655    Ecore_X_Window win,
1656    Eina_Bool      on);
1657 EAPI void                     ecore_x_window_shape_input_mask_set(
1658    Ecore_X_Window win,
1659    Ecore_X_Pixmap mask);
1660
1661 EAPI Ecore_X_Pixmap           ecore_x_pixmap_new(Ecore_X_Window win,
1662                                                  int            w,
1663                                                  int            h,
1664                                                  int            dep);
1665 EAPI void                     ecore_x_pixmap_free(Ecore_X_Pixmap pmap);
1666 EAPI void                     ecore_x_pixmap_paste(Ecore_X_Pixmap   pmap,
1667                                                    Ecore_X_Drawable dest,
1668                                                    Ecore_X_GC       gc,
1669                                                    int              sx,
1670                                                    int              sy,
1671                                                    int              w,
1672                                                    int              h,
1673                                                    int              dx,
1674                                                    int              dy);
1675 EAPI void            ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap,
1676                                                  int           *x,
1677                                                  int           *y,
1678                                                  int           *w,
1679                                                  int           *h);
1680 EAPI int             ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap);
1681
1682 EAPI Ecore_X_GC      ecore_x_gc_new(Ecore_X_Drawable      draw,
1683                                     Ecore_X_GC_Value_Mask value_mask,
1684                                     const unsigned int   *value_list);
1685 EAPI void            ecore_x_gc_free(Ecore_X_GC gc);
1686 EAPI void            ecore_x_gc_foreground_set(Ecore_X_GC gc, unsigned long foreground);
1687 EAPI void            ecore_x_gc_background_set(Ecore_X_GC gc, unsigned long background);
1688
1689 EAPI Eina_Bool       ecore_x_client_message32_send(Ecore_X_Window     win,
1690                                                    Ecore_X_Atom       type,
1691                                                    Ecore_X_Event_Mask mask,
1692                                                    long               d0,
1693                                                    long               d1,
1694                                                    long               d2,
1695                                                    long               d3,
1696                                                    long               d4);
1697 EAPI Eina_Bool ecore_x_client_message8_send(Ecore_X_Window win,
1698                                             Ecore_X_Atom   type,
1699                                             const void    *data,
1700                                             int            len);
1701 EAPI Eina_Bool ecore_x_mouse_move_send(Ecore_X_Window win,
1702                                        int            x,
1703                                        int            y);
1704 EAPI Eina_Bool ecore_x_mouse_down_send(Ecore_X_Window win,
1705                                        int            x,
1706                                        int            y,
1707                                        int            b);
1708 EAPI Eina_Bool ecore_x_mouse_up_send(Ecore_X_Window win,
1709                                      int            x,
1710                                      int            y,
1711                                      int            b);
1712
1713 EAPI void      ecore_x_drawable_geometry_get(Ecore_X_Drawable d,
1714                                              int             *x,
1715                                              int             *y,
1716                                              int             *w,
1717                                              int             *h);
1718 EAPI int       ecore_x_drawable_border_width_get(
1719    Ecore_X_Drawable d);
1720 EAPI int       ecore_x_drawable_depth_get(Ecore_X_Drawable d);
1721 EAPI void      ecore_x_drawable_rectangle_fill(
1722    Ecore_X_Drawable d,
1723    Ecore_X_GC       gc,
1724    int              x,
1725    int              y,
1726    int              width,
1727    int              height);
1728
1729 EAPI Eina_Bool                      ecore_x_cursor_color_supported_get(void);
1730 EAPI Ecore_X_Cursor                 ecore_x_cursor_new(Ecore_X_Window win,
1731                                                        int           *pixels,
1732                                                        int            w,
1733                                                        int            h,
1734                                                        int            hot_x,
1735                                                        int            hot_y);
1736 EAPI void                           ecore_x_cursor_free(Ecore_X_Cursor c);
1737 EAPI Ecore_X_Cursor                 ecore_x_cursor_shape_get(int shape);
1738 EAPI void                           ecore_x_cursor_size_set(int size);
1739 EAPI int                            ecore_x_cursor_size_get(void);
1740
1741 /* FIXME: these funcs need categorising */
1742 EAPI Ecore_X_Window *               ecore_x_window_root_list(int *num_ret);
1743 EAPI Ecore_X_Window                 ecore_x_window_root_first_get(void);
1744 EAPI Eina_Bool                      ecore_x_window_manage(Ecore_X_Window win);
1745 EAPI void                           ecore_x_window_container_manage(
1746    Ecore_X_Window win);
1747 EAPI void                           ecore_x_window_client_manage(Ecore_X_Window win);
1748 EAPI void                           ecore_x_window_sniff(Ecore_X_Window win);
1749 EAPI void                           ecore_x_window_client_sniff(Ecore_X_Window win);
1750
1751 EAPI Ecore_X_Atom                   ecore_x_atom_get(const char *name);
1752 EAPI void                           ecore_x_atoms_get(const char  **names,
1753                                                       int           num,
1754                                                       Ecore_X_Atom *atoms);
1755 EAPI char *                         ecore_x_atom_name_get(Ecore_X_Atom atom);
1756
1757 EAPI void                           ecore_x_icccm_init(void);
1758 EAPI void                           ecore_x_icccm_state_set(
1759    Ecore_X_Window win,
1760    Ecore_X_Window_State_Hint
1761    state);
1762 EAPI Ecore_X_Window_State_Hint      ecore_x_icccm_state_get(Ecore_X_Window win);
1763 EAPI void                           ecore_x_icccm_delete_window_send(
1764    Ecore_X_Window win,
1765    Ecore_X_Time   t);
1766 EAPI void                           ecore_x_icccm_take_focus_send(Ecore_X_Window win,
1767                                                                   Ecore_X_Time   t);
1768 EAPI void                           ecore_x_icccm_save_yourself_send(
1769    Ecore_X_Window win,
1770    Ecore_X_Time   t);
1771 EAPI void                           ecore_x_icccm_move_resize_send(
1772    Ecore_X_Window win,
1773    int            x,
1774    int            y,
1775    int            w,
1776    int            h);
1777 EAPI void                           ecore_x_icccm_hints_set(
1778    Ecore_X_Window win,
1779    Eina_Bool      accepts_focus,
1780    Ecore_X_Window_State_Hint
1781    initial_state,
1782    Ecore_X_Pixmap
1783    icon_pixmap,
1784    Ecore_X_Pixmap icon_mask,
1785    Ecore_X_Window
1786    icon_window,
1787    Ecore_X_Window
1788    window_group,
1789    Eina_Bool      is_urgent);
1790 EAPI Eina_Bool ecore_x_icccm_hints_get(Ecore_X_Window             win,
1791                                       Eina_Bool                 *accepts_focus,
1792                                       Ecore_X_Window_State_Hint *initial_state,
1793                                       Ecore_X_Pixmap            *icon_pixmap,
1794                                       Ecore_X_Pixmap            *icon_mask,
1795                                       Ecore_X_Window            *icon_window,
1796                                       Ecore_X_Window            *window_group,
1797                                       Eina_Bool                 *is_urgent);
1798 EAPI void      ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win,
1799                                                 Eina_Bool request_pos,
1800                                                 Ecore_X_Gravity gravity,
1801                                                 int min_w, int min_h,
1802                                                 int max_w, int max_h,
1803                                                 int base_w, int base_h,
1804                                                 int step_x, int step_y,
1805                                                 double min_aspect,
1806                                                 double max_aspect);
1807 EAPI Eina_Bool ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win,
1808                                                Eina_Bool *request_pos,
1809                                                Ecore_X_Gravity *gravity,
1810                                                int *min_w, int *min_h,
1811                                                int *max_w, int *max_h,
1812                                                int *base_w, int *base_h,
1813                                                int *step_x, int *step_y,
1814                                                double *min_aspect,
1815                                                double *max_aspect);
1816 EAPI void                ecore_x_icccm_title_set(Ecore_X_Window win, const char *t);
1817 EAPI char *              ecore_x_icccm_title_get(Ecore_X_Window win);
1818 EAPI void                ecore_x_icccm_protocol_atoms_set(Ecore_X_Window win,
1819                                                           Ecore_X_Atom  *protos,
1820                                                           int            num);
1821 EAPI void                ecore_x_icccm_protocol_set(Ecore_X_Window      win,
1822                                                     Ecore_X_WM_Protocol protocol,
1823                                                     Eina_Bool           on);
1824 EAPI Eina_Bool           ecore_x_icccm_protocol_isset(Ecore_X_Window      win,
1825                                                       Ecore_X_WM_Protocol protocol);
1826 EAPI void                ecore_x_icccm_name_class_set(Ecore_X_Window win,
1827                                                       const char    *n,
1828                                                       const char    *c);
1829 EAPI void                ecore_x_icccm_name_class_get(Ecore_X_Window win,
1830                                                       char         **n,
1831                                                       char         **c);
1832 EAPI char *              ecore_x_icccm_client_machine_get(Ecore_X_Window win);
1833 EAPI void                ecore_x_icccm_command_set(Ecore_X_Window win,
1834                                                    int            argc,
1835                                                    char         **argv);
1836 EAPI void                ecore_x_icccm_command_get(Ecore_X_Window win,
1837                                                    int           *argc,
1838                                                    char        ***argv);
1839 EAPI char *              ecore_x_icccm_icon_name_get(Ecore_X_Window win);
1840 EAPI void                ecore_x_icccm_icon_name_set(Ecore_X_Window win,
1841                                                      const char    *t);
1842 EAPI void                ecore_x_icccm_colormap_window_set(Ecore_X_Window win,
1843                                                            Ecore_X_Window subwin);
1844 EAPI void                ecore_x_icccm_colormap_window_unset(Ecore_X_Window win,
1845                                                              Ecore_X_Window subwin);
1846 EAPI void                ecore_x_icccm_transient_for_set(Ecore_X_Window win,
1847                                                          Ecore_X_Window forwin);
1848 EAPI void                ecore_x_icccm_transient_for_unset(Ecore_X_Window win);
1849 EAPI Ecore_X_Window      ecore_x_icccm_transient_for_get(Ecore_X_Window win);
1850 EAPI void                ecore_x_icccm_window_role_set(Ecore_X_Window win,
1851                                                        const char    *role);
1852 EAPI char *              ecore_x_icccm_window_role_get(Ecore_X_Window win);
1853 EAPI void                ecore_x_icccm_client_leader_set(Ecore_X_Window win,
1854                                                          Ecore_X_Window l);
1855 EAPI Ecore_X_Window      ecore_x_icccm_client_leader_get(Ecore_X_Window win);
1856 EAPI void                ecore_x_icccm_iconic_request_send(Ecore_X_Window win,
1857                                                            Ecore_X_Window root);
1858
1859 typedef enum _Ecore_X_MWM_Hint_Func
1860 {
1861    ECORE_X_MWM_HINT_FUNC_ALL = (1 << 0),
1862    ECORE_X_MWM_HINT_FUNC_RESIZE = (1 << 1),
1863    ECORE_X_MWM_HINT_FUNC_MOVE = (1 << 2),
1864    ECORE_X_MWM_HINT_FUNC_MINIMIZE = (1 << 3),
1865    ECORE_X_MWM_HINT_FUNC_MAXIMIZE = (1 << 4),
1866    ECORE_X_MWM_HINT_FUNC_CLOSE = (1 << 5)
1867 } Ecore_X_MWM_Hint_Func;
1868
1869 typedef enum _Ecore_X_MWM_Hint_Decor
1870 {
1871    ECORE_X_MWM_HINT_DECOR_ALL = (1 << 0),
1872    ECORE_X_MWM_HINT_DECOR_BORDER = (1 << 1),
1873    ECORE_X_MWM_HINT_DECOR_RESIZEH = (1 << 2),
1874    ECORE_X_MWM_HINT_DECOR_TITLE = (1 << 3),
1875    ECORE_X_MWM_HINT_DECOR_MENU = (1 << 4),
1876    ECORE_X_MWM_HINT_DECOR_MINIMIZE = (1 << 5),
1877    ECORE_X_MWM_HINT_DECOR_MAXIMIZE = (1 << 6)
1878 } Ecore_X_MWM_Hint_Decor;
1879
1880 typedef enum _Ecore_X_MWM_Hint_Input
1881 {
1882    ECORE_X_MWM_HINT_INPUT_MODELESS = 0,
1883    ECORE_X_MWM_HINT_INPUT_PRIMARY_APPLICATION_MODAL = 1,
1884    ECORE_X_MWM_HINT_INPUT_SYSTEM_MODAL = 2,
1885    ECORE_X_MWM_HINT_INPUT_FULL_APPLICATION_MODAL = 3
1886 } Ecore_X_MWM_Hint_Input;
1887
1888 EAPI Eina_Bool ecore_x_mwm_hints_get(
1889    Ecore_X_Window win,
1890    Ecore_X_MWM_Hint_Func
1891                  *fhint,
1892    Ecore_X_MWM_Hint_Decor
1893                  *dhint,
1894    Ecore_X_MWM_Hint_Input
1895                  *ihint);
1896 EAPI void      ecore_x_mwm_borderless_set(
1897    Ecore_X_Window win,
1898    Eina_Bool      borderless);
1899
1900 /* netwm */
1901 EAPI void      ecore_x_netwm_init(void);
1902 EAPI void      ecore_x_netwm_shutdown(void);
1903 EAPI void      ecore_x_netwm_wm_identify(
1904    Ecore_X_Window root,
1905    Ecore_X_Window check,
1906    const char    *wm_name);
1907 EAPI void      ecore_x_netwm_supported_set(
1908    Ecore_X_Window root,
1909    Ecore_X_Atom  *supported,
1910    int            num);
1911 EAPI Eina_Bool ecore_x_netwm_supported_get(
1912    Ecore_X_Window root,
1913    Ecore_X_Atom **supported,
1914    int           *num);
1915 EAPI void      ecore_x_netwm_desk_count_set(
1916    Ecore_X_Window root,
1917    unsigned int   n_desks);
1918 EAPI void      ecore_x_netwm_desk_roots_set(
1919    Ecore_X_Window  root,
1920    Ecore_X_Window *vroots,
1921    unsigned int    n_desks);
1922 EAPI void      ecore_x_netwm_desk_names_set(
1923    Ecore_X_Window root,
1924    const char   **names,
1925    unsigned int   n_desks);
1926 EAPI void      ecore_x_netwm_desk_size_set(
1927    Ecore_X_Window root,
1928    unsigned int   width,
1929    unsigned int   height);
1930 EAPI void      ecore_x_netwm_desk_workareas_set(
1931    Ecore_X_Window root,
1932    unsigned int  *areas,
1933    unsigned int   n_desks);
1934 EAPI void      ecore_x_netwm_desk_current_set(
1935    Ecore_X_Window root,
1936    unsigned int   desk);
1937 EAPI void      ecore_x_netwm_desk_viewports_set(
1938    Ecore_X_Window root,
1939    unsigned int  *origins,
1940    unsigned int   n_desks);
1941 EAPI void      ecore_x_netwm_desk_layout_set(
1942    Ecore_X_Window root,
1943    int            orientation,
1944    int            columns,
1945    int            rows,
1946    int            starting_corner);
1947 EAPI void      ecore_x_netwm_showing_desktop_set(
1948    Ecore_X_Window root,
1949    Eina_Bool      on);
1950 EAPI void      ecore_x_netwm_client_list_set(
1951    Ecore_X_Window  root,
1952    Ecore_X_Window *p_clients,
1953    unsigned int    n_clients);
1954 EAPI void      ecore_x_netwm_client_list_stacking_set(
1955    Ecore_X_Window  root,
1956    Ecore_X_Window *p_clients,
1957    unsigned int    n_clients);
1958 EAPI void      ecore_x_netwm_client_active_set(
1959    Ecore_X_Window root,
1960    Ecore_X_Window win);
1961 EAPI void      ecore_x_netwm_client_active_request(
1962    Ecore_X_Window root,
1963    Ecore_X_Window win,
1964    int            type,
1965    Ecore_X_Window current_win);
1966 EAPI void      ecore_x_netwm_name_set(Ecore_X_Window    win,
1967                                             const char *name);
1968 EAPI int       ecore_x_netwm_name_get(Ecore_X_Window win,
1969                                             char   **name);
1970 EAPI void      ecore_x_netwm_startup_id_set(
1971    Ecore_X_Window win,
1972    const char    *id);
1973 EAPI int       ecore_x_netwm_startup_id_get(
1974    Ecore_X_Window win,
1975    char         **id);
1976 EAPI void      ecore_x_netwm_visible_name_set(
1977    Ecore_X_Window win,
1978    const char    *name);
1979 EAPI int       ecore_x_netwm_visible_name_get(
1980    Ecore_X_Window win,
1981    char         **name);
1982 EAPI void      ecore_x_netwm_icon_name_set(
1983    Ecore_X_Window win,
1984    const char    *name);
1985 EAPI int       ecore_x_netwm_icon_name_get(
1986    Ecore_X_Window win,
1987    char         **name);
1988 EAPI void      ecore_x_netwm_visible_icon_name_set(
1989    Ecore_X_Window win,
1990    const char    *name);
1991 EAPI int       ecore_x_netwm_visible_icon_name_get(
1992    Ecore_X_Window win,
1993    char         **name);
1994 EAPI void      ecore_x_netwm_desktop_set(
1995    Ecore_X_Window win,
1996    unsigned int   desk);
1997 EAPI Eina_Bool ecore_x_netwm_desktop_get(
1998    Ecore_X_Window win,
1999    unsigned int  *desk);
2000 EAPI void      ecore_x_netwm_strut_set(Ecore_X_Window win,
2001                                              int      left,
2002                                              int      right,
2003                                              int      top,
2004                                              int      bottom);
2005 EAPI Eina_Bool ecore_x_netwm_strut_get(Ecore_X_Window win,
2006                                              int     *left,
2007                                              int     *right,
2008                                              int     *top,
2009                                              int     *bottom);
2010 EAPI void      ecore_x_netwm_strut_partial_set(
2011    Ecore_X_Window win,
2012    int            left,
2013    int            right,
2014    int            top,
2015    int            bottom,
2016    int            left_start_y,
2017    int            left_end_y,
2018    int            right_start_y,
2019    int            right_end_y,
2020    int            top_start_x,
2021    int            top_end_x,
2022    int            bottom_start_x,
2023    int            bottom_end_x);
2024 EAPI Eina_Bool ecore_x_netwm_strut_partial_get(
2025    Ecore_X_Window win,
2026    int           *left,
2027    int           *right,
2028    int           *top,
2029    int           *bottom,
2030    int           *left_start_y,
2031    int           *left_end_y,
2032    int           *right_start_y,
2033    int           *right_end_y,
2034    int           *top_start_x,
2035    int           *top_end_x,
2036    int           *bottom_start_x,
2037    int           *bottom_end_x);
2038
2039 EAPI Eina_Bool                            ecore_x_netwm_icons_get(Ecore_X_Window       win,
2040                                                                         Ecore_X_Icon **icon,
2041                                                                         int           *num);
2042 EAPI void                                 ecore_x_netwm_icon_geometry_set(
2043    Ecore_X_Window win,
2044    int            x,
2045    int            y,
2046    int            width,
2047    int            height);
2048 EAPI Eina_Bool                            ecore_x_netwm_icon_geometry_get(
2049    Ecore_X_Window win,
2050    int           *x,
2051    int           *y,
2052    int           *width,
2053    int           *height);
2054 EAPI void                                 ecore_x_netwm_pid_set(Ecore_X_Window win,
2055                                                                       int      pid);
2056 EAPI Eina_Bool                            ecore_x_netwm_pid_get(Ecore_X_Window win,
2057                                                                       int     *pid);
2058 EAPI void                                 ecore_x_netwm_handled_icons_set(
2059    Ecore_X_Window win);
2060 EAPI Eina_Bool                            ecore_x_netwm_handled_icons_get(
2061    Ecore_X_Window win);
2062 EAPI void                                 ecore_x_netwm_user_time_set(
2063    Ecore_X_Window win,
2064    unsigned int   time);
2065 EAPI Eina_Bool                            ecore_x_netwm_user_time_get(
2066    Ecore_X_Window win,
2067    unsigned int  *time);
2068 EAPI void                                 ecore_x_netwm_window_state_set(
2069    Ecore_X_Window        win,
2070    Ecore_X_Window_State *state,
2071    unsigned int          num);
2072 EAPI Eina_Bool                            ecore_x_netwm_window_state_get(
2073    Ecore_X_Window         win,
2074    Ecore_X_Window_State **state,
2075    unsigned int          *num);
2076 EAPI void                                 ecore_x_netwm_window_type_set(
2077    Ecore_X_Window      win,
2078    Ecore_X_Window_Type type);
2079 EAPI Eina_Bool                            ecore_x_netwm_window_type_get(
2080    Ecore_X_Window       win,
2081    Ecore_X_Window_Type *type);
2082 EAPI int                                  ecore_x_netwm_window_types_get(
2083    Ecore_X_Window        win,
2084    Ecore_X_Window_Type **types);
2085 EAPI Eina_Bool                            ecore_x_netwm_allowed_action_isset(
2086    Ecore_X_Window win,
2087    Ecore_X_Action action);
2088 EAPI void                                 ecore_x_netwm_allowed_action_set(
2089    Ecore_X_Window  win,
2090    Ecore_X_Action *action,
2091    unsigned int    num);
2092 EAPI Eina_Bool                            ecore_x_netwm_allowed_action_get(
2093    Ecore_X_Window   win,
2094    Ecore_X_Action **action,
2095    unsigned int    *num);
2096 EAPI void                                 ecore_x_netwm_opacity_set(
2097    Ecore_X_Window win,
2098    unsigned int   opacity);
2099 EAPI Eina_Bool                            ecore_x_netwm_opacity_get(
2100    Ecore_X_Window win,
2101    unsigned int  *opacity);
2102 EAPI void                                 ecore_x_netwm_frame_size_set(
2103    Ecore_X_Window win,
2104    int            fl,
2105    int            fr,
2106    int            ft,
2107    int            fb);
2108 EAPI Eina_Bool                            ecore_x_netwm_frame_size_get(
2109    Ecore_X_Window win,
2110    int           *fl,
2111    int           *fr,
2112    int           *ft,
2113    int           *fb);
2114 EAPI Eina_Bool                            ecore_x_netwm_sync_counter_get(
2115    Ecore_X_Window        win,
2116    Ecore_X_Sync_Counter *counter);
2117 EAPI void                                 ecore_x_netwm_ping_send(Ecore_X_Window win);
2118 EAPI void                                 ecore_x_netwm_sync_request_send(
2119    Ecore_X_Window win,
2120    unsigned int   serial);
2121 EAPI void                                 ecore_x_netwm_state_request_send(
2122    Ecore_X_Window       win,
2123    Ecore_X_Window       root,
2124    Ecore_X_Window_State s1,
2125    Ecore_X_Window_State s2,
2126    Eina_Bool            set);
2127 EAPI void                                 ecore_x_netwm_desktop_request_send(
2128    Ecore_X_Window win,
2129    Ecore_X_Window root,
2130    unsigned int   desktop);
2131
2132 EAPI void                                 ecore_x_e_init(void);
2133 EAPI void                                 ecore_x_e_frame_size_set(
2134    Ecore_X_Window win,
2135    int            fl,
2136    int            fr,
2137    int            ft,
2138    int            fb);
2139 EAPI void                                 ecore_x_e_virtual_keyboard_set(
2140    Ecore_X_Window win,
2141    unsigned int   is_keyboard);
2142 EAPI Eina_Bool                            ecore_x_e_virtual_keyboard_get(
2143    Ecore_X_Window win);
2144 EAPI void                                 ecore_x_e_virtual_keyboard_state_set(
2145    Ecore_X_Window                 win,
2146    Ecore_X_Virtual_Keyboard_State state);
2147 EAPI Ecore_X_Virtual_Keyboard_State       ecore_x_e_virtual_keyboard_state_get(
2148    Ecore_X_Window win);
2149 EAPI void                                 ecore_x_e_virtual_keyboard_state_send(
2150    Ecore_X_Window                 win,
2151    Ecore_X_Virtual_Keyboard_State state);
2152
2153 /* Illume functions */
2154 EAPI void                                 ecore_x_e_illume_zone_set(
2155    Ecore_X_Window win,
2156    Ecore_X_Window zone);
2157 EAPI Ecore_X_Window                       ecore_x_e_illume_zone_get(
2158    Ecore_X_Window win);
2159 EAPI void                                 ecore_x_e_illume_zone_list_set(
2160    Ecore_X_Window  win,
2161    Ecore_X_Window *zones,
2162    unsigned int    n_zones);
2163 EAPI void                                 ecore_x_e_illume_conformant_set(
2164    Ecore_X_Window win,
2165    unsigned int   is_conformant);
2166 EAPI Eina_Bool                            ecore_x_e_illume_conformant_get(
2167    Ecore_X_Window win);
2168 EAPI void                                 ecore_x_e_illume_mode_set(
2169    Ecore_X_Window      win,
2170    Ecore_X_Illume_Mode mode);
2171 EAPI Ecore_X_Illume_Mode                  ecore_x_e_illume_mode_get(
2172    Ecore_X_Window win);
2173 EAPI void                                 ecore_x_e_illume_mode_send(
2174    Ecore_X_Window      win,
2175    Ecore_X_Illume_Mode mode);
2176 EAPI void                                 ecore_x_e_illume_focus_back_send(
2177    Ecore_X_Window win);
2178 EAPI void                                 ecore_x_e_illume_focus_forward_send(
2179    Ecore_X_Window win);
2180 EAPI void                                 ecore_x_e_illume_focus_home_send(
2181    Ecore_X_Window win);
2182 EAPI void                                 ecore_x_e_illume_close_send(
2183    Ecore_X_Window win);
2184 EAPI void                                 ecore_x_e_illume_home_new_send(
2185    Ecore_X_Window win);
2186 EAPI void                                 ecore_x_e_illume_home_del_send(
2187    Ecore_X_Window win);
2188 EAPI void                                 ecore_x_e_illume_drag_set(
2189    Ecore_X_Window win,
2190    unsigned int   drag);
2191 EAPI Eina_Bool                            ecore_x_e_illume_drag_get(
2192    Ecore_X_Window win);
2193 EAPI void                                 ecore_x_e_illume_drag_locked_set(
2194    Ecore_X_Window win,
2195    unsigned int   is_locked);
2196 EAPI Eina_Bool                            ecore_x_e_illume_drag_locked_get(
2197    Ecore_X_Window win);
2198 EAPI void                                 ecore_x_e_illume_drag_start_send(
2199    Ecore_X_Window win);
2200 EAPI void                                 ecore_x_e_illume_drag_end_send(
2201    Ecore_X_Window win);
2202 EAPI void                                 ecore_x_e_illume_indicator_geometry_set(
2203    Ecore_X_Window win,
2204    int            x,
2205    int            y,
2206    int            w,
2207    int            h);
2208 EAPI Eina_Bool                            ecore_x_e_illume_indicator_geometry_get(
2209    Ecore_X_Window win,
2210    int           *x,
2211    int           *y,
2212    int           *w,
2213    int           *h);
2214 EAPI void                                 ecore_x_e_illume_softkey_geometry_set(
2215    Ecore_X_Window win,
2216    int            x,
2217    int            y,
2218    int            w,
2219    int            h);
2220 EAPI Eina_Bool                            ecore_x_e_illume_softkey_geometry_get(
2221    Ecore_X_Window win,
2222    int           *x,
2223    int           *y,
2224    int           *w,
2225    int           *h);
2226 EAPI void                                 ecore_x_e_illume_keyboard_geometry_set(
2227    Ecore_X_Window win,
2228    int            x,
2229    int            y,
2230    int            w,
2231    int            h);
2232 EAPI Eina_Bool                            ecore_x_e_illume_keyboard_geometry_get(
2233    Ecore_X_Window win,
2234    int           *x,
2235    int           *y,
2236    int           *w,
2237    int           *h);
2238 EAPI void                                 ecore_x_e_illume_quickpanel_set(
2239    Ecore_X_Window win,
2240    unsigned int   is_quickpanel);
2241 EAPI Eina_Bool                            ecore_x_e_illume_quickpanel_get(
2242    Ecore_X_Window win);
2243 EAPI void                                 ecore_x_e_illume_quickpanel_state_set(
2244    Ecore_X_Window                  win,
2245    Ecore_X_Illume_Quickpanel_State state);
2246 EAPI Ecore_X_Illume_Quickpanel_State      ecore_x_e_illume_quickpanel_state_get(
2247    Ecore_X_Window win);
2248 EAPI void                                 ecore_x_e_illume_quickpanel_state_send(
2249    Ecore_X_Window                  win,
2250    Ecore_X_Illume_Quickpanel_State state);
2251 EAPI void                                 ecore_x_e_illume_quickpanel_state_toggle(
2252    Ecore_X_Window win);
2253 EAPI void                                 ecore_x_e_illume_quickpanel_priority_major_set(
2254    Ecore_X_Window win,
2255    unsigned int   priority);
2256 EAPI int                                  ecore_x_e_illume_quickpanel_priority_major_get(
2257    Ecore_X_Window win);
2258 EAPI void                                 ecore_x_e_illume_quickpanel_priority_minor_set(
2259    Ecore_X_Window win,
2260    unsigned int   priority);
2261 EAPI int                                  ecore_x_e_illume_quickpanel_priority_minor_get(
2262    Ecore_X_Window win);
2263 EAPI void                                 ecore_x_e_illume_quickpanel_zone_set(
2264    Ecore_X_Window win,
2265    unsigned int   zone);
2266 EAPI int                                  ecore_x_e_illume_quickpanel_zone_get(
2267    Ecore_X_Window win);
2268 EAPI void
2269                                           ecore_x_e_illume_quickpanel_zone_request_send(
2270    Ecore_X_Window win);
2271 EAPI void
2272                                           ecore_x_e_illume_quickpanel_position_update_send(
2273    Ecore_X_Window win);
2274
2275 /* added by doyoun.kang - for sliding window */
2276 EAPI void                                 ecore_x_e_illume_sliding_win_state_set(
2277    Ecore_X_Window win,
2278    unsigned int   is_visible);
2279 EAPI int                                  ecore_x_e_illume_sliding_win_state_get(
2280    Ecore_X_Window win);
2281 EAPI void                                 ecore_x_e_illume_sliding_win_geometry_set(
2282    Ecore_X_Window win, 
2283    int            x,
2284    int            y,
2285    int            w,
2286    int            h);
2287 EAPI int                                  ecore_x_e_illume_sliding_win_geometry_get(
2288    Ecore_X_Window win,
2289    int           *x,
2290    int           *y,
2291    int           *w,
2292    int           *h);
2293
2294 EAPI void                                 ecore_x_e_comp_sync_counter_set(
2295    Ecore_X_Window       win,
2296    Ecore_X_Sync_Counter counter);
2297 EAPI Ecore_X_Sync_Counter                 ecore_x_e_comp_sync_counter_get(
2298    Ecore_X_Window win);
2299 EAPI void                                 ecore_x_e_comp_sync_draw_done_send(
2300    Ecore_X_Window root,
2301    Ecore_X_Window win);
2302 EAPI void                                 ecore_x_e_comp_sync_draw_size_done_send(
2303    Ecore_X_Window root,
2304    Ecore_X_Window win,
2305    int w,
2306    int h);
2307 EAPI void                                 ecore_x_e_comp_sync_supported_set(
2308    Ecore_X_Window root,
2309    Eina_Bool      enabled);
2310 EAPI Eina_Bool                            ecore_x_e_comp_sync_supported_get(
2311    Ecore_X_Window root);
2312 EAPI void                                 ecore_x_e_comp_sync_begin_send(
2313    Ecore_X_Window win);
2314 EAPI void                                 ecore_x_e_comp_sync_end_send(
2315    Ecore_X_Window win);
2316 EAPI void                                 ecore_x_e_comp_sync_cancel_send(
2317    Ecore_X_Window win);
2318
2319 EAPI void                                 ecore_x_e_comp_flush_send(
2320    Ecore_X_Window win);
2321 EAPI void                                 ecore_x_e_comp_dump_send(
2322    Ecore_X_Window win);
2323 EAPI void                                 ecore_x_e_comp_pixmap_set(
2324    Ecore_X_Window win,
2325    Ecore_X_Pixmap pixmap);
2326 EAPI Ecore_X_Pixmap                       ecore_x_e_comp_pixmap_get(
2327    Ecore_X_Window win);
2328
2329 EAPI void                 ecore_x_e_comp_dri_buff_flip_supported_set(Ecore_X_Window root, Eina_Bool enabled);
2330 EAPI Eina_Bool            ecore_x_e_comp_dri_buff_flip_supported_get(Ecore_X_Window root);
2331   
2332 EAPI Ecore_X_Sync_Alarm                   ecore_x_sync_alarm_new(
2333    Ecore_X_Sync_Counter counter);
2334 EAPI Eina_Bool                            ecore_x_sync_alarm_free(
2335    Ecore_X_Sync_Alarm alarm);
2336 EAPI Eina_Bool                            ecore_x_sync_counter_query(
2337    Ecore_X_Sync_Counter counter,
2338    unsigned int        *val);
2339 EAPI Ecore_X_Sync_Counter                 ecore_x_sync_counter_new(int val);
2340 EAPI void                                 ecore_x_sync_counter_free(
2341    Ecore_X_Sync_Counter counter);
2342 EAPI void                                 ecore_x_sync_counter_inc(
2343    Ecore_X_Sync_Counter counter,
2344    int                  by);
2345 EAPI void                                 ecore_x_sync_counter_val_wait(
2346    Ecore_X_Sync_Counter counter,
2347    int                  val);
2348    
2349 EAPI void ecore_x_sync_counter_set(Ecore_X_Sync_Counter counter, int val);
2350 EAPI void ecore_x_sync_counter_2_set(Ecore_X_Sync_Counter counter, int val_hi, unsigned int val_lo);
2351 EAPI Eina_Bool ecore_x_sync_counter_2_query(Ecore_X_Sync_Counter counter, int *val_hi, unsigned int *val_lo);
2352
2353 EAPI int                                  ecore_x_xinerama_screen_count_get(void);
2354 EAPI Eina_Bool                            ecore_x_xinerama_screen_geometry_get(
2355    int  screen,
2356    int *x,
2357    int *y,
2358    int *w,
2359    int *h);
2360
2361 EAPI Eina_Bool ecore_x_screensaver_event_available_get(
2362    void);
2363 EAPI int       ecore_x_screensaver_idle_time_get(void);
2364 EAPI void      ecore_x_screensaver_set(int timeout,
2365                                        int interval,
2366                                        int prefer_blanking,
2367                                        int allow_exposures);
2368 EAPI void      ecore_x_screensaver_timeout_set(
2369    int timeout);
2370 EAPI int       ecore_x_screensaver_timeout_get(void);
2371 EAPI void      ecore_x_screensaver_blank_set(int timeout);
2372 EAPI int       ecore_x_screensaver_blank_get(void);
2373 EAPI void      ecore_x_screensaver_expose_set(int timeout);
2374 EAPI int       ecore_x_screensaver_expose_get(void);
2375 EAPI void      ecore_x_screensaver_interval_set(
2376    int timeout);
2377 EAPI int       ecore_x_screensaver_interval_get(void);
2378 EAPI void      ecore_x_screensaver_event_listen_set(
2379    Eina_Bool on);
2380
2381 /* FIXME: these funcs need categorising */
2382
2383 typedef struct _Ecore_X_Window_Attributes
2384 {
2385    Ecore_X_Window root;
2386    int            x, y, w, h;
2387    int            border;
2388    int            depth;
2389    Eina_Bool      visible : 1;
2390    Eina_Bool      viewable : 1;
2391    Eina_Bool      override : 1;
2392    Eina_Bool      input_only : 1;
2393    Eina_Bool      save_under : 1;
2394    struct
2395      {
2396         Ecore_X_Event_Mask mine;
2397         Ecore_X_Event_Mask all;
2398         Ecore_X_Event_Mask no_propagate;
2399      } event_mask;
2400    Ecore_X_Gravity  window_gravity;
2401    Ecore_X_Gravity  pixel_gravity;
2402    Ecore_X_Colormap colormap;
2403    Ecore_X_Visual   visual;
2404    /* FIXME: missing
2405     * int map_installed;
2406     * Screen *screen;
2407     */
2408 } Ecore_X_Window_Attributes;
2409
2410 EAPI Eina_Bool            ecore_x_window_attributes_get(
2411    Ecore_X_Window win,
2412    Ecore_X_Window_Attributes *
2413    att_ret);
2414 EAPI void                 ecore_x_window_save_set_add(Ecore_X_Window win);
2415 EAPI void                 ecore_x_window_save_set_del(Ecore_X_Window win);
2416 EAPI Ecore_X_Window *     ecore_x_window_children_get(Ecore_X_Window win, int *num);
2417
2418 EAPI Eina_Bool            ecore_x_pointer_control_set(int accel_num,
2419                                                       int accel_denom,
2420                                                       int threshold);
2421 EAPI Eina_Bool            ecore_x_pointer_control_get(int *accel_num,
2422                                                       int *accel_denom,
2423                                                       int *threshold);
2424 EAPI Eina_Bool            ecore_x_pointer_mapping_set(unsigned char *map, int nmap);
2425 EAPI Eina_Bool            ecore_x_pointer_mapping_get(unsigned char *map, int nmap);
2426 EAPI Eina_Bool            ecore_x_pointer_grab(Ecore_X_Window win);
2427 EAPI Eina_Bool            ecore_x_pointer_confine_grab(Ecore_X_Window win);
2428 EAPI void                 ecore_x_pointer_ungrab(void);
2429 EAPI Eina_Bool            ecore_x_pointer_warp(Ecore_X_Window win, int x, int y);
2430 EAPI Eina_Bool            ecore_x_keyboard_grab(Ecore_X_Window win);
2431 EAPI void                 ecore_x_keyboard_ungrab(void);
2432 EAPI void                 ecore_x_grab(void);
2433 EAPI void                 ecore_x_ungrab(void);
2434 EAPI void                 ecore_x_passive_grab_replay_func_set(Eina_Bool               (*func)(void *data,
2435                                                                                  int   event_type,
2436                                                                                  void *event),
2437                                                                void                   *data);
2438 EAPI void                 ecore_x_window_button_grab(Ecore_X_Window win, int button,
2439                                                      Ecore_X_Event_Mask event_mask,
2440                                                      int mod, int any_mod);
2441 EAPI void                 ecore_x_window_button_ungrab(Ecore_X_Window win,
2442                                                        int            button,
2443                                                        int            mod,
2444                                                        int            any_mod);
2445 EAPI void                 ecore_x_window_key_grab(Ecore_X_Window win,
2446                                                   const char    *key,
2447                                                   int            mod,
2448                                                   int            any_mod);
2449 EAPI void                 ecore_x_window_key_ungrab(Ecore_X_Window win,
2450                                                     const char    *key,
2451                                                     int            mod,
2452                                                     int            any_mod);
2453
2454 EAPI void                 ecore_x_focus_reset(void);
2455 EAPI void                 ecore_x_events_allow_all(void);
2456 EAPI void                 ecore_x_pointer_last_xy_get(int *x, int *y);
2457 EAPI void                 ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y);
2458
2459 /* ecore_x_region.c */
2460 EAPI Ecore_X_XRegion *    ecore_x_xregion_new(void);
2461 EAPI void                 ecore_x_xregion_free(Ecore_X_XRegion *region);
2462 EAPI Eina_Bool            ecore_x_xregion_set(Ecore_X_XRegion *region,
2463                                               Ecore_X_GC       gc);
2464 EAPI void                 ecore_x_xregion_translate(Ecore_X_XRegion *region,
2465                                                     int              x,
2466                                                     int              y);
2467 EAPI Eina_Bool            ecore_x_xregion_intersect(Ecore_X_XRegion *dst,
2468                                                     Ecore_X_XRegion *r1,
2469                                                     Ecore_X_XRegion *r2);
2470 EAPI Eina_Bool            ecore_x_xregion_union(Ecore_X_XRegion *dst,
2471                                                 Ecore_X_XRegion *r1,
2472                                                 Ecore_X_XRegion *r2);
2473 EAPI Eina_Bool            ecore_x_xregion_union_rect(Ecore_X_XRegion   *dst,
2474                                                      Ecore_X_XRegion   *src,
2475                                                      Ecore_X_Rectangle *rect);
2476 EAPI Eina_Bool            ecore_x_xregion_subtract(Ecore_X_XRegion *dst,
2477                                                    Ecore_X_XRegion *r1,
2478                                                    Ecore_X_XRegion *r2);
2479 EAPI Eina_Bool            ecore_x_xregion_is_empty(Ecore_X_XRegion *region);
2480 EAPI Eina_Bool            ecore_x_xregion_is_equal(Ecore_X_XRegion *r1,
2481                                                    Ecore_X_XRegion *r2);
2482 EAPI Eina_Bool            ecore_x_xregion_point_contain(Ecore_X_XRegion *region,
2483                                                         int              x,
2484                                                         int              y);
2485 EAPI Eina_Bool            ecore_x_xregion_rect_contain(Ecore_X_XRegion   *region,
2486                                                        Ecore_X_Rectangle *rect);
2487
2488 /* ecore_x_randr.c */
2489
2490 /* The usage of 'Ecore_X_Randr_None' or 'Ecore_X_Randr_Unset'
2491  * depends on the context. In most cases 'Ecore_X_Randr_Unset'
2492  * can be used, but in some cases -1 is a special value to
2493  * functions, thus 'Ecore_X_Randr_None' (=0) musst be used.
2494  */
2495
2496 typedef short Ecore_X_Randr_Refresh_Rate;
2497 typedef int   Ecore_X_Randr_Crtc_Gamma;
2498 typedef int   Ecore_X_Randr_Signal_Format;
2499 typedef int   Ecore_X_Randr_Signal_Property;
2500 typedef int   Ecore_X_Randr_Connector_Type;
2501
2502 typedef struct _Ecore_X_Randr_Mode_Info
2503 {
2504    Ecore_X_ID xid;
2505    unsigned int width;
2506    unsigned int height;
2507    unsigned long dotClock;
2508    unsigned int hSyncStart;
2509    unsigned int hSyncEnd;
2510    unsigned int hTotal;
2511    unsigned int hSkew;
2512    unsigned int vSyncStart;
2513    unsigned int vSyncEnd;
2514    unsigned int vTotal;
2515    char *name;
2516    unsigned int nameLength;
2517    unsigned long modeFlags;
2518 } Ecore_X_Randr_Mode_Info;
2519
2520 EAPI int             ecore_x_randr_version_get(
2521    void);
2522 EAPI Eina_Bool ecore_x_randr_query(void);
2523
2524 /* ecore_x_randr_11.c */
2525 EAPI Ecore_X_Randr_Orientation
2526                      ecore_x_randr_screen_primary_output_orientations_get(
2527    Ecore_X_Window root);
2528 EAPI Ecore_X_Randr_Orientation
2529                      ecore_x_randr_screen_primary_output_orientation_get(
2530    Ecore_X_Window root);
2531 EAPI Eina_Bool
2532                      ecore_x_randr_screen_primary_output_orientation_set(
2533    Ecore_X_Window root,
2534    Ecore_X_Randr_Orientation
2535    orientation);
2536 EAPI Ecore_X_Randr_Screen_Size_MM *
2537                      ecore_x_randr_screen_primary_output_sizes_get(
2538    Ecore_X_Window root,
2539    int *num);
2540 EAPI void
2541                      ecore_x_randr_screen_primary_output_current_size_get(
2542    Ecore_X_Window root,
2543    int *w,
2544    int *h,
2545    int *w_mm,
2546    int *h_mm,
2547    int *size_index);
2548 EAPI Eina_Bool
2549 ecore_x_randr_screen_primary_output_size_set(Ecore_X_Window root,
2550                                              int size_index);
2551 EAPI Ecore_X_Randr_Refresh_Rate
2552 ecore_x_randr_screen_primary_output_current_refresh_rate_get(
2553    Ecore_X_Window root);
2554 EAPI Ecore_X_Randr_Refresh_Rate *
2555 ecore_x_randr_screen_primary_output_refresh_rates_get(Ecore_X_Window root,
2556                                                       int size_index,
2557                                                       int *num);
2558 EAPI Eina_Bool
2559 ecore_x_randr_screen_primary_output_refresh_rate_set(
2560    Ecore_X_Window root,
2561    int size_index,
2562    Ecore_X_Randr_Refresh_Rate
2563    rate);
2564
2565 /* ecore_x_randr_12.c */
2566 EAPI void
2567 ecore_x_randr_events_select(Ecore_X_Window win,
2568                             Eina_Bool on);
2569
2570 EAPI void
2571 ecore_x_randr_screen_current_size_get(Ecore_X_Window root,
2572                                       int *w,
2573                                       int *h,
2574                                       int *w_mm,
2575                                       int *h_mm);
2576 EAPI void
2577           ecore_x_randr_screen_size_range_get(Ecore_X_Window root,
2578                                     int *wmin,
2579                                     int *hmin,
2580                                     int *wmax,
2581                                     int *hmax);
2582 EAPI void ecore_x_randr_screen_reset(
2583    Ecore_X_Window root);
2584 EAPI Eina_Bool
2585           ecore_x_randr_screen_current_size_set(Ecore_X_Window root,
2586                                       int w,
2587                                       int h,
2588                                       int w_mm,
2589                                       int h_mm);
2590 EAPI Ecore_X_Randr_Mode_Info **
2591                            ecore_x_randr_modes_info_get(Ecore_X_Window root,
2592                              int *num);
2593 EAPI Ecore_X_Randr_Mode_Info *
2594                            ecore_x_randr_mode_info_get(Ecore_X_Window root,
2595                             Ecore_X_Randr_Mode mode);
2596 EAPI void
2597                            ecore_x_randr_mode_info_free(
2598    Ecore_X_Randr_Mode_Info *mode_info);
2599 EAPI Ecore_X_Randr_Crtc *  ecore_x_randr_crtcs_get(
2600    Ecore_X_Window root,
2601    int *num);
2602 EAPI Ecore_X_Randr_Output *ecore_x_randr_outputs_get(
2603    Ecore_X_Window root,
2604    int *num);
2605 EAPI Ecore_X_Randr_Output *
2606                            ecore_x_randr_window_outputs_get(
2607    Ecore_X_Window window,
2608    int *num);
2609 EINA_DEPRECATED EAPI Ecore_X_Randr_Output *
2610                            ecore_x_randr_current_output_get(
2611    Ecore_X_Window window,
2612    int *num);
2613 EAPI Ecore_X_Randr_Crtc *
2614                            ecore_x_randr_current_crtc_get(Ecore_X_Window window,
2615                                int *num);
2616 EAPI Ecore_X_Randr_Output *
2617                            ecore_x_randr_crtc_outputs_get(Ecore_X_Window root,
2618                                Ecore_X_Randr_Crtc crtc,
2619                                int *num);
2620 EAPI Ecore_X_Randr_Output *
2621                            ecore_x_randr_crtc_possible_outputs_get(
2622    Ecore_X_Window root,
2623    Ecore_X_Randr_Crtc crtc,
2624    int *num);
2625 EAPI void
2626                            ecore_x_randr_crtc_geometry_get(Ecore_X_Window root,
2627                                 Ecore_X_Randr_Crtc crtc,
2628                                 int *x,
2629                                 int *y,
2630                                 int *w,
2631                                 int *h);
2632 EAPI void
2633 ecore_x_randr_crtc_pos_get(Ecore_X_Window root,
2634                            Ecore_X_Randr_Crtc crtc,
2635                            int *x,
2636                            int *y);
2637 EAPI Eina_Bool
2638 ecore_x_randr_crtc_pos_set(Ecore_X_Window root,
2639                            Ecore_X_Randr_Crtc crtc,
2640                            int x,
2641                            int y);
2642 EAPI Ecore_X_Randr_Mode
2643 ecore_x_randr_crtc_mode_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2644 EAPI Eina_Bool
2645 ecore_x_randr_crtc_mode_set(Ecore_X_Window root,
2646                             Ecore_X_Randr_Crtc crtc,
2647                             Ecore_X_Randr_Output *outputs,
2648                             int noutputs,
2649                             Ecore_X_Randr_Mode mode);
2650 EAPI void
2651 ecore_x_randr_crtc_size_get(Ecore_X_Window root,
2652                             Ecore_X_Randr_Crtc crtc,
2653                             int *w,
2654                             int *h);
2655 EAPI Ecore_X_Randr_Refresh_Rate
2656 ecore_x_randr_crtc_refresh_rate_get(Ecore_X_Window root,
2657                                     Ecore_X_Randr_Crtc crtc,
2658                                     Ecore_X_Randr_Mode mode);
2659 EAPI Ecore_X_Randr_Orientation
2660 ecore_x_randr_crtc_orientations_get(Ecore_X_Window root,
2661                                     Ecore_X_Randr_Crtc crtc);
2662 EAPI Ecore_X_Randr_Orientation
2663 ecore_x_randr_crtc_orientation_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2664 EAPI Eina_Bool
2665 ecore_x_randr_crtc_orientation_set(Ecore_X_Window root,
2666                                    Ecore_X_Randr_Crtc crtc,
2667                                    const Ecore_X_Randr_Orientation orientation);
2668 EAPI Eina_Bool
2669 ecore_x_randr_crtc_clone_set(Ecore_X_Window root,
2670                              Ecore_X_Randr_Crtc original,
2671                              Ecore_X_Randr_Crtc clone);
2672 EAPI Eina_Bool
2673 ecore_x_randr_crtc_settings_set(Ecore_X_Window root,
2674                                 Ecore_X_Randr_Crtc crtc,
2675                                 Ecore_X_Randr_Output *outputs,
2676                                 int noutputs,
2677                                 int x,
2678                                 int y,
2679                                 Ecore_X_Randr_Mode mode,
2680                                 Ecore_X_Randr_Orientation orientation);
2681 EAPI Eina_Bool
2682 ecore_x_randr_crtc_pos_relative_set(Ecore_X_Window root,
2683                                     Ecore_X_Randr_Crtc crtc_r1,
2684                                     Ecore_X_Randr_Crtc crtc_r2,
2685                                     Ecore_X_Randr_Output_Policy policy,
2686                                     Ecore_X_Randr_Relative_Alignment alignment);
2687 EAPI Ecore_X_Randr_Mode *
2688                      ecore_x_randr_output_modes_get(Ecore_X_Window root,
2689                                Ecore_X_Randr_Output output,
2690                                int *num,
2691                                int *npreferred);
2692 EAPI Ecore_X_Randr_Output *ecore_x_randr_output_clones_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2693 EAPI Ecore_X_Randr_Crtc *ecore_x_randr_output_possible_crtcs_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2694 EAPI Ecore_X_Randr_Crtc
2695                      ecore_x_randr_output_crtc_get(Ecore_X_Window root,
2696                               Ecore_X_Randr_Output output);
2697 EAPI char *
2698                      ecore_x_randr_output_name_get(Ecore_X_Window root,
2699                               Ecore_X_Randr_Output output,
2700                               int *len);
2701 EAPI int
2702                      ecore_x_randr_crtc_gamma_ramp_size_get(
2703    Ecore_X_Randr_Crtc crtc);
2704 EAPI Ecore_X_Randr_Crtc_Gamma **
2705                      ecore_x_randr_crtc_gamma_ramps_get(Ecore_X_Randr_Crtc crtc);
2706 EAPI Eina_Bool
2707                      ecore_x_randr_crtc_gamma_ramps_set(Ecore_X_Randr_Crtc crtc,
2708                                    const Ecore_X_Randr_Crtc_Gamma *red,
2709                                    const Ecore_X_Randr_Crtc_Gamma *green,
2710                                    const Ecore_X_Randr_Crtc_Gamma *blue);
2711 EAPI Eina_Bool
2712                      ecore_x_randr_move_all_crtcs_but(Ecore_X_Window root,
2713                                  const Ecore_X_Randr_Crtc *not_moved,
2714                                  int nnot_moved,
2715                                  int dx,
2716                                  int dy);
2717 EAPI Eina_Bool ecore_x_randr_move_crtcs(
2718    Ecore_X_Window root,
2719    const Ecore_X_Randr_Crtc *crtcs,
2720    int ncrtc,
2721    int dx,
2722    int dy);
2723 EAPI void
2724 ecore_x_randr_mode_size_get(Ecore_X_Window root,
2725                             Ecore_X_Randr_Mode mode,
2726                             int *w,
2727                             int *h);
2728 EAPI Ecore_X_Randr_Connection_Status
2729 ecore_x_randr_output_connection_status_get(Ecore_X_Window root,
2730                                            Ecore_X_Randr_Output output);
2731 EAPI void
2732 ecore_x_randr_output_size_mm_get(Ecore_X_Window root,
2733                                  Ecore_X_Randr_Output output,
2734                                  int *w,
2735                                  int *h);
2736 EAPI Eina_Bool
2737 ecore_x_randr_output_crtc_set(Ecore_X_Window root,
2738                               Ecore_X_Randr_Output output,
2739                               const Ecore_X_Randr_Crtc crtc);
2740
2741 /* ecore_x_randr_12_edid.c */
2742    
2743 /*
2744  * @brief Validates the header from raw EDID data.
2745  *
2746  * @param edid the edid structure
2747  * @param edid_length length of the edid structure
2748  * @return EINA_TRUE, if the header is valid. Else EINA_FALSE.
2749  */
2750 EAPI Eina_Bool
2751 ecore_x_randr_edid_valid_header(unsigned char *edid, 
2752                                 unsigned long edid_length);
2753    
2754 /*
2755  * @brief Checks whether a display's EDID has a valid checksum.
2756  *
2757  * @param edid the edid structure
2758  * @param edid_length length of the edid structure
2759  * @return EINA_TRUE, if the checksum is valid. Else EINA_FALSE.
2760  */
2761 EAPI Eina_Bool
2762 ecore_x_randr_edid_info_has_valid_checksum(unsigned char *edid,
2763                                            unsigned long edid_length);
2764    
2765 /*
2766  * @brief Get the encoded version from raw EDID data.
2767  *
2768  * The return value has the minor version in the lowest 8 bits, and the major
2769  * version in all the rest of the bits. i.e.
2770  * 
2771  * minor = (version & 0x000000ff);
2772  * major = (version & 0xffffff00) >> 8;
2773  * 
2774  * @param edid the edid structure
2775  * @param edid_length length of the edid structure
2776  * @return The encoded major and minor version encasuplated an int.
2777  */
2778 EAPI int
2779 ecore_x_randr_edid_version_get(unsigned char *edid, 
2780                                unsigned long edid_length);
2781    
2782 /*
2783  * @brief Get the encoded manufacturer from raw EDID data.
2784  *
2785  * @param edid the edid structure
2786  * @param edid_length length of the edid structure
2787  * @return The encoded manufacturer identifier.
2788  */
2789 EAPI char *
2790 ecore_x_randr_edid_manufacturer_name_get(unsigned char *edid,
2791                                          unsigned long edid_length);
2792    
2793 /*
2794  * @brief Get the encoded name from raw EDID data.
2795  *
2796  * @param edid the edid structure
2797  * @param edid_length length of the edid structure
2798  * @return The encoded manufacturer identifier.
2799  */
2800 EAPI char *
2801 ecore_x_randr_edid_display_name_get(unsigned char *edid,
2802                                     unsigned long edid_length);
2803    
2804 /*
2805  * @brief Get the encoded ASCII from raw EDID data.
2806  *
2807  * @param edid the edid structure
2808  * @param edid_length length of the edid structure
2809  * @return The encoded ASCII display identifier.
2810  */
2811 EAPI char *
2812 ecore_x_randr_edid_display_ascii_get(unsigned char *edid, 
2813                                      unsigned long edid_length);
2814    
2815 /*
2816  * @brief Get the encoded serial identifier from raw EDID data.
2817  *
2818  * @param edid the edid structure
2819  * @param edid_length length of the edid structure
2820  * @return The encoded serial identifier.
2821  */
2822 EAPI char *
2823 ecore_x_randr_edid_display_serial_get(unsigned char *edid, 
2824                                       unsigned long edid_length);
2825    
2826 /*
2827  * @brief Get the encoded model number from raw EDID data.
2828  *
2829  * The manufacturer ID table is necessary for a useful description.
2830  *
2831  * @param edid the edid structure
2832  * @param edid_length length of the edid structure
2833  * @return The encoded model number.
2834  */
2835 EAPI int
2836 ecore_x_randr_edid_model_get(unsigned char *edid,
2837                              unsigned long edid_length);
2838    
2839 /*
2840  * @brief Get the manufacturer serial number from raw EDID data.
2841  *
2842  * @param edid the edid structure
2843  * @param edid_length length of the edid structure
2844  * @return The encoded serial manufacturer serial number.
2845  */
2846 EAPI int
2847 ecore_x_randr_edid_manufacturer_serial_number_get(unsigned char *edid,
2848                                                   unsigned long edid_length);
2849    
2850 /*
2851  * @brief Get the manufacturer model number from raw EDID data.
2852  *
2853  * @param edid the edid structure
2854  * @param edid_length length of the edid structure
2855  * @return The manufacturer's model number.
2856  */
2857 EAPI int
2858 ecore_x_randr_edid_manufacturer_model_get(unsigned char *edid,
2859                                           unsigned long edid_length);
2860    
2861 /*
2862  * @brief Looks up the DPMS support from raw EDID data.
2863  *
2864  * @param edid the edid structure
2865  * @param edid_length length of the edid structure
2866  * @return EINA_TRUE, if DPMS is supported in some way. Else EINA_FALSE.
2867  */
2868 EAPI Eina_Bool
2869 ecore_x_randr_edid_dpms_available_get(unsigned char *edid,
2870                                       unsigned long edid_length);
2871    
2872 /*
2873  * @brief Looks up the DPMS Standby support from raw EDID data.
2874  *
2875  * @param edid the edid structure
2876  * @param edid_length length of the edid structure
2877  * @return EINA_TRUE, if DPMS Standby is supported. Else EINA_FALSE.
2878  */
2879 EAPI Eina_Bool
2880 ecore_x_randr_edid_dpms_standby_available_get(unsigned char *edid,
2881                                               unsigned long edid_length);
2882    
2883 /*
2884  * @brief Looks up the DPMS Suspend support from raw EDID data.
2885  *
2886  * @param edid the edid structure
2887  * @param edid_length length of the edid structure
2888  * @return EINA_TRUE, if DPMS Suspend is supported. Else EINA_FALSE.
2889  */
2890 EAPI Eina_Bool
2891 ecore_x_randr_edid_dpms_suspend_available_get(unsigned char *edid,
2892                                               unsigned long edid_length);
2893    
2894 /*
2895  * @brief Looks up the DPMS Off support from raw EDID data.
2896  *
2897  * @param edid the edid structure
2898  * @param edid_length length of the edid structure
2899  * @return EINA_TRUE, if DPMS Off is supported. Else EINA_FALSE.
2900  */
2901 EAPI Eina_Bool
2902 ecore_x_randr_edid_dpms_off_available_get(unsigned char *edid,
2903                                           unsigned long edid_length);
2904    
2905 /*
2906  * @brief Get the preferred aspect ratio from raw EDID data.
2907  *
2908  * @param edid the edid structure
2909  * @param edid_length length of the edid structure
2910  * @return The preferred aspect ratio.
2911  */
2912 EAPI Ecore_X_Randr_Edid_Aspect_Ratio
2913 ecore_x_randr_edid_display_aspect_ratio_preferred_get(unsigned char *edid,
2914                                                       unsigned long edid_length);
2915    
2916 /*
2917  * @brief Get the supported aspect ratios from raw EDID data.
2918  *
2919  * @param edid the edid structure
2920  * @param edid_length length of the edid structure
2921  * @return The supported aspect ratios.
2922  */
2923 EAPI Ecore_X_Randr_Edid_Aspect_Ratio
2924 ecore_x_randr_edid_display_aspect_ratios_get(unsigned char *edid,
2925                                              unsigned long edid_length);
2926    
2927 /*
2928  * @brief Get the supported colorschemes from raw EDID data.
2929  *
2930  * @param edid the edid structure
2931  * @param edid_length length of the edid structure
2932  * @return The supported colorschemes.
2933  */
2934 EAPI Ecore_X_Randr_Edid_Display_Colorscheme
2935 ecore_x_randr_edid_display_colorscheme_get(unsigned char *edid,
2936                                            unsigned long edid_length);
2937    
2938 /*
2939  * @brief Get the display type from raw EDID data.
2940  *
2941  * @param edid the edid structure
2942  * @param edid_length length of the edid structure
2943  * @return EINA_TRUE, if the display is a digital one. Else EINA_FALSE.
2944  */
2945 EAPI Eina_Bool
2946 ecore_x_randr_edid_display_type_digital_get(unsigned char *edid,
2947                                             unsigned long edid_length);
2948    
2949 /*
2950  * @brief Get the display interface type from raw EDID data.
2951  *
2952  * @param edid the edid structure
2953  * @param edid_length length of the edid structure
2954  * @return The interface type.
2955  */
2956 EAPI Ecore_X_Randr_Edid_Display_Interface_Type
2957 ecore_x_randr_edid_display_interface_type_get(unsigned char *edid,
2958                                               unsigned long edid_length);
2959    
2960 /* ecore_x_randr_13.c */
2961 EAPI void
2962 ecore_x_randr_screen_backlight_level_set(Ecore_X_Window root, double level);
2963 EAPI double
2964 ecore_x_randr_output_backlight_level_get(Ecore_X_Window root,
2965                                          Ecore_X_Randr_Output output);
2966 EAPI Eina_Bool
2967 ecore_x_randr_output_backlight_level_set(Ecore_X_Window root,
2968                                          Ecore_X_Randr_Output output,
2969                                          double level);
2970 EAPI Ecore_X_Randr_Output
2971 ecore_x_randr_primary_output_get(Ecore_X_Window root);
2972 EAPI void
2973 ecore_x_randr_primary_output_set(Ecore_X_Window root,
2974                                  Ecore_X_Randr_Output output);
2975 EAPI Ecore_X_Render_Subpixel_Order
2976 ecore_x_randr_output_subpixel_order_get(Ecore_X_Window root,
2977                                         Ecore_X_Randr_Output output);
2978 EAPI unsigned char *
2979 ecore_x_randr_output_edid_get(Ecore_X_Window root,
2980                               Ecore_X_Randr_Output output,
2981                               unsigned long *length);
2982 EAPI Ecore_X_Randr_Output *
2983 ecore_x_randr_output_wired_clones_get(Ecore_X_Window root,
2984                                       Ecore_X_Randr_Output output,
2985                                       int *num);
2986 EAPI Ecore_X_Randr_Output **
2987 ecore_x_randr_output_compatibility_list_get(Ecore_X_Window root,
2988                                             Ecore_X_Randr_Output output,
2989                                             int *num);
2990 EAPI Ecore_X_Randr_Signal_Format *
2991 ecore_x_randr_output_signal_formats_get(Ecore_X_Window root,
2992                                         Ecore_X_Randr_Output output,
2993                                         int *num);
2994 EAPI Eina_Bool
2995 ecore_x_randr_output_signal_format_set(Ecore_X_Window root,
2996                                        Ecore_X_Randr_Output output,
2997                                        Ecore_X_Randr_Signal_Format *signal);
2998 EAPI Ecore_X_Randr_Signal_Property *
2999 ecore_x_randr_output_signal_properties_get(Ecore_X_Window root,
3000                                            Ecore_X_Randr_Output output,
3001                                            int *num);
3002 EAPI int
3003 ecore_x_randr_output_connector_number_get(Ecore_X_Window root,
3004                                           Ecore_X_Randr_Output output);
3005 EAPI Ecore_X_Randr_Connector_Type
3006 ecore_x_randr_output_connector_type_get(Ecore_X_Window root,
3007                                         Ecore_X_Randr_Output output);
3008 EAPI Eina_Rectangle *
3009 ecore_x_randr_crtc_panning_area_get(Ecore_X_Window root,
3010                                     Ecore_X_Randr_Crtc crtc,
3011                                     int *x,
3012                                     int *y,
3013                                     int *w,
3014                                     int *h);
3015 EAPI Eina_Bool
3016 ecore_x_randr_crtc_panning_area_set(Ecore_X_Window root,
3017                                     Ecore_X_Randr_Crtc crtc,
3018                                     int x,
3019                                     const int y,
3020                                     const int w,
3021                                     const int h);
3022 EAPI Eina_Rectangle *
3023 ecore_x_randr_crtc_tracking_area_get(Ecore_X_Window root,
3024                                      Ecore_X_Randr_Crtc crtc,
3025                                      int *x,
3026                                      int *y,
3027                                      int *w,
3028                                      int *h);
3029 EAPI Eina_Bool
3030 ecore_x_randr_crtc_tracking_area_set(Ecore_X_Window root,
3031                                      Ecore_X_Randr_Crtc crtc,
3032                                      int x,
3033                                      const int y,
3034                                      const int w,
3035                                      const int h);
3036 EAPI Eina_Rectangle *
3037 ecore_x_randr_crtc_border_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
3038 EAPI Eina_Bool
3039 ecore_x_randr_crtc_border_area_set(Ecore_X_Window root,
3040                                    Ecore_X_Randr_Crtc crtc,
3041                                    int left,
3042                                    const int top,
3043                                    const int right,
3044                                    const int bottom);
3045
3046 /* XRender Support (horrendously incomplete) */
3047 typedef Ecore_X_ID   Ecore_X_Picture;
3048
3049 /* XFixes Extension Support */
3050 typedef Ecore_X_ID   Ecore_X_Region;
3051
3052 typedef enum _Ecore_X_Region_Type {
3053    ECORE_X_REGION_BOUNDING,
3054    ECORE_X_REGION_CLIP
3055 } Ecore_X_Region_Type;
3056
3057 EAPI Ecore_X_Region         ecore_x_region_new(Ecore_X_Rectangle *rects, int num);
3058 EAPI Ecore_X_Region         ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap);
3059 EAPI Ecore_X_Region         ecore_x_region_new_from_window(Ecore_X_Window      win,
3060                                                            Ecore_X_Region_Type type);
3061 EAPI Ecore_X_Region         ecore_x_region_new_from_gc(Ecore_X_GC gc);
3062 EAPI Ecore_X_Region         ecore_x_region_new_from_picture(Ecore_X_Picture picture);
3063 EAPI void                   ecore_x_region_free(Ecore_X_Region region);
3064 EAPI void                   ecore_x_region_set(Ecore_X_Region     region,
3065                                                Ecore_X_Rectangle *rects,
3066                                                int                num);
3067 EAPI void                   ecore_x_region_copy(Ecore_X_Region dest,
3068                                                 Ecore_X_Region source);
3069 EAPI void                   ecore_x_region_combine(Ecore_X_Region dest,
3070                                                    Ecore_X_Region source1,
3071                                                    Ecore_X_Region source2);
3072 EAPI void                   ecore_x_region_intersect(Ecore_X_Region dest,
3073                                                      Ecore_X_Region source1,
3074                                                      Ecore_X_Region source2);
3075 EAPI void                   ecore_x_region_subtract(Ecore_X_Region dest,
3076                                                     Ecore_X_Region source1,
3077                                                     Ecore_X_Region source2);
3078 EAPI void                   ecore_x_region_invert(Ecore_X_Region     dest,
3079                                                   Ecore_X_Rectangle *bounds,
3080                                                   Ecore_X_Region     source);
3081 EAPI void                   ecore_x_region_translate(Ecore_X_Region region,
3082                                                      int            dx,
3083                                                      int            dy);
3084 EAPI void                   ecore_x_region_extents(Ecore_X_Region dest,
3085                                                    Ecore_X_Region source);
3086 EAPI Ecore_X_Rectangle *    ecore_x_region_fetch(Ecore_X_Region     region,
3087                                                  int               *num,
3088                                                  Ecore_X_Rectangle *bounds);
3089 EAPI void                   ecore_x_region_expand(Ecore_X_Region dest,
3090                                                   Ecore_X_Region source,
3091                                                   unsigned int   left,
3092                                                   unsigned int   right,
3093                                                   unsigned int   top,
3094                                                   unsigned int   bottom);
3095 EAPI void                   ecore_x_region_gc_clip_set(Ecore_X_Region region,
3096                                                        Ecore_X_GC     gc,
3097                                                        int            x_origin,
3098                                                        int            y_origin);
3099 EAPI void                   ecore_x_region_window_shape_set(Ecore_X_Region     region,
3100                                                             Ecore_X_Window     win,
3101                                                             Ecore_X_Shape_Type type,
3102                                                             int                x_offset,
3103                                                             int                y_offset);
3104 EAPI void                   ecore_x_region_picture_clip_set(Ecore_X_Region  region,
3105                                                             Ecore_X_Picture picture,
3106                                                             int             x_origin,
3107                                                             int             y_origin);
3108
3109 /**
3110  * xfixes selection notification request.
3111  *
3112  * This lets you choose which selections you want to get notifications for.
3113  * @param selection the selection atom.
3114  * @return EINA_TRUE on success, EINA_FALSE otherwise.
3115  * @since 1.1.0
3116  */
3117 EAPI Eina_Bool              ecore_x_fixes_selection_notification_request(Ecore_X_Atom selection);
3118
3119 /* XComposite Extension Support */
3120 EAPI Eina_Bool              ecore_x_composite_query(void);
3121 EAPI void                   ecore_x_composite_redirect_window(Ecore_X_Window                win,
3122                                                               Ecore_X_Composite_Update_Type type);
3123 EAPI void                   ecore_x_composite_redirect_subwindows(Ecore_X_Window                win,
3124                                                                   Ecore_X_Composite_Update_Type type);
3125 EAPI void                   ecore_x_composite_unredirect_window(Ecore_X_Window                win,
3126                                                                 Ecore_X_Composite_Update_Type type);
3127 EAPI void                   ecore_x_composite_unredirect_subwindows(Ecore_X_Window                win,
3128                                                                     Ecore_X_Composite_Update_Type type);
3129 EAPI Ecore_X_Pixmap         ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win);
3130 EAPI void                   ecore_x_composite_window_events_disable(Ecore_X_Window win);
3131 EAPI void                   ecore_x_composite_window_events_enable(Ecore_X_Window win);
3132 EAPI Ecore_X_Window         ecore_x_composite_render_window_enable(Ecore_X_Window root);
3133 EAPI void                   ecore_x_composite_render_window_disable(Ecore_X_Window root);
3134
3135 /* XDamage Extension Support */
3136 typedef Ecore_X_ID   Ecore_X_Damage;
3137
3138 typedef enum _Ecore_X_Damage_Report_Level {
3139    ECORE_X_DAMAGE_REPORT_RAW_RECTANGLES,
3140    ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES,
3141    ECORE_X_DAMAGE_REPORT_BOUNDING_BOX,
3142    ECORE_X_DAMAGE_REPORT_NON_EMPTY
3143 } Ecore_X_Damage_Report_Level;
3144
3145 struct _Ecore_X_Event_Damage
3146 {
3147    Ecore_X_Damage_Report_Level level;
3148    Ecore_X_Drawable            drawable;
3149    Ecore_X_Damage              damage;
3150    int                         more;
3151    Ecore_X_Time                time;
3152    Ecore_X_Rectangle           area;
3153    Ecore_X_Rectangle           geometry;
3154 };
3155
3156 typedef struct _Ecore_X_Event_Damage   Ecore_X_Event_Damage;
3157
3158 EAPI Eina_Bool           ecore_x_damage_query(void);
3159 EAPI Ecore_X_Damage      ecore_x_damage_new(Ecore_X_Drawable            d,
3160                                             Ecore_X_Damage_Report_Level level);
3161 EAPI void                ecore_x_damage_free(Ecore_X_Damage damage);
3162 EAPI void                ecore_x_damage_subtract(Ecore_X_Damage damage,
3163                                                  Ecore_X_Region repair,
3164                                                  Ecore_X_Region parts);
3165
3166 EAPI Eina_Bool           ecore_x_screen_is_composited(int screen);
3167 EAPI void                ecore_x_screen_is_composited_set(int            screen,
3168                                                           Ecore_X_Window win);
3169
3170 EAPI Eina_Bool           ecore_x_dpms_query(void);
3171 EAPI Eina_Bool           ecore_x_dpms_capable_get(void);
3172 EAPI Eina_Bool           ecore_x_dpms_enabled_get(void);
3173 EAPI void                ecore_x_dpms_enabled_set(int enabled);
3174 EAPI void                ecore_x_dpms_timeouts_get(unsigned int *standby,
3175                                                    unsigned int *suspend,
3176                                                    unsigned int *off);
3177 EAPI Eina_Bool           ecore_x_dpms_timeouts_set(unsigned int standby,
3178                                                    unsigned int suspend,
3179                                                    unsigned int off);
3180 EAPI unsigned int        ecore_x_dpms_timeout_standby_get(void);
3181 EAPI unsigned int        ecore_x_dpms_timeout_suspend_get(void);
3182 EAPI unsigned int        ecore_x_dpms_timeout_off_get(void);
3183 EAPI void                ecore_x_dpms_timeout_standby_set(unsigned int new_timeout);
3184 EAPI void                ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout);
3185 EAPI void                ecore_x_dpms_timeout_off_set(unsigned int new_timeout);
3186
3187 EAPI Eina_Bool           ecore_x_test_fake_key_down(const char *key);
3188 EAPI Eina_Bool           ecore_x_test_fake_key_up(const char *key);
3189 EAPI Eina_Bool           ecore_x_test_fake_key_press(const char *key);
3190 EAPI const char *        ecore_x_keysym_string_get(int keysym);
3191
3192 typedef struct _Ecore_X_Image   Ecore_X_Image;
3193
3194 EAPI Ecore_X_Image *     ecore_x_image_new(int            w,
3195                                            int            h,
3196                                            Ecore_X_Visual vis,
3197                                            int            depth);
3198 EAPI void                ecore_x_image_free(Ecore_X_Image *im);
3199 EAPI Eina_Bool           ecore_x_image_get(Ecore_X_Image   *im,
3200                                            Ecore_X_Drawable draw,
3201                                            int              x,
3202                                            int              y,
3203                                            int              sx,
3204                                            int              sy,
3205                                            int              w,
3206                                            int              h);
3207 EAPI void      ecore_x_image_put(Ecore_X_Image   *im,
3208                                  Ecore_X_Drawable draw,
3209                                  Ecore_X_GC       gc,
3210                                  int              x,
3211                                  int              y,
3212                                  int              sx,
3213                                  int              sy,
3214                                  int              w,
3215                                  int              h);
3216 EAPI void *         ecore_x_image_data_get(Ecore_X_Image *im,
3217                                            int           *bpl,
3218                                            int           *rows,
3219                                            int           *bpp);
3220 EAPI Eina_Bool      ecore_x_image_is_argb32_get(Ecore_X_Image *im);
3221          
3222 EAPI Eina_Bool      ecore_x_image_to_argb_convert(void *src, int sbpp, 
3223                                                   int sbpl,
3224                                                   Ecore_X_Colormap c, 
3225                                                   Ecore_X_Visual v, 
3226                                                   int x, int y, int w, int h, 
3227                                                   unsigned int *dst,
3228                                                   int dbpl, 
3229                                                   int dx, int dy);
3230
3231 EAPI Eina_Bool      ecore_x_input_multi_select(Ecore_X_Window win);
3232
3233 EAPI Eina_Bool      ecore_x_vsync_animator_tick_source_set(Ecore_X_Window win);
3234          
3235 #ifdef __cplusplus
3236 }
3237 #endif // ifdef __cplusplus
3238
3239 #include <Ecore_X_Atoms.h>
3240 #include <Ecore_X_Cursor.h>
3241
3242 #endif // ifndef _ECORE_X_H