#include <9pm/u.h> #include <9pm/libc.h> #include <9pm/draw.h> #include <9pm/thread.h> #include <9pm/mouse.h> void eresized(int new) { Rectangle r; r = screen->r; if(new && getwindow(display, Refnone) < 0) fprint(2,"can't reattach to window"); draw(screen, screen->r, display->white, nil, ZP); } Mouse emouse(Mousectl *mc) { if(readmouse(mc) < 0) sysfatal("readmouse: %r"); return mc->m; } void threadmain(int argc, char **argv) { Mousectl *mc; Mouse m; Image *red, *blue; USED(argc); USED(argv); initdraw(0,0,0); eresized(0); mc = initmouse(nil, screen); red = allocimagemix(display, DRed, DRed); blue = allocimagemix(display, DBlue, DBlue); for(;;){ m = emouse(mc); if(m.buttons & 4) break; if(m.buttons & 1){ fillellipse(screen, m.xy, 5, 5, red, ZP); do m=emouse(mc); while(m.buttons & 1); fillellipse(screen, m.xy, 5, 5, blue, ZP); continue; } if(m.buttons & 2){ do m=emouse(mc); while(m.buttons & 2); draw(screen, screen->r, display->white, nil, ZP); continue; } draw(screen, rectaddpt(Rect(0,0,2,2), m.xy), display->black, nil, ZP); } threadexitsall(nil); }