From: Gerd Moellmann Date: Wed, 17 Oct 2001 09:27:02 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: ttn-vms-21-2-B4~19395 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=09954f3be12fd8cbbe435a588d635d46702cd336;p=emacs.git *** empty log message *** --- diff --git a/admin/ChangeLog b/admin/ChangeLog index 485825e06fc..2ff0f801989 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,7 @@ +2001-10-17 Gerd Moellmann + + * alloc-colors.c: New file. + 2001-10-13 Gerd Moellmann * 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 index 00000000000..d293007bb7b --- /dev/null +++ b/admin/alloc-colors.c @@ -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 +#include +#include +#include +#include + +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; +}