plan9front/sys/src/libdraw/readcolmap.c

50 lines
754 B
C

#include <u.h>
#include <libc.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];
USED(screen);
sprint(buf, "/dev/draw/%d/colormap", d->dirno);
b = Bopen(buf, OREAD|OCEXEC);
if(b == nil)
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) {
fprint(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);
}