continued, distinction of Draw and DDC is bad, needs to be merged 0a673ad7
anselm@garbe.us · 2012-11-18 17:26 2 file(s) · +14 −7
draw.c +11 −6
5 5
#include "draw.h"
6 6
7 7
Draw *
8 -
draw_create(Display *dpy, Window win, unsigned int w, unsigned int h) {
8 +
draw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h) {
9 9
	Draw *draw = (Draw *)calloc(1, sizeof(Draw));
10 +
	draw->dpy = dpy;
11 +
	draw->screen = screen;
12 +
	draw->win = win;
10 13
	draw->w = w;
11 14
	draw->h = h;
12 -
	/* TODO: drawable creation */
13 -
	/* TODO: gc allocation */
15 +
	draw->drawable = XCreatePixmap(dpy, win, w, h, DefaultDepth(dpy, screen));
16 +
	draw->gc = XCreateGC(dpy, win, 0, NULL);
17 +
	XSetLineAttributes(dpy, draw->gc, 1, LineSolid, CapButt, JoinMiter);
14 18
	return draw;
15 19
}
16 20
20 24
		return;
21 25
	draw->w = w;
22 26
	draw->h = h;
23 -
	/* TODO: resize drawable */
27 +
	XFreePixmap(draw->dpy, draw->drawable);
28 +
	draw->drawable = XCreatePixmap(draw->dpy, draw->win, w, h, DefaultDepth(draw->dpy, draw->screen));
24 29
}
25 30
26 31
void
27 32
draw_free(Draw *draw) {
28 -
	/* TODO: deallocate DDCs */
29 -
	/* TODO: deallocate drawable */
33 +
	XFreePixmap(draw->dpy, draw->drawable);
34 +
	XFreeGC(draw->dpy, draw->gc);
30 35
	free(draw);
31 36
}
32 37
draw.h +3 −1
7 7
struct _XDraw {
8 8
	unsigned int w, h;
9 9
	Display *dpy;
10 +
	int screen;
11 +
	Window win;
10 12
	Drawable drawable;
11 13
	GC gc;
12 14
	DDC *dc;
46 48
} TextExtents;
47 49
48 50
/* Drawable abstraction */
49 -
Draw *draw_create(Display *dpy, Window win, unsigned int w, unsigned int h);
51 +
Draw *draw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);
50 52
void draw_resize(Draw *draw, unsigned int w, unsigned int h);
51 53
void draw_free(Draw *draw);
52 54