#include #include main(argc,argv) int argc; char **argv; { Display *display; Window root, window; long fgcolor, bgcolor; int screen, pointx, pointy; long eventmask = ButtonPressMask|ExposureMask|KeyPressMask; XEvent event; XGCValues gcval; GC draw; Colormap cmap; XColor color, ignore; char *colorname = "blue"; XPoint PolygonPoints[10]; PolygonPoints[0].x=20; PolygonPoints[0].y=60; PolygonPoints[1].x=100; PolygonPoints[1].y=100; PolygonPoints[2].x=0; PolygonPoints[2].y=100; PolygonPoints[3].x=-100; PolygonPoints[3].y=0; PolygonPoints[4].x=0; PolygonPoints[4].y=-200; 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,400,400,2,fgcolor,bgcolor); cmap = DefaultColormap (display, screen); XAllocNamedColor(display, cmap, colorname, &color, &ignore); fgcolor = color.pixel; 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: /* XDrawLines(display,window,draw,PolygonPoints,5, CoordModePrevious); */ XFillPolygon(display,window,draw,PolygonPoints,5,Complex, CoordModePrevious); break; case KeyPress: exit(0); default: fprintf(stderr,"Unexpected event: %d\n",event.type); } } }