comparison draw.c @ 350:b10852dbbffe

3->4 colors
author Anselm R. Garbe <arg@10kloc.org>
date Thu, 24 Aug 2006 12:04:56 +0200
parents 977585eb2d35
children d822b5fbe11e
comparison
equal deleted inserted replaced
349:2bc2746a52c3 350:b10852dbbffe
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 drawtext(const char *text, Bool invert, Bool highlight) 25 drawtext(const char *text, unsigned int colidx, Bool highlight)
26 { 26 {
27 int x, y, w, h; 27 int x, y, w, h;
28 static char buf[256]; 28 static char buf[256];
29 unsigned int len, olen; 29 unsigned int len, olen;
30 XGCValues gcv;
31 XPoint points[5]; 30 XPoint points[5];
32 XRectangle r = { dc.x, dc.y, dc.w, dc.h }; 31 XRectangle r = { dc.x, dc.y, dc.w, dc.h };
33 32
34 XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg); 33 XSetForeground(dpy, dc.gc, dc.bg[colidx]);
35 XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1); 34 XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
36 points[0].x = dc.x; 35 points[0].x = dc.x;
37 points[0].y = dc.y; 36 points[0].y = dc.y;
38 points[1].x = dc.w - 1; 37 points[1].x = dc.w - 1;
39 points[1].y = 0; 38 points[1].y = 0;
41 points[2].y = dc.h - 1; 40 points[2].y = dc.h - 1;
42 points[3].x = -(dc.w - 1); 41 points[3].x = -(dc.w - 1);
43 points[3].y = 0; 42 points[3].y = 0;
44 points[4].x = 0; 43 points[4].x = 0;
45 points[4].y = -(dc.h - 1); 44 points[4].y = -(dc.h - 1);
46 XSetForeground(dpy, dc.gc, dc.border); 45 XSetForeground(dpy, dc.gc, dc.fg[colidx]);
47 XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious); 46 XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious);
48 47
49 if(!text) 48 if(!text)
50 return; 49 return;
51 50
72 buf[len - 3] = '.'; 71 buf[len - 3] = '.';
73 } 72 }
74 73
75 if(w > dc.w) 74 if(w > dc.w)
76 return; /* too long */ 75 return; /* too long */
77 gcv.foreground = invert ? dc.bg : dc.fg; 76 if(dc.font.set)
78 gcv.background = invert ? dc.fg : dc.bg;
79 if(dc.font.set) {
80 XChangeGC(dpy, dc.gc, GCForeground | GCBackground, &gcv);
81 XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len); 77 XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
82 }
83 else { 78 else {
84 gcv.font = dc.font.xfont->fid; 79 XSetFont(dpy, dc.gc, dc.font.xfont->fid);
85 XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &gcv);
86 XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len); 80 XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
87 } 81 }
88 if(highlight) { 82 if(highlight) {
89 points[0].x = dc.x + 1; 83 points[0].x = dc.x + 1;
90 points[0].y = dc.y + 1; 84 points[0].y = dc.y + 1;
155 Bool istile = arrange == dotile; 149 Bool istile = arrange == dotile;
156 150
157 if(c == sel && issel) { 151 if(c == sel && issel) {
158 drawstatus(); 152 drawstatus();
159 XUnmapWindow(dpy, c->twin); 153 XUnmapWindow(dpy, c->twin);
160 XSetWindowBorder(dpy, c->win, dc.fg); 154 XSetWindowBorder(dpy, c->win, dc.fg[1]);
161 return; 155 return;
162 } 156 }
163 157
164 XSetWindowBorder(dpy, c->win, dc.bg); 158 XSetWindowBorder(dpy, c->win, dc.bg[0]);
165 XMapWindow(dpy, c->twin); 159 XMapWindow(dpy, c->twin);
166 dc.x = dc.y = 0; 160 dc.x = dc.y = 0;
167 dc.w = c->tw; 161 dc.w = c->tw;
168 drawtext(c->name, !istile, False); 162 drawtext(c->name, !istile, False);
169 XCopyArea(dpy, dc.drawable, c->twin, dc.gc, 0, 0, c->tw, c->th, 0, 0); 163 XCopyArea(dpy, dc.drawable, c->twin, dc.gc, 0, 0, c->tw, c->th, 0, 0);