Blame


1 76193d7c 2003-09-30 devnull #include <u.h>
2 76193d7c 2003-09-30 devnull #include <libc.h>
3 76193d7c 2003-09-30 devnull #include <draw.h>
4 76193d7c 2003-09-30 devnull
5 76193d7c 2003-09-30 devnull /*
6 76193d7c 2003-09-30 devnull * This code (and the devdraw interface) will have to change
7 76193d7c 2003-09-30 devnull * if we ever get bitmaps with ldepth > 3, because the
8 76193d7c 2003-09-30 devnull * colormap will have to be written in chunks
9 76193d7c 2003-09-30 devnull */
10 76193d7c 2003-09-30 devnull
11 76193d7c 2003-09-30 devnull void
12 76193d7c 2003-09-30 devnull writecolmap(Display *d, RGB *m)
13 76193d7c 2003-09-30 devnull {
14 76193d7c 2003-09-30 devnull int i, n, fd;
15 76193d7c 2003-09-30 devnull char buf[64], *t;
16 76193d7c 2003-09-30 devnull ulong r, g, b;
17 76193d7c 2003-09-30 devnull
18 76193d7c 2003-09-30 devnull sprint(buf, "/dev/draw/%d/colormap", d->dirno);
19 76193d7c 2003-09-30 devnull fd = open(buf, OWRITE);
20 76193d7c 2003-09-30 devnull if(fd < 0)
21 76193d7c 2003-09-30 devnull drawerror(d, "wrcolmap: open colormap failed");
22 76193d7c 2003-09-30 devnull t = malloc(8192);
23 76193d7c 2003-09-30 devnull n = 0;
24 76193d7c 2003-09-30 devnull for(i = 0; i < 256; i++) {
25 76193d7c 2003-09-30 devnull r = m[i].red>>24;
26 76193d7c 2003-09-30 devnull g = m[i].green>>24;
27 76193d7c 2003-09-30 devnull b = m[i].blue>>24;
28 76193d7c 2003-09-30 devnull n += sprint(t+n, "%d %lud %lud %lud\n", 255-i, r, g, b);
29 76193d7c 2003-09-30 devnull }
30 76193d7c 2003-09-30 devnull i = write(fd, t, n);
31 76193d7c 2003-09-30 devnull free(t);
32 76193d7c 2003-09-30 devnull close(fd);
33 76193d7c 2003-09-30 devnull if(i != n)
34 76193d7c 2003-09-30 devnull drawerror(d, "wrcolmap: bad write");
35 76193d7c 2003-09-30 devnull }