ref: 254b07675e1a5348f2a8723f55e6b5b1b18a4721
dir: /libdraw/readcolmap.c/
#include "lib9.h" #include "draw.h" #include "bio.h" static ulong getval(char **p) { ulong v; char *q; v = strtoul(*p, &q, 0); v |= v<<8; v |= v<<16; *p = q; return v; } void readcolmap(Display *d, RGB *colmap) { int i; char *p, *q; Biobuf *b; char buf[128]; sprint(buf, "/dev/draw/%d/colormap", d->dirno); b = Bopen(buf, OREAD); if(b == 0) drawerror(d, "rdcolmap: can't open colormap device"); for(;;) { p = Brdline(b, '\n'); if(p == 0) break; i = strtoul(p, &q, 0); if(i < 0 || i > 255) { _drawprint(2, "rdcolmap: bad index\n"); exits("bad"); } p = q; colmap[255-i].red = getval(&p); colmap[255-i].green = getval(&p); colmap[255-i].blue = getval(&p); } Bterm(b); }