#include #include #define TRUE 1 #define FALSE 0 main(argc,argv) int argc; char **argv; { int i,j; Display *display; Window root, window; long fgcolor, bgcolor; int screen, pointx, pointy; int eventmask = KeyPressMask|ExposureMask|ButtonPressMask; XEvent event; XGCValues gcval; GC draw; int FirstPt = TRUE; if (!(display = XOpenDisplay(argv[1]))) { perror("XOpenDisplay"); exit(1); } root = RootWindow(display,screen = DefaultScreen(display)); fgcolor = BlackPixel(display,screen); bgcolor = WhitePixel(display,screen); window = XCreateSimpleWindow(display,root,0,0,500,500,2, fgcolor,bgcolor); gcval.foreground = fgcolor; gcval.background = bgcolor; draw = XCreateGC(display,window,GCForeground|GCBackground,&gcval); XSelectInput(display,window,eventmask); XMapWindow(display,window); for (;;) { XWindowEvent(display,window,eventmask,&event); switch (event.type) { case Expose: XClearWindow(display,window); break; case ButtonPress: if (FirstPt) { FirstPt=FALSE; pointx = event.xbutton.x; pointy = event.xbutton.y; XDrawPoint(display,window,draw,pointx,pointy); break; } else { FirstPt=TRUE; XDrawLine(display,window,draw,pointx,pointy, event.xbutton.x, event.xbutton.y); break; } case KeyPress: XDestroyWindow(display, window); exit(0); default: fprintf(stderr,"Unexpected event: %d\n",event.type); } } }