Revert "Merge remote-tracking branch 'remotes/origin/upstream'"
[framework/uifw/ecore.git] / src / lib / ecore_x / Ecore_X.h
1 #ifndef _ECORE_X_H
2 #define _ECORE_X_H
3
4 #include <Eina.h>
5
6 #ifdef EAPI
7 # undef EAPI
8 #endif // ifdef EAPI
9
10 #ifdef _MSC_VER
11 # ifdef BUILDING_DLL
12 #  define EAPI __declspec(dllexport)
13 # else // ifdef BUILDING_DLL
14 #  define EAPI __declspec(dllimport)
15 # endif // ifdef BUILDING_DLL
16 #else // ifdef _MSC_VER
17 # ifdef __GNUC__
18 #  if __GNUC__ >= 4
19 #   define EAPI __attribute__ ((visibility("default")))
20 #  else // if __GNUC__ >= 4
21 #   define EAPI
22 #  endif // if __GNUC__ >= 4
23 # else // ifdef __GNUC__
24 #  define EAPI
25 # endif // ifdef __GNUC__
26 #endif // ifdef _MSC_VER
27
28 #include <sys/types.h>
29
30 /**
31  * @file
32  * @brief Ecore functions for dealing with the X Windows System
33  *
34  * Ecore_X provides a wrapper and convenience functions for using the
35  * X Windows System.  Function groups for this part of the library
36  * include the following:
37  * @li @ref Ecore_X_Init_Group
38  * @li @ref Ecore_X_Display_Attr_Group
39  * @li @ref Ecore_X_Flush_Group
40  */
41
42 typedef unsigned int   Ecore_X_ID;
43 #ifndef _ECORE_X_WINDOW_PREDEF
44 typedef Ecore_X_ID     Ecore_X_Window;
45 #endif // ifndef _ECORE_X_WINDOW_PREDEF
46 typedef void          *Ecore_X_Visual;
47 typedef Ecore_X_ID     Ecore_X_Pixmap;
48 typedef Ecore_X_ID     Ecore_X_Drawable;
49 #ifdef HAVE_ECORE_X_XCB
50 typedef Ecore_X_ID     Ecore_X_GC;
51 #else // ifdef HAVE_ECORE_X_XCB
52 typedef void          *Ecore_X_GC;
53 #endif /* HAVE_ECORE_X_XCB */
54 typedef Ecore_X_ID     Ecore_X_Atom;
55 typedef Ecore_X_ID     Ecore_X_Colormap;
56 typedef Ecore_X_ID     Ecore_X_Time;
57 typedef Ecore_X_ID     Ecore_X_Cursor;
58 typedef void           Ecore_X_Display;
59 typedef void           Ecore_X_Connection;
60 typedef void           Ecore_X_Screen;
61 typedef Ecore_X_ID     Ecore_X_Sync_Counter;
62 typedef Ecore_X_ID     Ecore_X_Sync_Alarm;
63 typedef void           Ecore_X_XRegion;
64
65 typedef Ecore_X_ID     Ecore_X_Randr_Output;
66 typedef Ecore_X_ID     Ecore_X_Randr_Crtc;
67 typedef Ecore_X_ID     Ecore_X_Randr_Mode;
68 typedef unsigned short Ecore_X_Randr_Size_ID;
69 typedef int            Ecore_X_Randr_Screen;
70
71 typedef Ecore_X_ID     Ecore_X_Device;
72
73 #ifdef __cplusplus
74 extern "C" {
75 #endif // ifdef __cplusplus
76
77 typedef struct _Ecore_X_Rectangle
78 {
79    int          x, y;
80    unsigned int width, height;
81 } Ecore_X_Rectangle;
82
83 typedef struct _Ecore_X_Icon
84 {
85    unsigned int  width, height;
86    unsigned int *data;
87 } Ecore_X_Icon;
88
89 typedef enum _Ecore_X_GC_Value_Mask
90 {
91    ECORE_X_GC_VALUE_MASK_FUNCTION = (1L << 0),
92    ECORE_X_GC_VALUE_MASK_PLANE_MASK = (1L << 1),
93    ECORE_X_GC_VALUE_MASK_FOREGROUND = (1L << 2),
94    ECORE_X_GC_VALUE_MASK_BACKGROUND = (1L << 3),
95    ECORE_X_GC_VALUE_MASK_LINE_WIDTH = (1L << 4),
96    ECORE_X_GC_VALUE_MASK_LINE_STYLE = (1L << 5),
97    ECORE_X_GC_VALUE_MASK_CAP_STYLE = (1L << 6),
98    ECORE_X_GC_VALUE_MASK_JOIN_STYLE = (1L << 7),
99    ECORE_X_GC_VALUE_MASK_FILL_STYLE = (1L << 8),
100    ECORE_X_GC_VALUE_MASK_FILL_RULE = (1L << 9),
101    ECORE_X_GC_VALUE_MASK_TILE = (1L << 10),
102    ECORE_X_GC_VALUE_MASK_STIPPLE = (1L << 11),
103    ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_X = (1L << 12),
104    ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_Y = (1L << 13),
105    ECORE_X_GC_VALUE_MASK_FONT = (1L << 14),
106    ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE = (1L << 15),
107    ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES = (1L << 16),
108    ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X = (1L << 17),
109    ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y = (1L << 18),
110    ECORE_X_GC_VALUE_MASK_CLIP_MASK = (1L << 19),
111    ECORE_X_GC_VALUE_MASK_DASH_OFFSET = (1L << 20),
112    ECORE_X_GC_VALUE_MASK_DASH_LIST = (1L << 21),
113    ECORE_X_GC_VALUE_MASK_ARC_MODE = (1L << 22)
114 } Ecore_X_GC_Value_Mask;
115
116 typedef enum _Ecore_X_Composite_Update_Type
117 {
118    ECORE_X_COMPOSITE_UPDATE_AUTOMATIC,
119    ECORE_X_COMPOSITE_UPDATE_MANUAL
120 } Ecore_X_Composite_Update_Type;
121
122 /**
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,  /** The window is iconified. */
130    ECORE_X_WINDOW_STATE_ICONIFIED,  /** The window is a modal dialog box. */
131    ECORE_X_WINDOW_STATE_MODAL,  /** The window manager should keep the window's position fixed
132                                  * even if the virtual desktop scrolls. */
133    ECORE_X_WINDOW_STATE_STICKY,  /** The window has the maximum vertical size. */
134    ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,  /** The window has the maximum horizontal size. */
135    ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,  /** The window is shaded. */
136    ECORE_X_WINDOW_STATE_SHADED,  /** The window should not be included in the taskbar. */
137    ECORE_X_WINDOW_STATE_SKIP_TASKBAR,  /** The window should not be included in the pager. */
138    ECORE_X_WINDOW_STATE_SKIP_PAGER,  /** The window is invisible (i.e. minimized/iconified) */
139    ECORE_X_WINDOW_STATE_HIDDEN,  /** The window should fill the entire screen and have no
140                                   * window border/decorations */
141    ECORE_X_WINDOW_STATE_FULLSCREEN,  /* The following are not documented because they are not
142                                       * intended for use in applications. */
143    ECORE_X_WINDOW_STATE_ABOVE, ECORE_X_WINDOW_STATE_BELOW,  /* FIXME: Documentation */
144    ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION
145 } Ecore_X_Window_State;
146
147 typedef enum _Ecore_X_Window_State_Action
148 {
149    ECORE_X_WINDOW_STATE_ACTION_REMOVE,
150    ECORE_X_WINDOW_STATE_ACTION_ADD,
151    ECORE_X_WINDOW_STATE_ACTION_TOGGLE
152 } Ecore_X_Window_State_Action;
153
154 typedef enum _Ecore_X_Window_Stack_Mode
155 {
156    ECORE_X_WINDOW_STACK_ABOVE = 0,
157    ECORE_X_WINDOW_STACK_BELOW = 1,
158    ECORE_X_WINDOW_STACK_TOP_IF = 2,
159    ECORE_X_WINDOW_STACK_BOTTOM_IF = 3,
160    ECORE_X_WINDOW_STACK_OPPOSITE = 4
161 } Ecore_X_Window_Stack_Mode;
162
163 typedef enum _Ecore_X_Randr_Orientation
164 {
165    ECORE_X_RANDR_ORIENTATION_ROT_0 = (1 << 0),
166    ECORE_X_RANDR_ORIENTATION_ROT_90 = (1 << 1),
167    ECORE_X_RANDR_ORIENTATION_ROT_180 = (1 << 2),
168    ECORE_X_RANDR_ORIENTATION_ROT_270 = (1 << 3),
169    ECORE_X_RANDR_ORIENTATION_FLIP_X = (1 << 4),
170    ECORE_X_RANDR_ORIENTATION_FLIP_Y = (1 << 5)
171 } Ecore_X_Randr_Orientation;
172
173 typedef enum _Ecore_X_Randr_Connection_Status
174 {
175    ECORE_X_RANDR_CONNECTION_STATUS_CONNECTED = 0,
176    ECORE_X_RANDR_CONNECTION_STATUS_DISCONNECTED = 1,
177    ECORE_X_RANDR_CONNECTION_STATUS_UNKNOWN = 2
178 } Ecore_X_Randr_Connection_Status;
179
180 typedef enum _Ecore_X_Randr_Output_Policy
181 {
182    ECORE_X_RANDR_OUTPUT_POLICY_ABOVE = 1,
183    ECORE_X_RANDR_OUTPUT_POLICY_RIGHT = 2,
184    ECORE_X_RANDR_OUTPUT_POLICY_BELOW = 3,
185    ECORE_X_RANDR_OUTPUT_POLICY_LEFT = 4,
186    ECORE_X_RANDR_OUTPUT_POLICY_CLONE = 5,
187    ECORE_X_RANDR_OUTPUT_POLICY_NONE = 6,
188    ECORE_X_RANDR_OUTPUT_POLICY_ASK = 7
189 } Ecore_X_Randr_Output_Policy;
190
191 typedef enum _Ecore_X_Randr_Relative_Alignment
192 {
193    ECORE_X_RANDR_RELATIVE_ALIGNMENT_NONE = 0,
194    ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_REL = 1,
195    ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_SCR = 2
196 } Ecore_X_Randr_Relative_Alignment;
197
198 typedef enum _Ecore_X_Render_Subpixel_Order
199 {
200    ECORE_X_RENDER_SUBPIXEL_ORDER_UNKNOWN = 0,
201    ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_RGB = 1,
202    ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_BGR = 2,
203    ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_RGB = 3,
204    ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_BGR = 4,
205    ECORE_X_RENDER_SUBPIXEL_ORDER_NONE = 5
206 } Ecore_X_Render_Subpixel_Order;
207
208 typedef enum _Ecore_X_Randr_Edid_Display_Interface_Type
209 {
210    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_UNDEFINED,
211    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_DVI,
212    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_HDMI_A,
213    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_HDMI_B,
214    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_MDDI,
215    ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_DISPLAY_PORT
216 } Ecore_X_Randr_Edid_Display_Interface_Type;
217
218 typedef enum _Ecore_X_Randr_Edid_Display_Colorscheme
219 {
220    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_MONOCHROME_GRAYSCALE = 0x00,
221    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB = 0x08,
222    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_NON_RGB = 0x10,
223    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_UNDEFINED = 0x18,
224    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_4_4_4 = 0x444000,
225    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_YCRCB_4_4_4 = 0x444,
226    ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_YCRCB_4_2_2 = 0x422
227 } Ecore_X_Randr_Edid_Display_Colorscheme;
228
229 typedef enum _Ecore_X_Randr_Edid_Aspect_Ratio
230 {
231    ECORE_X_RANDR_EDID_ASPECT_RATIO_4_3 = 0x0,
232    ECORE_X_RANDR_EDID_ASPECT_RATIO_16_9 = 0x1,
233    ECORE_X_RANDR_EDID_ASPECT_RATIO_16_10 = 0x2,
234    ECORE_X_RANDR_EDID_ASPECT_RATIO_5_4 = 0x4,
235    ECORE_X_RANDR_EDID_ASPECT_RATIO_15_9 = 0x8
236 } Ecore_X_Randr_Edid_Aspect_Ratio;
237
238 #define ECORE_X_RANDR_EDID_UNKNOWN_VALUE       -1
239
240 #define ECORE_X_SELECTION_TARGET_TARGETS       "TARGETS"
241 #define ECORE_X_SELECTION_TARGET_TEXT          "TEXT"
242 #define ECORE_X_SELECTION_TARGET_COMPOUND_TEXT "COMPOUND_TEXT"
243 #define ECORE_X_SELECTION_TARGET_STRING        "STRING"
244 #define ECORE_X_SELECTION_TARGET_UTF8_STRING   "UTF8_STRING"
245 #define ECORE_X_SELECTION_TARGET_FILENAME      "FILENAME"
246
247 #define ECORE_X_DND_VERSION                    5
248
249 typedef enum _Ecore_X_Selection
250 {
251    ECORE_X_SELECTION_PRIMARY,
252    ECORE_X_SELECTION_SECONDARY,
253    ECORE_X_SELECTION_XDND,
254    ECORE_X_SELECTION_CLIPBOARD,
255    ECORE_X_SELECTION_OTHER
256 } Ecore_X_Selection;
257
258 typedef enum _Ecore_X_Event_Mode
259 {
260    ECORE_X_EVENT_MODE_NORMAL,
261    ECORE_X_EVENT_MODE_WHILE_GRABBED,
262    ECORE_X_EVENT_MODE_GRAB,
263    ECORE_X_EVENT_MODE_UNGRAB
264 } Ecore_X_Event_Mode;
265
266 typedef enum _Ecore_X_Event_Detail
267 {
268    ECORE_X_EVENT_DETAIL_ANCESTOR,
269    ECORE_X_EVENT_DETAIL_VIRTUAL,
270    ECORE_X_EVENT_DETAIL_INFERIOR,
271    ECORE_X_EVENT_DETAIL_NON_LINEAR,
272    ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL,
273    ECORE_X_EVENT_DETAIL_POINTER,
274    ECORE_X_EVENT_DETAIL_POINTER_ROOT,
275    ECORE_X_EVENT_DETAIL_DETAIL_NONE
276 } Ecore_X_Event_Detail;
277
278 typedef enum _Ecore_X_Event_Mask
279 {
280    ECORE_X_EVENT_MASK_NONE = 0L,
281    ECORE_X_EVENT_MASK_KEY_DOWN = (1L << 0),
282    ECORE_X_EVENT_MASK_KEY_UP = (1L << 1),
283    ECORE_X_EVENT_MASK_MOUSE_DOWN = (1L << 2),
284    ECORE_X_EVENT_MASK_MOUSE_UP = (1L << 3),
285    ECORE_X_EVENT_MASK_MOUSE_IN = (1L << 4),
286    ECORE_X_EVENT_MASK_MOUSE_OUT = (1L << 5),
287    ECORE_X_EVENT_MASK_MOUSE_MOVE = (1L << 6),
288    ECORE_X_EVENT_MASK_WINDOW_DAMAGE = (1L << 15),
289    ECORE_X_EVENT_MASK_WINDOW_VISIBILITY = (1L << 16),
290    ECORE_X_EVENT_MASK_WINDOW_CONFIGURE = (1L << 17),
291    ECORE_X_EVENT_MASK_WINDOW_RESIZE_MANAGE = (1L << 18),
292    ECORE_X_EVENT_MASK_WINDOW_MANAGE = (1L << 19),
293    ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE = (1L << 20),
294    ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE = (1L << 21),
295    ECORE_X_EVENT_MASK_WINDOW_PROPERTY = (1L << 22),
296    ECORE_X_EVENT_MASK_WINDOW_COLORMAP = (1L << 23),
297    ECORE_X_EVENT_MASK_WINDOW_GRAB = (1L << 24),
298    ECORE_X_EVENT_MASK_MOUSE_WHEEL = (1L << 29),
299    ECORE_X_EVENT_MASK_WINDOW_FOCUS_IN = (1L << 30),
300    ECORE_X_EVENT_MASK_WINDOW_FOCUS_OUT = (1L << 31)
301 } Ecore_X_Event_Mask;
302
303 typedef enum _Ecore_X_Gravity
304 {
305    ECORE_X_GRAVITY_FORGET = 0,
306    ECORE_X_GRAVITY_UNMAP = 0,
307    ECORE_X_GRAVITY_NW = 1,
308    ECORE_X_GRAVITY_N = 2,
309    ECORE_X_GRAVITY_NE = 3,
310    ECORE_X_GRAVITY_W = 4,
311    ECORE_X_GRAVITY_CENTER = 5,
312    ECORE_X_GRAVITY_E = 6,
313    ECORE_X_GRAVITY_SW = 7,
314    ECORE_X_GRAVITY_S = 8,
315    ECORE_X_GRAVITY_SE = 9,
316    ECORE_X_GRAVITY_STATIC = 10
317 } Ecore_X_Gravity;
318
319 /* Needed for ecore_x_region_window_shape_set */
320 typedef enum _Ecore_X_Shape_Type
321 {
322    ECORE_X_SHAPE_BOUNDING,
323    ECORE_X_SHAPE_CLIP,
324    ECORE_X_SHAPE_INPUT
325 } Ecore_X_Shape_Type;
326
327 typedef enum _Ecore_X_Mapping_Type
328 {
329    ECORE_X_MAPPING_MODIFIER,
330    ECORE_X_MAPPING_KEYBOARD,
331    ECORE_X_MAPPING_MOUSE
332 } Ecore_X_Mapping_Type;
333
334 typedef enum _Ecore_X_Randr_Property_Change
335 {
336    ECORE_X_RANDR_PROPERTY_CHANGE_ADD,
337    ECORE_X_RANDR_PROPERTY_CHANGE_DEL
338 } Ecore_X_Randr_Property_Change;
339
340 typedef enum _Ecore_X_Netwm_Direction
341 {
342    ECORE_X_NETWM_DIRECTION_SIZE_TL = 0,
343    ECORE_X_NETWM_DIRECTION_SIZE_T = 1,
344    ECORE_X_NETWM_DIRECTION_SIZE_TR = 2,
345    ECORE_X_NETWM_DIRECTION_SIZE_R = 3,
346    ECORE_X_NETWM_DIRECTION_SIZE_BR = 4,
347    ECORE_X_NETWM_DIRECTION_SIZE_B = 5,
348    ECORE_X_NETWM_DIRECTION_SIZE_BL = 6,
349    ECORE_X_NETWM_DIRECTION_SIZE_L = 7,
350    ECORE_X_NETWM_DIRECTION_MOVE = 8,
351    ECORE_X_NETWM_DIRECTION_CANCEL = 11,
352 } Ecore_X_Netwm_Direction;
353
354 /**
355  * @typedef _Ecore_X_Error_Code
356  * Defines the error codes of Ecore_X which wraps the X Window Systems
357  * protocol's errors.
358  *
359  * @since 1.3.0
360  */
361 typedef enum _Ecore_X_Error_Code
362 {
363    /** Everything is okay. */
364    ECORE_X_ERROR_CODE_SUCCESS = 0, /** Bad request code */
365    ECORE_X_ERROR_CODE_BAD_REQUEST = 1, /** Int parameter out of range */
366    ECORE_X_ERROR_CODE_BAD_VALUE = 2, /** Parameter not a Window */
367    ECORE_X_ERROR_CODE_BAD_WINDOW = 3, /** Parameter not a Pixmap */
368    ECORE_X_ERROR_CODE_BAD_PIXMAP = 4, /** Parameter not an Atom */
369    ECORE_X_ERROR_CODE_BAD_ATOM = 5, /** Parameter not a Cursor */
370    ECORE_X_ERROR_CODE_BAD_CURSOR = 6, /** Parameter not a Font */
371    ECORE_X_ERROR_CODE_BAD_FONT = 7, /** Parameter mismatch */
372    ECORE_X_ERROR_CODE_BAD_MATCH = 8, /** Parameter not a Pixmap or Window */
373    ECORE_X_ERROR_CODE_BAD_DRAWABLE = 9, /** Bad access */
374    ECORE_X_ERROR_CODE_BAD_ACCESS = 10, /** Insufficient resources */
375    ECORE_X_ERROR_CODE_BAD_ALLOC = 11, /** No such colormap */
376    ECORE_X_ERROR_CODE_BAD_COLOR = 12, /** Parameter not a GC */
377    ECORE_X_ERROR_CODE_BAD_GC = 13, /** Choice not in range or already used */
378    ECORE_X_ERROR_CODE_BAD_ID_CHOICE = 14, /** Font or color name doesn't exist */
379    ECORE_X_ERROR_CODE_BAD_NAME = 15, /** Request length incorrect */
380    ECORE_X_ERROR_CODE_BAD_LENGTH = 16, /** Server is defective */
381    ECORE_X_ERROR_CODE_BAD_IMPLEMENTATION = 17,
382 } Ecore_X_Error_Code;
383
384 typedef struct _Ecore_X_Event_Mouse_In                     Ecore_X_Event_Mouse_In;
385 typedef struct _Ecore_X_Event_Mouse_Out                    Ecore_X_Event_Mouse_Out;
386 typedef struct _Ecore_X_Event_Window_Focus_In              Ecore_X_Event_Window_Focus_In;
387 typedef struct _Ecore_X_Event_Window_Focus_Out             Ecore_X_Event_Window_Focus_Out;
388 typedef struct _Ecore_X_Event_Window_Keymap                Ecore_X_Event_Window_Keymap;
389 typedef struct _Ecore_X_Event_Window_Damage                Ecore_X_Event_Window_Damage;
390 typedef struct _Ecore_X_Event_Window_Visibility_Change     Ecore_X_Event_Window_Visibility_Change;
391 typedef struct _Ecore_X_Event_Window_Create                Ecore_X_Event_Window_Create;
392 typedef struct _Ecore_X_Event_Window_Destroy               Ecore_X_Event_Window_Destroy;
393 typedef struct _Ecore_X_Event_Window_Hide                  Ecore_X_Event_Window_Hide;
394 typedef struct _Ecore_X_Event_Window_Show                  Ecore_X_Event_Window_Show;
395 typedef struct _Ecore_X_Event_Window_Show_Request          Ecore_X_Event_Window_Show_Request;
396 typedef struct _Ecore_X_Event_Window_Reparent              Ecore_X_Event_Window_Reparent;
397 typedef struct _Ecore_X_Event_Window_Configure             Ecore_X_Event_Window_Configure;
398 typedef struct _Ecore_X_Event_Window_Configure_Request     Ecore_X_Event_Window_Configure_Request;
399 typedef struct _Ecore_X_Event_Window_Gravity               Ecore_X_Event_Window_Gravity;
400 typedef struct _Ecore_X_Event_Window_Resize_Request        Ecore_X_Event_Window_Resize_Request;
401 typedef struct _Ecore_X_Event_Window_Stack                 Ecore_X_Event_Window_Stack;
402 typedef struct _Ecore_X_Event_Window_Stack_Request         Ecore_X_Event_Window_Stack_Request;
403 typedef struct _Ecore_X_Event_Window_Property              Ecore_X_Event_Window_Property;
404 typedef struct _Ecore_X_Event_Window_Colormap              Ecore_X_Event_Window_Colormap;
405 typedef struct _Ecore_X_Event_Mapping_Change               Ecore_X_Event_Mapping_Change;
406 typedef struct _Ecore_X_Event_Window_Mapping               Ecore_X_Event_Window_Mapping;
407 typedef struct _Ecore_X_Event_Selection_Clear              Ecore_X_Event_Selection_Clear;
408 typedef struct _Ecore_X_Event_Selection_Request            Ecore_X_Event_Selection_Request;
409 typedef struct _Ecore_X_Event_Selection_Notify             Ecore_X_Event_Selection_Notify;
410 typedef struct _Ecore_X_Event_Fixes_Selection_Notify       Ecore_X_Event_Fixes_Selection_Notify;
411 typedef struct _Ecore_X_Selection_Data                     Ecore_X_Selection_Data;
412 typedef struct _Ecore_X_Selection_Data_Files               Ecore_X_Selection_Data_Files;
413 typedef struct _Ecore_X_Selection_Data_Text                Ecore_X_Selection_Data_Text;
414 typedef struct _Ecore_X_Selection_Data_Targets             Ecore_X_Selection_Data_Targets;
415 typedef struct _Ecore_X_Event_Xdnd_Enter                   Ecore_X_Event_Xdnd_Enter;
416 typedef struct _Ecore_X_Event_Xdnd_Position                Ecore_X_Event_Xdnd_Position;
417 typedef struct _Ecore_X_Event_Xdnd_Status                  Ecore_X_Event_Xdnd_Status;
418 typedef struct _Ecore_X_Event_Xdnd_Leave                   Ecore_X_Event_Xdnd_Leave;
419 typedef struct _Ecore_X_Event_Xdnd_Drop                    Ecore_X_Event_Xdnd_Drop;
420 typedef struct _Ecore_X_Event_Xdnd_Finished                Ecore_X_Event_Xdnd_Finished;
421 typedef struct _Ecore_X_Event_Client_Message               Ecore_X_Event_Client_Message;
422 typedef struct _Ecore_X_Event_Window_Shape                 Ecore_X_Event_Window_Shape;
423 typedef struct _Ecore_X_Event_Screensaver_Notify           Ecore_X_Event_Screensaver_Notify;
424 typedef struct _Ecore_X_Event_Gesture_Notify_Flick         Ecore_X_Event_Gesture_Notify_Flick;
425 typedef struct _Ecore_X_Event_Gesture_Notify_Pan           Ecore_X_Event_Gesture_Notify_Pan;
426 typedef struct _Ecore_X_Event_Gesture_Notify_PinchRotation Ecore_X_Event_Gesture_Notify_PinchRotation;
427 typedef struct _Ecore_X_Event_Gesture_Notify_Tap           Ecore_X_Event_Gesture_Notify_Tap;
428 typedef struct _Ecore_X_Event_Gesture_Notify_TapNHold      Ecore_X_Event_Gesture_Notify_TapNHold;
429 typedef struct _Ecore_X_Event_Gesture_Notify_Hold          Ecore_X_Event_Gesture_Notify_Hold;
430 typedef struct _Ecore_X_Event_Gesture_Notify_Group         Ecore_X_Event_Gesture_Notify_Group;
431 typedef struct _Ecore_X_Event_Sync_Counter                 Ecore_X_Event_Sync_Counter;
432 typedef struct _Ecore_X_Event_Sync_Alarm                   Ecore_X_Event_Sync_Alarm;
433 typedef struct _Ecore_X_Event_Screen_Change                Ecore_X_Event_Screen_Change;
434 typedef struct _Ecore_X_Event_Randr_Crtc_Change            Ecore_X_Event_Randr_Crtc_Change;
435 typedef struct _Ecore_X_Event_Randr_Output_Change          Ecore_X_Event_Randr_Output_Change;
436 typedef struct _Ecore_X_Event_Randr_Output_Property_Notify Ecore_X_Event_Randr_Output_Property_Notify;
437
438 typedef struct _Ecore_X_Event_Window_Delete_Request        Ecore_X_Event_Window_Delete_Request;
439 typedef struct _Ecore_X_Event_Window_Move_Resize_Request   Ecore_X_Event_Window_Move_Resize_Request;
440 typedef struct _Ecore_X_Event_Window_State_Request         Ecore_X_Event_Window_State_Request;
441 typedef struct _Ecore_X_Event_Frame_Extents_Request        Ecore_X_Event_Frame_Extents_Request;
442 typedef struct _Ecore_X_Event_Ping                         Ecore_X_Event_Ping;
443 typedef struct _Ecore_X_Event_Desktop_Change               Ecore_X_Event_Desktop_Change;
444
445 typedef struct _Ecore_X_Event_Startup_Sequence             Ecore_X_Event_Startup_Sequence;
446
447 typedef struct _Ecore_X_Event_Generic                      Ecore_X_Event_Generic;
448
449 typedef struct _Ecore_X_Randr_Screen_Size                  Ecore_X_Randr_Screen_Size;
450 typedef struct _Ecore_X_Randr_Screen_Size_MM               Ecore_X_Randr_Screen_Size_MM;
451
452 typedef struct _Ecore_X_Xdnd_Position                      Ecore_X_Xdnd_Position;
453
454 struct _Ecore_X_Event_Mouse_In
455 {
456    int                  modifiers;
457    int                  x, y;
458    Eina_Bool            same_screen : 1;
459    struct
460    {
461       int x, y;
462    } root;
463    Ecore_X_Window       win;
464    Ecore_X_Window       event_win;
465    Ecore_X_Window       root_win;
466    Ecore_X_Event_Mode   mode;
467    Ecore_X_Event_Detail detail;
468    Ecore_X_Time         time;
469 };
470
471 struct _Ecore_X_Event_Mouse_Out
472 {
473    int                  modifiers;
474    int                  x, y;
475    int                  same_screen;
476    struct
477    {
478       int x, y;
479    } root;
480    Ecore_X_Window       win;
481    Ecore_X_Window       event_win;
482    Ecore_X_Window       root_win;
483    Ecore_X_Event_Mode   mode;
484    Ecore_X_Event_Detail detail;
485    Ecore_X_Time         time;
486 };
487
488 struct _Ecore_X_Event_Window_Focus_In
489 {
490    Ecore_X_Window       win;
491    Ecore_X_Event_Mode   mode;
492    Ecore_X_Event_Detail detail;
493    Ecore_X_Time         time;
494 };
495
496 struct _Ecore_X_Event_Window_Focus_Out
497 {
498    Ecore_X_Window       win;
499    Ecore_X_Event_Mode   mode;
500    Ecore_X_Event_Detail detail;
501    Ecore_X_Time         time;
502 };
503
504 struct _Ecore_X_Event_Window_Keymap
505 {
506    Ecore_X_Window win;
507 };
508
509 struct _Ecore_X_Event_Window_Damage
510 {
511    Ecore_X_Window win;
512    int            x, y, w, h;
513    int            count;
514    Ecore_X_Time   time;
515 };
516
517 struct _Ecore_X_Event_Window_Visibility_Change
518 {
519    Ecore_X_Window win;
520    int            fully_obscured;
521    Ecore_X_Time   time;
522 };
523
524 struct _Ecore_X_Event_Window_Create
525 {
526    Ecore_X_Window win;
527    Ecore_X_Window parent;
528    int            override;
529    int            x, y, w, h;
530    int            border;
531    Ecore_X_Time   time;
532 };
533
534 struct _Ecore_X_Event_Window_Destroy
535 {
536    Ecore_X_Window win;
537    Ecore_X_Window event_win;
538    Ecore_X_Time   time;
539 };
540
541 struct _Ecore_X_Event_Window_Hide
542 {
543    Ecore_X_Window win;
544    Ecore_X_Window event_win;
545    Ecore_X_Time   time;
546 };
547
548 struct _Ecore_X_Event_Window_Show
549 {
550    Ecore_X_Window win;
551    Ecore_X_Window event_win;
552    Ecore_X_Time   time;
553 };
554
555 struct _Ecore_X_Event_Window_Show_Request
556 {
557    Ecore_X_Window win;
558    Ecore_X_Window parent;
559    Ecore_X_Time   time;
560 };
561
562 struct _Ecore_X_Event_Window_Reparent
563 {
564    Ecore_X_Window win;
565    Ecore_X_Window event_win;
566    Ecore_X_Window parent;
567    Ecore_X_Time   time;
568 };
569
570 struct _Ecore_X_Event_Window_Configure
571 {
572    Ecore_X_Window win;
573    Ecore_X_Window event_win;
574    Ecore_X_Window abovewin;
575    int            x, y, w, h;
576    int            border;
577    Eina_Bool      override : 1;
578    Eina_Bool      from_wm : 1;
579    Ecore_X_Time   time;
580 };
581
582 struct _Ecore_X_Event_Window_Configure_Request
583 {
584    Ecore_X_Window            win;
585    Ecore_X_Window            parent_win;
586    Ecore_X_Window            abovewin;
587    int                       x, y, w, h;
588    int                       border;
589    Ecore_X_Window_Stack_Mode detail;
590    unsigned long             value_mask;
591    Ecore_X_Time              time;
592 };
593
594 struct _Ecore_X_Event_Window_Gravity
595 {
596    Ecore_X_Window win;
597    Ecore_X_Window event_win;
598    Ecore_X_Time   time;
599 };
600
601 struct _Ecore_X_Event_Window_Resize_Request
602 {
603    Ecore_X_Window win;
604    int            w, h;
605    Ecore_X_Time   time;
606 };
607
608 struct _Ecore_X_Event_Window_Stack
609 {
610    Ecore_X_Window            win;
611    Ecore_X_Window            event_win;
612    Ecore_X_Window_Stack_Mode detail;
613    Ecore_X_Time              time;
614 };
615
616 struct _Ecore_X_Event_Window_Stack_Request
617 {
618    Ecore_X_Window            win;
619    Ecore_X_Window            parent;
620    Ecore_X_Window_Stack_Mode detail;
621    Ecore_X_Time              time;
622 };
623
624 struct _Ecore_X_Event_Window_Property
625 {
626    Ecore_X_Window win;
627    Ecore_X_Atom   atom;
628    Ecore_X_Time   time;
629 };
630
631 struct _Ecore_X_Event_Window_Colormap
632 {
633    Ecore_X_Window   win;
634    Ecore_X_Colormap cmap;
635    Eina_Bool        installed : 1;
636    Ecore_X_Time     time;
637 };
638
639 struct _Ecore_X_Event_Mapping_Change
640 {
641    Ecore_X_Mapping_Type type;
642    int                  keycode;
643    int                  num;
644 };
645
646 struct _Ecore_X_Event_Selection_Clear
647 {
648    Ecore_X_Window    win;
649    Ecore_X_Selection selection;
650    Ecore_X_Atom      atom;
651    Ecore_X_Time      time;
652 };
653
654 struct _Ecore_X_Event_Selection_Request
655 {
656    Ecore_X_Window owner;
657    Ecore_X_Window requestor;
658    Ecore_X_Time   time;
659    Ecore_X_Atom   selection;
660    Ecore_X_Atom   target;
661    Ecore_X_Atom   property;
662 };
663
664 typedef enum
665 {
666    ECORE_X_OWNER_CHANGE_REASON_NEW_OWNER,
667    ECORE_X_OWNER_CHANGE_REASON_DESTROY,
668    ECORE_X_OWNER_CHANGE_REASON_CLOSE
669 } Ecore_X_Owner_Change_Reason;
670
671 struct _Ecore_X_Event_Fixes_Selection_Notify
672 {
673    Ecore_X_Window              win;
674    Ecore_X_Window              owner;
675    Ecore_X_Time                time;
676    Ecore_X_Time                selection_time;
677    Ecore_X_Selection           selection;
678    Ecore_X_Atom                atom;
679    Ecore_X_Owner_Change_Reason reason;
680 };
681
682 struct _Ecore_X_Event_Selection_Notify
683 {
684    Ecore_X_Window    win;
685    Ecore_X_Time      time;
686    Ecore_X_Selection selection;
687    Ecore_X_Atom      atom;
688    char             *target;
689    void             *data;
690 };
691
692 struct _Ecore_X_Selection_Data
693 {
694    enum
695    {
696       ECORE_X_SELECTION_CONTENT_NONE,
697       ECORE_X_SELECTION_CONTENT_TEXT,
698       ECORE_X_SELECTION_CONTENT_FILES,
699       ECORE_X_SELECTION_CONTENT_TARGETS,
700       ECORE_X_SELECTION_CONTENT_CUSTOM
701    } content;
702    unsigned char *data;
703    int            length;
704    int            format;
705    int            (*free)(void *data);
706 };
707
708 struct _Ecore_X_Selection_Data_Files
709 {
710    Ecore_X_Selection_Data data;
711    char                 **files;
712    int                    num_files;
713 };
714
715 struct _Ecore_X_Selection_Data_Text
716 {
717    Ecore_X_Selection_Data data;
718    char                  *text;
719 };
720
721 struct _Ecore_X_Selection_Data_Targets
722 {
723    Ecore_X_Selection_Data data;
724    char                 **targets;
725    int                    num_targets;
726 };
727
728 struct _Ecore_X_Event_Xdnd_Enter
729 {
730    Ecore_X_Window win, source;
731
732    char         **types;
733    int            num_types;
734 };
735
736 struct _Ecore_X_Event_Xdnd_Position
737 {
738    Ecore_X_Window win, source;
739    struct
740    {
741       int x, y;
742    } position;
743    Ecore_X_Atom   action;
744 };
745
746 struct _Ecore_X_Xdnd_Position
747 {
748    Ecore_X_Window win, prev;
749    struct
750    {
751       int x, y;
752    } position;
753 };
754
755 struct _Ecore_X_Event_Xdnd_Status
756 {
757    Ecore_X_Window    win, target;
758    Eina_Bool         will_accept : 1;
759    Ecore_X_Rectangle rectangle;
760    Ecore_X_Atom      action;
761 };
762
763 struct _Ecore_X_Event_Xdnd_Leave
764 {
765    Ecore_X_Window win, source;
766 };
767
768 struct _Ecore_X_Event_Xdnd_Drop
769 {
770    Ecore_X_Window win, source;
771    Ecore_X_Atom   action;
772    struct
773    {
774       int x, y;
775    } position;
776 };
777
778 struct _Ecore_X_Event_Xdnd_Finished
779 {
780    Ecore_X_Window win, target;
781    Eina_Bool      completed : 1;
782    Ecore_X_Atom   action;
783 };
784
785 struct _Ecore_X_Event_Client_Message
786 {
787    Ecore_X_Window win;
788    Ecore_X_Atom   message_type;
789    int            format;
790    union
791    {
792       char  b[20];
793       short s[10];
794       long  l[5];
795    } data;
796    Ecore_X_Time   time;
797 };
798
799 struct _Ecore_X_Event_Window_Shape
800 {
801    Ecore_X_Window     win;
802    Ecore_X_Time       time;
803    Ecore_X_Shape_Type type;
804    int                x, y, w, h;
805    Eina_Bool          shaped : 1;
806 };
807
808 struct _Ecore_X_Event_Screensaver_Notify
809 {
810    Ecore_X_Window win;
811    Eina_Bool      on : 1;
812    Ecore_X_Time   time;
813 };
814
815 struct _Ecore_X_Event_Sync_Counter
816 {
817    Ecore_X_Time time;
818 };
819
820 struct _Ecore_X_Event_Sync_Alarm
821 {
822    Ecore_X_Time       time;
823    Ecore_X_Sync_Alarm alarm;
824 };
825
826 struct _Ecore_X_Randr_Screen_Size
827 {
828    int width, height;
829 };
830
831 struct _Ecore_X_Randr_Screen_Size_MM
832 {
833    int width, height, width_mm, height_mm;
834 };
835
836 struct _Ecore_X_Event_Screen_Change
837 {
838    Ecore_X_Window                win;
839    Ecore_X_Window                root;
840    Ecore_X_Randr_Screen_Size_MM  size;  /* in pixel and millimeters */
841    Ecore_X_Time                  time;
842    Ecore_X_Time                  config_time;
843    Ecore_X_Randr_Orientation     orientation;
844    Ecore_X_Render_Subpixel_Order subpixel_order;
845    Ecore_X_Randr_Size_ID         size_id;
846 };
847
848 struct _Ecore_X_Event_Randr_Crtc_Change
849 {
850    Ecore_X_Window            win;
851    Ecore_X_Randr_Crtc        crtc;
852    Ecore_X_Randr_Mode        mode;
853    Ecore_X_Randr_Orientation orientation;
854    Eina_Rectangle            geo;
855 };
856
857 struct _Ecore_X_Event_Randr_Output_Change
858 {
859    Ecore_X_Window                  win;
860    Ecore_X_Randr_Output            output;
861    Ecore_X_Randr_Crtc              crtc;
862    Ecore_X_Randr_Mode              mode;
863    Ecore_X_Randr_Orientation       orientation;
864    Ecore_X_Randr_Connection_Status connection;
865    Ecore_X_Render_Subpixel_Order   subpixel_order;
866 };
867
868 struct _Ecore_X_Event_Randr_Output_Property_Notify
869 {
870    Ecore_X_Window                win;
871    Ecore_X_Randr_Output          output;
872    Ecore_X_Atom                  property;
873    Ecore_X_Time                  time;
874    Ecore_X_Randr_Property_Change state;
875 };
876
877 struct _Ecore_X_Event_Window_Delete_Request
878 {
879    Ecore_X_Window win;
880    Ecore_X_Time   time;
881 };
882
883 struct _Ecore_X_Event_Window_Prop_Title_Change
884 {
885    Ecore_X_Window win;
886    char          *title;
887    Ecore_X_Time   time;
888 };
889
890 struct _Ecore_X_Event_Window_Prop_Visible_Title_Change
891 {
892    Ecore_X_Window win;
893    char          *title;
894    Ecore_X_Time   time;
895 };
896
897 struct _Ecore_X_Event_Window_Prop_Icon_Name_Change
898 {
899    Ecore_X_Window win;
900    char          *name;
901    Ecore_X_Time   time;
902 };
903
904 struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change
905 {
906    Ecore_X_Window win;
907    char          *name;
908    Ecore_X_Time   time;
909 };
910
911 struct _Ecore_X_Event_Window_Prop_Client_Machine_Change
912 {
913    Ecore_X_Window win;
914    char          *name;
915    Ecore_X_Time   time;
916 };
917
918 struct _Ecore_X_Event_Window_Prop_Name_Class_Change
919 {
920    Ecore_X_Window win;
921    char          *name;
922    char          *clas;
923    Ecore_X_Time   time;
924 };
925
926 struct _Ecore_X_Event_Window_Prop_Pid_Change
927 {
928    Ecore_X_Window win;
929    pid_t          pid;
930    Ecore_X_Time   time;
931 };
932
933 struct _Ecore_X_Event_Window_Prop_Desktop_Change
934 {
935    Ecore_X_Window win;
936    long           desktop;
937    Ecore_X_Time   time;
938 };
939
940 struct _Ecore_X_Event_Startup_Sequence
941 {
942    Ecore_X_Window win;
943 };
944
945 struct _Ecore_X_Event_Window_Move_Resize_Request
946 {
947    Ecore_X_Window win;
948    int            x, y;
949    int            direction;
950    int            button;
951    int            source;
952 };
953
954 struct _Ecore_X_Event_Window_State_Request
955 {
956    Ecore_X_Window              win;
957    Ecore_X_Window_State_Action action;
958    Ecore_X_Window_State        state[2];
959    int                         source;
960 };
961
962 struct _Ecore_X_Event_Frame_Extents_Request
963 {
964    Ecore_X_Window win;
965 };
966
967 struct _Ecore_X_Event_Ping
968 {
969    Ecore_X_Window win;
970    Ecore_X_Window event_win;
971    Ecore_X_Time   time;
972 };
973
974 struct _Ecore_X_Event_Desktop_Change
975 {
976    Ecore_X_Window win;
977    unsigned int   desk;
978    int            source;
979 };
980
981 struct _Ecore_X_Event_Generic
982 {
983    int          extension;
984    int          evtype;
985    unsigned int cookie;
986    void        *data;
987 };
988
989 EAPI extern int ECORE_X_EVENT_ANY; /**< low level event dependent on
990                                         backend in use, if Xlib will be XEvent, if XCB will be xcb_generic_event_t.
991                                         @warning avoid using it.
992                                     */
993 EAPI extern int ECORE_X_EVENT_MOUSE_IN;
994 EAPI extern int ECORE_X_EVENT_MOUSE_OUT;
995 EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_IN;
996 EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_OUT;
997 EAPI extern int ECORE_X_EVENT_WINDOW_KEYMAP;
998 EAPI extern int ECORE_X_EVENT_WINDOW_DAMAGE;
999 EAPI extern int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE;
1000 EAPI extern int ECORE_X_EVENT_WINDOW_CREATE;
1001 EAPI extern int ECORE_X_EVENT_WINDOW_DESTROY;
1002 EAPI extern int ECORE_X_EVENT_WINDOW_HIDE;
1003 EAPI extern int ECORE_X_EVENT_WINDOW_SHOW;
1004 EAPI extern int ECORE_X_EVENT_WINDOW_SHOW_REQUEST;
1005 EAPI extern int ECORE_X_EVENT_WINDOW_REPARENT;
1006 EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE;
1007 EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST;
1008 EAPI extern int ECORE_X_EVENT_WINDOW_GRAVITY;
1009 EAPI extern int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST;
1010 EAPI extern int ECORE_X_EVENT_WINDOW_STACK;
1011 EAPI extern int ECORE_X_EVENT_WINDOW_STACK_REQUEST;
1012 EAPI extern int ECORE_X_EVENT_WINDOW_PROPERTY;
1013 EAPI extern int ECORE_X_EVENT_WINDOW_COLORMAP;
1014 EAPI extern int ECORE_X_EVENT_WINDOW_MAPPING;
1015 EAPI extern int ECORE_X_EVENT_MAPPING_CHANGE;
1016 EAPI extern int ECORE_X_EVENT_SELECTION_CLEAR;
1017 EAPI extern int ECORE_X_EVENT_SELECTION_REQUEST;
1018 EAPI extern int ECORE_X_EVENT_SELECTION_NOTIFY;
1019 EAPI extern int ECORE_X_EVENT_FIXES_SELECTION_NOTIFY;
1020 EAPI extern int ECORE_X_EVENT_CLIENT_MESSAGE;
1021 EAPI extern int ECORE_X_EVENT_WINDOW_SHAPE;
1022 EAPI extern int ECORE_X_EVENT_SCREENSAVER_NOTIFY;
1023 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_FLICK;
1024 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_PAN;
1025 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION;
1026 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_TAP;
1027 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD;
1028 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_HOLD;
1029 EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_GROUP;
1030 EAPI extern int ECORE_X_EVENT_SYNC_COUNTER;
1031 EAPI extern int ECORE_X_EVENT_SYNC_ALARM;
1032 EAPI extern int ECORE_X_EVENT_SCREEN_CHANGE;
1033 EAPI extern int ECORE_X_EVENT_RANDR_CRTC_CHANGE;
1034 EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_CHANGE;
1035 EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY;
1036 EAPI extern int ECORE_X_EVENT_DAMAGE_NOTIFY;
1037
1038 EAPI extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST;
1039
1040 EAPI extern int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST;
1041 EAPI extern int ECORE_X_EVENT_WINDOW_STATE_REQUEST;
1042 EAPI extern int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST;
1043 EAPI extern int ECORE_X_EVENT_PING;
1044 EAPI extern int ECORE_X_EVENT_DESKTOP_CHANGE;
1045
1046 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW;
1047 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
1048 EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
1049
1050 EAPI extern int ECORE_X_EVENT_GENERIC;
1051
1052 EAPI extern int ECORE_X_EVENT_XDND_ENTER;
1053 EAPI extern int ECORE_X_EVENT_XDND_POSITION;
1054 EAPI extern int ECORE_X_EVENT_XDND_STATUS;
1055 EAPI extern int ECORE_X_EVENT_XDND_LEAVE;
1056 EAPI extern int ECORE_X_EVENT_XDND_DROP;
1057 EAPI extern int ECORE_X_EVENT_XDND_FINISHED;
1058
1059 EAPI extern int ECORE_X_LOCK_SCROLL;
1060 EAPI extern int ECORE_X_LOCK_NUM;
1061 EAPI extern int ECORE_X_LOCK_CAPS;
1062 EAPI extern int ECORE_X_LOCK_SHIFT;
1063
1064 typedef enum _Ecore_X_WM_Protocol
1065 {
1066    /** If enabled the window manager will be asked to send a
1067     * delete message instead of just closing (destroying) the window. */
1068    ECORE_X_WM_PROTOCOL_DELETE_REQUEST,
1069
1070    /** If enabled the window manager will be told that the window
1071     * explicitly sets input focus. */
1072    ECORE_X_WM_PROTOCOL_TAKE_FOCUS,
1073
1074    /** If enabled the window manager can ping the window to check
1075     * if it is alive. */
1076    ECORE_X_NET_WM_PROTOCOL_PING,
1077
1078    /** If enabled the window manager can sync updating with the
1079     * window (?) */
1080    ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST,
1081
1082    /** Number of defined items */
1083    ECORE_X_WM_PROTOCOL_NUM
1084 } Ecore_X_WM_Protocol;
1085
1086 typedef enum _Ecore_X_Window_Input_Mode
1087 {
1088    /** The window can never be focused */
1089    ECORE_X_WINDOW_INPUT_MODE_NONE,
1090
1091    /** The window can be focused by the WM but doesn't focus itself */
1092    ECORE_X_WINDOW_INPUT_MODE_PASSIVE,
1093
1094    /** The window sets the focus itself if one of its sub-windows
1095     * already is focused */
1096    ECORE_X_WINDOW_INPUT_MODE_ACTIVE_LOCAL,
1097
1098    /** The window sets the focus itself even if another window
1099     * is currently focused */
1100    ECORE_X_WINDOW_INPUT_MODE_ACTIVE_GLOBAL
1101 } Ecore_X_Window_Input_Mode;
1102
1103 /**
1104  * @typedef _Ecore_X_Window_State_Hint
1105  * Defines the different state hint of the window of Ecore_X.
1106  */
1107 typedef enum _Ecore_X_Window_State_Hint
1108 {
1109    /** Do not provide any state hint to the window manager */
1110    ECORE_X_WINDOW_STATE_HINT_NONE = -1,
1111
1112    /** The window wants to remain hidden and NOT iconified */
1113    ECORE_X_WINDOW_STATE_HINT_WITHDRAWN,
1114
1115    /** The window wants to be mapped normally */
1116    ECORE_X_WINDOW_STATE_HINT_NORMAL,
1117
1118    /** The window wants to start in an iconified state */
1119    ECORE_X_WINDOW_STATE_HINT_ICONIC
1120 } Ecore_X_Window_State_Hint;
1121
1122 typedef enum _Ecore_X_Window_Type
1123 {
1124    ECORE_X_WINDOW_TYPE_UNKNOWN = 0,
1125    ECORE_X_WINDOW_TYPE_DESKTOP,
1126    ECORE_X_WINDOW_TYPE_DOCK,
1127    ECORE_X_WINDOW_TYPE_TOOLBAR,
1128    ECORE_X_WINDOW_TYPE_MENU,
1129    ECORE_X_WINDOW_TYPE_UTILITY,
1130    ECORE_X_WINDOW_TYPE_SPLASH,
1131    ECORE_X_WINDOW_TYPE_DIALOG,
1132    ECORE_X_WINDOW_TYPE_NORMAL,
1133    ECORE_X_WINDOW_TYPE_DROPDOWN_MENU,
1134    ECORE_X_WINDOW_TYPE_POPUP_MENU,
1135    ECORE_X_WINDOW_TYPE_TOOLTIP,
1136    ECORE_X_WINDOW_TYPE_NOTIFICATION,
1137    ECORE_X_WINDOW_TYPE_COMBO,
1138    ECORE_X_WINDOW_TYPE_DND
1139 } Ecore_X_Window_Type;
1140
1141 typedef enum _Ecore_X_Action
1142 {
1143    ECORE_X_ACTION_MOVE,
1144    ECORE_X_ACTION_RESIZE,
1145    ECORE_X_ACTION_MINIMIZE,
1146    ECORE_X_ACTION_SHADE,
1147    ECORE_X_ACTION_STICK,
1148    ECORE_X_ACTION_MAXIMIZE_HORZ,
1149    ECORE_X_ACTION_MAXIMIZE_VERT,
1150    ECORE_X_ACTION_FULLSCREEN,
1151    ECORE_X_ACTION_CHANGE_DESKTOP,
1152    ECORE_X_ACTION_CLOSE,
1153    ECORE_X_ACTION_ABOVE,
1154    ECORE_X_ACTION_BELOW
1155 } Ecore_X_Action;
1156
1157 typedef enum _Ecore_X_Window_Configure_Mask
1158 {
1159    ECORE_X_WINDOW_CONFIGURE_MASK_X = (1 << 0),
1160    ECORE_X_WINDOW_CONFIGURE_MASK_Y = (1 << 1),
1161    ECORE_X_WINDOW_CONFIGURE_MASK_W = (1 << 2),
1162    ECORE_X_WINDOW_CONFIGURE_MASK_H = (1 << 3),
1163    ECORE_X_WINDOW_CONFIGURE_MASK_BORDER_WIDTH = (1 << 4),
1164    ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING = (1 << 5),
1165    ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE = (1 << 6)
1166 } Ecore_X_Window_Configure_Mask;
1167
1168 typedef enum _Ecore_X_Virtual_Keyboard_State
1169 {
1170    ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN = 0,
1171    ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF,
1172    ECORE_X_VIRTUAL_KEYBOARD_STATE_ON,
1173    ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA,
1174    ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC,
1175    ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN,
1176    ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER,
1177    ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX,
1178    ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL,
1179    ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD,
1180    ECORE_X_VIRTUAL_KEYBOARD_STATE_IP,
1181    ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST,
1182    ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE,
1183    ECORE_X_VIRTUAL_KEYBOARD_STATE_URL,
1184    ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD,
1185    ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME
1186 } Ecore_X_Virtual_Keyboard_State;
1187
1188 typedef enum _Ecore_X_Illume_Mode
1189 {
1190    ECORE_X_ILLUME_MODE_UNKNOWN = 0,
1191    ECORE_X_ILLUME_MODE_SINGLE,
1192    ECORE_X_ILLUME_MODE_DUAL_TOP,
1193    ECORE_X_ILLUME_MODE_DUAL_LEFT
1194 } Ecore_X_Illume_Mode;
1195
1196 typedef enum _Ecore_X_Illume_Quickpanel_State
1197 {
1198    ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN = 0,
1199    ECORE_X_ILLUME_QUICKPANEL_STATE_OFF,
1200    ECORE_X_ILLUME_QUICKPANEL_STATE_ON
1201 } Ecore_X_Illume_Quickpanel_State;
1202
1203 typedef enum _Ecore_X_Illume_Indicator_State
1204 {
1205    ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN = 0,
1206    ECORE_X_ILLUME_INDICATOR_STATE_OFF,
1207    ECORE_X_ILLUME_INDICATOR_STATE_ON
1208 } Ecore_X_Illume_Indicator_State;
1209
1210 typedef enum _Ecore_X_Illume_Clipboard_State
1211 {
1212    ECORE_X_ILLUME_CLIPBOARD_STATE_UNKNOWN = 0,
1213    ECORE_X_ILLUME_CLIPBOARD_STATE_OFF,
1214    ECORE_X_ILLUME_CLIPBOARD_STATE_ON
1215 } Ecore_X_Illume_Clipboard_State;
1216
1217 typedef enum _Ecore_X_Illume_Indicator_Opacity_Mode
1218 {
1219    ECORE_X_ILLUME_INDICATOR_OPACITY_UNKNOWN = 0,
1220    ECORE_X_ILLUME_INDICATOR_OPAQUE,
1221    ECORE_X_ILLUME_INDICATOR_TRANSLUCENT,
1222    ECORE_X_ILLUME_INDICATOR_TRANSPARENT
1223 } Ecore_X_Illume_Indicator_Opacity_Mode;
1224
1225 typedef enum _Ecore_X_Illume_Window_State
1226 {
1227    ECORE_X_ILLUME_WINDOW_STATE_NORMAL = 0,
1228    ECORE_X_ILLUME_WINDOW_STATE_FLOATING
1229 } Ecore_X_Illume_Window_State;
1230
1231 /* Window layer constants */
1232 #define ECORE_X_WINDOW_LAYER_BELOW  2
1233 #define ECORE_X_WINDOW_LAYER_NORMAL 4
1234 #define ECORE_X_WINDOW_LAYER_ABOVE  6
1235
1236 /* Property list operations */
1237 #define ECORE_X_PROP_LIST_REMOVE    0
1238 #define ECORE_X_PROP_LIST_ADD       1
1239 #define ECORE_X_PROP_LIST_TOGGLE    2
1240
1241 EAPI int                       ecore_x_init(const char *name);
1242 EAPI int                       ecore_x_shutdown(void);
1243 EAPI int                       ecore_x_disconnect(void);
1244 EAPI Ecore_X_Display          *ecore_x_display_get(void);
1245 EAPI Ecore_X_Connection       *ecore_x_connection_get(void);
1246 EAPI int                       ecore_x_fd_get(void);
1247 EAPI Ecore_X_Screen           *ecore_x_default_screen_get(void);
1248 EAPI void                      ecore_x_screen_size_get(const Ecore_X_Screen *screen, int *w, int *h);
1249 EAPI int                       ecore_x_screen_count_get(void);
1250 EAPI int                       ecore_x_screen_index_get(const Ecore_X_Screen *screen);
1251 EAPI Ecore_X_Screen           *ecore_x_screen_get(int index);
1252
1253 EAPI void                      ecore_x_double_click_time_set(double t);
1254 EAPI double                    ecore_x_double_click_time_get(void);
1255 EAPI void                      ecore_x_flush(void);
1256 EAPI void                      ecore_x_sync(void);
1257 EAPI void                      ecore_x_killall(Ecore_X_Window root);
1258 EAPI void                      ecore_x_kill(Ecore_X_Window win);
1259 EAPI int                       ecore_x_dpi_get(void);
1260 EAPI Eina_Bool                 ecore_x_bell(int percent);
1261 EAPI unsigned int              ecore_x_visual_id_get(Ecore_X_Visual visual);
1262
1263 EAPI Ecore_X_Visual            ecore_x_default_visual_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1264 EAPI Ecore_X_Colormap          ecore_x_default_colormap_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1265 EAPI int                       ecore_x_default_depth_get(Ecore_X_Display *disp, Ecore_X_Screen *screen);
1266
1267 EAPI Ecore_X_Time              ecore_x_current_time_get(void);
1268
1269 EAPI void                      ecore_x_error_handler_set(void (*func)(void *data), const void *data);
1270 EAPI void                      ecore_x_io_error_handler_set(void (*func)(void *data), const void *data);
1271 EAPI int                       ecore_x_error_request_get(void);
1272 EAPI int                       ecore_x_error_code_get(void);
1273 EAPI Ecore_X_ID                ecore_x_error_resource_id_get(void);
1274
1275 EAPI void                      ecore_x_event_mask_set(Ecore_X_Window w, Ecore_X_Event_Mask mask);
1276 EAPI void                      ecore_x_event_mask_unset(Ecore_X_Window w, Ecore_X_Event_Mask mask);
1277
1278 EAPI Eina_Bool                 ecore_x_selection_notify_send(Ecore_X_Window requestor, Ecore_X_Atom selection, Ecore_X_Atom target, Ecore_X_Atom property, Ecore_X_Time time);
1279 EAPI Eina_Bool                 ecore_x_selection_primary_set(Ecore_X_Window w, const void *data, int size);
1280 EAPI Eina_Bool                 ecore_x_selection_primary_clear(void);
1281 EAPI Eina_Bool                 ecore_x_selection_secondary_set(Ecore_X_Window w, const void *data, int size);
1282 EAPI Eina_Bool                 ecore_x_selection_secondary_clear(void);
1283 EAPI Eina_Bool                 ecore_x_selection_xdnd_set(Ecore_X_Window w, const void *data, int size);
1284 EAPI Eina_Bool                 ecore_x_selection_xdnd_clear(void);
1285 EAPI Eina_Bool                 ecore_x_selection_clipboard_set(Ecore_X_Window w, const void *data, int size);
1286 EAPI Eina_Bool                 ecore_x_selection_clipboard_clear(void);
1287 EAPI void                      ecore_x_selection_primary_request(Ecore_X_Window w, const char *target);
1288 EAPI void                      ecore_x_selection_secondary_request(Ecore_X_Window w, const char *target);
1289 EAPI void                      ecore_x_selection_xdnd_request(Ecore_X_Window w, const char *target);
1290 EAPI void                      ecore_x_selection_clipboard_request(Ecore_X_Window w, const char *target);
1291 EAPI Eina_Bool                 ecore_x_selection_convert(Ecore_X_Atom selection, Ecore_X_Atom target, void **data_ret, int *len, Ecore_X_Atom *targprop, int *targsize);
1292 EAPI void                      ecore_x_selection_converter_add(char *target, Eina_Bool (*func)(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *, int *));
1293 EAPI void                      ecore_x_selection_converter_atom_add(Ecore_X_Atom target, Eina_Bool (*func)(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *tprop, int *tsize));
1294 EAPI void                      ecore_x_selection_converter_del(char *target);
1295 EAPI void                      ecore_x_selection_converter_atom_del(Ecore_X_Atom target);
1296 EAPI void                      ecore_x_selection_parser_add(const char *target, void *(*func)(const char *target, void *data, int size, int format));
1297 EAPI void                      ecore_x_selection_parser_del(const char *target);
1298 EAPI void                      ecore_x_selection_owner_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Time tm);
1299 EAPI Ecore_X_Window            ecore_x_selection_owner_get(Ecore_X_Atom atom);
1300
1301 EAPI void                      ecore_x_dnd_aware_set(Ecore_X_Window win, Eina_Bool on);
1302 EAPI int                       ecore_x_dnd_version_get(Ecore_X_Window win);
1303 EAPI Eina_Bool                 ecore_x_dnd_type_isset(Ecore_X_Window win, const char *type);
1304 EAPI void                      ecore_x_dnd_type_set(Ecore_X_Window win, const char *type, Eina_Bool on);
1305 EAPI void                      ecore_x_dnd_types_set(Ecore_X_Window win, const char **types, unsigned int num_types);
1306 EAPI void                      ecore_x_dnd_actions_set(Ecore_X_Window win, Ecore_X_Atom *actions, unsigned int num_actions);
1307 EAPI Eina_Bool                 ecore_x_dnd_begin(Ecore_X_Window source, unsigned char *data, int size);
1308 EAPI Eina_Bool                 ecore_x_dnd_drop(void);
1309 EAPI void                      ecore_x_dnd_send_status(Eina_Bool will_accept, Eina_Bool suppress, Ecore_X_Rectangle rectangle, Ecore_X_Atom action);
1310 EAPI void                      ecore_x_dnd_send_finished(void);
1311 EAPI void                      ecore_x_dnd_source_action_set(Ecore_X_Atom action);
1312 EAPI Ecore_X_Atom              ecore_x_dnd_source_action_get(void);
1313 EAPI void                      ecore_x_dnd_callback_pos_update_set(void (*cb)(void *, Ecore_X_Xdnd_Position *data), const void *data);
1314
1315 EAPI Ecore_X_Window            ecore_x_window_new(Ecore_X_Window parent, int x, int y, int w, int h);
1316 EAPI Ecore_X_Window            ecore_x_window_override_new(Ecore_X_Window parent, int x, int y, int w, int h);
1317 EAPI int                       ecore_x_window_argb_get(Ecore_X_Window win);
1318 EAPI Ecore_X_Window            ecore_x_window_manager_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1319 EAPI Ecore_X_Window            ecore_x_window_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1320 EAPI Ecore_X_Window            ecore_x_window_override_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
1321 EAPI Ecore_X_Window            ecore_x_window_input_new(Ecore_X_Window parent, int x, int y, int w, int h);
1322 EAPI void                      ecore_x_window_configure(Ecore_X_Window win, Ecore_X_Window_Configure_Mask mask, int x, int y, int w, int h, int border_width, Ecore_X_Window sibling, int stack_mode);
1323 EAPI void                      ecore_x_window_cursor_set(Ecore_X_Window win, Ecore_X_Cursor c);
1324 EAPI void                      ecore_x_window_free(Ecore_X_Window win);
1325 EAPI void                      ecore_x_window_ignore_set(Ecore_X_Window win, int ignore);
1326 EAPI Ecore_X_Window           *ecore_x_window_ignore_list(int *num);
1327
1328 EAPI void                      ecore_x_window_delete_request_send(Ecore_X_Window win);
1329 EAPI void                      ecore_x_window_show(Ecore_X_Window win);
1330 EAPI void                      ecore_x_window_hide(Ecore_X_Window win);
1331 EAPI void                      ecore_x_window_move(Ecore_X_Window win, int x, int y);
1332 EAPI void                      ecore_x_window_resize(Ecore_X_Window win, int w, int h);
1333 EAPI void                      ecore_x_window_move_resize(Ecore_X_Window win, int x, int y, int w, int h);
1334 EAPI void                      ecore_x_window_focus(Ecore_X_Window win);
1335 EAPI void                      ecore_x_window_focus_at_time(Ecore_X_Window win, Ecore_X_Time t);
1336 EAPI Ecore_X_Window            ecore_x_window_focus_get(void);
1337 EAPI void                      ecore_x_window_raise(Ecore_X_Window win);
1338 EAPI void                      ecore_x_window_lower(Ecore_X_Window win);
1339 EAPI void                      ecore_x_window_reparent(Ecore_X_Window win, Ecore_X_Window new_parent, int x, int y);
1340 EAPI void                      ecore_x_window_size_get(Ecore_X_Window win, int *w, int *h);
1341 EAPI void                      ecore_x_window_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1342 EAPI int                       ecore_x_window_border_width_get(Ecore_X_Window win);
1343 EAPI void                      ecore_x_window_border_width_set(Ecore_X_Window win, int width);
1344 EAPI int                       ecore_x_window_depth_get(Ecore_X_Window win);
1345 EAPI void                      ecore_x_window_cursor_show(Ecore_X_Window win, Eina_Bool show);
1346 EAPI void                      ecore_x_window_defaults_set(Ecore_X_Window win);
1347 EAPI int                       ecore_x_window_visible_get(Ecore_X_Window win);
1348 EAPI Ecore_X_Window            ecore_x_window_shadow_tree_at_xy_with_skip_get(Ecore_X_Window base, int x, int y, Ecore_X_Window *skip, int skip_num);
1349 EAPI Ecore_X_Window            ecore_x_window_shadow_parent_get(Ecore_X_Window root, Ecore_X_Window win);
1350 EAPI void                      ecore_x_window_shadow_tree_flush(void);
1351 EAPI Ecore_X_Window            ecore_x_window_root_get(Ecore_X_Window win);
1352 EAPI Ecore_X_Window            ecore_x_window_at_xy_get(int x, int y);
1353 EAPI Ecore_X_Window            ecore_x_window_at_xy_with_skip_get(int x, int y, Ecore_X_Window *skip, int skip_num);
1354 EAPI Ecore_X_Window            ecore_x_window_at_xy_begin_get(Ecore_X_Window begin, int x, int y);
1355 EAPI Ecore_X_Window            ecore_x_window_parent_get(Ecore_X_Window win);
1356
1357 EAPI void                      ecore_x_window_background_color_set(Ecore_X_Window win, unsigned short r, unsigned short g, unsigned short b);
1358 EAPI void                      ecore_x_window_gravity_set(Ecore_X_Window win, Ecore_X_Gravity grav);
1359 EAPI void                      ecore_x_window_pixel_gravity_set(Ecore_X_Window win, Ecore_X_Gravity grav);
1360 EAPI void                      ecore_x_window_pixmap_set(Ecore_X_Window win, Ecore_X_Pixmap pmap);
1361 EAPI void                      ecore_x_window_area_clear(Ecore_X_Window win, int x, int y, int w, int h);
1362 EAPI void                      ecore_x_window_area_expose(Ecore_X_Window win, int x, int y, int w, int h);
1363 EAPI void                      ecore_x_window_override_set(Ecore_X_Window win, Eina_Bool override);
1364
1365 EAPI void                      ecore_x_window_prop_card32_set(Ecore_X_Window win, Ecore_X_Atom atom, unsigned int *val, unsigned int num);
1366 EAPI int                       ecore_x_window_prop_card32_get(Ecore_X_Window win, Ecore_X_Atom atom, unsigned int *val, unsigned int len);
1367 EAPI int                       ecore_x_window_prop_card32_list_get(Ecore_X_Window win, Ecore_X_Atom atom, unsigned int **plst);
1368
1369 EAPI void                      ecore_x_window_prop_xid_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom type, Ecore_X_ID *lst, unsigned int num);
1370 EAPI int                       ecore_x_window_prop_xid_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom type, Ecore_X_ID *lst, unsigned int len);
1371 EAPI int                       ecore_x_window_prop_xid_list_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom type, Ecore_X_ID **plst);
1372 EAPI void                      ecore_x_window_prop_xid_list_change(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom type, Ecore_X_ID item, int op);
1373 EAPI void                      ecore_x_window_prop_atom_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom *val, unsigned int num);
1374 EAPI int                       ecore_x_window_prop_atom_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom *val, unsigned int len);
1375 EAPI int                       ecore_x_window_prop_atom_list_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom **plst);
1376 EAPI void                      ecore_x_window_prop_atom_list_change(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Atom item, int op);
1377 EAPI void                      ecore_x_window_prop_window_set(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Window *val, unsigned int num);
1378 EAPI int                       ecore_x_window_prop_window_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Window *val, unsigned int len);
1379 EAPI int                       ecore_x_window_prop_window_list_get(Ecore_X_Window win, Ecore_X_Atom atom, Ecore_X_Window **plst);
1380
1381 EAPI Ecore_X_Atom              ecore_x_window_prop_any_type(void);
1382 EAPI void                      ecore_x_window_prop_property_set(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Atom format, int size, void *data, int number);
1383 EAPI int                       ecore_x_window_prop_property_get(Ecore_X_Window win, Ecore_X_Atom property, Ecore_X_Atom type, int size, unsigned char **data, int *num);
1384 EAPI void                      ecore_x_window_prop_property_del(Ecore_X_Window win, Ecore_X_Atom property);
1385 EAPI Ecore_X_Atom             *ecore_x_window_prop_list(Ecore_X_Window win, int *num_ret);
1386 EAPI void                      ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, const char *str);
1387 EAPI char                     *ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type);
1388 EAPI Eina_Bool                 ecore_x_window_prop_protocol_isset(Ecore_X_Window win, Ecore_X_WM_Protocol protocol);
1389 EAPI Ecore_X_WM_Protocol      *ecore_x_window_prop_protocol_list_get(Ecore_X_Window win, int *num_ret);
1390
1391 EAPI void                      ecore_x_window_shape_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask);
1392 EAPI void                      ecore_x_window_shape_window_set(Ecore_X_Window win, Ecore_X_Window shape_win);
1393 EAPI void                      ecore_x_window_shape_window_set_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1394 EAPI void                      ecore_x_window_shape_rectangle_set(Ecore_X_Window win, int x, int y, int w, int h);
1395 EAPI void                      ecore_x_window_shape_rectangles_set(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1396 EAPI void                      ecore_x_window_shape_input_rectangle_set(Ecore_X_Window win, int x, int y, int w, int h);
1397 EAPI void                      ecore_x_window_shape_input_rectangles_set(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1398 EAPI void                      ecore_x_window_shape_input_rectangle_add(Ecore_X_Window win, int x, int y, int w, int h);
1399 EAPI void                      ecore_x_window_shape_rectangle_subtract(Ecore_X_Window win, int x, int y, int w, int h);
1400 EAPI void                      ecore_x_window_shape_input_rectangle_subtract(Ecore_X_Window win, int x, int y, int w, int h);
1401 EAPI void                      ecore_x_window_shape_input_window_set_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1402 EAPI void                      ecore_x_window_shape_input_window_set(Ecore_X_Window win, Ecore_X_Window shape_win);
1403 EAPI void                      ecore_x_window_shape_window_add(Ecore_X_Window win, Ecore_X_Window shape_win);
1404 EAPI void                      ecore_x_window_shape_window_add_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1405 EAPI void                      ecore_x_window_shape_input_window_add_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
1406 EAPI void                      ecore_x_window_shape_rectangle_add(Ecore_X_Window win, int x, int y, int w, int h);
1407 EAPI void                      ecore_x_window_shape_rectangle_clip(Ecore_X_Window win, int x, int y, int w, int h);
1408 EAPI void                      ecore_x_window_shape_input_rectangle_clip(Ecore_X_Window win, int x, int y, int w, int h);
1409 EAPI void                      ecore_x_window_shape_rectangles_add(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1410 EAPI void                      ecore_x_window_shape_input_rectangles_add(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
1411 EAPI Ecore_X_Rectangle        *ecore_x_window_shape_rectangles_get(Ecore_X_Window win, int *num_ret);
1412 EAPI Ecore_X_Rectangle        *ecore_x_window_shape_input_rectangles_get(Ecore_X_Window win, int *num_ret);
1413 EAPI void                      ecore_x_window_shape_events_select(Ecore_X_Window win, Eina_Bool on);
1414 EAPI void                      ecore_x_window_shape_input_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask);
1415
1416 EAPI Ecore_X_Pixmap            ecore_x_pixmap_new(Ecore_X_Window win, int w, int h, int dep);
1417 EAPI void                      ecore_x_pixmap_free(Ecore_X_Pixmap pmap);
1418 EAPI void                      ecore_x_pixmap_paste(Ecore_X_Pixmap pmap, Ecore_X_Drawable dest, Ecore_X_GC gc, int sx, int sy, int w, int h, int dx, int dy);
1419 EAPI void                      ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap, int *x, int *y, int *w, int *h);
1420 EAPI int                       ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap);
1421
1422 EAPI Ecore_X_GC                ecore_x_gc_new(Ecore_X_Drawable draw, Ecore_X_GC_Value_Mask value_mask, const unsigned int *value_list);
1423 EAPI void                      ecore_x_gc_free(Ecore_X_GC gc);
1424 EAPI void                      ecore_x_gc_foreground_set(Ecore_X_GC gc, unsigned long foreground);
1425 EAPI void                      ecore_x_gc_background_set(Ecore_X_GC gc, unsigned long background);
1426
1427 EAPI Eina_Bool                 ecore_x_client_message32_send(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Event_Mask mask, long d0, long d1, long d2, long d3, long d4);
1428 EAPI Eina_Bool                 ecore_x_client_message8_send(Ecore_X_Window win, Ecore_X_Atom type, const void *data, int len);
1429 EAPI Eina_Bool                 ecore_x_mouse_move_send(Ecore_X_Window win, int x, int y);
1430 EAPI Eina_Bool                 ecore_x_mouse_down_send(Ecore_X_Window win, int x, int y, int b);
1431 EAPI Eina_Bool                 ecore_x_mouse_up_send(Ecore_X_Window win, int x, int y, int b);
1432 EAPI Eina_Bool                 ecore_x_mouse_in_send(Ecore_X_Window win, int x, int y);
1433 EAPI Eina_Bool                 ecore_x_mouse_out_send(Ecore_X_Window win, int x, int y);
1434
1435 EAPI void                      ecore_x_drawable_geometry_get(Ecore_X_Drawable d, int *x, int *y, int *w, int *h);
1436 EAPI int                       ecore_x_drawable_border_width_get(Ecore_X_Drawable d);
1437 EAPI int                       ecore_x_drawable_depth_get(Ecore_X_Drawable d);
1438 EAPI void                      ecore_x_drawable_rectangle_fill(Ecore_X_Drawable d, Ecore_X_GC gc, int x, int y, int width, int height);
1439
1440 EAPI Eina_Bool                 ecore_x_cursor_color_supported_get(void);
1441 EAPI Ecore_X_Cursor            ecore_x_cursor_new(Ecore_X_Window win, int *pixels, int w, int h, int hot_x, int hot_y);
1442 EAPI void                      ecore_x_cursor_free(Ecore_X_Cursor c);
1443 EAPI Ecore_X_Cursor            ecore_x_cursor_shape_get(int shape);
1444 EAPI void                      ecore_x_cursor_size_set(int size);
1445 EAPI int                       ecore_x_cursor_size_get(void);
1446
1447 /* FIXME: these funcs need categorising */
1448 EAPI Ecore_X_Window           *ecore_x_window_root_list(int *num_ret);
1449 EAPI Ecore_X_Window            ecore_x_window_root_first_get(void);
1450 EAPI Eina_Bool                 ecore_x_window_manage(Ecore_X_Window win);
1451 EAPI void                      ecore_x_window_container_manage(Ecore_X_Window win);
1452 EAPI void                      ecore_x_window_client_manage(Ecore_X_Window win);
1453 EAPI void                      ecore_x_window_sniff(Ecore_X_Window win);
1454 EAPI void                      ecore_x_window_client_sniff(Ecore_X_Window win);
1455
1456 EAPI Ecore_X_Atom              ecore_x_atom_get(const char *name);
1457 EAPI void                      ecore_x_atoms_get(const char **names, int num, Ecore_X_Atom *atoms);
1458 EAPI char                     *ecore_x_atom_name_get(Ecore_X_Atom atom);
1459
1460 EAPI void                      ecore_x_icccm_init(void);
1461 EAPI void                      ecore_x_icccm_state_set(Ecore_X_Window win, Ecore_X_Window_State_Hint state);
1462 EAPI Ecore_X_Window_State_Hint ecore_x_icccm_state_get(Ecore_X_Window win);
1463 EAPI void                      ecore_x_icccm_delete_window_send(Ecore_X_Window win, Ecore_X_Time t);
1464 EAPI void                      ecore_x_icccm_take_focus_send(Ecore_X_Window win, Ecore_X_Time t);
1465 EAPI void                      ecore_x_icccm_save_yourself_send(Ecore_X_Window win, Ecore_X_Time t);
1466 EAPI void                      ecore_x_icccm_move_resize_send(Ecore_X_Window win, int x, int y, int w, int h);
1467 EAPI void                      ecore_x_icccm_hints_set(Ecore_X_Window win, Eina_Bool accepts_focus, Ecore_X_Window_State_Hint initial_state, Ecore_X_Pixmap icon_pixmap, Ecore_X_Pixmap icon_mask, Ecore_X_Window icon_window, Ecore_X_Window window_group, Eina_Bool is_urgent);
1468 EAPI Eina_Bool                 ecore_x_icccm_hints_get(Ecore_X_Window win, Eina_Bool *accepts_focus, Ecore_X_Window_State_Hint *initial_state, Ecore_X_Pixmap *icon_pixmap, Ecore_X_Pixmap *icon_mask, Ecore_X_Window *icon_window, Ecore_X_Window *window_group, Eina_Bool *is_urgent);
1469 EAPI void                      ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win, Eina_Bool request_pos, Ecore_X_Gravity gravity, int min_w, int min_h, int max_w, int max_h, int base_w, int base_h, int step_x, int step_y, double min_aspect, double max_aspect);
1470 EAPI Eina_Bool                 ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win, Eina_Bool *request_pos, Ecore_X_Gravity *gravity, int *min_w, int *min_h, int *max_w, int *max_h, int *base_w, int *base_h, int *step_x, int *step_y, double *min_aspect, double *max_aspect);
1471 EAPI void                      ecore_x_icccm_title_set(Ecore_X_Window win, const char *t);
1472 EAPI char                     *ecore_x_icccm_title_get(Ecore_X_Window win);
1473 EAPI void                      ecore_x_icccm_protocol_atoms_set(Ecore_X_Window win, Ecore_X_Atom *protos, int num);
1474 EAPI void                      ecore_x_icccm_protocol_set(Ecore_X_Window win, Ecore_X_WM_Protocol protocol, Eina_Bool on);
1475 EAPI Eina_Bool                 ecore_x_icccm_protocol_isset(Ecore_X_Window win, Ecore_X_WM_Protocol protocol);
1476 EAPI void                      ecore_x_icccm_name_class_set(Ecore_X_Window win, const char *n, const char *c);
1477 EAPI void                      ecore_x_icccm_name_class_get(Ecore_X_Window win, char **n, char **c);
1478 EAPI char                     *ecore_x_icccm_client_machine_get(Ecore_X_Window win);
1479 EAPI void                      ecore_x_icccm_command_set(Ecore_X_Window win, int argc, char **argv);
1480 EAPI void                      ecore_x_icccm_command_get(Ecore_X_Window win, int *argc, char ***argv);
1481 EAPI char                     *ecore_x_icccm_icon_name_get(Ecore_X_Window win);
1482 EAPI void                      ecore_x_icccm_icon_name_set(Ecore_X_Window win, const char *t);
1483 EAPI void                      ecore_x_icccm_colormap_window_set(Ecore_X_Window win, Ecore_X_Window subwin);
1484 EAPI void                      ecore_x_icccm_colormap_window_unset(Ecore_X_Window win, Ecore_X_Window subwin);
1485 EAPI void                      ecore_x_icccm_transient_for_set(Ecore_X_Window win, Ecore_X_Window forwin);
1486 EAPI void                      ecore_x_icccm_transient_for_unset(Ecore_X_Window win);
1487 EAPI Ecore_X_Window            ecore_x_icccm_transient_for_get(Ecore_X_Window win);
1488 EAPI void                      ecore_x_icccm_window_role_set(Ecore_X_Window win, const char *role);
1489 EAPI char                     *ecore_x_icccm_window_role_get(Ecore_X_Window win);
1490 EAPI void                      ecore_x_icccm_client_leader_set(Ecore_X_Window win, Ecore_X_Window l);
1491 EAPI Ecore_X_Window            ecore_x_icccm_client_leader_get(Ecore_X_Window win);
1492 EAPI void                      ecore_x_icccm_iconic_request_send(Ecore_X_Window win, Ecore_X_Window root);
1493
1494 typedef enum _Ecore_X_MWM_Hint_Func
1495 {
1496    ECORE_X_MWM_HINT_FUNC_ALL = (1 << 0),
1497    ECORE_X_MWM_HINT_FUNC_RESIZE = (1 << 1),
1498    ECORE_X_MWM_HINT_FUNC_MOVE = (1 << 2),
1499    ECORE_X_MWM_HINT_FUNC_MINIMIZE = (1 << 3),
1500    ECORE_X_MWM_HINT_FUNC_MAXIMIZE = (1 << 4),
1501    ECORE_X_MWM_HINT_FUNC_CLOSE = (1 << 5)
1502 } Ecore_X_MWM_Hint_Func;
1503
1504 typedef enum _Ecore_X_MWM_Hint_Decor
1505 {
1506    ECORE_X_MWM_HINT_DECOR_ALL = (1 << 0),
1507    ECORE_X_MWM_HINT_DECOR_BORDER = (1 << 1),
1508    ECORE_X_MWM_HINT_DECOR_RESIZEH = (1 << 2),
1509    ECORE_X_MWM_HINT_DECOR_TITLE = (1 << 3),
1510    ECORE_X_MWM_HINT_DECOR_MENU = (1 << 4),
1511    ECORE_X_MWM_HINT_DECOR_MINIMIZE = (1 << 5),
1512    ECORE_X_MWM_HINT_DECOR_MAXIMIZE = (1 << 6)
1513 } Ecore_X_MWM_Hint_Decor;
1514
1515 typedef enum _Ecore_X_MWM_Hint_Input
1516 {
1517    ECORE_X_MWM_HINT_INPUT_MODELESS = 0,
1518    ECORE_X_MWM_HINT_INPUT_PRIMARY_APPLICATION_MODAL = 1,
1519    ECORE_X_MWM_HINT_INPUT_SYSTEM_MODAL = 2,
1520    ECORE_X_MWM_HINT_INPUT_FULL_APPLICATION_MODAL = 3
1521 } Ecore_X_MWM_Hint_Input;
1522
1523 EAPI Eina_Bool                       ecore_x_mwm_hints_get(Ecore_X_Window win, Ecore_X_MWM_Hint_Func *fhint, Ecore_X_MWM_Hint_Decor *dhint, Ecore_X_MWM_Hint_Input *ihint);
1524 EAPI void                            ecore_x_mwm_borderless_set(Ecore_X_Window win, Eina_Bool borderless);
1525
1526 /* netwm */
1527 EAPI void                            ecore_x_netwm_init(void);
1528 EAPI void                            ecore_x_netwm_shutdown(void);
1529 EAPI void                            ecore_x_netwm_wm_identify(Ecore_X_Window root, Ecore_X_Window check, const char *wm_name);
1530 EAPI void                            ecore_x_netwm_supported_set(Ecore_X_Window root, Ecore_X_Atom *supported, int num);
1531 EAPI Eina_Bool                       ecore_x_netwm_supported_get(Ecore_X_Window root, Ecore_X_Atom **supported, int *num);
1532 EAPI void                            ecore_x_netwm_desk_count_set(Ecore_X_Window root, unsigned int n_desks);
1533 EAPI void                            ecore_x_netwm_desk_roots_set(Ecore_X_Window root, Ecore_X_Window *vroots, unsigned int n_desks);
1534 EAPI void                            ecore_x_netwm_desk_names_set(Ecore_X_Window root, const char **names, unsigned int n_desks);
1535 EAPI void                            ecore_x_netwm_desk_size_set(Ecore_X_Window root, unsigned int width, unsigned int height);
1536 EAPI void                            ecore_x_netwm_desk_workareas_set(Ecore_X_Window root, unsigned int *areas, unsigned int n_desks);
1537 EAPI unsigned int                   *ecore_x_netwm_desk_workareas_get(Ecore_X_Window root, unsigned int *n_desks);
1538 EAPI void                            ecore_x_netwm_desk_current_set(Ecore_X_Window root, unsigned int desk);
1539 EAPI void                            ecore_x_netwm_desk_viewports_set(Ecore_X_Window root, unsigned int *origins, unsigned int n_desks);
1540 EAPI void                            ecore_x_netwm_desk_layout_set(Ecore_X_Window root, int orientation, int columns, int rows, int starting_corner);
1541 EAPI void                            ecore_x_netwm_showing_desktop_set(Ecore_X_Window root, Eina_Bool on);
1542 EAPI void                            ecore_x_netwm_client_list_set(Ecore_X_Window root, Ecore_X_Window *p_clients, unsigned int n_clients);
1543 EAPI void                            ecore_x_netwm_client_list_stacking_set(Ecore_X_Window root, Ecore_X_Window *p_clients, unsigned int n_clients);
1544 EAPI void                            ecore_x_netwm_client_active_set(Ecore_X_Window root, Ecore_X_Window win);
1545 EAPI void                            ecore_x_netwm_client_active_request(Ecore_X_Window root, Ecore_X_Window win, int type, Ecore_X_Window current_win);
1546 EAPI void                            ecore_x_netwm_name_set(Ecore_X_Window win, const char *name);
1547 EAPI int                             ecore_x_netwm_name_get(Ecore_X_Window win, char **name);
1548 EAPI void                            ecore_x_netwm_startup_id_set(Ecore_X_Window win, const char *id);
1549 EAPI int                             ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id);
1550 EAPI void                            ecore_x_netwm_visible_name_set(Ecore_X_Window win, const char *name);
1551 EAPI int                             ecore_x_netwm_visible_name_get(Ecore_X_Window win, char **name);
1552 EAPI void                            ecore_x_netwm_icon_name_set(Ecore_X_Window win, const char *name);
1553 EAPI int                             ecore_x_netwm_icon_name_get(Ecore_X_Window win, char **name);
1554 EAPI void                            ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win, const char *name);
1555 EAPI int                             ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win, char **name);
1556 EAPI void                            ecore_x_netwm_desktop_set(Ecore_X_Window win, unsigned int desk);
1557 EAPI Eina_Bool                       ecore_x_netwm_desktop_get(Ecore_X_Window win, unsigned int *desk);
1558 EAPI void                            ecore_x_netwm_strut_set(Ecore_X_Window win, int left, int right, int top, int bottom);
1559 EAPI Eina_Bool                       ecore_x_netwm_strut_get(Ecore_X_Window win, int *left, int *right, int *top, int *bottom);
1560 EAPI void                            ecore_x_netwm_strut_partial_set(Ecore_X_Window win, int left, int right, int top, int bottom, int left_start_y, int left_end_y, int right_start_y, int right_end_y, int top_start_x, int top_end_x, int bottom_start_x, int bottom_end_x);
1561 EAPI Eina_Bool                       ecore_x_netwm_strut_partial_get(Ecore_X_Window win, int *left, int *right, int *top, int *bottom, int *left_start_y, int *left_end_y, int *right_start_y, int *right_end_y, int *top_start_x, int *top_end_x, int *bottom_start_x, int *bottom_end_x);
1562
1563 EAPI void                            ecore_x_netwm_icons_set(Ecore_X_Window win, Ecore_X_Icon *icon, int num);
1564
1565 EAPI Eina_Bool                       ecore_x_netwm_icons_get(Ecore_X_Window win, Ecore_X_Icon **icon, int *num);
1566 EAPI void                            ecore_x_netwm_icon_geometry_set(Ecore_X_Window win, int x, int y, int width, int height);
1567 EAPI Eina_Bool                       ecore_x_netwm_icon_geometry_get(Ecore_X_Window win, int *x, int *y, int *width, int *height);
1568 EAPI void                            ecore_x_netwm_pid_set(Ecore_X_Window win, int pid);
1569 EAPI Eina_Bool                       ecore_x_netwm_pid_get(Ecore_X_Window win, int *pid);
1570 EAPI void                            ecore_x_netwm_handled_icons_set(Ecore_X_Window win);
1571 EAPI Eina_Bool                       ecore_x_netwm_handled_icons_get(Ecore_X_Window win);
1572 EAPI void                            ecore_x_netwm_user_time_set(Ecore_X_Window win, unsigned int time);
1573 EAPI Eina_Bool                       ecore_x_netwm_user_time_get(Ecore_X_Window win, unsigned int *time);
1574 EAPI void                            ecore_x_netwm_window_state_set(Ecore_X_Window win, Ecore_X_Window_State *state, unsigned int num);
1575 EAPI Eina_Bool                       ecore_x_netwm_window_state_get(Ecore_X_Window win, Ecore_X_Window_State **state, unsigned int *num);
1576 EAPI void                            ecore_x_netwm_window_type_set(Ecore_X_Window win, Ecore_X_Window_Type type);
1577 EAPI Eina_Bool                       ecore_x_netwm_window_type_get(Ecore_X_Window win, Ecore_X_Window_Type *type);
1578 EAPI int                             ecore_x_netwm_window_types_get(Ecore_X_Window win, Ecore_X_Window_Type **types);
1579 EAPI Eina_Bool                       ecore_x_netwm_allowed_action_isset(Ecore_X_Window win, Ecore_X_Action action);
1580 EAPI void                            ecore_x_netwm_allowed_action_set(Ecore_X_Window win, Ecore_X_Action *action, unsigned int num);
1581 EAPI Eina_Bool                       ecore_x_netwm_allowed_action_get(Ecore_X_Window win, Ecore_X_Action **action, unsigned int *num);
1582 EAPI void                            ecore_x_netwm_opacity_set(Ecore_X_Window win, unsigned int opacity);
1583 EAPI Eina_Bool                       ecore_x_netwm_opacity_get(Ecore_X_Window win, unsigned int *opacity);
1584 EAPI void                            ecore_x_netwm_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
1585 EAPI Eina_Bool                       ecore_x_netwm_frame_size_get(Ecore_X_Window win, int *fl, int *fr, int *ft, int *fb);
1586 EAPI Eina_Bool                       ecore_x_netwm_sync_counter_get(Ecore_X_Window win, Ecore_X_Sync_Counter *counter);
1587 EAPI void                            ecore_x_netwm_ping_send(Ecore_X_Window win);
1588 EAPI void                            ecore_x_netwm_sync_request_send(Ecore_X_Window win, unsigned int serial);
1589 EAPI void                            ecore_x_netwm_state_request_send(Ecore_X_Window win, Ecore_X_Window root, Ecore_X_Window_State s1, Ecore_X_Window_State s2, Eina_Bool set);
1590 EAPI void                            ecore_x_netwm_desktop_request_send(Ecore_X_Window win, Ecore_X_Window root, unsigned int desktop);
1591 EAPI void                            ecore_x_netwm_moveresize_request_send(Ecore_X_Window win, int x, int y, Ecore_X_Netwm_Direction direction, unsigned int button);
1592
1593 EAPI void                            ecore_x_e_init(void);
1594 EAPI void                            ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
1595 EAPI void                            ecore_x_e_virtual_keyboard_set(Ecore_X_Window win, unsigned int is_keyboard);
1596 EAPI Eina_Bool                       ecore_x_e_virtual_keyboard_get(Ecore_X_Window win);
1597 EAPI void                            ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
1598 EAPI Ecore_X_Virtual_Keyboard_State  ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win);
1599 EAPI void                            ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
1600
1601 /* Illume functions */
1602 EAPI void                            ecore_x_e_illume_zone_set(Ecore_X_Window win, Ecore_X_Window zone);
1603 EAPI Ecore_X_Window                  ecore_x_e_illume_zone_get(Ecore_X_Window win);
1604 EAPI void                            ecore_x_e_illume_zone_list_set(Ecore_X_Window win, Ecore_X_Window *zones, unsigned int n_zones);
1605 EAPI void                            ecore_x_e_illume_conformant_set(Ecore_X_Window win, unsigned int is_conformant);
1606 EAPI Eina_Bool                       ecore_x_e_illume_conformant_get(Ecore_X_Window win);
1607 EAPI void                            ecore_x_e_illume_mode_set(Ecore_X_Window win, Ecore_X_Illume_Mode mode);
1608 EAPI Ecore_X_Illume_Mode             ecore_x_e_illume_mode_get(Ecore_X_Window win);
1609 EAPI void                            ecore_x_e_illume_mode_send(Ecore_X_Window win, Ecore_X_Illume_Mode mode);
1610 EAPI void                            ecore_x_e_illume_focus_back_send(Ecore_X_Window win);
1611 EAPI void                            ecore_x_e_illume_focus_forward_send(Ecore_X_Window win);
1612 EAPI void                            ecore_x_e_illume_focus_home_send(Ecore_X_Window win);
1613 EAPI void                            ecore_x_e_illume_close_send(Ecore_X_Window win);
1614 EAPI void                            ecore_x_e_illume_home_new_send(Ecore_X_Window win);
1615 EAPI void                            ecore_x_e_illume_home_del_send(Ecore_X_Window win);
1616 EAPI void                            ecore_x_e_illume_access_action_next_send(Ecore_X_Window win);
1617 EAPI void                            ecore_x_e_illume_access_action_prev_send(Ecore_X_Window win);
1618 EAPI void                            ecore_x_e_illume_access_action_activate_send(Ecore_X_Window win);
1619 EAPI void                            ecore_x_e_illume_access_action_read_send(Ecore_X_Window win);
1620 EAPI void                            ecore_x_e_illume_access_action_read_next_send(Ecore_X_Window win);
1621 EAPI void                            ecore_x_e_illume_access_action_read_prev_send(Ecore_X_Window win);
1622
1623 EAPI void                            ecore_x_e_illume_drag_set(Ecore_X_Window win, unsigned int drag);
1624 EAPI Eina_Bool                       ecore_x_e_illume_drag_get(Ecore_X_Window win);
1625 EAPI void                            ecore_x_e_illume_drag_locked_set(Ecore_X_Window win, unsigned int is_locked);
1626 EAPI Eina_Bool                       ecore_x_e_illume_drag_locked_get(Ecore_X_Window win);
1627 EAPI void                            ecore_x_e_illume_drag_start_send(Ecore_X_Window win);
1628 EAPI void                            ecore_x_e_illume_drag_end_send(Ecore_X_Window win);
1629 EAPI void                            ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1630 EAPI Eina_Bool                       ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1631 EAPI void                            ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1632 EAPI Eina_Bool                       ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1633 EAPI void                            ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1634 EAPI Eina_Bool                       ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1635 EAPI void                            ecore_x_e_illume_quickpanel_set(Ecore_X_Window win, unsigned int is_quickpanel);
1636 EAPI Eina_Bool                       ecore_x_e_illume_quickpanel_get(Ecore_X_Window win);
1637 EAPI void                            ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win, Ecore_X_Illume_Quickpanel_State state);
1638 EAPI Ecore_X_Illume_Quickpanel_State ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win);
1639 EAPI void                            ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win, Ecore_X_Illume_Quickpanel_State state);
1640 EAPI void                            ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win);
1641 EAPI void                            ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win, unsigned int priority);
1642 EAPI int                             ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win);
1643 EAPI void                            ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win, unsigned int priority);
1644 EAPI int                             ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win);
1645 EAPI void                            ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win, unsigned int zone);
1646 EAPI int                             ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win);
1647 EAPI void                            ecore_x_e_illume_quickpanel_zone_request_send(Ecore_X_Window win);
1648 EAPI void                            ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win);
1649
1650 EAPI void                            ecore_x_e_illume_clipboard_state_set(Ecore_X_Window win, Ecore_X_Illume_Clipboard_State state);
1651
1652 EAPI Ecore_X_Illume_Clipboard_State  ecore_x_e_illume_clipboard_state_get(Ecore_X_Window win);
1653
1654 EAPI void                            ecore_x_e_illume_clipboard_geometry_set(Ecore_X_Window win, int x, int y, int w, int h);
1655 EAPI Eina_Bool                       ecore_x_e_illume_clipboard_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
1656 EAPI void                            ecore_x_e_comp_sync_counter_set(Ecore_X_Window win, Ecore_X_Sync_Counter counter);
1657 EAPI Ecore_X_Sync_Counter            ecore_x_e_comp_sync_counter_get(Ecore_X_Window win);
1658 EAPI void                            ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root, Ecore_X_Window win);
1659 EAPI void                            ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root, Ecore_X_Window win, int w, int h);
1660 EAPI void                            ecore_x_e_comp_sync_supported_set(Ecore_X_Window root, Eina_Bool enabled);
1661 EAPI Eina_Bool                       ecore_x_e_comp_sync_supported_get(Ecore_X_Window root);
1662 EAPI void                            ecore_x_e_comp_sync_begin_send(Ecore_X_Window win);
1663 EAPI void                            ecore_x_e_comp_sync_end_send(Ecore_X_Window win);
1664 EAPI void                            ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win);
1665
1666 EAPI void                            ecore_x_e_comp_flush_send(Ecore_X_Window win);
1667 EAPI void                            ecore_x_e_comp_dump_send(Ecore_X_Window win);
1668 EAPI void                            ecore_x_e_comp_pixmap_set(Ecore_X_Window win, Ecore_X_Pixmap pixmap);
1669 EAPI Ecore_X_Pixmap                  ecore_x_e_comp_pixmap_get(Ecore_X_Window win);
1670
1671 /**
1672  * @brief Set the window profile list.
1673  *
1674  * @param win The window
1675  * @param profiles The profile name list 
1676  * @param num_profiles The number of profile names
1677  *
1678  * @since 1.3.0
1679  */
1680 EAPI void                            ecore_x_e_window_profile_list_set(Ecore_X_Window win, const char **profiles, unsigned int num_profiles);
1681 /**
1682  * @brief Get the window profile list.
1683  *
1684  * @param win The window
1685  * @param[out] profiles Returns the profile name list
1686  * @param[out] ret_num Returns the number of profile names
1687  *
1688  * @since 1.3.0
1689  */
1690 EAPI Eina_Bool                       ecore_x_e_window_profile_list_get(Ecore_X_Window win, const char ***profiles, int *ret_num);
1691 /**
1692  * @brief Set the window profile.
1693  *
1694  * @param win The window
1695  * @param profile The profile name
1696  *
1697  * @since 1.3.0
1698  */
1699 EAPI void                            ecore_x_e_window_profile_set(Ecore_X_Window win, const char *profile);
1700 /**
1701  * @brief Get the window profile.
1702  *
1703  * @param win The window
1704  * @return The profile name
1705  *
1706  * @since 1.3.0
1707  */
1708 EAPI char                           *ecore_x_e_window_profile_get(Ecore_X_Window win);
1709
1710 EAPI Ecore_X_Sync_Alarm              ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter);
1711 EAPI Eina_Bool                       ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm);
1712 EAPI Eina_Bool                       ecore_x_sync_counter_query(Ecore_X_Sync_Counter counter, unsigned int *val);
1713 EAPI Ecore_X_Sync_Counter            ecore_x_sync_counter_new(int val);
1714 EAPI void                            ecore_x_sync_counter_free(Ecore_X_Sync_Counter counter);
1715 EAPI void                            ecore_x_sync_counter_inc(Ecore_X_Sync_Counter counter, int by);
1716 EAPI void                            ecore_x_sync_counter_val_wait(Ecore_X_Sync_Counter counter, int val);
1717
1718 EAPI void                            ecore_x_sync_counter_set(Ecore_X_Sync_Counter counter, int val);
1719 EAPI void                            ecore_x_sync_counter_2_set(Ecore_X_Sync_Counter counter, int val_hi, unsigned int val_lo);
1720 EAPI Eina_Bool                       ecore_x_sync_counter_2_query(Ecore_X_Sync_Counter counter, int *val_hi, unsigned int *val_lo);
1721
1722 EAPI int                             ecore_x_xinerama_screen_count_get(void);
1723 EAPI Eina_Bool                       ecore_x_xinerama_screen_geometry_get(int screen, int *x, int *y, int *w, int *h);
1724
1725 EAPI Eina_Bool                       ecore_x_screensaver_event_available_get(void);
1726 EAPI int                             ecore_x_screensaver_idle_time_get(void);
1727 EAPI void                            ecore_x_screensaver_set(int timeout, int interval, int prefer_blanking, int allow_exposures);
1728 EAPI void                            ecore_x_screensaver_timeout_set(int timeout);
1729 EAPI int                             ecore_x_screensaver_timeout_get(void);
1730 EAPI void                            ecore_x_screensaver_blank_set(int timeout);
1731 EAPI int                             ecore_x_screensaver_blank_get(void);
1732 EAPI void                            ecore_x_screensaver_expose_set(int timeout);
1733 EAPI int                             ecore_x_screensaver_expose_get(void);
1734 EAPI void                            ecore_x_screensaver_interval_set(int timeout);
1735 EAPI int                             ecore_x_screensaver_interval_get(void);
1736 EAPI void                            ecore_x_screensaver_event_listen_set(Eina_Bool on);
1737
1738 /* FIXME: these funcs need categorising */
1739
1740 typedef struct _Ecore_X_Window_Attributes
1741 {
1742    Ecore_X_Window   root;
1743    int              x, y, w, h;
1744    int              border;
1745    int              depth;
1746    Eina_Bool        visible : 1;
1747    Eina_Bool        viewable : 1;
1748    Eina_Bool        override : 1;
1749    Eina_Bool        input_only : 1;
1750    Eina_Bool        save_under : 1;
1751    struct
1752    {
1753       Ecore_X_Event_Mask mine;
1754       Ecore_X_Event_Mask all;
1755       Ecore_X_Event_Mask no_propagate;
1756    } event_mask;
1757    Ecore_X_Gravity  window_gravity;
1758    Ecore_X_Gravity  pixel_gravity;
1759    Ecore_X_Colormap colormap;
1760    Ecore_X_Visual   visual;
1761    /* FIXME: missing
1762     * int map_installed;
1763     * Screen *screen;
1764     */
1765 } Ecore_X_Window_Attributes;
1766
1767 EAPI Eina_Bool        ecore_x_window_attributes_get(Ecore_X_Window win, Ecore_X_Window_Attributes *att_ret);
1768 EAPI void             ecore_x_window_save_set_add(Ecore_X_Window win);
1769 EAPI void             ecore_x_window_save_set_del(Ecore_X_Window win);
1770 EAPI Ecore_X_Window  *ecore_x_window_children_get(Ecore_X_Window win, int *num);
1771
1772 EAPI Eina_Bool        ecore_x_pointer_control_set(int accel_num, int accel_denom, int threshold);
1773 EAPI Eina_Bool        ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold);
1774 EAPI Eina_Bool        ecore_x_pointer_mapping_set(unsigned char *map, int nmap);
1775 EAPI Eina_Bool        ecore_x_pointer_mapping_get(unsigned char *map, int nmap);
1776 EAPI Eina_Bool        ecore_x_pointer_grab(Ecore_X_Window win);
1777 EAPI Eina_Bool        ecore_x_pointer_confine_grab(Ecore_X_Window win);
1778 EAPI void             ecore_x_pointer_ungrab(void);
1779 EAPI Eina_Bool        ecore_x_pointer_warp(Ecore_X_Window win, int x, int y);
1780 EAPI Eina_Bool        ecore_x_keyboard_grab(Ecore_X_Window win);
1781 EAPI void             ecore_x_keyboard_ungrab(void);
1782 EAPI void             ecore_x_grab(void);
1783 EAPI void             ecore_x_ungrab(void);
1784 EAPI void             ecore_x_passive_grab_replay_func_set(Eina_Bool (*func)(void *data, int event_type, void *event), void *data);
1785 EAPI void             ecore_x_window_button_grab(Ecore_X_Window win, int button, Ecore_X_Event_Mask event_mask, int mod, int any_mod);
1786 EAPI void             ecore_x_window_button_ungrab(Ecore_X_Window win, int button, int mod, int any_mod);
1787 EAPI void             ecore_x_window_key_grab(Ecore_X_Window win, const char *key, int mod, int any_mod);
1788 EAPI void             ecore_x_window_key_ungrab(Ecore_X_Window win, const char *key, int mod, int any_mod);
1789
1790 EAPI void             ecore_x_focus_reset(void);
1791 EAPI void             ecore_x_events_allow_all(void);
1792 EAPI void             ecore_x_pointer_last_xy_get(int *x, int *y);
1793 EAPI void             ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y);
1794
1795 /* ecore_x_region.c */
1796 EAPI Ecore_X_XRegion *ecore_x_xregion_new(void);
1797 EAPI void             ecore_x_xregion_free(Ecore_X_XRegion *region);
1798 EAPI Eina_Bool        ecore_x_xregion_set(Ecore_X_XRegion *region, Ecore_X_GC gc);
1799 EAPI void             ecore_x_xregion_translate(Ecore_X_XRegion *region, int x, int y);
1800 EAPI Eina_Bool        ecore_x_xregion_intersect(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
1801 EAPI Eina_Bool        ecore_x_xregion_union(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
1802 EAPI Eina_Bool        ecore_x_xregion_union_rect(Ecore_X_XRegion *dst, Ecore_X_XRegion *src, Ecore_X_Rectangle *rect);
1803 EAPI Eina_Bool        ecore_x_xregion_subtract(Ecore_X_XRegion *dst, Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
1804 EAPI Eina_Bool        ecore_x_xregion_is_empty(Ecore_X_XRegion *region);
1805 EAPI Eina_Bool        ecore_x_xregion_is_equal(Ecore_X_XRegion *r1, Ecore_X_XRegion *r2);
1806 EAPI Eina_Bool        ecore_x_xregion_point_contain(Ecore_X_XRegion *region, int x, int y);
1807 EAPI Eina_Bool        ecore_x_xregion_rect_contain(Ecore_X_XRegion *region, Ecore_X_Rectangle *rect);
1808
1809 /* ecore_x_randr.c */
1810
1811 /* The usage of 'Ecore_X_Randr_None' or 'Ecore_X_Randr_Unset'
1812  * depends on the context. In most cases 'Ecore_X_Randr_Unset'
1813  * can be used, but in some cases -1 is a special value to
1814  * functions, thus 'Ecore_X_Randr_None' (=0) must be used.
1815  */
1816
1817 typedef short Ecore_X_Randr_Refresh_Rate;
1818 typedef int   Ecore_X_Randr_Crtc_Gamma;
1819 typedef int   Ecore_X_Randr_Signal_Format;
1820 typedef int   Ecore_X_Randr_Signal_Property;
1821 typedef int   Ecore_X_Randr_Connector_Type;
1822
1823 typedef struct _Ecore_X_Randr_Mode_Info
1824 {
1825    Ecore_X_ID    xid;
1826    unsigned int  width;
1827    unsigned int  height;
1828    unsigned long dotClock;
1829    unsigned int  hSyncStart;
1830    unsigned int  hSyncEnd;
1831    unsigned int  hTotal;
1832    unsigned int  hSkew;
1833    unsigned int  vSyncStart;
1834    unsigned int  vSyncEnd;
1835    unsigned int  vTotal;
1836    char         *name;
1837    unsigned int  nameLength;
1838    unsigned long modeFlags;
1839 } Ecore_X_Randr_Mode_Info;
1840
1841 EAPI int                                       ecore_x_randr_version_get(void);
1842 EAPI Eina_Bool                                 ecore_x_randr_query(void);
1843
1844 /* ecore_x_randr_11.c */
1845 EAPI Ecore_X_Randr_Orientation                 ecore_x_randr_screen_primary_output_orientations_get(Ecore_X_Window root);
1846 EAPI Ecore_X_Randr_Orientation                 ecore_x_randr_screen_primary_output_orientation_get(Ecore_X_Window root);
1847 EAPI Eina_Bool                                 ecore_x_randr_screen_primary_output_orientation_set(Ecore_X_Window root, Ecore_X_Randr_Orientation orientation);
1848 EAPI Ecore_X_Randr_Screen_Size_MM             *ecore_x_randr_screen_primary_output_sizes_get(Ecore_X_Window root, int *num);
1849
1850 /**
1851  * @brief get the current set size of a given screen's primary output
1852  * @param root window which's primary output will be queried
1853  * @param w the current size's width
1854  * @param h the current size's height
1855  * @param w_mm the current size's width in mm
1856  * @param h_mm the current size's height in mm
1857  * @param size_index of current set size to be used with ecore_x_randr_primary_output_size_set()
1858  */
1859 EAPI void                                      ecore_x_randr_screen_primary_output_current_size_get(Ecore_X_Window root, int *w, int *h, int *w_mm, int *h_mm, int *size_index);
1860 EAPI Eina_Bool                                 ecore_x_randr_screen_primary_output_size_set(Ecore_X_Window root, int size_index);
1861 EAPI Ecore_X_Randr_Refresh_Rate                ecore_x_randr_screen_primary_output_current_refresh_rate_get(Ecore_X_Window root);
1862 EAPI Ecore_X_Randr_Refresh_Rate               *ecore_x_randr_screen_primary_output_refresh_rates_get(Ecore_X_Window root, int size_index, int *num);
1863 EAPI Eina_Bool                                 ecore_x_randr_screen_primary_output_refresh_rate_set(Ecore_X_Window root, int size_index, Ecore_X_Randr_Refresh_Rate rate);
1864
1865 /* ecore_x_randr_12.c */
1866 EAPI void                                      ecore_x_randr_events_select(Ecore_X_Window win, Eina_Bool on);
1867
1868 EAPI void                                      ecore_x_randr_screen_current_size_get(Ecore_X_Window root, int *w, int *h, int *w_mm, int *h_mm);
1869 EAPI void                                      ecore_x_randr_screen_size_range_get(Ecore_X_Window root, int *wmin, int *hmin, int *wmax, int *hmax);
1870 EAPI void                                      ecore_x_randr_screen_reset(Ecore_X_Window root);
1871 EAPI Eina_Bool                                 ecore_x_randr_screen_current_size_set(Ecore_X_Window root, int w, int h, int w_mm, int h_mm);
1872 EAPI Ecore_X_Randr_Mode_Info                 **ecore_x_randr_modes_info_get(Ecore_X_Window root, int *num);
1873 EAPI Ecore_X_Randr_Mode                        ecore_x_randr_mode_info_add(Ecore_X_Window root, Ecore_X_Randr_Mode_Info *mode_info);
1874 EAPI void                                      ecore_x_randr_mode_del(Ecore_X_Randr_Mode mode);
1875 EAPI Ecore_X_Randr_Mode_Info                  *ecore_x_randr_mode_info_get(Ecore_X_Window root, Ecore_X_Randr_Mode mode);
1876 EAPI void                                      ecore_x_randr_mode_info_free(Ecore_X_Randr_Mode_Info *mode_info);
1877 EAPI Ecore_X_Randr_Crtc                       *ecore_x_randr_crtcs_get(Ecore_X_Window root, int *num);
1878 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_outputs_get(Ecore_X_Window root, int *num);
1879 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_window_outputs_get(Ecore_X_Window window, int *num);
1880 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_current_output_get(Ecore_X_Window window, int *num);
1881 EAPI Ecore_X_Randr_Crtc                       *ecore_x_randr_window_crtcs_get(Ecore_X_Window window, int *num);
1882 EAPI Ecore_X_Randr_Crtc                       *ecore_x_randr_current_crtc_get(Ecore_X_Window window, int *num);
1883 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_crtc_outputs_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *num);
1884 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_crtc_possible_outputs_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *num);
1885 EAPI void                                      ecore_x_randr_crtc_geometry_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y, int *w, int *h);
1886 EAPI void                                      ecore_x_randr_crtc_pos_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y);
1887 EAPI Eina_Bool                                 ecore_x_randr_crtc_pos_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int x, int y);
1888 EAPI Ecore_X_Randr_Mode                        ecore_x_randr_crtc_mode_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
1889 EAPI Eina_Bool                                 ecore_x_randr_crtc_mode_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Output *outputs, int noutputs, Ecore_X_Randr_Mode mode);
1890 EAPI void                                      ecore_x_randr_crtc_size_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *w, int *h);
1891 EAPI Ecore_X_Randr_Refresh_Rate                ecore_x_randr_crtc_refresh_rate_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Mode mode);
1892 EAPI Ecore_X_Randr_Orientation                 ecore_x_randr_crtc_orientations_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
1893 EAPI Ecore_X_Randr_Orientation                 ecore_x_randr_crtc_orientation_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
1894 EAPI Eina_Bool                                 ecore_x_randr_crtc_orientation_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, const Ecore_X_Randr_Orientation orientation);
1895 EAPI Eina_Bool                                 ecore_x_randr_crtc_clone_set(Ecore_X_Window root, Ecore_X_Randr_Crtc original, Ecore_X_Randr_Crtc clone);
1896 EAPI Eina_Bool                                 ecore_x_randr_crtc_settings_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Output *outputs, int noutputs, int x, int y, Ecore_X_Randr_Mode mode, Ecore_X_Randr_Orientation orientation);
1897 EAPI Eina_Bool                                 ecore_x_randr_crtc_pos_relative_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc_r1, Ecore_X_Randr_Crtc crtc_r2, Ecore_X_Randr_Output_Policy policy, Ecore_X_Randr_Relative_Alignment alignment);
1898 EAPI Eina_Bool                                 ecore_x_randr_output_mode_add(Ecore_X_Randr_Output output, Ecore_X_Randr_Mode mode);
1899 EAPI void                                      ecore_x_randr_output_mode_del(Ecore_X_Randr_Output output, Ecore_X_Randr_Mode mode);
1900 EAPI Ecore_X_Randr_Mode                       *ecore_x_randr_output_modes_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num, int *npreferred);
1901 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_output_clones_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
1902 EAPI Ecore_X_Randr_Crtc                       *ecore_x_randr_output_possible_crtcs_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
1903 EAPI Ecore_X_Randr_Crtc                        ecore_x_randr_output_crtc_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
1904 EAPI char                                     *ecore_x_randr_output_name_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *len);
1905 EAPI int                                       ecore_x_randr_crtc_gamma_ramp_size_get(Ecore_X_Randr_Crtc crtc);
1906 EAPI Ecore_X_Randr_Crtc_Gamma                **ecore_x_randr_crtc_gamma_ramps_get(Ecore_X_Randr_Crtc crtc);
1907 EAPI Eina_Bool                                 ecore_x_randr_crtc_gamma_ramps_set(Ecore_X_Randr_Crtc crtc, const Ecore_X_Randr_Crtc_Gamma *red, const Ecore_X_Randr_Crtc_Gamma *green, const Ecore_X_Randr_Crtc_Gamma *blue);
1908 EAPI Eina_Bool                                 ecore_x_randr_move_all_crtcs_but(Ecore_X_Window root, const Ecore_X_Randr_Crtc *not_moved, int nnot_moved, int dx, int dy);
1909 EAPI Eina_Bool                                 ecore_x_randr_move_crtcs(Ecore_X_Window root, const Ecore_X_Randr_Crtc *crtcs, int ncrtc, int dx, int dy);
1910 EAPI void                                      ecore_x_randr_mode_size_get(Ecore_X_Window root, Ecore_X_Randr_Mode mode, int *w, int *h);
1911 EAPI Ecore_X_Randr_Connection_Status           ecore_x_randr_output_connection_status_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
1912 EAPI void                                      ecore_x_randr_output_size_mm_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *w, int *h);
1913 EAPI Eina_Bool                                 ecore_x_randr_output_crtc_set(Ecore_X_Window root, Ecore_X_Randr_Output output, const Ecore_X_Randr_Crtc crtc);
1914
1915 /* ecore_x_randr_12_edid.c */
1916
1917 /**
1918  * @brief Validates the header from raw EDID data.
1919  *
1920  * @param edid The edid structure.
1921  * @param edid_length Length of the edid structure.
1922  * @return @c EINA_TRUE, if the header is valid, @c EINA_FALSE otherwise.
1923  */
1924 EAPI Eina_Bool                                 ecore_x_randr_edid_has_valid_header(unsigned char *edid, unsigned long edid_length);
1925
1926 /**
1927  * @brief Checks whether a display's EDID has a valid checksum.
1928  *
1929  * @param edid The edid structure.
1930  * @param edid_length Length of the edid structure.
1931  * @return @c EINA_TRUE, if the checksum is valid, @c EINA_FALSE otherwise.
1932  */
1933 EAPI Eina_Bool                                 ecore_x_randr_edid_info_has_valid_checksum(unsigned char *edid, unsigned long edid_length);
1934
1935 /**
1936  * @brief Get the encoded version from raw EDID data.
1937  *
1938  * The return value has the minor version in the lowest 8 bits, and the major
1939  * version in all the rest of the bits. i.e.
1940  *
1941  * minor = (version & 0x000000ff);
1942  * major = (version & 0xffffff00) >> 8;
1943  *
1944  * @param edid the edid structure
1945  * @param edid_length length of the edid structure
1946  * @return The encoded major and minor version encasuplated an int.
1947  */
1948 EAPI int                                       ecore_x_randr_edid_version_get(unsigned char *edid, unsigned long edid_length);
1949
1950 /**
1951  * @brief Get the encoded manufacturer from raw EDID data.
1952  *
1953  * @param edid the edid structure
1954  * @param edid_length length of the edid structure
1955  * @return The encoded manufacturer identifier.
1956  */
1957 EAPI char                                     *ecore_x_randr_edid_manufacturer_name_get(unsigned char *edid, unsigned long edid_length);
1958
1959 /**
1960  * @brief Get the encoded name from raw EDID data.
1961  *
1962  * @param edid the edid structure
1963  * @param edid_length length of the edid structure
1964  * @return The encoded manufacturer identifier.
1965  */
1966 EAPI char                                     *ecore_x_randr_edid_display_name_get(unsigned char *edid, unsigned long edid_length);
1967
1968 /**
1969  * @brief Get the encoded ASCII from raw EDID data.
1970  *
1971  * @param edid the edid structure
1972  * @param edid_length length of the edid structure
1973  * @return The encoded ASCII display identifier.
1974  */
1975 EAPI char                                     *ecore_x_randr_edid_display_ascii_get(unsigned char *edid, unsigned long edid_length);
1976
1977 /**
1978  * @brief Get the encoded serial identifier from raw EDID data.
1979  *
1980  * @param edid the edid structure
1981  * @param edid_length length of the edid structure
1982  * @return The encoded serial identifier.
1983  */
1984 EAPI char                                     *ecore_x_randr_edid_display_serial_get(unsigned char *edid, unsigned long edid_length);
1985
1986 /**
1987  * @brief Get the encoded model number from raw EDID data.
1988  *
1989  * The manufacturer ID table is necessary for a useful description.
1990  *
1991  * @param edid the edid structure
1992  * @param edid_length length of the edid structure
1993  * @return The encoded model number.
1994  */
1995 EAPI int                                       ecore_x_randr_edid_model_get(unsigned char *edid, unsigned long edid_length);
1996
1997 /**
1998  * @brief Get the manufacturer serial number from raw EDID data.
1999  *
2000  * @param edid the edid structure
2001  * @param edid_length length of the edid structure
2002  * @return The encoded serial manufacturer serial number.
2003  */
2004 EAPI int                                       ecore_x_randr_edid_manufacturer_serial_number_get(unsigned char *edid, unsigned long edid_length);
2005
2006 /**
2007  * @brief Get the manufacturer model number from raw EDID data.
2008  *
2009  * @param edid the edid structure
2010  * @param edid_length length of the edid structure
2011  * @return The manufacturer's model number.
2012  */
2013 EAPI int                                       ecore_x_randr_edid_manufacturer_model_get(unsigned char *edid, unsigned long edid_length);
2014
2015 /**
2016  * @brief Looks up the DPMS support from raw EDID data.
2017  *
2018  * @param edid The edid structure.
2019  * @param edid_length Length of the edid structure.
2020  * @return @c EINA_TRUE, if DPMS is supported in some way, @c EINA_FALSE
2021  * otherwise.
2022  */
2023 EAPI Eina_Bool                                 ecore_x_randr_edid_dpms_available_get(unsigned char *edid, unsigned long edid_length);
2024
2025 /**
2026  * @brief Looks up the DPMS Standby support from raw EDID data.
2027  *
2028  * @param edid The edid structure.
2029  * @param edid_length Length of the edid structure.
2030  * @return @c EINA_TRUE, if DPMS Standby is supported, @c EINA_FALSE otherwise.
2031  */
2032 EAPI Eina_Bool                                 ecore_x_randr_edid_dpms_standby_available_get(unsigned char *edid, unsigned long edid_length);
2033
2034 /**
2035  * @brief Looks up the DPMS Suspend support from raw EDID data.
2036  *
2037  * @param edid The edid structure.
2038  * @param edid_length Length of the edid structure.
2039  * @return @c EINA_TRUE, if DPMS Suspend is supported, @c EINA_FALSE otherwise.
2040  */
2041 EAPI Eina_Bool                                 ecore_x_randr_edid_dpms_suspend_available_get(unsigned char *edid, unsigned long edid_length);
2042
2043 /**
2044  * @brief Looks up the DPMS Off support from raw EDID data.
2045  *
2046  * @param edid The edid structure.
2047  * @param edid_length Length of the edid structure.
2048  * @return @c EINA_TRUE, if DPMS Off is supported, @c EINA_FALSE otherwise.
2049  */
2050 EAPI Eina_Bool                                 ecore_x_randr_edid_dpms_off_available_get(unsigned char *edid, unsigned long edid_length);
2051
2052 /**
2053  * @brief Get the preferred aspect ratio from raw EDID data.
2054  *
2055  * @param edid the edid structure
2056  * @param edid_length length of the edid structure
2057  * @return The preferred aspect ratio.
2058  */
2059 EAPI Ecore_X_Randr_Edid_Aspect_Ratio           ecore_x_randr_edid_display_aspect_ratio_preferred_get(unsigned char *edid, unsigned long edid_length);
2060
2061 /**
2062  * @brief Get the supported aspect ratios from raw EDID data.
2063  *
2064  * @param edid the edid structure
2065  * @param edid_length length of the edid structure
2066  * @return The supported aspect ratios.
2067  */
2068 EAPI Ecore_X_Randr_Edid_Aspect_Ratio           ecore_x_randr_edid_display_aspect_ratios_get(unsigned char *edid, unsigned long edid_length);
2069
2070 /**
2071  * @brief Get the supported colorschemes from raw EDID data.
2072  *
2073  * @param edid the edid structure
2074  * @param edid_length length of the edid structure
2075  * @return The supported colorschemes.
2076  */
2077 EAPI Ecore_X_Randr_Edid_Display_Colorscheme    ecore_x_randr_edid_display_colorscheme_get(unsigned char *edid, unsigned long edid_length);
2078
2079 /**
2080  * @brief Get the display type from raw EDID data.
2081  *
2082  * @param edid The edid structure.
2083  * @param edid_length Length of the edid structure.
2084  * @return @c EINA_TRUE, if the display is a digital one, @c EINA_FALSE
2085  * otherwise.
2086  */
2087 EAPI Eina_Bool                                 ecore_x_randr_edid_display_type_digital_get(unsigned char *edid, unsigned long edid_length);
2088
2089 /**
2090  * @brief Get the display interface type from raw EDID data.
2091  *
2092  * @param edid the edid structure
2093  * @param edid_length length of the edid structure
2094  * @return The interface type.
2095  */
2096 EAPI Ecore_X_Randr_Edid_Display_Interface_Type ecore_x_randr_edid_display_interface_type_get(unsigned char *edid, unsigned long edid_length);
2097
2098 /* ecore_x_randr_12.c */
2099
2100 EAPI Eina_Bool                                 ecore_x_randr_output_backlight_available(void);
2101 EAPI void                                      ecore_x_randr_screen_backlight_level_set(Ecore_X_Window root, double level);
2102 EAPI double                                    ecore_x_randr_output_backlight_level_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2103 EAPI Eina_Bool                                 ecore_x_randr_output_backlight_level_set(Ecore_X_Window root, Ecore_X_Randr_Output output, double level);
2104 EAPI Ecore_X_Randr_Output                      ecore_x_randr_primary_output_get(Ecore_X_Window root);
2105 EAPI void                                      ecore_x_randr_primary_output_set(Ecore_X_Window root, Ecore_X_Randr_Output output);
2106 EAPI Ecore_X_Render_Subpixel_Order             ecore_x_randr_output_subpixel_order_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2107 EAPI unsigned char                            *ecore_x_randr_output_edid_get(Ecore_X_Window root, Ecore_X_Randr_Output output, unsigned long *length);
2108 EAPI Ecore_X_Randr_Output                     *ecore_x_randr_output_wired_clones_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2109 EAPI Ecore_X_Randr_Output                    **ecore_x_randr_output_compatibility_list_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2110 EAPI Ecore_X_Randr_Signal_Format              *ecore_x_randr_output_signal_formats_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2111 EAPI Eina_Bool                                 ecore_x_randr_output_signal_format_set(Ecore_X_Window root, Ecore_X_Randr_Output output, Ecore_X_Randr_Signal_Format *signal);
2112 EAPI Ecore_X_Randr_Signal_Property            *ecore_x_randr_output_signal_properties_get(Ecore_X_Window root, Ecore_X_Randr_Output output, int *num);
2113 EAPI int                                       ecore_x_randr_output_connector_number_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2114 EAPI Ecore_X_Randr_Connector_Type              ecore_x_randr_output_connector_type_get(Ecore_X_Window root, Ecore_X_Randr_Output output);
2115 EAPI Eina_Rectangle                           *ecore_x_randr_crtc_panning_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y, int *w, int *h);
2116 EAPI Eina_Bool                                 ecore_x_randr_crtc_panning_area_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int x, const int y, const int w, const int h);
2117 EAPI Eina_Rectangle                           *ecore_x_randr_crtc_tracking_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int *x, int *y, int *w, int *h);
2118 EAPI Eina_Bool                                 ecore_x_randr_crtc_tracking_area_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int x, const int y, const int w, const int h);
2119 EAPI Eina_Rectangle                           *ecore_x_randr_crtc_border_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc);
2120 EAPI Eina_Bool                                 ecore_x_randr_crtc_border_area_set(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc, int left, const int top, const int right, const int bottom);
2121
2122 /* XRender Support (horrendously incomplete) */
2123 typedef Ecore_X_ID Ecore_X_Picture;
2124
2125 /* XFixes Extension Support */
2126 typedef Ecore_X_ID Ecore_X_Region;
2127
2128 typedef enum _Ecore_X_Region_Type
2129 {
2130    ECORE_X_REGION_BOUNDING,
2131    ECORE_X_REGION_CLIP
2132 } Ecore_X_Region_Type;
2133
2134 EAPI Ecore_X_Region     ecore_x_region_new(Ecore_X_Rectangle *rects, int num);
2135 EAPI Ecore_X_Region     ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap);
2136 EAPI Ecore_X_Region     ecore_x_region_new_from_window(Ecore_X_Window win, Ecore_X_Region_Type type);
2137 EAPI Ecore_X_Region     ecore_x_region_new_from_gc(Ecore_X_GC gc);
2138 EAPI Ecore_X_Region     ecore_x_region_new_from_picture(Ecore_X_Picture picture);
2139 EAPI void               ecore_x_region_free(Ecore_X_Region region);
2140 EAPI void               ecore_x_region_set(Ecore_X_Region region, Ecore_X_Rectangle *rects, int num);
2141 EAPI void               ecore_x_region_copy(Ecore_X_Region dest, Ecore_X_Region source);
2142 EAPI void               ecore_x_region_combine(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
2143 EAPI void               ecore_x_region_intersect(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
2144 EAPI void               ecore_x_region_subtract(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
2145 EAPI void               ecore_x_region_invert(Ecore_X_Region dest, Ecore_X_Rectangle *bounds, Ecore_X_Region source);
2146 EAPI void               ecore_x_region_translate(Ecore_X_Region region, int dx, int dy);
2147 EAPI void               ecore_x_region_extents(Ecore_X_Region dest, Ecore_X_Region source);
2148 EAPI Ecore_X_Rectangle *ecore_x_region_fetch(Ecore_X_Region region, int *num, Ecore_X_Rectangle *bounds);
2149 EAPI void               ecore_x_region_expand(Ecore_X_Region dest, Ecore_X_Region source, unsigned int left, unsigned int right, unsigned int top, unsigned int bottom);
2150 EAPI void               ecore_x_region_gc_clip_set(Ecore_X_Region region, Ecore_X_GC gc, int x_origin, int y_origin);
2151 EAPI void               ecore_x_region_window_shape_set(Ecore_X_Region region, Ecore_X_Window win, Ecore_X_Shape_Type type, int x_offset, int y_offset);
2152 EAPI void               ecore_x_region_picture_clip_set(Ecore_X_Region region, Ecore_X_Picture picture, int x_origin, int y_origin);
2153
2154 /**
2155  * xfixes selection notification request.
2156  *
2157  * This lets you choose which selections you want to get notifications for.
2158  * @param selection The selection atom.
2159  * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
2160  * @since 1.1.0
2161  */
2162 EAPI Eina_Bool          ecore_x_fixes_selection_notification_request(Ecore_X_Atom selection);
2163
2164 /* XComposite Extension Support */
2165 EAPI Eina_Bool          ecore_x_composite_query(void);
2166 EAPI void               ecore_x_composite_redirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
2167 EAPI void               ecore_x_composite_redirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
2168 EAPI void               ecore_x_composite_unredirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
2169 EAPI void               ecore_x_composite_unredirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type);
2170 EAPI Ecore_X_Pixmap     ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win);
2171 EAPI void               ecore_x_composite_window_events_disable(Ecore_X_Window win);
2172 EAPI void               ecore_x_composite_window_events_enable(Ecore_X_Window win);
2173 EAPI Ecore_X_Window     ecore_x_composite_render_window_enable(Ecore_X_Window root);
2174 EAPI void               ecore_x_composite_render_window_disable(Ecore_X_Window root);
2175
2176 /* XDamage Extension Support */
2177 typedef Ecore_X_ID Ecore_X_Damage;
2178
2179 typedef enum _Ecore_X_Damage_Report_Level
2180 {
2181    ECORE_X_DAMAGE_REPORT_RAW_RECTANGLES,
2182    ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES,
2183    ECORE_X_DAMAGE_REPORT_BOUNDING_BOX,
2184    ECORE_X_DAMAGE_REPORT_NON_EMPTY
2185 } Ecore_X_Damage_Report_Level;
2186
2187 struct _Ecore_X_Event_Damage
2188 {
2189    Ecore_X_Damage_Report_Level level;
2190    Ecore_X_Drawable            drawable;
2191    Ecore_X_Damage              damage;
2192    int                         more;
2193    Ecore_X_Time                time;
2194    Ecore_X_Rectangle           area;
2195    Ecore_X_Rectangle           geometry;
2196 };
2197
2198 typedef struct _Ecore_X_Event_Damage Ecore_X_Event_Damage;
2199
2200 EAPI Eina_Bool      ecore_x_damage_query(void);
2201 EAPI Ecore_X_Damage ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level);
2202 EAPI void           ecore_x_damage_free(Ecore_X_Damage damage);
2203 EAPI void           ecore_x_damage_subtract(Ecore_X_Damage damage, Ecore_X_Region repair, Ecore_X_Region parts);
2204
2205 EAPI Eina_Bool      ecore_x_screen_is_composited(int screen);
2206 EAPI void           ecore_x_screen_is_composited_set(int screen, Ecore_X_Window win);
2207
2208 EAPI Eina_Bool      ecore_x_dpms_query(void);
2209 EAPI Eina_Bool      ecore_x_dpms_capable_get(void);
2210 EAPI Eina_Bool      ecore_x_dpms_enabled_get(void);
2211 EAPI void           ecore_x_dpms_enabled_set(int enabled);
2212 EAPI void           ecore_x_dpms_timeouts_get(unsigned int *standby, unsigned int *suspend, unsigned int *off);
2213 EAPI Eina_Bool      ecore_x_dpms_timeouts_set(unsigned int standby, unsigned int suspend, unsigned int off);
2214 EAPI unsigned int   ecore_x_dpms_timeout_standby_get(void);
2215 EAPI unsigned int   ecore_x_dpms_timeout_suspend_get(void);
2216 EAPI unsigned int   ecore_x_dpms_timeout_off_get(void);
2217 EAPI void           ecore_x_dpms_timeout_standby_set(unsigned int new_timeout);
2218 EAPI void           ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout);
2219 EAPI void           ecore_x_dpms_timeout_off_set(unsigned int new_timeout);
2220
2221 EAPI Eina_Bool      ecore_x_test_fake_key_down(const char *key);
2222 EAPI Eina_Bool      ecore_x_test_fake_key_up(const char *key);
2223 EAPI Eina_Bool      ecore_x_test_fake_key_press(const char *key);
2224 EAPI const char    *ecore_x_keysym_string_get(int keysym);
2225
2226 /**
2227  * Given a keyname, return the keycode representing that key
2228  * @param keyname The key from which to get the keycode.
2229  * @return The keycode of the key.
2230  *
2231  * @since 1.2.0
2232  */
2233 EAPI int            ecore_x_keysym_keycode_get(const char *keyname);
2234
2235 typedef struct _Ecore_X_Image Ecore_X_Image;
2236
2237 EAPI Ecore_X_Image *ecore_x_image_new(int w, int h, Ecore_X_Visual vis, int depth);
2238 EAPI void           ecore_x_image_free(Ecore_X_Image *im);
2239 EAPI Eina_Bool      ecore_x_image_get(Ecore_X_Image *im, Ecore_X_Drawable draw, int x, int y, int sx, int sy, int w, int h);
2240 EAPI void           ecore_x_image_put(Ecore_X_Image *im, Ecore_X_Drawable draw, Ecore_X_GC gc, int x, int y, int sx, int sy, int w, int h);
2241 EAPI void          *ecore_x_image_data_get(Ecore_X_Image *im, int *bpl, int *rows, int *bpp);
2242 EAPI Eina_Bool      ecore_x_image_is_argb32_get(Ecore_X_Image *im);
2243
2244 EAPI Eina_Bool      ecore_x_image_to_argb_convert(void *src, int sbpp, int sbpl, Ecore_X_Colormap c, Ecore_X_Visual v, int x, int y, int w, int h, unsigned int *dst, int dbpl, int dx, int dy);
2245
2246 EAPI Eina_Bool      ecore_x_input_multi_select(Ecore_X_Window win);
2247
2248 EAPI Eina_Bool      ecore_x_vsync_animator_tick_source_set(Ecore_X_Window win);
2249
2250 typedef enum _Ecore_X_Gesture_Event_Mask
2251 {
2252    ECORE_X_GESTURE_EVENT_MASK_NONE = 0L,
2253    ECORE_X_GESTURE_EVENT_MASK_FLICK = (1L << 0),
2254    ECORE_X_GESTURE_EVENT_MASK_PAN = (1L << 1),
2255    ECORE_X_GESTURE_EVENT_MASK_PINCHROTATION = (1L << 2),
2256    ECORE_X_GESTURE_EVENT_MASK_TAP = (1L << 3),
2257    ECORE_X_GESTURE_EVENT_MASK_TAPNHOLD = (1L << 4),
2258    ECORE_X_GESTURE_EVENT_MASK_HOLD = (1L << 5),
2259    ECORE_X_GESTURE_EVENT_MASK_GROUP = (1L << 6)
2260 } Ecore_X_Gesture_Event_Mask;
2261
2262 typedef enum _Ecore_X_Gesture_Event_Type
2263 {
2264    ECORE_X_GESTURE_EVENT_FLICK,
2265    ECORE_X_GESTURE_EVENT_PAN,
2266    ECORE_X_GESTURE_EVENT_PINCHROTATION,
2267    ECORE_X_GESTURE_EVENT_TAP,
2268    ECORE_X_GESTURE_EVENT_TAPNHOLD,
2269    ECORE_X_GESTURE_EVENT_HOLD,
2270    ECORE_X_GESTURE_EVENT_GROUP
2271 } Ecore_X_Gesture_Event_Type;
2272
2273 typedef enum _Ecore_X_Gesture_Event_Subtype
2274 {
2275    ECORE_X_GESTURE_END,
2276    ECORE_X_GESTURE_BEGIN,
2277    ECORE_X_GESTURE_UPDATE,
2278    ECORE_X_GESTURE_DONE
2279 } Ecore_X_Gesture_Event_Subtype;
2280
2281 typedef enum _Ecore_X_Gesture_Group_Subtype
2282 {
2283    ECORE_X_GESTURE_GROUP_REMOVED,
2284    ECORE_X_GESTURE_GROUP_ADDED,
2285    ECORE_X_GESTURE_GROUP_CURRENT
2286 } Ecore_X_Gesture_Group_Subtype;
2287
2288 typedef enum _Ecore_X_Gesture_Direction
2289 {
2290    ECORE_X_GESTURE_NORTHWARD,
2291    ECORE_X_GESTURE_NORTHEASTWARD,
2292    ECORE_X_GESTURE_EASTWARD,
2293    ECORE_X_GESTURE_SOUTHEASTWARD,
2294    ECORE_X_GESTURE_SOUTHWARD,
2295    ECORE_X_GESTURE_SOUTHWESTWARD,
2296    ECORE_X_GESTURE_WESTWARD,
2297    ECORE_X_GESTURE_NORTHWESTWARD
2298 } Ecore_X_Gesture_Direction;
2299
2300 struct _Ecore_X_Event_Gesture_Notify_Flick
2301 {
2302    Ecore_X_Window                win;
2303    Ecore_X_Time                  time;
2304    Ecore_X_Gesture_Event_Subtype subtype;
2305    int                           num_fingers;
2306    int                           distance;
2307    Ecore_X_Time                  duration;
2308    Ecore_X_Gesture_Direction     direction;
2309    double                        angle;
2310 };
2311
2312 struct _Ecore_X_Event_Gesture_Notify_Pan
2313 {
2314    Ecore_X_Window                win;
2315    Ecore_X_Time                  time;
2316    Ecore_X_Gesture_Event_Subtype subtype;
2317    int                           num_fingers;
2318    int                           dx;
2319    int                           dy;
2320    int                           distance;
2321    Ecore_X_Time                  duration;
2322    Ecore_X_Gesture_Direction     direction;
2323 };
2324
2325 struct _Ecore_X_Event_Gesture_Notify_PinchRotation
2326 {
2327    Ecore_X_Window                win;
2328    Ecore_X_Time                  time;
2329    Ecore_X_Gesture_Event_Subtype subtype;
2330    int                           num_fingers;
2331    int                           distance;
2332    int                           cx;
2333    int                           cy;
2334    double                        zoom;
2335    double                        angle;
2336 };
2337
2338 struct _Ecore_X_Event_Gesture_Notify_Tap
2339 {
2340    Ecore_X_Window                win;
2341    Ecore_X_Time                  time;
2342    Ecore_X_Gesture_Event_Subtype subtype;
2343    int                           num_fingers;
2344    int                           cx;
2345    int                           cy;
2346    int                           tap_repeat;
2347    Ecore_X_Time                  interval;
2348 };
2349
2350 struct _Ecore_X_Event_Gesture_Notify_TapNHold
2351 {
2352    Ecore_X_Window                win;
2353    Ecore_X_Time                  time;
2354    Ecore_X_Gesture_Event_Subtype subtype;
2355    int                           num_fingers;
2356    int                           cx;
2357    int                           cy;
2358    Ecore_X_Time                  interval;
2359    Ecore_X_Time                  hold_time;
2360 };
2361
2362 struct _Ecore_X_Event_Gesture_Notify_Hold
2363 {
2364    Ecore_X_Window                win;
2365    Ecore_X_Time                  time;
2366    Ecore_X_Gesture_Event_Subtype subtype;
2367    int                           num_fingers;
2368    int                           cx;
2369    int                           cy;
2370    Ecore_X_Time                  hold_time;
2371 };
2372
2373 struct _Ecore_X_Event_Gesture_Notify_Group
2374 {
2375    Ecore_X_Window                win;
2376    Ecore_X_Time                  time;
2377    Ecore_X_Gesture_Group_Subtype subtype;
2378    int                           num_groups;
2379    int                           group_id;
2380 };
2381
2382 EAPI Eina_Bool                             ecore_x_gesture_supported(void);
2383
2384 EAPI Eina_Bool                             ecore_x_gesture_events_select(Ecore_X_Window win, Ecore_X_Gesture_Event_Mask mask);
2385
2386 EAPI Ecore_X_Gesture_Event_Mask            ecore_x_gesture_events_selected_get(Ecore_X_Window win);
2387
2388 EAPI Eina_Bool                             ecore_x_gesture_event_grab(Ecore_X_Window win, Ecore_X_Gesture_Event_Type type, int num_fingers);
2389
2390 EAPI Eina_Bool                             ecore_x_gesture_event_ungrab(Ecore_X_Window win, Ecore_X_Gesture_Event_Type type, int num_fingers);
2391
2392 EAPI void                                  ecore_x_e_illume_indicator_state_set(Ecore_X_Window win, Ecore_X_Illume_Indicator_State state);
2393 EAPI Ecore_X_Illume_Indicator_State        ecore_x_e_illume_indicator_state_get(Ecore_X_Window win);
2394 EAPI void                                  ecore_x_e_illume_indicator_state_send(Ecore_X_Window win, Ecore_X_Illume_Indicator_State state);
2395
2396 EAPI void                                  ecore_x_e_illume_indicator_opacity_set(Ecore_X_Window win, Ecore_X_Illume_Indicator_Opacity_Mode mode);
2397
2398 EAPI Ecore_X_Illume_Indicator_Opacity_Mode ecore_x_e_illume_indicator_opacity_get(Ecore_X_Window win);
2399
2400 EAPI void                                  ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window win, Ecore_X_Illume_Indicator_Opacity_Mode mode);
2401
2402 EAPI void                                  ecore_x_e_illume_window_state_set(Ecore_X_Window win, Ecore_X_Illume_Window_State state);
2403 EAPI Ecore_X_Illume_Window_State           ecore_x_e_illume_window_state_get(Ecore_X_Window win);
2404
2405 #ifdef __cplusplus
2406 }
2407 #endif // ifdef __cplusplus
2408
2409 #include <Ecore_X_Atoms.h>
2410 #include <Ecore_X_Cursor.h>
2411
2412 #endif // ifndef _ECORE_X_H