]> Pileus Git - ~andy/gtk/blob - gdk/x11/gdkx.h
64185f82888af71c027eb6340da69e774bc09dff
[~andy/gtk] / gdk / x11 / gdkx.h
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 /*
21  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
22  * file for a list of people on the GTK+ Team.  See the ChangeLog
23  * files for a list of changes.  These files are distributed with
24  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
25  */
26
27 #ifndef __GDK_X_H__
28 #define __GDK_X_H__
29
30 #include <gdk/gdkprivate.h>
31 #include <gdk/gdkcursor.h>
32
33 #include <X11/Xlib.h>
34 #include <X11/Xutil.h>
35
36 G_BEGIN_DECLS
37
38 #ifndef GDK_MULTIHEAD_SAFE
39 extern Display          *gdk_display;
40 #endif
41
42 Display *gdk_x11_drawable_get_xdisplay    (GdkDrawable *drawable);
43 XID      gdk_x11_drawable_get_xid         (GdkDrawable *drawable);
44 Display *gdk_x11_image_get_xdisplay       (GdkImage    *image);
45 XImage  *gdk_x11_image_get_ximage         (GdkImage    *image);
46 Display *gdk_x11_colormap_get_xdisplay    (GdkColormap *colormap);
47 Colormap gdk_x11_colormap_get_xcolormap   (GdkColormap *colormap);
48 Display *gdk_x11_cursor_get_xdisplay      (GdkCursor   *cursor);
49 Cursor   gdk_x11_cursor_get_xcursor       (GdkCursor   *cursor);
50 Display *gdk_x11_display_get_xdisplay     (GdkDisplay  *display);
51 Visual * gdk_x11_visual_get_xvisual       (GdkVisual   *visual);
52 Display *gdk_x11_gc_get_xdisplay          (GdkGC       *gc);
53 GC       gdk_x11_gc_get_xgc               (GdkGC       *gc);
54 Screen * gdk_x11_screen_get_xscreen       (GdkScreen   *screen);
55 int      gdk_x11_screen_get_screen_number (GdkScreen   *screen);
56 void     gdk_x11_window_set_user_time     (GdkWindow   *window,
57                                            guint32      timestamp);
58 void     gdk_x11_window_move_to_current_desktop (GdkWindow   *window);
59
60 const char* gdk_x11_screen_get_window_manager_name (GdkScreen *screen);
61
62 #ifndef GDK_MULTIHEAD_SAFE
63 Window   gdk_x11_get_default_root_xwindow (void);
64 Display *gdk_x11_get_default_xdisplay     (void);
65 gint     gdk_x11_get_default_screen       (void);
66 #endif
67
68 #define GDK_COLORMAP_XDISPLAY(cmap)   (gdk_x11_colormap_get_xdisplay (cmap))
69 #define GDK_COLORMAP_XCOLORMAP(cmap)  (gdk_x11_colormap_get_xcolormap (cmap))
70 #define GDK_CURSOR_XDISPLAY(cursor)   (gdk_x11_cursor_get_xdisplay (cursor))
71 #define GDK_CURSOR_XCURSOR(cursor)    (gdk_x11_cursor_get_xcursor (cursor))
72 #define GDK_IMAGE_XDISPLAY(image)     (gdk_x11_image_get_xdisplay (image))
73 #define GDK_IMAGE_XIMAGE(image)       (gdk_x11_image_get_ximage (image))
74
75 #ifndef GDK_MULTIHEAD_SAFE
76 #define GDK_DISPLAY()                 gdk_display
77 #endif
78
79 #ifdef GDK_COMPILATION
80
81 #include "gdkprivate-x11.h"
82 #include "gdkscreen-x11.h"
83
84 #define GDK_DISPLAY_XDISPLAY(display) (GDK_DISPLAY_X11(display)->xdisplay)
85
86 #define GDK_WINDOW_XDISPLAY(win)      (GDK_SCREEN_X11 (GDK_WINDOW_SCREEN (win))->xdisplay)
87 #define GDK_WINDOW_XID(win)           (GDK_DRAWABLE_IMPL_X11(((GdkWindowObject *)win)->impl)->xid)
88 #define GDK_PIXMAP_XDISPLAY(pix)      (GDK_SCREEN_X11 (GDK_PIXMAP_SCREEN (pix))->xdisplay)
89 #define GDK_PIXMAP_XID(pix)           (GDK_DRAWABLE_IMPL_X11(((GdkPixmapObject *)pix)->impl)->xid)
90 #define GDK_DRAWABLE_XDISPLAY(win)    (GDK_IS_WINDOW (win) ? GDK_WINDOW_XDISPLAY (win) : GDK_PIXMAP_XDISPLAY (win))
91 #define GDK_DRAWABLE_XID(win)         (GDK_IS_WINDOW (win) ? GDK_WINDOW_XID (win) : GDK_PIXMAP_XID (win))
92 #define GDK_GC_XDISPLAY(gc)           (GDK_SCREEN_XDISPLAY(GDK_GC_X11(gc)->screen))
93 #define GDK_GC_XGC(gc)                (GDK_GC_X11(gc)->xgc)
94 #define GDK_SCREEN_XDISPLAY(screen)   (GDK_SCREEN_X11 (screen)->xdisplay)
95 #define GDK_SCREEN_XSCREEN(screen)    (GDK_SCREEN_X11 (screen)->xscreen)
96 #define GDK_SCREEN_XNUMBER(screen)    (GDK_SCREEN_X11 (screen)->screen_num) 
97 #define GDK_VISUAL_XVISUAL(vis)       (((GdkVisualPrivate *) vis)->xvisual)
98 #define GDK_GC_GET_XGC(gc)            (GDK_GC_X11(gc)->dirty_mask ? _gdk_x11_gc_flush (gc) : ((GdkGCX11 *)(gc))->xgc)
99 #define GDK_WINDOW_XWINDOW            GDK_DRAWABLE_XID
100
101 #else /* GDK_COMPILATION */
102
103 #ifndef GDK_MULTIHEAD_SAFE
104 #define GDK_ROOT_WINDOW()             (gdk_x11_get_default_root_xwindow ())
105 #endif
106
107 #define GDK_DISPLAY_XDISPLAY(display) (gdk_x11_display_get_xdisplay (display))
108
109 #define GDK_WINDOW_XDISPLAY(win)      (gdk_x11_drawable_get_xdisplay (((GdkWindowObject *)win)->impl))
110 #define GDK_WINDOW_XID(win)           (gdk_x11_drawable_get_xid (win))
111 #define GDK_WINDOW_XWINDOW(win)       (gdk_x11_drawable_get_xid (win))
112 #define GDK_PIXMAP_XDISPLAY(win)      (gdk_x11_drawable_get_xdisplay (((GdkPixmapObject *)win)->impl))
113 #define GDK_PIXMAP_XID(win)           (gdk_x11_drawable_get_xid (win))
114 #define GDK_DRAWABLE_XDISPLAY(win)    (gdk_x11_drawable_get_xdisplay (win))
115 #define GDK_DRAWABLE_XID(win)         (gdk_x11_drawable_get_xid (win))
116 #define GDK_GC_XDISPLAY(gc)           (gdk_x11_gc_get_xdisplay (gc))
117 #define GDK_GC_XGC(gc)                (gdk_x11_gc_get_xgc (gc))
118 #define GDK_SCREEN_XDISPLAY(screen)   (gdk_x11_display_get_xdisplay (gdk_screen_get_display (screen)))
119 #define GDK_SCREEN_XSCREEN(screen)    (gdk_x11_screen_get_xscreen (screen))
120 #define GDK_SCREEN_XNUMBER(screen)    (gdk_x11_screen_get_screen_number (screen))
121 #define GDK_VISUAL_XVISUAL(visual)    (gdk_x11_visual_get_xvisual (visual))
122
123 #endif /* GDK_COMPILATION */
124
125 GdkVisual* gdk_x11_screen_lookup_visual (GdkScreen *screen,
126                                          VisualID   xvisualid);
127 #ifndef GDK_MULTIHEAD_SAFE
128 GdkVisual* gdkx_visual_get            (VisualID   xvisualid);
129 #endif
130
131 #ifdef GDK_ENABLE_BROKEN
132 /* XXX: An X Colormap is useless unless we also have the visual. */
133 GdkColormap* gdkx_colormap_get (Colormap xcolormap);
134 #endif
135
136 GdkColormap *gdk_x11_colormap_foreign_new (GdkVisual *visual,
137                                            Colormap   xcolormap);
138
139      /* Return the Gdk* for a particular XID */
140 gpointer      gdk_xid_table_lookup_for_display (GdkDisplay *display,
141                                                 XID         xid);
142 guint32       gdk_x11_get_server_time  (GdkWindow       *window);
143 guint32       gdk_x11_display_get_user_time (GdkDisplay *display);
144
145 G_CONST_RETURN gchar *gdk_x11_display_get_startup_notification_id (GdkDisplay *display);
146
147 void          gdk_x11_display_set_cursor_theme (GdkDisplay  *display,
148                                                 const gchar *theme,
149                                                 const gint   size);
150
151 void gdk_x11_display_broadcast_startup_message (GdkDisplay *display,
152                                                 const char *message_type,
153                                                 ...) G_GNUC_NULL_TERMINATED;
154
155 /* returns TRUE if we support the given WM spec feature */
156 gboolean gdk_x11_screen_supports_net_wm_hint (GdkScreen *screen,
157                                               GdkAtom    property);
158
159 XID      gdk_x11_screen_get_monitor_output   (GdkScreen *screen,
160                                               gint       monitor_num);
161
162 #ifndef GDK_MULTIHEAD_SAFE
163 gpointer      gdk_xid_table_lookup   (XID              xid);
164 gboolean      gdk_net_wm_supports    (GdkAtom    property);
165 void          gdk_x11_grab_server    (void);
166 void          gdk_x11_ungrab_server  (void);
167 #endif
168
169 GdkDisplay   *gdk_x11_lookup_xdisplay (Display *xdisplay);
170
171
172 /* Functions to get the X Atom equivalent to the GdkAtom */
173 Atom                  gdk_x11_atom_to_xatom_for_display (GdkDisplay  *display,
174                                                          GdkAtom      atom);
175 GdkAtom               gdk_x11_xatom_to_atom_for_display (GdkDisplay  *display,
176                                                          Atom         xatom);
177 Atom                  gdk_x11_get_xatom_by_name_for_display (GdkDisplay  *display,
178                                                              const gchar *atom_name);
179 G_CONST_RETURN gchar *gdk_x11_get_xatom_name_for_display (GdkDisplay  *display,
180                                                           Atom         xatom);
181 #ifndef GDK_MULTIHEAD_SAFE
182 Atom                  gdk_x11_atom_to_xatom     (GdkAtom      atom);
183 GdkAtom               gdk_x11_xatom_to_atom     (Atom         xatom);
184 Atom                  gdk_x11_get_xatom_by_name (const gchar *atom_name);
185 G_CONST_RETURN gchar *gdk_x11_get_xatom_name    (Atom         xatom);
186 #endif
187
188 void        gdk_x11_display_grab              (GdkDisplay *display);
189 void        gdk_x11_display_ungrab            (GdkDisplay *display);
190 void        gdk_x11_register_standard_event_type (GdkDisplay *display,
191                                                   gint        event_base,
192                                                   gint        n_events);
193
194 #if !defined(GDK_DISABLE_DEPRECATED) || defined(GDK_COMPILATION)
195
196 gpointer             gdk_x11_font_get_xfont    (GdkFont *font);
197 #define GDK_FONT_XFONT(font)          (gdk_x11_font_get_xfont (font))
198
199 #define gdk_font_lookup_for_display(display, xid) ((GdkFont*) gdk_xid_table_lookup_for_display (display, ((xid)|XID_FONT_BIT)))
200
201 #endif /* !GDK_DISABLE_DEPRECATED || GDK_COMPILATION */
202
203 #ifndef GDK_DISABLE_DEPRECATED
204
205 Display *            gdk_x11_font_get_xdisplay (GdkFont *font);
206 G_CONST_RETURN char *gdk_x11_font_get_name     (GdkFont *font);
207
208 #define GDK_FONT_XDISPLAY(font)       (gdk_x11_font_get_xdisplay (font))
209
210 #ifndef GDK_MULTIHEAD_SAFE
211
212 #define gdk_font_lookup(xid)       ((GdkFont*) gdk_xid_table_lookup (xid))
213
214 #endif /* GDK_MULTIHEAD_SAFE */
215 #endif /* GDK_DISABLE_DEPRECATED */
216
217 G_END_DECLS
218
219 #endif /* __GDK_X_H__ */