shithub: libdraw.myr

ref: d180b70c6c69ffe8168cc8571772ad6e15ac6aba
dir: /testdraw.myr/

View raw version
use std
use draw

const main = {
	var ev

	match draw.open()
	| `std.Err e:	std.fatal("error: {}\n", e)
	| `std.Ok dpy:
		testpattern(dpy)
		draw.flush(dpy)
		while true
			ev =  draw.event(dpy)
			match ev#
			| `draw.Mmove _:
			| `draw.Mdown (x, y, mask):	std.put("click {} at {}\n", mask, (x, y))
			| `draw.Mup (x, y, mask):	std.put("release {} at {}\n", mask, (x, y))
			| `draw.Kp 'q':
				break
			| _:
				std.put("ev: {}\n", ev)
			;;
			std.free(ev)
		;;
		draw.close(dpy)
	;;
}

const testpattern = {dpy
	var w, r, p : draw.point


	match draw.getwindow(dpy, draw.Refnone)
	| `std.Ok win:	w = win
	| `std.Err e:	-> std.fatal("could not get window: {}\n", e);
	;;
	r = [.x0=w.r.x0+100, .y0=w.r.y0+100, .x1=w.r.x0+200, .y1=w.r.y0+200]
	draw.fill(w, dpy.black, r)
	p = [.x=w.r.x0+100, .y=w.r.y0+210]
	draw.string(w, p, "hello world")
}