annotate draw.c @ 384:126e78129f1d

configurenotify remembers max geom now, and restores this if necessary, however it accepts to touch the max size on configurerequest, this shouldn't break fillscreen apps (tested with mplayer)
author Anselm R. Garbe <arg@10kloc.org>
date Tue, 29 Aug 2006 17:31:55 +0200
parents b1159a638d0a
children 9d23330a5268
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
1 /*
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
2 * (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
3 * See LICENSE file for license details.
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
4 */
76
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
5 #include "dwm.h"
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
6 #include <stdio.h>
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
7 #include <string.h>
32
082c75b937b5 removed unnecessary crap
Anselm R. Garbe <garbeam@wmii.de>
parents: 30
diff changeset
8 #include <X11/Xlocale.h>
082c75b937b5 removed unnecessary crap
Anselm R. Garbe <garbeam@wmii.de>
parents: 30
diff changeset
9
84
052fe7498930 ordered variables in structs and source files alphabetically
Anselm R. Garbe <garbeam@wmii.de>
parents: 79
diff changeset
10 /* static */
76
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
11
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
12 static unsigned int
173
1db04019684e changed Client->tags and Rule->tags to be Bool (I'll also try to remove the TLast enum)
arg@10ksloc.org
parents: 164
diff changeset
13 textnw(const char *text, unsigned int len)
75
f08271b7cb20 rearranged several stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 74
diff changeset
14 {
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
15 XRectangle r;
123
61490330e90a cleaned up code
arg@10ksloc.org
parents: 93
diff changeset
16
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
17 if(dc.font.set) {
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
18 XmbTextExtents(dc.font.set, text, len, NULL, &r);
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
19 return r.width;
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
20 }
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
21 return XTextWidth(dc.font.xfont, text, len);
75
f08271b7cb20 rearranged several stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 74
diff changeset
22 }
f08271b7cb20 rearranged several stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 74
diff changeset
23
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
24 static void
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
25 drawtext(const char *text, unsigned long col[ColLast], Bool highlight)
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
26 {
344
93192711a36a changing tag indicator through underline
Anselm R. Garbe <arg@10kloc.org>
parents: 342
diff changeset
27 int x, y, w, h;
93192711a36a changing tag indicator through underline
Anselm R. Garbe <arg@10kloc.org>
parents: 342
diff changeset
28 static char buf[256];
93192711a36a changing tag indicator through underline
Anselm R. Garbe <arg@10kloc.org>
parents: 342
diff changeset
29 unsigned int len, olen;
352
5a8bdc3b37cb back to 3 colors
Anselm R. Garbe <arg@10kloc.org>
parents: 351
diff changeset
30 XGCValues gcv;
344
93192711a36a changing tag indicator through underline
Anselm R. Garbe <arg@10kloc.org>
parents: 342
diff changeset
31 XRectangle r = { dc.x, dc.y, dc.w, dc.h };
93192711a36a changing tag indicator through underline
Anselm R. Garbe <arg@10kloc.org>
parents: 342
diff changeset
32
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
33 XSetForeground(dpy, dc.gc, col[ColBG]);
344
93192711a36a changing tag indicator through underline
Anselm R. Garbe <arg@10kloc.org>
parents: 342
diff changeset
34 XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
237
7f8f7f14e9cd readded border color, this sucks least
Anselm R.Garbe <arg@10ksloc.org>
parents: 236
diff changeset
35
3
e969f3575b7a several new changes, made gridmenu working
Anselm R. Garbe <garbeam@wmii.de>
parents: 2
diff changeset
36 if(!text)
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
37 return;
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
38
218
c674a0baac63 changed signature of drawtext
arg@10ksloc.org
parents: 208
diff changeset
39 w = 0;
269
bf6792e3e700 fixed string cutting in draw.c
Anselm R.Garbe <arg@10ksloc.org>
parents: 262
diff changeset
40 olen = len = strlen(text);
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
41 if(len >= sizeof(buf))
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
42 len = sizeof(buf) - 1;
3
e969f3575b7a several new changes, made gridmenu working
Anselm R. Garbe <garbeam@wmii.de>
parents: 2
diff changeset
43 memcpy(buf, text, len);
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
44 buf[len] = 0;
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
45
34
cd30cce52b78 added logo+description
Anselm R. Garbe <garbeam@wmii.de>
parents: 33
diff changeset
46 h = dc.font.ascent + dc.font.descent;
cd30cce52b78 added logo+description
Anselm R. Garbe <garbeam@wmii.de>
parents: 33
diff changeset
47 y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent;
cd30cce52b78 added logo+description
Anselm R. Garbe <garbeam@wmii.de>
parents: 33
diff changeset
48 x = dc.x + (h / 2);
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
49
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
50 /* shorten text if necessary */
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
51 while(len && (w = textnw(buf, len)) > dc.w - h)
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
52 buf[--len] = 0;
269
bf6792e3e700 fixed string cutting in draw.c
Anselm R.Garbe <arg@10ksloc.org>
parents: 262
diff changeset
53 if(len < olen) {
273
ffc73b32084a fixed string cutting
Anselm R.Garbe <arg@10ksloc.org>
parents: 269
diff changeset
54 if(len > 1)
ffc73b32084a fixed string cutting
Anselm R.Garbe <arg@10ksloc.org>
parents: 269
diff changeset
55 buf[len - 1] = '.';
ffc73b32084a fixed string cutting
Anselm R.Garbe <arg@10ksloc.org>
parents: 269
diff changeset
56 if(len > 2)
ffc73b32084a fixed string cutting
Anselm R.Garbe <arg@10ksloc.org>
parents: 269
diff changeset
57 buf[len - 2] = '.';
269
bf6792e3e700 fixed string cutting in draw.c
Anselm R.Garbe <arg@10ksloc.org>
parents: 262
diff changeset
58 if(len > 3)
273
ffc73b32084a fixed string cutting
Anselm R.Garbe <arg@10ksloc.org>
parents: 269
diff changeset
59 buf[len - 3] = '.';
269
bf6792e3e700 fixed string cutting in draw.c
Anselm R.Garbe <arg@10ksloc.org>
parents: 262
diff changeset
60 }
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
61
34
cd30cce52b78 added logo+description
Anselm R. Garbe <garbeam@wmii.de>
parents: 33
diff changeset
62 if(w > dc.w)
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
63 return; /* too long */
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
64 gcv.foreground = col[ColFG];
352
5a8bdc3b37cb back to 3 colors
Anselm R. Garbe <arg@10kloc.org>
parents: 351
diff changeset
65 if(dc.font.set) {
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
66 XChangeGC(dpy, dc.gc, GCForeground, &gcv);
342
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
67 XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
352
5a8bdc3b37cb back to 3 colors
Anselm R. Garbe <arg@10kloc.org>
parents: 351
diff changeset
68 }
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
69 else {
352
5a8bdc3b37cb back to 3 colors
Anselm R. Garbe <arg@10kloc.org>
parents: 351
diff changeset
70 gcv.font = dc.font.xfont->fid;
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
71 XChangeGC(dpy, dc.gc, GCForeground | GCFont, &gcv);
342
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
72 XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
73 }
345
977585eb2d35 found less intrusive way
Anselm R. Garbe <arg@10kloc.org>
parents: 344
diff changeset
74 if(highlight) {
352
5a8bdc3b37cb back to 3 colors
Anselm R. Garbe <arg@10kloc.org>
parents: 351
diff changeset
75 r.x = dc.x + 2;
5a8bdc3b37cb back to 3 colors
Anselm R. Garbe <arg@10kloc.org>
parents: 351
diff changeset
76 r.y = dc.y + 2;
5a8bdc3b37cb back to 3 colors
Anselm R. Garbe <arg@10kloc.org>
parents: 351
diff changeset
77 r.width = r.height = 3;
5a8bdc3b37cb back to 3 colors
Anselm R. Garbe <arg@10kloc.org>
parents: 351
diff changeset
78 XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
79 }
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
80 }
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
81
84
052fe7498930 ordered variables in structs and source files alphabetically
Anselm R. Garbe <garbeam@wmii.de>
parents: 79
diff changeset
82 /* extern */
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
83
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
84 void
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
85 drawall()
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
86 {
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
87 Client *c;
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
88
142
9b9deafa0508 committed a patch which fixes the hints of Jukka
arg@10ksloc.org
parents: 124
diff changeset
89 for(c = clients; c; c = getnext(c->next))
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
90 drawtitle(c);
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
91 drawstatus();
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
92 }
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
93
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
94 void
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
95 drawstatus()
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
96 {
124
75576e44c1d8 made status bar drawing more robust, implemented togglemax and togglemode, works quite well
arg@10ksloc.org
parents: 123
diff changeset
97 int i, x;
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
98
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
99 dc.x = dc.y = 0;
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
100
178
e848966a1ac6 removed TLast tag enum, now tags is simple defined as char *[] array, the rest is calculated correctly, rules take an int array for the tags
arg@10ksloc.org
parents: 173
diff changeset
101 for(i = 0; i < ntags; i++) {
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
102 dc.w = textw(tags[i]);
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
103 if(seltag[i])
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
104 drawtext(tags[i], dc.sel, sel && sel->tags[i]);
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
105 else
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
106 drawtext(tags[i], dc.norm, sel && sel->tags[i]);
362
ba6c55e1b9b2 trying a different configuration
Anselm R. Garbe <arg@10kloc.org>
parents: 361
diff changeset
107 dc.x += dc.w;
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
108 }
362
ba6c55e1b9b2 trying a different configuration
Anselm R. Garbe <arg@10kloc.org>
parents: 361
diff changeset
109
ba6c55e1b9b2 trying a different configuration
Anselm R. Garbe <arg@10kloc.org>
parents: 361
diff changeset
110 dc.w = bmw;
ba6c55e1b9b2 trying a different configuration
Anselm R. Garbe <arg@10kloc.org>
parents: 361
diff changeset
111 drawtext(arrange == dotile ? TILESYMBOL : FLOATSYMBOL, dc.status, False);
ba6c55e1b9b2 trying a different configuration
Anselm R. Garbe <arg@10kloc.org>
parents: 361
diff changeset
112
361
728e74820e1d removed small 1px gap, somehow without it things feel better
Anselm R. Garbe <arg@10kloc.org>
parents: 360
diff changeset
113 x = dc.x + dc.w;
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
114 dc.w = textw(stext);
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
115 dc.x = bx + bw - dc.w;
342
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
116 if(dc.x < x) {
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
117 dc.x = x;
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
118 dc.w = bw - x;
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
119 }
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
120 drawtext(stext, dc.status, False);
340
ae0affabdc02 implemented right tag drawing in the status bar and titlebars
Anselm R. Garbe <arg@10kloc.org>
parents: 334
diff changeset
121
371
fc9d35252ab4 applied sanders somepatches.patch
Anselm R. Garbe <arg@10kloc.org>
parents: 362
diff changeset
122 if((dc.w = dc.x - x) > bh) {
342
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
123 dc.x = x;
371
fc9d35252ab4 applied sanders somepatches.patch
Anselm R. Garbe <arg@10kloc.org>
parents: 362
diff changeset
124 if(sel)
fc9d35252ab4 applied sanders somepatches.patch
Anselm R. Garbe <arg@10kloc.org>
parents: 362
diff changeset
125 drawtext(sel->name, dc.sel, False);
fc9d35252ab4 applied sanders somepatches.patch
Anselm R. Garbe <arg@10kloc.org>
parents: 362
diff changeset
126 else
fc9d35252ab4 applied sanders somepatches.patch
Anselm R. Garbe <arg@10kloc.org>
parents: 362
diff changeset
127 drawtext(NULL, dc.norm, False);
124
75576e44c1d8 made status bar drawing more robust, implemented togglemax and togglemode, works quite well
arg@10ksloc.org
parents: 123
diff changeset
128 }
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
129 XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0);
79
aabebd6e61f3 fixed XSync handling and finished man page
Anselm R. Garbe <garbeam@wmii.de>
parents: 77
diff changeset
130 XSync(dpy, False);
77
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
131 }
38c8f7f7d401 sanitized other stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 76
diff changeset
132
76
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
133 void
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
134 drawtitle(Client *c)
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
135 {
239
e5390f8e06b9 applied sumik's multihead patch
Anselm R.Garbe <arg@10ksloc.org>
parents: 237
diff changeset
136 if(c == sel && issel) {
76
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
137 drawstatus();
342
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
138 XUnmapWindow(dpy, c->twin);
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
139 XSetWindowBorder(dpy, c->win, dc.sel[ColBG]);
76
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
140 return;
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
141 }
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
142
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
143 XSetWindowBorder(dpy, c->win, dc.norm[ColBG]);
342
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
144 XMapWindow(dpy, c->twin);
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
145 dc.x = dc.y = 0;
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
146 dc.w = c->tw;
353
8a06efe5b563 new color stuff/new rendering stuff
Anselm R. Garbe <arg@10kloc.org>
parents: 352
diff changeset
147 drawtext(c->name, dc.norm, False);
342
a1901753deef updated man page
Anselm R. Garbe <arg@10kloc.org>
parents: 340
diff changeset
148 XCopyArea(dpy, dc.drawable, c->twin, dc.gc, 0, 0, c->tw, c->th, 0, 0);
79
aabebd6e61f3 fixed XSync handling and finished man page
Anselm R. Garbe <garbeam@wmii.de>
parents: 77
diff changeset
149 XSync(dpy, False);
76
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
150 }
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
151
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
152 unsigned long
74
5370ef170cc9 sanitized names
Anselm R. Garbe <garbeam@wmii.de>
parents: 73
diff changeset
153 getcolor(const char *colstr)
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
154 {
123
61490330e90a cleaned up code
arg@10ksloc.org
parents: 93
diff changeset
155 Colormap cmap = DefaultColormap(dpy, screen);
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
156 XColor color;
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
157
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
158 XAllocNamedColor(dpy, cmap, colstr, &color, &color);
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
159 return color.pixel;
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
160 }
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
161
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
162 void
74
5370ef170cc9 sanitized names
Anselm R. Garbe <garbeam@wmii.de>
parents: 73
diff changeset
163 setfont(const char *fontstr)
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
164 {
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
165 char **missing, *def;
33
e90449e03167 new stuff (some warning elimination)
Anselm R. Garbe <garbeam@wmii.de>
parents: 32
diff changeset
166 int i, n;
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
167
7
49e2fc9fb94f new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 5
diff changeset
168 missing = NULL;
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
169 setlocale(LC_ALL, "");
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
170 if(dc.font.set)
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
171 XFreeFontSet(dpy, dc.font.set);
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
172 dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
173 if(missing) {
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
174 while(n--)
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
175 fprintf(stderr, "missing fontset: %s\n", missing[n]);
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
176 XFreeStringList(missing);
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
177 if(dc.font.set) {
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
178 XFreeFontSet(dpy, dc.font.set);
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
179 dc.font.set = NULL;
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
180 }
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
181 }
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
182 if(dc.font.set) {
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
183 XFontSetExtents *font_extents;
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
184 XFontStruct **xfonts;
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
185 char **font_names;
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
186
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
187 dc.font.ascent = dc.font.descent = 0;
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
188 font_extents = XExtentsOfFontSet(dc.font.set);
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
189 n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names);
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
190 for(i = 0, dc.font.ascent = 0, dc.font.descent = 0; i < n; i++) {
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
191 if(dc.font.ascent < (*xfonts)->ascent)
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
192 dc.font.ascent = (*xfonts)->ascent;
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
193 if(dc.font.descent < (*xfonts)->descent)
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
194 dc.font.descent = (*xfonts)->descent;
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
195 xfonts++;
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
196 }
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
197 }
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
198 else {
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
199 if(dc.font.xfont)
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
200 XFreeFont(dpy, dc.font.xfont);
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
201 dc.font.xfont = NULL;
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
202 dc.font.xfont = XLoadQueryFont(dpy, fontstr);
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
203 if (!dc.font.xfont)
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
204 dc.font.xfont = XLoadQueryFont(dpy, "fixed");
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
205 if (!dc.font.xfont)
75
f08271b7cb20 rearranged several stuff
Anselm R. Garbe <garbeam@wmii.de>
parents: 74
diff changeset
206 eprint("error, cannot init 'fixed' font\n");
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
207 dc.font.ascent = dc.font.xfont->ascent;
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
208 dc.font.descent = dc.font.xfont->descent;
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
209 }
43
989178822938 changed default colors
Anselm R. Garbe <garbeam@wmii.de>
parents: 34
diff changeset
210 dc.font.height = dc.font.ascent + dc.font.descent;
2
a79188fe4a40 added new stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
diff changeset
211 }
76
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
212
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
213 unsigned int
173
1db04019684e changed Client->tags and Rule->tags to be Bool (I'll also try to remove the TLast enum)
arg@10ksloc.org
parents: 164
diff changeset
214 textw(const char *text)
76
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
215 {
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
216 return textnw(text, strlen(text)) + dc.font.height;
4bd49f404f10 proceeded with cleaning up, sorting functions, etc
Anselm R. Garbe <garbeam@wmii.de>
parents: 75
diff changeset
217 }