From 3f8c70e97c2eb85992424439af56a4dd6412b8c6 Mon Sep 17 00:00:00 2001 From: rsc Date: Sat, 24 Apr 2004 16:59:47 +0000 Subject: a simple plan 9 image viewer --- src/cmd/draw/img.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/cmd/draw/img.c diff --git a/src/cmd/draw/img.c b/src/cmd/draw/img.c new file mode 100644 index 00000000..b46bcf34 --- /dev/null +++ b/src/cmd/draw/img.c @@ -0,0 +1,63 @@ +#include +#include +#include +#include + +void +usage(void) +{ + fprint(2, "usage: img [file]\n"); + exits("usage"); +} + +Image *image; + +void +eresized(int new) +{ + if(new && getwindow(display, Refnone) < 0) + sysfatal("can't reattach to window: %r"); + + draw(screen, screen->r, display->white, nil, ZP); + drawop(screen, screen->r, image, nil, image->r.min, S); +} + +void +main(int argc, char **argv) +{ + int fd; + Event e; + + ARGBEGIN{ + default: + usage(); + }ARGEND + + if(argc > 1) + usage(); + + if(argc == 1){ + if((fd = open(argv[0], OREAD)) < 0) + sysfatal("open %s: %r"); + }else + fd = 0; + + if(initdraw(nil, nil, nil) < 0) + sysfatal("initdraw: %r"); + + if((image=readimage(display, fd, 0)) == nil) + sysfatal("readimage: %r"); + + einit(Emouse|Ekeyboard); + eresized(0); + for(;;){ + switch(event(&e)){ + case Ekeyboard: + if(e.kbdc == 'q' || e.kbdc == 0x7F) + exits(nil); + break; + case Emouse: + break; + } + } +} -- cgit v1.2.3