Commit Diff


commit - e2713e92abdfd2ac5359f5756ffff112e1069c78
commit + 3f8c70e97c2eb85992424439af56a4dd6412b8c6
blob - /dev/null
blob + b46bcf3405cff39a4563be240c650d6cf550f629 (mode 644)
--- /dev/null
+++ 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;
+		}
+	}
+}