gdkx.h 6.28 KB
Newer Older
Elliot Lee's avatar
Elliot Lee committed
1 2 3 4
/* GDK - The GIMP Drawing Kit
 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
 *
 * This library is free software; you can redistribute it and/or
5
 * modify it under the terms of the GNU Lesser General Public
Elliot Lee's avatar
Elliot Lee committed
6 7 8 9 10 11
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
 * Lesser General Public License for more details.
Elliot Lee's avatar
Elliot Lee committed
13
 *
14
 * You should have received a copy of the GNU Lesser General Public
15 16 17
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
Elliot Lee's avatar
Elliot Lee committed
18
 */
19 20

/*
21
 * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
22 23 24 25 26
 * file for a list of people on the GTK+ Team.  See the ChangeLog
 * files for a list of changes.  These files are distributed with
 * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
 */

Elliot Lee's avatar
Elliot Lee committed
27 28 29
#ifndef __GDK_X_H__
#define __GDK_X_H__

30 31 32 33 34 35
#include <gdk/gdkprivate.h>
#include <gdk/gdkcursor.h>

#include <X11/Xlib.h>
#include <X11/Xutil.h>

36 37 38 39 40 41 42 43 44
#include <gdk/x11/gdkwindow-x11.h>
#include <gdk/x11/gdkpixmap-x11.h>

typedef struct _GdkGCXData             GdkGCXData;
typedef struct _GdkColormapPrivateX11 GdkColormapPrivateX11;
typedef struct _GdkCursorPrivate       GdkCursorPrivate;
typedef struct _GdkFontPrivateX        GdkFontPrivateX;
typedef struct _GdkImagePrivateX11    GdkImagePrivateX11;
typedef struct _GdkVisualPrivate       GdkVisualPrivate;
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

#ifdef USE_XIM
typedef struct _GdkICPrivate        GdkICPrivate;
#endif /* USE_XIM */

struct _GdkCursorPrivate
{
  GdkCursor cursor;
  Cursor xcursor;
  Display *xdisplay;
};

struct _GdkFontPrivateX
{
  GdkFontPrivate base;
  /* XFontStruct *xfont; */
  /* generic pointer point to XFontStruct or XFontSet */
  gpointer xfont;
  Display *xdisplay;

  GSList *names;
};

struct _GdkVisualPrivate
{
  GdkVisual visual;
  Visual *xvisual;
};

74
struct _GdkColormapPrivateX11
75 76 77 78 79 80 81 82 83 84
{
  Colormap xcolormap;
  Display *xdisplay;
  gint private_val;

  GHashTable *hash;
  GdkColorInfo *info;
  time_t last_sync_time;
};

85
struct _GdkImagePrivateX11
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
{
  XImage *ximage;
  Display *xdisplay;
  gpointer x_shm_info;
};


#ifdef USE_XIM

struct _GdkICPrivate
{
  XIC xic;
  GdkICAttr *attr;
  GdkICAttributesType mask;
};

#endif /* USE_XIM */
Elliot Lee's avatar
Elliot Lee committed
103

104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132

typedef struct _GdkGCX11      GdkGCX11;
typedef struct _GdkGCX11Class GdkGCX11Class;

#define GDK_TYPE_GC_X11              (gdk_gc_x11_get_type ())
#define GDK_GC_X11(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_GC_X11, GdkGCX11))
#define GDK_GC_X11_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_GC_X11, GdkGCX11Class))
#define GDK_IS_GC_X11(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_GC_X11))
#define GDK_IS_GC_X11_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_GC_X11))
#define GDK_GC_X11_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_GC_X11, GdkGCX11Class))

struct _GdkGCX11
{
  GdkGC parent_instance;
  
  GC xgc;
  Display *xdisplay;
  GdkRegion *clip_region;
  guint dirty_mask;
};

struct _GdkGCX11Class
{
  GdkGCClass parent_class;

};

GType gdk_gc_x11_get_type (void);

Elliot Lee's avatar
Elliot Lee committed
133
#define GDK_ROOT_WINDOW()             gdk_root_window
134
#define GDK_ROOT_PARENT()             ((GdkWindow *)gdk_parent_root)
Elliot Lee's avatar
Elliot Lee committed
135
#define GDK_DISPLAY()                 gdk_display
136 137 138 139 140 141 142 143 144 145 146 147 148
#define GDK_WINDOW_XDISPLAY(win)      (GDK_DRAWABLE_IMPL_X11(((GdkWindowObject *)win)->impl)->xdisplay)
#define GDK_WINDOW_XID(win)           (GDK_DRAWABLE_IMPL_X11(((GdkWindowObject *)win)->impl)->xid)
#define GDK_PIXMAP_XDISPLAY(win)      (GDK_DRAWABLE_IMPL_X11(((GdkPixmapObject *)win)->impl)->xdisplay)
#define GDK_PIXMAP_XID(win)           (GDK_DRAWABLE_IMPL_X11(((GdkPixmapObject *)win)->impl)->xid)
#define GDK_DRAWABLE_XDISPLAY(win)    (GDK_IS_WINDOW (win) ? GDK_WINDOW_XDISPLAY (win) : GDK_PIXMAP_XDISPLAY (win))
#define GDK_DRAWABLE_XID(win)         (GDK_IS_WINDOW (win) ? GDK_WINDOW_XID (win) : GDK_PIXMAP_XID (win))
#define GDK_IMAGE_XDISPLAY(image)     (((GdkImagePrivateX11 *) GDK_IMAGE (image)->windowing_data)->xdisplay)
#define GDK_IMAGE_XIMAGE(image)       (((GdkImagePrivateX11 *) GDK_IMAGE (image)->windowing_data)->ximage)
#define GDK_GC_XDISPLAY(gc)           (GDK_GC_X11(gc)->xdisplay)
#define GDK_COLORMAP_XDISPLAY(cmap)   (((GdkColormapPrivateX11 *)GDK_COLORMAP (cmap)->windowing_data)->xdisplay)
#define GDK_COLORMAP_XCOLORMAP(cmap)  (((GdkColormapPrivateX11 *)GDK_COLORMAP (cmap)->windowing_data)->xcolormap)
#define GDK_VISUAL_XVISUAL(vis)       (((GdkVisualPrivate *) vis)->xvisual)
#define GDK_FONT_XDISPLAY(font)       (((GdkFontPrivate *) font)->xdisplay)
149
#define GDK_FONT_XFONT(font)          (((GdkFontPrivateX *)font)->xfont)
Elliot Lee's avatar
Elliot Lee committed
150

151 152 153
#define GDK_GC_XGC(gc)       (GDK_GC_X11(gc)->xgc)
#define GDK_GC_GET_XGC(gc)   (GDK_GC_X11(gc)->dirty_mask ? _gdk_x11_gc_flush (gc) : GDK_GC_XGC (gc))
#define GDK_WINDOW_XWINDOW    GDK_DRAWABLE_XID
Elliot Lee's avatar
Elliot Lee committed
154

155 156 157 158 159 160 161 162 163 164
extern Display		*gdk_display;
extern Window		 gdk_root_window;
extern gint		 gdk_screen;
extern gchar		*gdk_display_name;
extern Window		 gdk_leader_window;

extern Atom		 gdk_selection_property;

extern gchar		*gdk_progclass;

Elliot Lee's avatar
Elliot Lee committed
165
GdkVisual*   gdkx_visual_get   (VisualID xvisualid);
166 167
/* XXX: Do not use this function until it is fixed. An X Colormap
 *      is useless unless we also have the visual. */
Elliot Lee's avatar
Elliot Lee committed
168 169 170 171 172 173
GdkColormap* gdkx_colormap_get (Colormap xcolormap);
/* Utility function in gdk.c - not sure where it belongs, but it's
   needed in more than one place, so make it public */
Window        gdk_get_client_window      (Display  *dpy,
                                          Window    win);

174
/* Functions to create pixmaps and windows from their X equivalents */
Elliot Lee's avatar
Elliot Lee committed
175 176
GdkPixmap    *gdk_pixmap_foreign_new (GdkNativeWindow anid);
GdkWindow    *gdk_window_foreign_new (GdkNativeWindow anid);
Elliot Lee's avatar
Elliot Lee committed
177

178 179 180
/* Return the Gdk* for a particular XID */
gpointer      gdk_xid_table_lookup     (XID              xid);

181 182
guint32       gdk_x11_get_server_time  (GdkWindow       *window);

Elliot Lee's avatar
Elliot Lee committed
183 184 185 186
#define gdk_window_lookup(xid)	   ((GdkWindow*) gdk_xid_table_lookup (xid))
#define gdk_pixmap_lookup(xid)	   ((GdkPixmap*) gdk_xid_table_lookup (xid))
#define gdk_font_lookup(xid)	   ((GdkFont*) gdk_xid_table_lookup (xid))

187 188
GC _gdk_x11_gc_flush (GdkGC *gc);

Elliot Lee's avatar
Elliot Lee committed
189
#endif /* __GDK_X_H__ */