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