-static void
-drawsquare(Bool filled, Bool empty, unsigned long col[ColLast]) {
- int x;
- XGCValues gcv;
- XRectangle r = { dc.x, dc.y, dc.w, dc.h };
+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);
+}
+
+DDC *
+dc_create(Draw *draw) {
+ DDC *dc = (DDC *)calloc(1, sizeof(DDC));
+ dc->draw = draw;
+ dc->next = draw->dc;
+ draw->dc = dc;
+ return dc;
+}
+
+void
+dc_free(DDC *dc) {
+ DDC **tdc;