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 flushimage(display, 1);
24 }
26 void
27 main(int argc, char **argv)
28 {
29 int fd;
30 char *label;
31 Event e;
33 ARGBEGIN{
34 case 'W':
35 winsize = EARGF(usage());
36 break;
37 default:
38 usage();
39 }ARGEND
41 if(argc > 1)
42 usage();
44 if(argc == 1){
45 if((fd = open(argv[0], OREAD)) < 0)
46 sysfatal("open %s: %r");
47 label = argv[0];
48 }else{
49 fd = 0;
50 label = nil;
51 }
53 if(initdraw(0, nil, label) < 0)
54 sysfatal("initdraw: %r");
56 if((image=readimage(display, fd, 0)) == nil)
57 sysfatal("readimage: %r");
59 if(winsize == nil)
60 drawresizewindow(Rect(0,0,Dx(image->r),Dy(image->r)));
62 einit(Emouse|Ekeyboard);
63 eresized(0);
64 for(;;){
65 switch(event(&e)){
66 case Ekeyboard:
67 if(e.kbdc == 'q' || e.kbdc == 0x7F)
68 exits(nil);
69 break;
70 case Emouse:
71 break;
72 }
73 }
74 }