Mercurial > dwm-meillo
comparison draw.c @ 344:93192711a36a
changing tag indicator through underline
author | Anselm R. Garbe <arg@10kloc.org> |
---|---|
date | Thu, 24 Aug 2006 09:25:10 +0200 |
parents | a1901753deef |
children | 977585eb2d35 |
comparison
equal
deleted
inserted
replaced
343:336d3a2c3f80 | 344:93192711a36a |
---|---|
20 } | 20 } |
21 return XTextWidth(dc.font.xfont, text, len); | 21 return XTextWidth(dc.font.xfont, text, len); |
22 } | 22 } |
23 | 23 |
24 static void | 24 static void |
25 drawborder() | 25 drawtext(const char *text, Bool invert, Bool underline) |
26 { | 26 { |
27 int x, y, w, h; | |
28 static char buf[256]; | |
29 unsigned int len, olen; | |
30 XGCValues gcv; | |
27 XPoint points[5]; | 31 XPoint points[5]; |
32 XRectangle r = { dc.x, dc.y, dc.w, dc.h }; | |
33 | |
34 XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg); | |
35 XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); | |
28 points[0].x = dc.x; | 36 points[0].x = dc.x; |
29 points[0].y = dc.y; | 37 points[0].y = dc.y; |
30 points[1].x = dc.w - 1; | 38 points[1].x = dc.w - 1; |
31 points[1].y = 0; | 39 points[1].y = 0; |
32 points[2].x = 0; | 40 points[2].x = 0; |
33 points[2].y = dc.h - 1; | 41 points[2].y = dc.h - 1; |
34 points[3].x = -(dc.w - 1); | 42 points[3].x = -(dc.w - 1); |
35 points[3].y = 0; | 43 points[3].y = 0; |
36 points[4].x = 0; | 44 points[4].x = 0; |
37 points[4].y = -(dc.h - 1); | 45 points[4].y = -(dc.h - 1); |
46 XSetForeground(dpy, dc.gc, dc.border); | |
38 XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious); | 47 XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious); |
39 } | |
40 | |
41 static void | |
42 drawtext(const char *text, Bool invert, Bool highlight) | |
43 { | |
44 int x, y, w, h; | |
45 static char buf[256]; | |
46 unsigned int len, olen; | |
47 DC tmp; | |
48 XGCValues gcv; | |
49 XRectangle r = { dc.x, dc.y, dc.w, dc.h }; | |
50 | |
51 XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg); | |
52 XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); | |
53 XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter); | |
54 XSetForeground(dpy, dc.gc, dc.border); | |
55 drawborder(); | |
56 | 48 |
57 if(!text) | 49 if(!text) |
58 return; | 50 return; |
59 | 51 |
60 w = 0; | 52 w = 0; |
91 else { | 83 else { |
92 gcv.font = dc.font.xfont->fid; | 84 gcv.font = dc.font.xfont->fid; |
93 XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &gcv); | 85 XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &gcv); |
94 XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); | 86 XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); |
95 } | 87 } |
96 if(highlight) { | 88 if(underline) { |
97 tmp = dc; | 89 points[0].x = dc.x + (h / 2) - 1; |
98 dc.x += 2; | 90 points[0].y = dc.y + dc.h - 3; |
99 dc.y += 2; | 91 points[1].x = dc.w - h + 2; |
100 dc.w -= 4; | 92 points[1].y = 0; |
101 dc.h -= 4; | 93 XDrawLines(dpy, dc.drawable, dc.gc, points, 2, CoordModePrevious); |
102 drawborder(); | |
103 dc = tmp; | |
104 } | 94 } |
105 } | 95 } |
106 | 96 |
107 /* extern */ | 97 /* extern */ |
108 | 98 |