timg.c - plan9port - [fork] Plan 9 from user space | |
git clone git://src.adamsgaard.dk/plan9port | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
timg.c (1150B) | |
--- | |
1 #include <u.h> | |
2 #include <libc.h> | |
3 #include <draw.h> | |
4 #include <event.h> | |
5 | |
6 void | |
7 usage(void) | |
8 { | |
9 fprint(2, "usage: img [-W winsize] [file]\n"); | |
10 exits("usage"); | |
11 } | |
12 | |
13 Image *image; | |
14 | |
15 void | |
16 eresized(int new) | |
17 { | |
18 if(new && getwindow(display, Refnone) < 0) | |
19 sysfatal("can't reattach to window: %r"); | |
20 | |
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 } | |
25 | |
26 void | |
27 main(int argc, char **argv) | |
28 { | |
29 int fd; | |
30 char *label; | |
31 Event e; | |
32 | |
33 ARGBEGIN{ | |
34 case 'W': | |
35 winsize = EARGF(usage()); | |
36 break; | |
37 default: | |
38 usage(); | |
39 }ARGEND | |
40 | |
41 if(argc > 1) | |
42 usage(); | |
43 | |
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 } | |
52 | |
53 if(initdraw(0, nil, label) < 0) | |
54 sysfatal("initdraw: %r"); | |
55 | |
56 if((image=readimage(display, fd, 0)) == nil) | |
57 sysfatal("readimage: %r"); | |
58 | |
59 if(winsize == nil) | |
60 drawresizewindow(Rect(0,0,Dx(image->r),Dy(image->r))); | |
61 | |
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 } |