+#include <X11/extensions/Xrender.h>
+
+XRenderColor renderBlack = { 0, 0, 0, 0xffff };
+XRenderColor renderWhite = { 0xffff, 0xffff, 0xffff, 0xffff };
+XRenderColor renderRed = { 0xffff, 0, 0, 0xffff };
+XRenderColor renderGreen = { 0, 0xffff, 0, 0xffff };
+XRenderColor renderBlue = { 0, 0, 0xffff, 0xffff };
+
+XRenderColor renderClearRed = { 0x8000, 0, 0, 0x8000 };
+XRenderColor renderClearGreen = { 0, 0x8000, 0, 0x8000 };
+XRenderColor renderClearBlue = { 0, 0, 0x8000, 0x8000 };
+
+static inline Picture
+GetPicture (Display *dpy, Window w)
+{
+ static Picture p;
+
+ if (!p)
+ p = XRenderCreatePicture (dpy, w,
+ XRenderFindVisualFormat (dpy, visual),
+ 0, 0);
+ return p;
+}
+
+static inline Picture
+GetSrc (Display *dpy, XRenderColor *color)
+{
+ static Picture p;
+ static Pixmap pix;
+ static XRenderColor lastColor;
+ XRenderPictFormat *f;
+ XRenderPictureAttributes attr;
+
+ if (p && !memcmp (color, &lastColor, sizeof (XRenderColor)))
+ return p;
+ if (!p)
+ {
+ f = XRenderFindStandardFormat (dpy, PictStandardARGB32);
+ pix = XCreatePixmap (dpy, RootWindow (dpy, DefaultScreen (dpy)),
+ 1, 1, (unsigned) f->depth);
+ attr.repeat = True;
+ p = XRenderCreatePicture (dpy, pix, f, CPRepeat, &attr);
+ XFreePixmap (dpy, pix);
+ }
+ XRenderFillRectangle (dpy, PictOpSrc, p, color, 0, 0, 1, 1);
+ lastColor = *color;
+ return p;
+}
+
+static inline XRenderPictFormat *
+GetMask (Display *dpy)
+{
+ return XRenderFindStandardFormat (dpy, PictStandardA8);
+}
+