|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T X
Length: 1148 (0x47c) Types: TextFile Names: »XParseColor.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─⟦this⟧ »./X.V10R4/Xlib/XParseColor.c«
#include <X/mit-copyright.h> /* $Header: XParseColor.c,v 10.5 86/04/22 15:16:46 jg Rel $ */ /* Copyright Massachusetts Institute of Technology 1985 */ #include "XlibInternal.h" Status XParseColor (spec, def) register char *spec; Color *def; { register Display *dpy; register XReq *req; XRep rep; register int n, i; int r, g, b; char c; n = strlen (spec); if (*spec != '#') { GetReq (X_LookupColor, 0); req->params0 = n; Data (dpy, spec, n); if (!_XReply (dpy, &rep)) return (0); def->red = rep.paramu0; def->green = rep.paramu1; def->blue = rep.paramu2; return (1); } spec++; n--; if (n != 3 && n != 6 && n != 9 && n != 12) return (0); n /= 3; r = g = b = 0; do { r = g; g = b; b = 0; for (i = n; --i >= 0; ) { c = *spec++; b <<= 4; if (c >= '0' && c <= '9') b |= c - '0'; else if (c >= 'A' && c <= 'F') b |= c - ('A' - 10); else if (c >= 'a' && c <= 'f') b |= c - ('a' - 10); else return (0); } } while (*spec); n <<= 2; n = 16 - n; def->red = r << n; def->green = g << n; def->blue = b << n; return (1); }