1 #include "lib9.h" 2 #include "draw.h" 3 #include "bio.h" 4 5 static ulong 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 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