draw.c
changeset 66 50450aa24a46
parent 57 f005d46462e8
child 73 c2ddb9dbbd10
equal deleted inserted replaced
65:4f7b232bd72d 66:50450aa24a46
    28 	points[4].y = -(dc.h - 1);
    28 	points[4].y = -(dc.h - 1);
    29 	XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious);
    29 	XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious);
    30 }
    30 }
    31 
    31 
    32 void
    32 void
    33 drawtext(const char *text, Bool border)
    33 drawtext(const char *text, Bool invert, Bool border)
    34 {
    34 {
    35 	int x, y, w, h;
    35 	int x, y, w, h;
    36 	unsigned int len;
    36 	unsigned int len;
    37 	static char buf[256];
    37 	static char buf[256];
    38 	XGCValues gcv;
    38 	XGCValues gcv;
    39 	XRectangle r = { dc.x, dc.y, dc.w, dc.h };
    39 	XRectangle r = { dc.x, dc.y, dc.w, dc.h };
    40 
    40 
    41 	XSetForeground(dpy, dc.gc, dc.bg);
    41 	XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg);
    42 	XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
    42 	XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
    43 
    43 
    44 	w = 0;
    44 	w = 0;
    45 	if(border)
    45 	if(border)
    46 		drawborder();
    46 		drawborder();
    63 		buf[--len] = 0;
    63 		buf[--len] = 0;
    64 
    64 
    65 	if(w > dc.w)
    65 	if(w > dc.w)
    66 		return; /* too long */
    66 		return; /* too long */
    67 
    67 
    68 	gcv.foreground = dc.fg;
    68 	gcv.foreground = invert ? dc.bg : dc.fg;
    69 	gcv.background = dc.bg;
    69 	gcv.background = invert ? dc.fg : dc.bg;
    70 	if(dc.font.set) {
    70 	if(dc.font.set) {
    71 		XChangeGC(dpy, dc.gc, GCForeground | GCBackground, &gcv);
    71 		XChangeGC(dpy, dc.gc, GCForeground | GCBackground, &gcv);
    72 		XmbDrawImageString(dpy, dc.drawable, dc.font.set, dc.gc,
    72 		XmbDrawImageString(dpy, dc.drawable, dc.font.set, dc.gc,
    73 				x, y, buf, len);
    73 				x, y, buf, len);
    74 	}
    74 	}