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