draw.c
changeset 850 2ea201354cf0
parent 837 123231b9eb87
child 857 453788ae925c
equal deleted inserted replaced
849:4f1ff9e068d3 850:2ea201354cf0
    93 void
    93 void
    94 drawtext(const char *text, unsigned long col[ColLast]) {
    94 drawtext(const char *text, unsigned long col[ColLast]) {
    95 	int x, y, w, h;
    95 	int x, y, w, h;
    96 	static char buf[256];
    96 	static char buf[256];
    97 	unsigned int len, olen;
    97 	unsigned int len, olen;
    98 	XGCValues gcv;
       
    99 	XRectangle r = { dc.x, dc.y, dc.w, dc.h };
    98 	XRectangle r = { dc.x, dc.y, dc.w, dc.h };
   100 
    99 
   101 	XSetForeground(dpy, dc.gc, col[ColBG]);
   100 	XSetForeground(dpy, dc.gc, col[ColBG]);
   102 	XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
   101 	XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
   103 	if(!text)
   102 	if(!text)
   122 		if(len > 3)
   121 		if(len > 3)
   123 			buf[len - 3] = '.';
   122 			buf[len - 3] = '.';
   124 	}
   123 	}
   125 	if(w > dc.w)
   124 	if(w > dc.w)
   126 		return; /* too long */
   125 		return; /* too long */
   127 	gcv.foreground = col[ColFG];
   126 	XSetForeground(dpy, dc.gc, col[ColFG]);
   128 	if(dc.font.set) {
   127 	if(dc.font.set)
   129 		XChangeGC(dpy, dc.gc, GCForeground, &gcv);
       
   130 		XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
   128 		XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
   131 	}
   129 	else
   132 	else {
       
   133 		gcv.font = dc.font.xfont->fid;
       
   134 		XChangeGC(dpy, dc.gc, GCForeground | GCFont, &gcv);
       
   135 		XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
   130 		XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
   136 	}
       
   137 }
   131 }
   138 
   132 
   139 unsigned int
   133 unsigned int
   140 textw(const char *text) {
   134 textw(const char *text) {
   141 	return textnw(text, strlen(text)) + dc.font.height;
   135 	return textnw(text, strlen(text)) + dc.font.height;