|
|
1.1 ! root 1: #include <X/mit-copyright.h> ! 2: ! 3: /* $Header: XParseColor.c,v 10.4 86/02/01 15:37:40 tony Rel $ */ ! 4: /* Copyright Massachusetts Institute of Technology 1985 */ ! 5: ! 6: #include "XlibInternal.h" ! 7: ! 8: Status XParseColor (spec, def) ! 9: register char *spec; ! 10: Color *def; ! 11: { ! 12: register Display *dpy; ! 13: register XReq *req; ! 14: XRep rep; ! 15: register int n, i; ! 16: int r, g, b; ! 17: char c; ! 18: ! 19: n = strlen (spec); ! 20: if (*spec != '#') { ! 21: GetReq (X_LookupColor, 0); ! 22: req->param.s[0] = n; ! 23: Data (dpy, spec, n); ! 24: if (!_XReply (dpy, &rep)) ! 25: return (0); ! 26: def->red = rep.param.u[0]; ! 27: def->green = rep.param.u[1]; ! 28: def->blue = rep.param.u[2]; ! 29: return (1); ! 30: } ! 31: spec++; ! 32: n--; ! 33: if (n != 3 && n != 6 && n != 9 && n != 12) ! 34: return (0); ! 35: n /= 3; ! 36: r = g = b = 0; ! 37: do { ! 38: r = g; ! 39: g = b; ! 40: b = 0; ! 41: for (i = n; --i >= 0; ) { ! 42: c = *spec++; ! 43: b <<= 4; ! 44: if (c >= '0' && c <= '9') ! 45: b |= c - '0'; ! 46: else if (c >= 'A' && c <= 'F') ! 47: b |= c - ('A' - 10); ! 48: else if (c >= 'a' && c <= 'f') ! 49: b |= c - ('a' - 10); ! 50: else return (0); ! 51: } ! 52: } while (*spec); ! 53: n <<= 2; ! 54: n = 16 - n; ! 55: def->red = r << n; ! 56: def->green = g << n; ! 57: def->blue = b << n; ! 58: return (1); ! 59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.