Blob


1 #include <u.h>
2 #include <libc.h>
3 #include <draw.h>
4 #include <event.h>
6 void
7 usage(void)
8 {
9 fprint(2, "usage: img [-W winsize] [file]\n");
10 exits("usage");
11 }
13 Image *image;
15 void
16 eresized(int new)
17 {
18 if(new && getwindow(display, Refnone) < 0)
19 sysfatal("can't reattach to window: %r");
21 draw(screen, screen->r, display->white, nil, ZP);
22 drawop(screen, screen->r, image, nil, image->r.min, S);
23 }
25 void
26 main(int argc, char **argv)
27 {
28 int fd;
29 Event e;
31 ARGBEGIN{
32 case 'W':
33 winsize = EARGF(usage());
34 break;
35 default:
36 usage();
37 }ARGEND
39 if(argc > 1)
40 usage();
42 if(argc == 1){
43 if((fd = open(argv[0], OREAD)) < 0)
44 sysfatal("open %s: %r");
45 }else
46 fd = 0;
48 if(initdraw(0, nil, nil) < 0)
49 sysfatal("initdraw: %r");
51 if((image=readimage(display, fd, 0)) == nil)
52 sysfatal("readimage: %r");
54 drawresizewindow(Rect(0,0,Dx(image->r),Dy(image->r)));
56 einit(Emouse|Ekeyboard);
57 eresized(0);
58 for(;;){
59 switch(event(&e)){
60 case Ekeyboard:
61 if(e.kbdc == 'q' || e.kbdc == 0x7F)
62 exits(nil);
63 eresized(0);
64 break;
65 case Emouse:
66 break;
67 }
68 }
69 }