+Draw *
+draw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h) {
+ Draw *draw = (Draw *)calloc(1, sizeof(Draw));
+ draw->dpy = dpy;
+ draw->screen = screen;
+ draw->win = win;
+ draw->w = w;
+ draw->h = h;
+ draw->drawable = XCreatePixmap(dpy, win, w, h, DefaultDepth(dpy, screen));
+ draw->gc = XCreateGC(dpy, win, 0, NULL);
+ XSetLineAttributes(dpy, draw->gc, 1, LineSolid, CapButt, JoinMiter);
+ return draw;
+}
+
+void
+draw_resize(Draw *draw, unsigned int w, unsigned int h) {
+ if(!draw)
+ return;
+ draw->w = w;
+ draw->h = h;
+ XFreePixmap(draw->dpy, draw->drawable);
+ draw->drawable = XCreatePixmap(draw->dpy, draw->win, w, h, DefaultDepth(draw->dpy, draw->screen));
+}
+
+void
+draw_free(Draw *draw) {
+ XFreePixmap(draw->dpy, draw->drawable);
+ XFreeGC(draw->dpy, draw->gc);
+ free(draw);
+}