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