#include #include #include #include int main() { Display *dpy; int scr; Window win; XSetWindowAttributes xswa; char *xservname=NULL; GC gc; XGCValues gcv; if ((dpy=XOpenDisplay(xservname)) == NULL) { fprintf(stderr,"can not open %s\n",XDisplayName(xservname)); exit(-1); } scr = DefaultScreen(dpy); xswa.background_pixel = WhitePixel(dpy,scr); xswa.border_pixel = BlackPixel(dpy,scr); xswa.event_mask = ExposureMask; win = XCreateWindow(dpy,RootWindow(dpy,scr),0,0,320,240,1, CopyFromParent,CopyFromParent,CopyFromParent, CWBackPixel | CWBorderPixel | CWEventMask, &xswa); gcv.foreground = BlackPixel(dpy,scr); gcv.background = WhitePixel(dpy,scr); gc = XCreateGC(dpy,win,GCForeground|GCBackground,&gcv); XMapWindow(dpy,win); for (;;) { XEvent ev; XPoint p[6] = {{60,190},{30,235},{107,207},{12,207},{89,235},{60,190}}; XNextEvent(dpy,&ev); switch (ev.type) { case Expose: XClearWindow(dpy,win); XDrawLine(dpy,win,gc,10,10,110,60); XDrawRectangle(dpy,win,gc,10,70,100,50); XFillRectangle(dpy,win,gc,10,130,100,50); XDrawArc(dpy,win,gc,150,10,100,50,0,45*64); XDrawArc(dpy,win,gc,150,10,100,50,90*64,45*64); XDrawArc(dpy,win,gc,150,10,100,50,180*64,45*64); XDrawArc(dpy,win,gc,150,10,100,50,270*64,45*64); XDrawArc(dpy,win,gc,150,70,100,50,0*64,360*64); XFillArc(dpy,win,gc,150,130,100,50,0*64,270*64); XFillPolygon(dpy,win,gc,p,6,Complex,CoordModeOrigin); break; default: printf("unknown event %d\n",ev.type); break; } } }