plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

commit 3f8c70e97c2eb85992424439af56a4dd6412b8c6
parent e2713e92abdfd2ac5359f5756ffff112e1069c78
Author: rsc <devnull@localhost>
Date:   Sat, 24 Apr 2004 16:59:47 +0000

a simple plan 9 image viewer

Diffstat:
Asrc/cmd/draw/img.c | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+), 0 deletions(-)

diff --git a/src/cmd/draw/img.c b/src/cmd/draw/img.c @@ -0,0 +1,63 @@ +#include <u.h> +#include <libc.h> +#include <draw.h> +#include <event.h> + +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; + } + } +}