Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#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);
        if(b == 0)
                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);
}