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("");
}

Reply via email to