*** empty log message ***
authorGerd Moellmann <gerd@gnu.org>
Wed, 17 Oct 2001 09:27:02 +0000 (09:27 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 17 Oct 2001 09:27:02 +0000 (09:27 +0000)
admin/ChangeLog
admin/alloc-colors.c [new file with mode: 0644]

index 485825e..2ff0f80 100644 (file)
@@ -1,3 +1,7 @@
+2001-10-17  Gerd Moellmann  <gerd@gnu.org>
+
+       * alloc-colors.c: New file.
+
 2001-10-13  Gerd Moellmann  <gerd@gnu.org>
 
        * make-emacs: Add --boot switch for bootstrapping.  Logs to
diff --git a/admin/alloc-colors.c b/admin/alloc-colors.c
new file mode 100644 (file)
index 0000000..d293007
--- /dev/null
@@ -0,0 +1,113 @@
+/* Allocate X colors.  Used for testing with dense colormaps.
+   Copyright (C) 2001 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Emacs 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 General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+#include <X11/Xlib.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <unistd.h>
+
+void
+fatal (const char *fmt, ...)
+{
+  va_list ap;
+
+  va_start (ap, fmt);
+  vfprintf (stderr, fmt, ap);
+  fputc ('\n', stderr);
+  va_end (ap);
+  exit (1);
+}
+
+void
+usage (const char *progname)
+{
+  fprintf (stderr, "Usage %s options\n", progname);
+  fprintf (stderr, "-n NCOLORS  allcoate NCOLORS colors\n");
+  exit (1);
+}
+
+int
+main (int argc, char **argv)
+{
+  Display *dpy;
+  int opt, ncolors = 0, i;
+  XColor *allocated;
+  int nallocated;
+  XColor color;
+  Colormap cmap;
+
+  while ((opt = getopt (argc, argv, "n:")) != EOF)
+    switch (opt)
+      {
+      case 'n':
+       ncolors = atoi (optarg);
+       break;
+       
+      case '?':
+       usage (argv[0]);
+      }
+
+  if (ncolors == 0)
+    usage (argv[0]);
+
+  dpy = XOpenDisplay ("");
+  if (dpy == NULL)
+    fatal ("Cannot open display");
+  cmap = DefaultColormap (dpy, 0);
+
+  allocated = malloc (ncolors * sizeof *allocated);
+  nallocated = 0;
+  memset (&color, 0, sizeof color);
+
+  while (nallocated < ncolors
+        && color.red < 65536)
+    {
+      allocated[nallocated] = color;
+      if (XAllocColor (dpy, cmap, &allocated[nallocated]))
+       {
+         for (i = 0; i < nallocated; ++i)
+           if (allocated[i].red == allocated[nallocated].red
+               && allocated[i].green == allocated[nallocated].green
+               && allocated[i].blue == allocated[nallocated].blue)
+             break;
+
+         if (i == nallocated)
+           {
+             printf ("allocated %d/%d/%d\n",
+                     allocated[nallocated].red,
+                     allocated[nallocated].green,
+                     allocated[nallocated].blue);
+             ++nallocated;
+           }
+       }
+      
+      ++color.red;
+      ++color.green;
+      ++color.blue;
+    }
+
+  fprintf (stderr, "Waiting.  Press ^C to stop.\n");
+  while (1)
+    sleep (10);
+
+  XCloseDisplay (dpy);
+  return 0;
+}