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