aewl
diff draw.c @ 3:e969f3575b7a
several new changes, made gridmenu working
author | Anselm R. Garbe <garbeam@wmii.de> |
---|---|
date | Mon, 10 Jul 2006 19:46:24 +0200 |
parents | a79188fe4a40 |
children | e5018cae273f |
line diff
1.1 --- a/draw.c Mon Jul 10 18:35:39 2006 +0200 1.2 +++ b/draw.c Mon Jul 10 19:46:24 2006 +0200 1.3 @@ -14,7 +14,7 @@ 1.4 { 1.5 XPoint points[5]; 1.6 XSetLineAttributes(dpy, b->gc, 1, LineSolid, CapButt, JoinMiter); 1.7 - XSetForeground(dpy, b->gc, b->color.border); 1.8 + XSetForeground(dpy, b->gc, b->border); 1.9 points[0].x = b->rect.x; 1.10 points[0].y = b->rect.y; 1.11 points[1].x = b->rect.width - 1; 1.12 @@ -29,54 +29,54 @@ 1.13 } 1.14 1.15 void 1.16 -draw(Display *dpy, Brush *b) 1.17 +draw(Display *dpy, Brush *b, Bool border, const char *text) 1.18 { 1.19 unsigned int x, y, w, h, len; 1.20 static char buf[256]; 1.21 XGCValues gcv; 1.22 1.23 - XSetForeground(dpy, b->gc, b->color.bg); 1.24 + XSetForeground(dpy, b->gc, b->bg); 1.25 XFillRectangles(dpy, b->drawable, b->gc, &b->rect, 1); 1.26 1.27 - if(b->border) 1.28 + if(border) 1.29 drawborder(dpy, b); 1.30 1.31 - if(!b->text) 1.32 + if(!text) 1.33 return; 1.34 1.35 - len = strlen(b->text); 1.36 + len = strlen(text); 1.37 if(len >= sizeof(buf)) 1.38 len = sizeof(buf) - 1; 1.39 - memcpy(buf, b->text, len); 1.40 + memcpy(buf, text, len); 1.41 buf[len] = 0; 1.42 1.43 - h = b->font->ascent + b->font->descent; 1.44 - y = b->rect.y + (b->rect.height / 2) - (h / 2) + b->font->ascent; 1.45 + h = b->font.ascent + b->font.descent; 1.46 + y = b->rect.y + (b->rect.height / 2) - (h / 2) + b->font.ascent; 1.47 x = b->rect.x + (h / 2); 1.48 1.49 /* shorten text if necessary */ 1.50 - while(len && (w = textwidth_l(b->font, buf, len)) > b->rect.width - h) 1.51 + while(len && (w = textwidth_l(&b->font, buf, len)) > b->rect.width - h) 1.52 buf[--len] = 0; 1.53 1.54 if(w > b->rect.width) 1.55 return; /* too long */ 1.56 1.57 - gcv.foreground = b->color.fg; 1.58 - gcv.background = b->color.bg; 1.59 - if(b->font->set) { 1.60 + gcv.foreground = b->fg; 1.61 + gcv.background = b->bg; 1.62 + if(b->font.set) { 1.63 XChangeGC(dpy, b->gc, GCForeground | GCBackground, &gcv); 1.64 - XmbDrawImageString(dpy, b->drawable, b->font->set, b->gc, 1.65 + XmbDrawImageString(dpy, b->drawable, b->font.set, b->gc, 1.66 x, y, buf, len); 1.67 } 1.68 else { 1.69 - gcv.font = b->font->xfont->fid; 1.70 + gcv.font = b->font.xfont->fid; 1.71 XChangeGC(dpy, b->gc, GCForeground | GCBackground | GCFont, &gcv); 1.72 XDrawImageString(dpy, b->drawable, b->gc, x, y, buf, len); 1.73 } 1.74 } 1.75 1.76 static unsigned long 1.77 -xloadcolor(Display *dpy, Colormap cmap, const char *colstr) 1.78 +xloadcolors(Display *dpy, Colormap cmap, const char *colstr) 1.79 { 1.80 XColor color; 1.81 XAllocNamedColor(dpy, cmap, colstr, &color, &color); 1.82 @@ -84,13 +84,13 @@ 1.83 } 1.84 1.85 void 1.86 -loadcolor(Display *dpy, int screen, Color *c, 1.87 +loadcolors(Display *dpy, int screen, Brush *b, 1.88 const char *bg, const char *fg, const char *border) 1.89 { 1.90 Colormap cmap = DefaultColormap(dpy, screen); 1.91 - c->bg = xloadcolor(dpy, cmap, bg); 1.92 - c->fg = xloadcolor(dpy, cmap, fg); 1.93 - c->border = xloadcolor(dpy, cmap, border); 1.94 + b->bg = xloadcolors(dpy, cmap, bg); 1.95 + b->fg = xloadcolors(dpy, cmap, fg); 1.96 + b->border = xloadcolors(dpy, cmap, border); 1.97 } 1.98 1.99 unsigned int 1.100 @@ -160,4 +160,5 @@ 1.101 font->ascent = font->xfont->ascent; 1.102 font->descent = font->xfont->descent; 1.103 } 1.104 + font->height = font->ascent + font->descent; 1.105 }