diff options
author | Anselm R. Garbe <garbeam@wmii.de> | 2006-07-10 19:46:24 +0200 |
---|---|---|
committer | Anselm R. Garbe <garbeam@wmii.de> | 2006-07-10 19:46:24 +0200 |
commit | 39677ec76616fe4165ef92afb14db2bef2488e30 (patch) | |
tree | 7ea1c021042b7d7da53660aa127af37847273a91 /draw.c | |
parent | 8a34fa50f75f4d6d8af234ac0c4f6d40b988d700 (diff) | |
download | dwm-39677ec76616fe4165ef92afb14db2bef2488e30.tar.gz |
several new changes, made gridmenu working
Diffstat (limited to 'draw.c')
-rw-r--r-- | draw.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/draw.c b/draw.c index 85ff41b..cf7f14e 100644 --- a/draw.c +++ b/draw.c @@ -14,7 +14,7 @@ drawborder(Display *dpy, Brush *b) { XPoint points[5]; XSetLineAttributes(dpy, b->gc, 1, LineSolid, CapButt, JoinMiter); - XSetForeground(dpy, b->gc, b->color.border); + XSetForeground(dpy, b->gc, b->border); points[0].x = b->rect.x; points[0].y = b->rect.y; points[1].x = b->rect.width - 1; @@ -29,54 +29,54 @@ drawborder(Display *dpy, Brush *b) } void -draw(Display *dpy, Brush *b) +draw(Display *dpy, Brush *b, Bool border, const char *text) { unsigned int x, y, w, h, len; static char buf[256]; XGCValues gcv; - XSetForeground(dpy, b->gc, b->color.bg); + XSetForeground(dpy, b->gc, b->bg); XFillRectangles(dpy, b->drawable, b->gc, &b->rect, 1); - if(b->border) + if(border) drawborder(dpy, b); - if(!b->text) + if(!text) return; - len = strlen(b->text); + len = strlen(text); if(len >= sizeof(buf)) len = sizeof(buf) - 1; - memcpy(buf, b->text, len); + memcpy(buf, text, len); buf[len] = 0; - h = b->font->ascent + b->font->descent; - y = b->rect.y + (b->rect.height / 2) - (h / 2) + b->font->ascent; + h = b->font.ascent + b->font.descent; + y = b->rect.y + (b->rect.height / 2) - (h / 2) + b->font.ascent; x = b->rect.x + (h / 2); /* shorten text if necessary */ - while(len && (w = textwidth_l(b->font, buf, len)) > b->rect.width - h) + while(len && (w = textwidth_l(&b->font, buf, len)) > b->rect.width - h) buf[--len] = 0; if(w > b->rect.width) return; /* too long */ - gcv.foreground = b->color.fg; - gcv.background = b->color.bg; - if(b->font->set) { + gcv.foreground = b->fg; + gcv.background = b->bg; + if(b->font.set) { XChangeGC(dpy, b->gc, GCForeground | GCBackground, &gcv); - XmbDrawImageString(dpy, b->drawable, b->font->set, b->gc, + XmbDrawImageString(dpy, b->drawable, b->font.set, b->gc, x, y, buf, len); } else { - gcv.font = b->font->xfont->fid; + gcv.font = b->font.xfont->fid; XChangeGC(dpy, b->gc, GCForeground | GCBackground | GCFont, &gcv); XDrawImageString(dpy, b->drawable, b->gc, x, y, buf, len); } } static unsigned long -xloadcolor(Display *dpy, Colormap cmap, const char *colstr) +xloadcolors(Display *dpy, Colormap cmap, const char *colstr) { XColor color; XAllocNamedColor(dpy, cmap, colstr, &color, &color); @@ -84,13 +84,13 @@ xloadcolor(Display *dpy, Colormap cmap, const char *colstr) } void -loadcolor(Display *dpy, int screen, Color *c, +loadcolors(Display *dpy, int screen, Brush *b, const char *bg, const char *fg, const char *border) { Colormap cmap = DefaultColormap(dpy, screen); - c->bg = xloadcolor(dpy, cmap, bg); - c->fg = xloadcolor(dpy, cmap, fg); - c->border = xloadcolor(dpy, cmap, border); + b->bg = xloadcolors(dpy, cmap, bg); + b->fg = xloadcolors(dpy, cmap, fg); + b->border = xloadcolors(dpy, cmap, border); } unsigned int @@ -160,4 +160,5 @@ loadfont(Display *dpy, Fnt *font, const char *fontstr) font->ascent = font->xfont->ascent; font->descent = font->xfont->descent; } + font->height = font->ascent + font->descent; } |