comparison draw.c @ 33:e90449e03167

new stuff (some warning elimination)
author Anselm R. Garbe <garbeam@wmii.de>
date Thu, 13 Jul 2006 01:55:54 +0200
parents 082c75b937b5
children cd30cce52b78
comparison
equal deleted inserted replaced
32:082c75b937b5 33:e90449e03167
9 #include <X11/Xlocale.h> 9 #include <X11/Xlocale.h>
10 10
11 #include "wm.h" 11 #include "wm.h"
12 12
13 static void 13 static void
14 drawborder(Display *dpy, Brush *b) 14 drawborder(Brush *b)
15 { 15 {
16 XPoint points[5]; 16 XPoint points[5];
17 XSetLineAttributes(dpy, b->gc, 1, LineSolid, CapButt, JoinMiter); 17 XSetLineAttributes(dpy, b->gc, 1, LineSolid, CapButt, JoinMiter);
18 XSetForeground(dpy, b->gc, b->border); 18 XSetForeground(dpy, b->gc, b->border);
19 points[0].x = b->x; 19 points[0].x = b->x;
28 points[4].y = -(b->h - 1); 28 points[4].y = -(b->h - 1);
29 XDrawLines(dpy, b->drawable, b->gc, points, 5, CoordModePrevious); 29 XDrawLines(dpy, b->drawable, b->gc, points, 5, CoordModePrevious);
30 } 30 }
31 31
32 void 32 void
33 draw(Display *dpy, Brush *b, Bool border, const char *text) 33 draw(Brush *b, Bool border, const char *text)
34 { 34 {
35 unsigned int x, y, w, h, len; 35 int x, y, w, h;
36 unsigned int len;
36 static char buf[256]; 37 static char buf[256];
37 XGCValues gcv; 38 XGCValues gcv;
38 XRectangle r = { b->x, b->y, b->w, b->h }; 39 XRectangle r = { b->x, b->y, b->w, b->h };
39 40
40 XSetForeground(dpy, b->gc, b->bg); 41 XSetForeground(dpy, b->gc, b->bg);
41 XFillRectangles(dpy, b->drawable, b->gc, &r, 1); 42 XFillRectangles(dpy, b->drawable, b->gc, &r, 1);
42 43
43 w = 0; 44 w = 0;
44 if(border) 45 if(border)
45 drawborder(dpy, b); 46 drawborder(b);
46 47
47 if(!text) 48 if(!text)
48 return; 49 return;
49 50
50 len = strlen(text); 51 len = strlen(text);
77 XDrawImageString(dpy, b->drawable, b->gc, x, y, buf, len); 78 XDrawImageString(dpy, b->drawable, b->gc, x, y, buf, len);
78 } 79 }
79 } 80 }
80 81
81 static unsigned long 82 static unsigned long
82 xloadcolors(Display *dpy, Colormap cmap, const char *colstr) 83 xloadcolors(Colormap cmap, const char *colstr)
83 { 84 {
84 XColor color; 85 XColor color;
85 XAllocNamedColor(dpy, cmap, colstr, &color, &color); 86 XAllocNamedColor(dpy, cmap, colstr, &color, &color);
86 return color.pixel; 87 return color.pixel;
87 } 88 }
88 89
89 void 90 void
90 loadcolors(Display *dpy, int screen, Brush *b, 91 loadcolors(int scr, Brush *b,
91 const char *bg, const char *fg, const char *border) 92 const char *bg, const char *fg, const char *border)
92 { 93 {
93 Colormap cmap = DefaultColormap(dpy, screen); 94 Colormap cmap = DefaultColormap(dpy, scr);
94 b->bg = xloadcolors(dpy, cmap, bg); 95 b->bg = xloadcolors(cmap, bg);
95 b->fg = xloadcolors(dpy, cmap, fg); 96 b->fg = xloadcolors(cmap, fg);
96 b->border = xloadcolors(dpy, cmap, border); 97 b->border = xloadcolors(cmap, border);
97 } 98 }
98 99
99 unsigned int 100 unsigned int
100 textnw(Fnt *font, char *text, unsigned int len) 101 textnw(Fnt *font, char *text, unsigned int len)
101 { 102 {
118 { 119 {
119 return font->height + 4; 120 return font->height + 4;
120 } 121 }
121 122
122 void 123 void
123 loadfont(Display *dpy, Fnt *font, const char *fontstr) 124 loadfont(Fnt *font, const char *fontstr)
124 { 125 {
125 char **missing, *def; 126 char **missing, *def;
126 int n; 127 int i, n;
127 128
128 missing = NULL; 129 missing = NULL;
129 def = "?";
130 setlocale(LC_ALL, ""); 130 setlocale(LC_ALL, "");
131 if(font->set) 131 if(font->set)
132 XFreeFontSet(dpy, font->set); 132 XFreeFontSet(dpy, font->set);
133 font->set = XCreateFontSet(dpy, fontstr, &missing, &n, &def); 133 font->set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
134 if(missing) { 134 if(missing) {
142 } 142 }
143 if(font->set) { 143 if(font->set) {
144 XFontSetExtents *font_extents; 144 XFontSetExtents *font_extents;
145 XFontStruct **xfonts; 145 XFontStruct **xfonts;
146 char **font_names; 146 char **font_names;
147 unsigned int i;
148 147
149 font->ascent = font->descent = 0; 148 font->ascent = font->descent = 0;
150 font_extents = XExtentsOfFontSet(font->set); 149 font_extents = XExtentsOfFontSet(font->set);
151 n = XFontsOfFontSet(font->set, &xfonts, &font_names); 150 n = XFontsOfFontSet(font->set, &xfonts, &font_names);
152 for(i = 0, font->ascent = 0, font->descent = 0; i < n; i++) { 151 for(i = 0, font->ascent = 0, font->descent = 0; i < n; i++) {