i'm sure this could be smaller, but i've got to run. the images are here: /n/sources/contrib/quanstro/drawfunny/images/
; 8.out <{jpg -t9 /lib/radar/*.jpg} <{gif -t9 /lib/radar/hw.gif} <{gif -t9 /lib/radar/radar.gif}|page #include <u.h> #include <libc.h> #include <bio.h> #include <draw.h> #include <memdraw.h> #include <memlayer.h> enum { CHAN = RGBA32, }; void usage(void) { fprint(2, "usage: composetst...\n"); exits("usage"); } Memimage* newimage(int fd, ulong chan) { Memimage *t, *im; im = readmemimage(fd); if(im == nil) sysfatal("readmemimage: %r"); if(chan != 0){ t = allocmemimage(im->r, chan); if(t == nil) sysfatal("readmemimage: %r"); memfillcolor(t, DTransparent); memdraw(t, im->r, im, ZP, nil, ZP, SoverD); freememimage(im); im = t; } return im; } void main(int argc, char **argv) { int i, fd; Memimage *im, *scr; ARGBEGIN{ default: usage(); }ARGEND if(argc == 0) usage(); memimageinit(); fd = open(argv[0], OREAD); if(fd == -1) sysfatal("open: %r"); scr = newimage(fd, CHAN); for(i = 1; i < argc; i++){ fd = open(argv[i], OREAD); if(fd == -1) sysfatal("open: %r"); im = newimage(fd, 0); memdraw(scr, scr->r, im, ZP, nil, ZP, SoverD); freememimage(im); } writememimage(1, scr); exits(""); }