1 /* Allocate X colors. Used for testing with dense colormaps.
3 Copyright (C) 2001-2018 Free Software Foundation, Inc.
5 This file is part of GNU Emacs.
7 GNU Emacs is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or (at
10 your option) any later version.
12 GNU Emacs is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
28 fatal (const char *fmt
, ...)
33 vfprintf (stderr
, fmt
, ap
);
40 usage (const char *progname
)
42 fprintf (stderr
, "Usage %s options\n", progname
);
43 fprintf (stderr
, "-n NCOLORS allocate NCOLORS colors\n");
48 main (int argc
, char **argv
)
51 int opt
, ncolors
= 0, i
;
57 while ((opt
= getopt (argc
, argv
, "n:")) != EOF
)
61 ncolors
= atoi (optarg
);
71 dpy
= XOpenDisplay ("");
73 fatal ("Cannot open display");
74 cmap
= DefaultColormap (dpy
, 0);
76 allocated
= malloc (ncolors
* sizeof *allocated
);
78 memset (&color
, 0, sizeof color
);
80 while (nallocated
< ncolors
83 allocated
[nallocated
] = color
;
84 if (XAllocColor (dpy
, cmap
, &allocated
[nallocated
]))
86 for (i
= 0; i
< nallocated
; ++i
)
87 if (allocated
[i
].red
== allocated
[nallocated
].red
88 && allocated
[i
].green
== allocated
[nallocated
].green
89 && allocated
[i
].blue
== allocated
[nallocated
].blue
)
94 printf ("allocated %d/%d/%d\n",
95 allocated
[nallocated
].red
,
96 allocated
[nallocated
].green
,
97 allocated
[nallocated
].blue
);
107 fprintf (stderr
, "Waiting. Press ^C to stop.\n");