changeset 39991:3dc22c67fd71

*** empty log message ***
author Gerd Moellmann <gerd@gnu.org>
date Wed, 17 Oct 2001 09:27:02 +0000
parents c306aaf12748
children a1c413c77526
files admin/ChangeLog admin/alloc-colors.c
diffstat 2 files changed, 117 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/admin/ChangeLog	Wed Oct 17 03:33:11 2001 +0000
+++ b/admin/ChangeLog	Wed Oct 17 09:27:02 2001 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/admin/alloc-colors.c	Wed Oct 17 09:27:02 2001 +0000
@@ -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;
+}