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