17dd7cddfSDavid du Colombier #include <u.h>
27dd7cddfSDavid du Colombier #include <libc.h>
37dd7cddfSDavid du Colombier #include <draw.h>
47dd7cddfSDavid du Colombier #include <bio.h>
57dd7cddfSDavid du Colombier
67dd7cddfSDavid du Colombier static ulong
getval(char ** p)77dd7cddfSDavid du Colombier getval(char **p)
87dd7cddfSDavid du Colombier {
97dd7cddfSDavid du Colombier ulong v;
107dd7cddfSDavid du Colombier char *q;
117dd7cddfSDavid du Colombier
127dd7cddfSDavid du Colombier v = strtoul(*p, &q, 0);
137dd7cddfSDavid du Colombier v |= v<<8;
147dd7cddfSDavid du Colombier v |= v<<16;
157dd7cddfSDavid du Colombier *p = q;
167dd7cddfSDavid du Colombier return v;
177dd7cddfSDavid du Colombier }
187dd7cddfSDavid du Colombier
197dd7cddfSDavid du Colombier void
readcolmap(Display * d,RGB * colmap)207dd7cddfSDavid du Colombier readcolmap(Display *d, RGB *colmap)
217dd7cddfSDavid du Colombier {
227dd7cddfSDavid du Colombier int i;
237dd7cddfSDavid du Colombier char *p, *q;
247dd7cddfSDavid du Colombier Biobuf *b;
257dd7cddfSDavid du Colombier char buf[128];
267dd7cddfSDavid du Colombier
277dd7cddfSDavid du Colombier USED(screen);
287dd7cddfSDavid du Colombier
297dd7cddfSDavid du Colombier sprint(buf, "/dev/draw/%d/colormap", d->dirno);
307dd7cddfSDavid du Colombier b = Bopen(buf, OREAD);
317dd7cddfSDavid du Colombier if(b == 0)
327dd7cddfSDavid du Colombier drawerror(d, "rdcolmap: can't open colormap device");
337dd7cddfSDavid du Colombier
347dd7cddfSDavid du Colombier for(;;) {
357dd7cddfSDavid du Colombier p = Brdline(b, '\n');
367dd7cddfSDavid du Colombier if(p == 0)
377dd7cddfSDavid du Colombier break;
387dd7cddfSDavid du Colombier i = strtoul(p, &q, 0);
397dd7cddfSDavid du Colombier if(i < 0 || i > 255) {
40*9a747e4fSDavid du Colombier fprint(2, "rdcolmap: bad index\n");
417dd7cddfSDavid du Colombier exits("bad");
427dd7cddfSDavid du Colombier }
437dd7cddfSDavid du Colombier p = q;
447dd7cddfSDavid du Colombier colmap[255-i].red = getval(&p);
457dd7cddfSDavid du Colombier colmap[255-i].green = getval(&p);
467dd7cddfSDavid du Colombier colmap[255-i].blue = getval(&p);
477dd7cddfSDavid du Colombier }
487dd7cddfSDavid du Colombier Bterm(b);
497dd7cddfSDavid du Colombier }
50