eolian: rename is_ref API to is_ptr to match syntax
[platform/upstream/efl.git] / src / lib / ecore_x / xlib / ecore_x_private.h
1 #ifndef _ECORE_X_PRIVATE_H
2 #define _ECORE_X_PRIVATE_H
3
4 #include <sys/param.h>
5 #ifndef MAXHOSTNAMELEN
6 #define MAXHOSTNAMELEN 256
7 #endif /* ifndef MAXHOSTNAMELEN */
8
9 #include <X11/Xlib.h>
10 #include <X11/Xproto.h>
11 #include <X11/Xutil.h>
12 #include <X11/Xatom.h>
13 #include <X11/Xresource.h>
14 #include <X11/keysymdef.h>
15 #include <X11/extensions/XShm.h>
16 #include <X11/extensions/shape.h>
17 #include <X11/extensions/sync.h>
18 #include <X11/extensions/dpms.h>
19 #ifdef ECORE_XCURSOR
20 #include <X11/Xcursor/Xcursor.h>
21 #endif /* ifdef ECORE_XCURSOR */
22 #ifdef ECORE_XINERAMA
23 #include <X11/extensions/Xinerama.h>
24 #endif /* ifdef ECORE_XINERAMA */
25 #ifdef ECORE_XRANDR
26 #include <X11/extensions/Xrandr.h>
27 #endif /* ifdef ECORE_XRANDR */
28 #ifdef ECORE_XSS
29 #include <X11/extensions/scrnsaver.h>
30 #endif /* ifdef ECORE_XSS */
31 #ifdef ECORE_XRENDER
32 #include <X11/extensions/Xrender.h>
33 #endif /* ifdef ECORE_XRENDER */
34 #ifdef ECORE_XFIXES
35 #include <X11/extensions/Xfixes.h>
36 #endif /* ifdef ECORE_XFIXES */
37 #ifdef ECORE_XCOMPOSITE
38 #include <X11/extensions/Xcomposite.h>
39 #endif /* ifdef ECORE_XCOMPOSITE */
40 #ifdef ECORE_XPRESENT
41 #include <X11/extensions/Xpresent.h>
42 #endif /* ifdef ECORE_XPRESENT */
43 #ifdef ECORE_XDAMAGE
44 #include <X11/extensions/Xdamage.h>
45 #endif /* ifdef ECORE_XDAMAGE */
46 #ifdef ECORE_XGESTURE
47 #include <X11/extensions/gesture.h>
48 #include <X11/extensions/gestureproto.h>
49 #endif /* ifdef ECORE_XGESTURE */
50 #ifdef ECORE_XDPMS
51 #include <X11/extensions/dpms.h>
52 #endif /* ifdef ECORE_XDPMS */
53 #ifdef ECORE_XKB
54 #include <X11/XKBlib.h>
55 #endif /* ifdef ECORE_XKB */
56 #ifdef ECORE_XI2
57 #include <X11/extensions/XInput2.h>
58 #endif /* ifdef ECORE_XI2 */
59
60 #ifndef XK_MISCELLANY
61 # define XK_MISCELLANY 1
62 #endif
63
64 #include "Ecore.h"
65 #include "ecore_private.h"
66 #include "Ecore_X.h"
67 #include "Ecore_Input.h"
68
69 extern int _ecore_xlib_log_dom;
70 extern Eina_Bool _ecore_xlib_sync;
71 #ifdef ECORE_XLIB_DEFAULT_LOG_COLOR
72 # undef ECORE_XLIB_DEFAULT_LOG_COLOR
73 #endif /* ifdef ECORE_XLIB_DEFAULT_LOG_COLOR */
74 #define ECORE_XLIB_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
75
76 #ifdef ERR
77 # undef ERR
78 #endif /* ifdef ERR */
79 #define ERR(...) EINA_LOG_DOM_ERR(_ecore_xlib_log_dom, __VA_ARGS__)
80
81 #ifdef DBG
82 # undef DBG
83 #endif /* ifdef DBG */
84 #define DBG(...) EINA_LOG_DOM_DBG(_ecore_xlib_log_dom, __VA_ARGS__)
85
86 #ifdef INF
87 # undef INF
88 #endif /* ifdef INF */
89 #define INF(...) EINA_LOG_DOM_INFO(_ecore_xlib_log_dom, __VA_ARGS__)
90
91 #ifdef WRN
92 # undef WRN
93 #endif /* ifdef WRN */
94 #define WRN(...) EINA_LOG_DOM_WARN(_ecore_xlib_log_dom, __VA_ARGS__)
95
96 #ifdef CRI
97 # undef CRI
98 #endif /* ifdef CRI */
99 #define CRI(...) EINA_LOG_DOM_CRIT(_ecore_xlib_log_dom, __VA_ARGS__)
100
101 typedef struct _Ecore_X_Selection_Intern Ecore_X_Selection_Intern;
102
103 struct _Ecore_X_Selection_Intern
104 {
105    Ecore_X_Window win;
106    Ecore_X_Atom   selection;
107    unsigned char *data;
108    int            length;
109    Time           time;
110 };
111
112 typedef struct _Ecore_X_Selection_Converter Ecore_X_Selection_Converter;
113
114 struct _Ecore_X_Selection_Converter
115 {
116    EINA_INLIST;
117    Ecore_X_Atom                 target;
118    Eina_Bool                    (*convert)(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *type, int *typeseize);
119 };
120
121 typedef struct _Ecore_X_Selection_Parser Ecore_X_Selection_Parser;
122
123 struct _Ecore_X_Selection_Parser
124 {
125    EINA_INLIST;
126    char                     *target;
127    void                     *(*parse)(const char *target, void *data, int size, int format);
128 };
129
130 typedef struct _Ecore_X_DND_Source
131 {
132    int            version;
133    Ecore_X_Window win, dest;
134
135    enum {
136       ECORE_X_DND_SOURCE_IDLE,
137       ECORE_X_DND_SOURCE_DRAGGING,
138       ECORE_X_DND_SOURCE_DROPPED,
139       ECORE_X_DND_SOURCE_CONVERTING
140    } state;
141
142    struct
143    {
144       short          x, y;
145       unsigned short width, height;
146    } rectangle;
147
148    struct
149    {
150       Ecore_X_Window window;
151       int            x, y;
152    } prev;
153
154    Time         time;
155
156    Ecore_X_Atom action, accepted_action;
157
158    int          will_accept;
159    int          suppress;
160
161    int          await_status;
162 } Ecore_X_DND_Source;
163
164 typedef struct _Ecore_X_DND_Target
165 {
166    int            version;
167    Ecore_X_Window win, source;
168
169    enum {
170       ECORE_X_DND_TARGET_IDLE,
171       ECORE_X_DND_TARGET_ENTERED
172    } state;
173
174    struct
175    {
176       int x, y;
177    } pos;
178
179    Time         time;
180
181    Ecore_X_Atom action, accepted_action;
182
183    int          will_accept;
184 } Ecore_X_DND_Target;
185
186 extern Display *_ecore_x_disp;
187 extern double _ecore_x_double_click_time;
188 extern Time _ecore_x_event_last_time;
189 extern Window _ecore_x_event_last_win;
190 extern int _ecore_x_event_last_root_x;
191 extern int _ecore_x_event_last_root_y;
192 extern Eina_Bool _ecore_x_xcursor;
193
194 extern Ecore_X_Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM];
195
196 extern int _ecore_window_grabs_num;
197 typedef struct _Wingrab Wingrab;
198 struct _Wingrab
199 {
200    Window win;
201    Ecore_X_Event_Mask event_mask;
202    int mod, any_mod;
203    int button;
204 };
205 extern Wingrab *_ecore_window_grabs;
206
207 extern Eina_Bool (*_ecore_window_grab_replay_func)(void *data,
208                                                    int event_type,
209                                                    void *event);
210 extern void *_ecore_window_grab_replay_data;
211
212 extern Ecore_X_Window _ecore_x_private_win;
213
214 void _ecore_x_error_handler_init(void);
215 void _ecore_x_event_handle_any_event(XEvent *xevent);
216 void _ecore_x_event_handle_key_press(XEvent *xevent);
217 void _ecore_x_event_handle_key_release(XEvent *xevent);
218 void _ecore_x_event_handle_button_press(XEvent *xevent);
219 void _ecore_x_event_handle_button_release(XEvent *xevent);
220 void _ecore_x_event_handle_motion_notify(XEvent *xevent);
221 void _ecore_x_event_handle_enter_notify(XEvent *xevent);
222 void _ecore_x_event_handle_leave_notify(XEvent *xevent);
223 void _ecore_x_event_handle_focus_in(XEvent *xevent);
224 void _ecore_x_event_handle_focus_out(XEvent *xevent);
225 void _ecore_x_event_handle_keymap_notify(XEvent *xevent);
226 void _ecore_x_event_handle_expose(XEvent *xevent);
227 void _ecore_x_event_handle_graphics_expose(XEvent *xevent);
228 void _ecore_x_event_handle_visibility_notify(XEvent *xevent);
229 void _ecore_x_event_handle_create_notify(XEvent *xevent);
230 void _ecore_x_event_handle_destroy_notify(XEvent *xevent);
231 void _ecore_x_event_handle_unmap_notify(XEvent *xevent);
232 void _ecore_x_event_handle_map_notify(XEvent *xevent);
233 void _ecore_x_event_handle_map_request(XEvent *xevent);
234 void _ecore_x_event_handle_reparent_notify(XEvent *xevent);
235 void _ecore_x_event_handle_configure_notify(XEvent *xevent);
236 void _ecore_x_event_handle_configure_request(XEvent *xevent);
237 void _ecore_x_event_handle_gravity_notify(XEvent *xevent);
238 void _ecore_x_event_handle_resize_request(XEvent *xevent);
239 void _ecore_x_event_handle_circulate_notify(XEvent *xevent);
240 void _ecore_x_event_handle_circulate_request(XEvent *xevent);
241 void _ecore_x_event_handle_property_notify(XEvent *xevent);
242 void _ecore_x_event_handle_selection_clear(XEvent *xevent);
243 void _ecore_x_event_handle_selection_request(XEvent *xevent);
244 void _ecore_x_event_handle_selection_notify(XEvent *xevent);
245 void _ecore_x_event_handle_colormap_notify(XEvent *xevent);
246 void _ecore_x_event_handle_client_message(XEvent *xevent);
247 void _ecore_x_event_handle_mapping_notify(XEvent *xevent);
248 void _ecore_x_event_handle_shape_change(XEvent *xevent);
249 void _ecore_x_event_handle_screensaver_notify(XEvent *xevent);
250 #ifdef ECORE_XGESTURE
251 void _ecore_x_event_handle_gesture_notify_flick(XEvent *xevent);
252 void _ecore_x_event_handle_gesture_notify_pan(XEvent *xevent);
253 void _ecore_x_event_handle_gesture_notify_pinchrotation(XEvent *xevent);
254 void _ecore_x_event_handle_gesture_notify_tap(XEvent *xevent);
255 void _ecore_x_event_handle_gesture_notify_tapnhold(XEvent *xevent);
256 void _ecore_x_event_handle_gesture_notify_hold(XEvent *xevent);
257 void _ecore_x_event_handle_gesture_notify_group(XEvent *xevent);
258 #endif /* ifdef ECORE_XGESTURE */
259 void _ecore_x_event_handle_sync_counter(XEvent *xevent);
260 void _ecore_x_event_handle_sync_alarm(XEvent *xevent);
261 #ifdef ECORE_XRANDR
262 void _ecore_x_event_handle_randr_change(XEvent *xevent);
263 void _ecore_x_event_handle_randr_notify(XEvent *xevent);
264 #endif /* ifdef ECORE_XRANDR */
265 #ifdef ECORE_XFIXES
266 void _ecore_x_event_handle_fixes_selection_notify(XEvent *xevent);
267 #endif /* ifdef ECORE_XFIXES */
268 #ifdef ECORE_XDAMAGE
269 void      _ecore_x_event_handle_damage_notify(XEvent *xevent);
270 #endif /* ifdef ECORE_XDAMAGE */
271 #ifdef ECORE_XKB
272 void   _ecore_x_event_handle_xkb(XEvent *xevent);
273 #endif  /* ifdef ECORE_XKB */
274 void      _ecore_x_event_handle_generic_event(XEvent *xevent);
275
276 #ifdef ECORE_XPRESENT
277 void      _ecore_x_present_handler(XGenericEvent *ge);
278 #endif
279
280 void      _ecore_x_selection_data_init(void);
281 void      _ecore_x_selection_shutdown(void);
282 Ecore_X_Atom _ecore_x_selection_target_atom_get(const char *target);
283 char     *_ecore_x_selection_target_get(Ecore_X_Atom target);
284 Ecore_X_Selection_Intern *_ecore_x_selection_get(Ecore_X_Atom selection);
285 Eina_Bool _ecore_x_selection_set(Window w,
286                                   const void *data,
287                                   int len,
288                                   Ecore_X_Atom selection);
289 int _ecore_x_selection_convert(Ecore_X_Atom selection,
290                                Ecore_X_Atom target,
291                                void **data_ret,
292                                Ecore_X_Atom *targettype,
293                                int *targetsize);
294 void *_ecore_x_selection_parse(const char *target,
295                                void *data,
296                                int size,
297                                int format);
298
299 int _ecore_x_window_grab_remove(Ecore_X_Window win, int button, int mod, int any_mod);
300 int _ecore_x_key_grab_remove(Ecore_X_Window win, const char *key, int mod, int any_mod);
301 void _ecore_x_window_grab_suspend(void);
302 void _ecore_x_window_grab_resume(void);
303 void _ecore_x_key_grab_suspend(void);
304 void _ecore_x_key_grab_resume(void);
305
306 /* from dnd */
307 void                _ecore_x_dnd_init(void);
308 Ecore_X_DND_Source *_ecore_x_dnd_source_get(void);
309 Ecore_X_DND_Target *_ecore_x_dnd_target_get(void);
310 void                _ecore_x_dnd_drag(Ecore_X_Window root,
311                                       int x,
312                                       int y);
313 void _ecore_x_dnd_shutdown(void);
314
315 /* from netwm */
316 Ecore_X_Window_State _ecore_x_netwm_state_get(Ecore_X_Atom a);
317 int                  _ecore_x_netwm_startup_info_begin(Ecore_X_Window win,
318                                                        char *data);
319 int                  _ecore_x_netwm_startup_info(Ecore_X_Window win,
320                                                  char *data);
321
322 /* Fixes * Damage * Composite * DPMS */
323 void _ecore_x_fixes_init(void);
324 void _ecore_x_damage_init(void);
325 void _ecore_x_composite_init(void);
326 void _ecore_x_present_init(void);
327 void _ecore_x_dpms_init(void);
328 void _ecore_x_randr_init(void);
329 void _ecore_x_gesture_init(void);
330
331 void _ecore_x_atoms_init(void);
332
333 extern int _ecore_x_present_major;
334 extern int _ecore_x_xi2_opcode;
335
336 void _ecore_x_events_init(void);
337 void _ecore_x_events_shutdown(void);
338
339 void _ecore_x_input_init(void);
340 void _ecore_x_input_shutdown(void);
341 void _ecore_x_input_handler(XEvent *xevent);
342 /* from sync */
343
344 void
345 _ecore_x_axis_update(Ecore_Window window,
346                      Ecore_Window event_window,
347                      Ecore_Window root_window,
348                      unsigned int timestamp,
349                      int devid,
350                      int toolid,
351                      int naxis,
352                      Ecore_Axis *axis);
353
354 void _ecore_mouse_move(unsigned int timestamp,
355                        unsigned int xmodifiers,
356                        int x,
357                        int y,
358                        int x_root,
359                        int y_root,
360                        unsigned int event_window,
361                        unsigned int window,
362                        unsigned int root_win,
363                        int same_screen,
364                        int dev,
365                        double radx,
366                        double rady,
367                        double pressure,
368                        double angle,
369                        double mx,
370                        double my,
371                        double mrx,
372                        double mry);
373 Ecore_Event_Mouse_Button *_ecore_mouse_button(int event,
374                                               unsigned int timestamp,
375                                               unsigned int xmodifiers,
376                                               unsigned int buttons,
377                                               int x,
378                                               int y,
379                                               int x_root,
380                                               int y_root,
381                                               unsigned int event_window,
382                                               unsigned int window,
383                                               unsigned int root_win,
384                                               int same_screen,
385                                               int dev,
386                                               double radx,
387                                               double rady,
388                                               double pressure,
389                                               double angle,
390                                               double mx,
391                                               double my,
392                                               double mrx,
393                                               double mry);
394
395 void _ecore_x_modifiers_get(void);
396 KeySym _ecore_x_XKeycodeToKeysym(Display *display, KeyCode keycode, int index);
397
398 //#define LOGFNS 1
399
400 #ifdef LOGFNS
401 #include <stdio.h>
402 #define LOGFN(fl, ln, fn) printf("-ECORE-X: %25s: %5i - %s\n", fl, ln, fn);
403 #else /* ifdef LOGFNS */
404 #define LOGFN(fl, ln, fn)
405 #endif /* ifdef LOGFNS */
406
407 #endif /* ifndef _ECORE_X_PRIVATE_H */