Mercurial > emacs
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; +}