From 37da2899f40661e3e9631e497da8dc59b971cbd0 Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Fri, 22 Dec 2006 17:07:39 +0000 Subject: 20060303a --- libdraw/writecolmap.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 libdraw/writecolmap.c (limited to 'libdraw/writecolmap.c') diff --git a/libdraw/writecolmap.c b/libdraw/writecolmap.c new file mode 100644 index 00000000..6bbc7feb --- /dev/null +++ b/libdraw/writecolmap.c @@ -0,0 +1,37 @@ +#include "lib9.h" +#include "draw.h" +#include "kernel.h" + +/* + * This code (and the devdraw interface) will have to change + * if we ever get bitmaps with ldepth > 3, because the + * colormap will have to be written in chunks + */ + +void +writecolmap(Display *d, RGB *m) +{ + int i, n, fd; + char buf[64], *t; + ulong r, g, b; + + sprint(buf, "/dev/draw/%d/colormap", d->dirno); + fd = open(buf, OWRITE); + if(fd < 0) + drawerror(d, "wrcolmap: open colormap failed"); + t = malloc(8192); + if(t == nil) + return; + n = 0; + for(i = 0; i < 256; i++) { + r = m[i].red>>24; + g = m[i].green>>24; + b = m[i].blue>>24; + n += sprint(t+n, "%d %lud %lud %lud\n", 255-i, r, g, b); + } + i = libwrite(fd, t, n); + free(t); + close(fd); + if(i != n) + drawerror(d, "wrcolmap: bad write"); +} -- cgit v1.2.3