URI:
       timg.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR 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 }