1 #include "lib9.h"
2 #include "draw.h"
3 #include "bio.h"
4
5 static ulong
getval(char ** p)6 getval(char **p)
7 {
8 ulong v;
9 char *q;
10
11 v = strtoul(*p, &q, 0);
12 v |= v<<8;
13 v |= v<<16;
14 *p = q;
15 return v;
16 }
17
18 void
readcolmap(Display * d,RGB * colmap)19 readcolmap(Display *d, RGB *colmap)
20 {
21 int i;
22 char *p, *q;
23 Biobuf *b;
24 char buf[128];
25
26 sprint(buf, "/dev/draw/%d/colormap", d->dirno);
27 b = Bopen(buf, OREAD);
28 if(b == 0)
29 drawerror(d, "rdcolmap: can't open colormap device");
30
31 for(;;) {
32 p = Brdline(b, '\n');
33 if(p == 0)
34 break;
35 i = strtoul(p, &q, 0);
36 if(i < 0 || i > 255) {
37 _drawprint(2, "rdcolmap: bad index\n");
38 exits("bad");
39 }
40 p = q;
41 colmap[255-i].red = getval(&p);
42 colmap[255-i].green = getval(&p);
43 colmap[255-i].blue = getval(&p);
44 }
45 Bterm(b);
46 }
47