summaryrefslogtreecommitdiffstats
path: root/xlib/xutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlib/xutil.c')
-rw-r--r--xlib/xutil.c116
1 files changed, 116 insertions, 0 deletions
diff --git a/xlib/xutil.c b/xlib/xutil.c
new file mode 100644
index 0000000..1080ff9
--- /dev/null
+++ b/xlib/xutil.c
@@ -0,0 +1,116 @@
+/*
+ * xutil.c --
+ *
+ * This function contains generic X emulation routines.
+ *
+ * Copyright (c) 1995-1996 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * SCCS: @(#) xutil.c 1.10 96/04/09 23:26:21
+ */
+
+#include <stdlib.h>
+#include <tk.h>
+
+#ifdef MAC_TCL
+# include <Xutil.h>
+# include <Xatom.h>
+#else
+# include <X11/Xutil.h>
+# include <X11/Xatom.h>
+#endif
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XInternAtom --
+ *
+ * This procedure simulates the XInternAtom function by calling
+ * Tk_Uid to get a unique id for every atom. This is only a
+ * partial implementation, since it doesn't work across
+ * applications.
+ *
+ * Results:
+ * A new Atom.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+Atom
+XInternAtom(display, atom_name, only_if_exists)
+ Display* display;
+ _Xconst char* atom_name;
+ Bool only_if_exists;
+{
+ static Atom atom = XA_LAST_PREDEFINED;
+
+ display->request++;
+ return ++atom;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XGetVisualInfo --
+ *
+ * Returns information about the specified visual.
+ *
+ * Results:
+ * Returns a newly allocated XVisualInfo structure.
+ *
+ * Side effects:
+ * Allocates storage.
+ *
+ *----------------------------------------------------------------------
+ */
+
+XVisualInfo *
+XGetVisualInfo(display, vinfo_mask, vinfo_template, nitems_return)
+ Display* display;
+ long vinfo_mask;
+ XVisualInfo* vinfo_template;
+ int* nitems_return;
+{
+ XVisualInfo *info = (XVisualInfo *)ckalloc(sizeof(XVisualInfo));
+ info->visual = DefaultVisual(display, 0);
+ info->visualid = info->visual->visualid;
+ info->screen = 0;
+ info->depth = info->visual->bits_per_rgb;
+ info->class = info->visual->class;
+ info->colormap_size = info->visual->map_entries;
+ info->bits_per_rgb = info->visual->bits_per_rgb;
+ info->red_mask = info->visual->red_mask;
+ info->green_mask = info->visual->green_mask;
+ info->blue_mask = info->visual->blue_mask;
+
+ if (((vinfo_mask & VisualIDMask)
+ && (vinfo_template->visualid != info->visualid))
+ || ((vinfo_mask & VisualScreenMask)
+ && (vinfo_template->screen != info->screen))
+ || ((vinfo_mask & VisualDepthMask)
+ && (vinfo_template->depth != info->depth))
+ || ((vinfo_mask & VisualClassMask)
+ && (vinfo_template->class != info->class))
+ || ((vinfo_mask & VisualColormapSizeMask)
+ && (vinfo_template->colormap_size != info->colormap_size))
+ || ((vinfo_mask & VisualBitsPerRGBMask)
+ && (vinfo_template->bits_per_rgb != info->bits_per_rgb))
+ || ((vinfo_mask & VisualRedMaskMask)
+ && (vinfo_template->red_mask != info->red_mask))
+ || ((vinfo_mask & VisualGreenMaskMask)
+ && (vinfo_template->green_mask != info->green_mask))
+ || ((vinfo_mask & VisualBlueMaskMask)
+ && (vinfo_template->blue_mask != info->blue_mask))
+ ) {
+ ckfree((char *) info);
+ return NULL;
+ }
+
+ *nitems_return = 1;
+ return info;
+}