#include #include #include #include #include #include #include static char glyphdata[4096] = { }; static GlyphSet make_glyphs (Display *dpy) { GlyphSet glyphset; Glyph gid = 1; XGlyphInfo glyphinfo; int i; for (i = 0; i < sizeof (glyphdata); ++i) { glyphdata[i] = i & 0x07; } glyphinfo.width = 64; glyphinfo.height = 64; glyphinfo.x = 0; glyphinfo.y = 0; glyphinfo.xOff = 0; glyphinfo.yOff = 0; glyphset = XRenderCreateGlyphSet ( dpy, XRenderFindStandardFormat (dpy, PictStandardA8)); XRenderAddGlyphs ( dpy, glyphset, &gid, &glyphinfo, 1, glyphdata, 64 * 64); return glyphset; } int main () { Display *dpy = XOpenDisplay (NULL); Window window; Damage damage; int devent, derror; int revent, rerror; Picture dst; Picture src; XRenderPictureAttributes attr; XTrapezoid traps[1] = { { 10 << 16, 40 << 16, { { 0 << 16, 0 << 16 }, { 10 << 16, 50 << 16 } }, { { 150 << 16, 0 << 16 }, { 160 << 16, 50 << 16 } }, } }; XRenderColor color = { 0x8080, 0xffff, 0x3232, 0xefef }; window = XCreateSimpleWindow ( dpy, DefaultRootWindow (dpy), 100, 100, 300, 300, 0, 0, 0); XDamageQueryExtension (dpy, &devent, &derror); XRenderQueryExtension (dpy, &revent, &rerror); damage = XDamageCreate (dpy, window, XDamageReportRawRectangles); XMapWindow (dpy, window); src = XRenderCreateSolidFill (dpy, &color); dst = XRenderCreatePicture ( dpy, window, XRenderFindStandardFormat (dpy, PictStandardRGB24), 0, &attr); for (;;) { XEvent event; char c = 1; int dstx = rand() % 300; int dsty = rand() % 300; XSync (dpy, False); #if 0 while (XPending (dpy)) { XNextEvent (dpy, &event); if (event.type == devent + XDamageNotify) printf ("Got damage\n"); } #endif XRenderCompositeTrapezoids (dpy, PictOpOver, src, dst, NULL, 0, 0, traps, 1); usleep (70000); } return 0; }