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