wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit ea37c5afe7527304a0cf862f34070354a2f7bcfa
parent acdb6c404418b33047ec5cd7f2cc4221a68c4fa6
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Mon, 12 Jun 2006 15:20:03 +0200

changing liblitz to use a global Blitz context


Diffstat:
cmd/wm/bar.c | 10+++++-----
cmd/wm/client.c | 20++++++++++----------
cmd/wm/fs.c | 8++++----
cmd/wm/wm.c | 9++++-----
cmd/wm/wm.h | 1-
cmd/wmiimenu.c | 38++++++++++++++++++--------------------
liblitz/blitz.c | 13++++---------
liblitz/blitz.h | 51+++++++++++++++++++++++++--------------------------
liblitz/color.c | 14+++++++-------
liblitz/draw.c | 34+++++++++++++++++-----------------
liblitz/font.c | 16++++++++--------
liblitz/window.c | 20++++++++++----------
12 files changed, 112 insertions(+), 122 deletions(-)

diff --git a/cmd/wm/bar.c b/cmd/wm/bar.c @@ -99,8 +99,8 @@ draw_bar() d.font = blitzfont; d.color = def.norm; - blitz_drawlabel(dpy, &d); - blitz_drawborder(dpy, &d); + blitz_drawlabel(&d); + blitz_drawborder(&d); if(!bar) goto MapBar; @@ -110,7 +110,7 @@ draw_bar() b->rect.y = 0; b->rect.width = brect.height; if(strlen(b->data)) - b->rect.width += blitz_textwidth(dpy, &blitzfont, b->data); + b->rect.width += blitz_textwidth(&blitzfont, b->data); b->rect.height = brect.height; w += b->rect.width; } @@ -139,8 +139,8 @@ draw_bar() d.align = EAST; else d.align = CENTER; - blitz_drawlabel(dpy, &d); - blitz_drawborder(dpy, &d); + blitz_drawlabel(&d); + blitz_drawborder(&d); } MapBar: XCopyArea(dpy, barpmap, barwin, bargc, 0, 0, brect.width, brect.height, 0, 0); diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -296,8 +296,8 @@ draw_client(Client *c) d.rect = f->rect; d.rect.x = d.rect.y = 0; d.notch = &c->rect; - blitz_drawlabel(dpy, &d); - blitz_drawborder(dpy, &d); + blitz_drawlabel(&d); + blitz_drawborder(&d); } d.rect.x = 0; d.rect.y = 0; @@ -309,7 +309,7 @@ draw_client(Client *c) snprintf(buf, sizeof(buf), "%s%d/%d", /* if */ (f->area == f->area->view->area) ? "~" : "", fidx + 1, size); - w = d.rect.width = d.rect.height + blitz_textwidth(dpy, &blitzfont, buf); + w = d.rect.width = d.rect.height + blitz_textwidth(&blitzfont, buf); if(w > f->rect.width) return; d.rect.x = f->rect.width - d.rect.width; @@ -319,8 +319,8 @@ draw_client(Client *c) d.color = def.sel; else d.color = def.norm; - blitz_drawlabel(dpy, &d); - blitz_drawborder(dpy, &d); + blitz_drawlabel(&d); + blitz_drawborder(&d); d.rect.x = 0; if(c == sel_client()) @@ -329,14 +329,14 @@ draw_client(Client *c) d.color = def.norm; /* tag bar */ - d.rect.width = d.rect.height + blitz_textwidth(dpy, &blitzfont, c->tags); + d.rect.width = d.rect.height + blitz_textwidth(&blitzfont, c->tags); if(d.rect.width + w > f->rect.width) return; if(d.rect.width > f->rect.width / 3) d.rect.width = f->rect.width / 3; d.data = c->tags; - blitz_drawlabel(dpy, &d); - blitz_drawborder(dpy, &d); + blitz_drawlabel(&d); + blitz_drawborder(&d); d.rect.x += d.rect.width; /* title bar */ @@ -345,8 +345,8 @@ draw_client(Client *c) return; d.rect.width = f->rect.width - (d.rect.x + w); d.data = c->name; - blitz_drawlabel(dpy, &d); - blitz_drawborder(dpy, &d); + blitz_drawlabel(&d); + blitz_drawborder(&d); XSync(dpy, False); } diff --git a/cmd/wm/fs.c b/cmd/wm/fs.c @@ -1365,7 +1365,7 @@ xwrite(IXPConn *c, Fcall *fcall) return Ebadvalue; memcpy(BAR(i1)->colstr, fcall->data, fcall->count); BAR(i1)->colstr[fcall->count] = 0; - blitz_loadcolor(&blitz, &BAR(i1)->color, BAR(i1)->colstr); + blitz_loadcolor(&BAR(i1)->color, BAR(i1)->colstr); draw_bar(); break; case FsFselcolors: @@ -1374,7 +1374,7 @@ xwrite(IXPConn *c, Fcall *fcall) return Ebadvalue; memcpy(def.selcolor, fcall->data, fcall->count); def.selcolor[fcall->count] = 0; - blitz_loadcolor(&blitz, &def.sel, def.selcolor); + blitz_loadcolor(&def.sel, def.selcolor); draw_clients(); break; case FsFnormcolors: @@ -1383,7 +1383,7 @@ xwrite(IXPConn *c, Fcall *fcall) return Ebadvalue; memcpy(def.normcolor, fcall->data, fcall->count); def.normcolor[fcall->count] = 0; - blitz_loadcolor(&blitz, &def.norm, def.normcolor); + blitz_loadcolor(&def.norm, def.normcolor); draw_clients(); break; case FsFkeys: @@ -1470,7 +1470,7 @@ xwrite(IXPConn *c, Fcall *fcall) free(def.font); def.font = cext_emallocz(fcall->count + 1); memcpy(def.font, fcall->data, fcall->count); - blitz_loadfont(dpy, &blitzfont, def.font); + blitz_loadfont(&blitzfont, def.font); resize_bar(); break; case FsFmode: diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c @@ -285,7 +285,7 @@ main(int argc, char *argv[]) /* X server */ ixp_server_open_conn(&srv, ConnectionNumber(dpy), check_x_event, nil); init_x_event_handler(); - blitz_init(&blitz, dpy); + blitz_init(dpy); view = nil; client = nil; @@ -303,15 +303,15 @@ main(int argc, char *argv[]) def.border = 2; def.colmode = Coldefault; cext_strlcpy(def.selcolor, BLITZ_SELCOLORS, sizeof(def.selcolor)); - blitz_loadcolor(&blitz, &def.sel, def.selcolor); + blitz_loadcolor(&def.sel, def.selcolor); cext_strlcpy(def.normcolor, BLITZ_NORMCOLORS, sizeof(def.normcolor)); - blitz_loadcolor(&blitz, &def.norm, def.normcolor); + blitz_loadcolor(&def.norm, def.normcolor); cext_strlcpy(def.grabmod, "Mod1", sizeof(def.grabmod)); def.mod = Mod1Mask; init_atoms(); init_cursors(); - blitz_loadfont(dpy, &blitzfont, def.font); + blitz_loadfont(&blitzfont, def.font); init_lock_keys(); init_screen(); @@ -346,7 +346,6 @@ main(int argc, char *argv[]) if(errstr) fprintf(stderr, "wmii: fatal: %s\n", errstr); - blitz_deinit(&blitz); ixp_server_close(&srv); cleanup(); XCloseDisplay(dpy); diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -237,7 +237,6 @@ Atom net_atom[NetLast]; Cursor cursor[CurLast]; unsigned int valid_mask; unsigned int num_lock_mask; -Blitz blitz; void (*handler[LASTEvent]) (XEvent *); diff --git a/cmd/wmiimenu.c b/cmd/wmiimenu.c @@ -40,7 +40,6 @@ static unsigned int curroff = 0; static unsigned int cmdw = 0; static unsigned int twidth = 0; static unsigned int cwidth = 0; -static Blitz blitz = { 0 }; static BlitzDraw draw = { 0 }; static const int seek = 30; /* 30px */ @@ -72,7 +71,7 @@ update_offsets() return; for(i = curroff; i < item.size; i++) { - tw = blitz_textwidth(dpy, &draw.font, item.data[i]); + tw = blitz_textwidth(&draw.font, item.data[i]); if(tw > irect.width / 3) tw = irect.width / 3; w += tw + irect.height; @@ -83,7 +82,7 @@ update_offsets() w = cmdw + 2 * seek; for(i = curroff; i > 0; i--) { - tw = blitz_textwidth(dpy, &draw.font, item.data[i]); + tw = blitz_textwidth(&draw.font, item.data[i]); if(tw > irect.width / 3) tw = irect.width / 3; w += tw + irect.height; @@ -137,7 +136,7 @@ draw_menu() draw.rect.y = 0; draw.color = normcolor; draw.data = nil; - blitz_drawlabel(dpy, &draw); + blitz_drawlabel(&draw); /* print command */ if(!title || text[0]) { @@ -146,15 +145,15 @@ draw_menu() cmdw = cwidth; if(cmdw && item.size) draw.rect.width = cmdw; - blitz_drawlabel(dpy, &draw); + blitz_drawlabel(&draw); } else { cmdw = twidth; draw.data = title; draw.color = selcolor; draw.rect.width = cmdw; - blitz_drawlabel(dpy, &draw); - blitz_drawborder(dpy, &draw); + blitz_drawlabel(&draw); + blitz_drawborder(&draw); } offx += draw.rect.width; @@ -165,23 +164,23 @@ draw_menu() draw.rect.x = offx; draw.rect.width = seek; offx += draw.rect.width; - blitz_drawlabel(dpy, &draw); + blitz_drawlabel(&draw); /* determine maximum items */ for(i = curroff; i < nextoff; i++) { draw.data = item.data[i]; draw.rect.x = offx; - draw.rect.width = blitz_textwidth(dpy, &draw.font, draw.data); + draw.rect.width = blitz_textwidth(&draw.font, draw.data); if(draw.rect.width > irect.width / 3) draw.rect.width = irect.width / 3; draw.rect.width += irect.height; if(sel == i) { draw.color = selcolor; - blitz_drawlabel(dpy, &draw); - blitz_drawborder(dpy, &draw); + blitz_drawlabel(&draw); + blitz_drawborder(&draw); } else { draw.color = normcolor; - blitz_drawlabel(dpy, &draw); + blitz_drawlabel(&draw); } offx += draw.rect.width; } @@ -190,7 +189,7 @@ draw_menu() draw.data = item.size > nextoff ? ">" : nil; draw.rect.x = irect.width - seek; draw.rect.width = seek; - blitz_drawlabel(dpy, &draw); + blitz_drawlabel(&draw); } XCopyArea(dpy, draw.drawable, win, draw.gc, 0, 0, irect.width, irect.height, 0, 0); @@ -387,19 +386,19 @@ main(int argc, char *argv[]) usleep(1000); /* set font and colors */ - blitz_init(&blitz, dpy); + blitz_init(dpy); fontstr = getenv("WMII_FONT"); if (!fontstr) fontstr = strdup(BLITZ_FONT); - blitz_loadfont(dpy, &draw.font, fontstr); + blitz_loadfont(&draw.font, fontstr); normcolstr = getenv("WMII_NORMCOLORS"); if (!normcolstr || strlen(normcolstr) != 23) normcolstr = strdup(BLITZ_NORMCOLORS); - blitz_loadcolor(&blitz, &normcolor, normcolstr); + blitz_loadcolor(&normcolor, normcolstr); selcolstr = getenv("WMII_SELCOLORS"); if (!selcolstr || strlen(selcolstr) != 23) selcolstr = strdup(BLITZ_SELCOLORS); - blitz_loadcolor(&blitz, &selcolor, selcolstr); + blitz_loadcolor(&selcolor, selcolstr); wa.override_redirect = 1; wa.background_pixmap = ParentRelative; @@ -426,12 +425,12 @@ main(int argc, char *argv[]) XSync(dpy, False); if(maxname) - cwidth = blitz_textwidth(dpy, &draw.font, maxname) + irect.height; + cwidth = blitz_textwidth(&draw.font, maxname) + irect.height; if(cwidth > irect.width / 3) cwidth = irect.width / 3; if(title) { - twidth = blitz_textwidth(dpy, &draw.font, title) + irect.height; + twidth = blitz_textwidth(&draw.font, title) + irect.height; if(twidth > irect.width / 3) twidth = irect.width / 3; } @@ -462,7 +461,6 @@ main(int argc, char *argv[]) break; } - blitz_deinit(&blitz); XUngrabKeyboard(dpy, CurrentTime); XFreePixmap(dpy, draw.drawable); XFreeGC(dpy, draw.gc); diff --git a/liblitz/blitz.c b/liblitz/blitz.c @@ -7,14 +7,9 @@ /* blitz.c */ void -blitz_init(Blitz *blitz, Display *dpy) -{ - blitz->display = dpy; - blitz->screen = DefaultScreen(dpy); - blitz->root = DefaultRootWindow(dpy); -} - -void -blitz_deinit(Blitz *blitz) +blitz_init(Display *dpy) { + __blitz.display = dpy; + __blitz.screen = DefaultScreen(dpy); + __blitz.root = DefaultRootWindow(dpy); } diff --git a/liblitz/blitz.h b/liblitz/blitz.h @@ -12,6 +12,18 @@ #define BLITZ_FRAME_MASK SubstructureRedirectMask | SubstructureNotifyMask \ | ExposureMask | ButtonPressMask | ButtonReleaseMask; +typedef struct { + Display *display; + int screen; + Window root; +} Blitz; + +typedef struct { + Drawable drawable; + GC gc; + XRectangle rect; +} BlitzWindow; + typedef enum { NORTH = 0x01, EAST = 0x02, @@ -48,38 +60,25 @@ typedef struct { char *data; } BlitzDraw; -/* font.c */ -unsigned int blitz_textwidth(Display *dpy, BlitzFont *font, char *text); -void blitz_loadfont(Display *dpy, BlitzFont *font, char *fontstr); - -/* draw.c */ -void blitz_drawlabel(Display *dpy, BlitzDraw *d); -void blitz_drawborder(Display *dpy, BlitzDraw *d); - -/* new stuff */ +Blitz __blitz; -typedef struct { - Display *display; - int screen; - Window root; -} Blitz; +/* blitz.c */ +void blitz_init(Display *dpy); -typedef struct { - Drawable drawable; - GC gc; - XRectangle rect; -} BlitzWindow; +/* draw.c */ +void blitz_drawlabel(BlitzDraw *d); +void blitz_drawborder(BlitzDraw *d); -/* blitz.c */ -void blitz_init(Blitz *blitz, Display *dpy); -void blitz_deinit(Blitz *blitz); +/* font.c */ +unsigned int blitz_textwidth(BlitzFont *font, char *text); +void blitz_loadfont(BlitzFont *font, char *fontstr); /* color.c */ -int blitz_loadcolor(Blitz *blitz, BlitzColor *c, char *colstr); +int blitz_loadcolor(BlitzColor *c, char *colstr); /* window.c */ -void blitz_create_win(Blitz *blitz, BlitzWindow *win, unsigned long mask, +void blitz_create_win(BlitzWindow *win, unsigned long mask, int x, int y, int w, int h); -void blitz_resize_win(Blitz *blitz, BlitzWindow *win, +void blitz_resize_win(BlitzWindow *win, int x, int y, int w, int h); -void blitz_destroy_win(Blitz *blitz, BlitzWindow *win); +void blitz_destroy_win(BlitzWindow *win); diff --git a/liblitz/color.c b/liblitz/color.c @@ -9,26 +9,26 @@ #include "blitz.h" static unsigned long -xloadcolor(Blitz *blitz, char *colstr) +xloadcolor(char *colstr) { XColor color; char col[8]; cext_strlcpy(col, colstr, sizeof(col)); col[7] = 0; - XAllocNamedColor(blitz->display, - DefaultColormap(blitz->display, blitz->screen), col, &color, &color); + XAllocNamedColor(__blitz.display, + DefaultColormap(__blitz.display, __blitz.screen), col, &color, &color); return color.pixel; } int -blitz_loadcolor(Blitz *blitz, BlitzColor *c, char *colstr) +blitz_loadcolor(BlitzColor *c, char *colstr) { if(!colstr || strlen(colstr) != 23) return -1; - c->fg = xloadcolor(blitz, &colstr[0]); - c->bg = xloadcolor(blitz, &colstr[8]); - c->border = xloadcolor(blitz, &colstr[16]); + c->fg = xloadcolor(&colstr[0]); + c->bg = xloadcolor(&colstr[8]); + c->border = xloadcolor(&colstr[16]); return 0; } diff --git a/liblitz/draw.c b/liblitz/draw.c @@ -10,12 +10,12 @@ #include "blitz.h" static void -xdrawbg(Display *dpy, BlitzDraw *d) +xdrawbg(BlitzDraw *d) { XRectangle rect[4]; - XSetForeground(dpy, d->gc, d->color.bg); + XSetForeground(__blitz.display, d->gc, d->color.bg); if (!d->notch) { - XFillRectangles(dpy, d->drawable, d->gc, &d->rect, 1); + XFillRectangles(__blitz.display, d->drawable, d->gc, &d->rect, 1); return; } rect[0] = d->rect; @@ -31,16 +31,16 @@ xdrawbg(Display *dpy, BlitzDraw *d) rect[3] = d->rect; rect[3].y = d->notch->y + d->notch->height; rect[3].height = d->rect.height - (d->notch->y + d->notch->height); - XFillRectangles(dpy, d->drawable, d->gc, rect, 4); + XFillRectangles(__blitz.display, d->drawable, d->gc, rect, 4); } void -blitz_drawborder(Display *dpy, BlitzDraw *d) +blitz_drawborder(BlitzDraw *d) { XPoint points[5]; - XSetLineAttributes(dpy, d->gc, 1, LineSolid, CapButt, JoinMiter); - XSetForeground(dpy, d->gc, d->color.border); + XSetLineAttributes(__blitz.display, d->gc, 1, LineSolid, CapButt, JoinMiter); + XSetForeground(__blitz.display, d->gc, d->color.border); points[0].x = d->rect.x; points[0].y = d->rect.y; points[1].x = d->rect.width - 1; @@ -51,11 +51,11 @@ blitz_drawborder(Display *dpy, BlitzDraw *d) points[3].y = 0; points[4].x = 0; points[4].y = -(d->rect.height - 1); - XDrawLines(dpy, d->drawable, d->gc, points, 5, CoordModePrevious); + XDrawLines(__blitz.display, d->drawable, d->gc, points, 5, CoordModePrevious); } static void -xdrawtext(Display *dpy, BlitzDraw *d) +xdrawtext(BlitzDraw *d) { unsigned int x = 0, y = 0, w = 1, h = 1, shortened = 0; unsigned int len = 0; @@ -70,17 +70,17 @@ xdrawtext(Display *dpy, BlitzDraw *d) gcv.foreground = d->color.fg; gcv.background = d->color.bg; if(d->font.set) - XChangeGC(dpy, d->gc, GCForeground | GCBackground, &gcv); + XChangeGC(__blitz.display, d->gc, GCForeground | GCBackground, &gcv); else { gcv.font = d->font.xfont->fid; - XChangeGC(dpy, d->gc, GCForeground | GCBackground | GCFont, &gcv); + XChangeGC(__blitz.display, d->gc, GCForeground | GCBackground | GCFont, &gcv); } h = d->font.ascent + d->font.descent; y = d->rect.y + d->rect.height / 2 - h / 2 + d->font.ascent; /* shorten text if necessary */ - while (len && (w = blitz_textwidth(dpy, &d->font, text)) > d->rect.width) { + while (len && (w = blitz_textwidth(&d->font, text)) > d->rect.width) { text[len - 1] = 0; len--; shortened = 1; @@ -110,15 +110,15 @@ xdrawtext(Display *dpy, BlitzDraw *d) break; } if(d->font.set) - XmbDrawString(dpy, d->drawable, d->font.set, d->gc, x, y, text, len); + XmbDrawString(__blitz.display, d->drawable, d->font.set, d->gc, x, y, text, len); else - XDrawString(dpy, d->drawable, d->gc, x, y, text, len); + XDrawString(__blitz.display, d->drawable, d->gc, x, y, text, len); } void -blitz_drawlabel(Display *dpy, BlitzDraw * d) +blitz_drawlabel(BlitzDraw * d) { - xdrawbg(dpy, d); + xdrawbg(d); if (d->data) - xdrawtext(dpy, d); + xdrawtext(d); } diff --git a/liblitz/font.c b/liblitz/font.c @@ -12,7 +12,7 @@ #include "blitz.h" unsigned int -blitz_textwidth(Display *dpy, BlitzFont *font, char *text) +blitz_textwidth(BlitzFont *font, char *text) { if(font->set) { XRectangle r; @@ -23,7 +23,7 @@ blitz_textwidth(Display *dpy, BlitzFont *font, char *text) } void -blitz_loadfont(Display *dpy, BlitzFont *font, char *fontstr) +blitz_loadfont(BlitzFont *font, char *fontstr) { char *fontname = fontstr; char **missing = nil, *def = "?"; @@ -31,14 +31,14 @@ blitz_loadfont(Display *dpy, BlitzFont *font, char *fontstr) setlocale(LC_ALL, ""); if(font->set) - XFreeFontSet(dpy, font->set); - font->set = XCreateFontSet(dpy, fontname, &missing, &n, &def); + XFreeFontSet(__blitz.display, font->set); + font->set = XCreateFontSet(__blitz.display, fontname, &missing, &n, &def); if(missing) { while(n--) fprintf(stderr, "liblitz: missing fontset: %s\n", missing[n]); XFreeStringList(missing); if(font->set) { - XFreeFontSet(dpy, font->set); + XFreeFontSet(__blitz.display, font->set); font->set = nil; } } @@ -61,12 +61,12 @@ blitz_loadfont(Display *dpy, BlitzFont *font, char *fontstr) } else { if(font->xfont) - XFreeFont(dpy, font->xfont); + XFreeFont(__blitz.display, font->xfont); font->xfont = nil; - font->xfont = XLoadQueryFont(dpy, fontname); + font->xfont = XLoadQueryFont(__blitz.display, fontname); if (!font->xfont) { fontname = "fixed"; - font->xfont = XLoadQueryFont(dpy, fontname); + font->xfont = XLoadQueryFont(__blitz.display, fontname); } if (!font->xfont) { fprintf(stderr, "%s", "liblitz: error, cannot load 'fixed' font\n"); diff --git a/liblitz/window.c b/liblitz/window.c @@ -9,7 +9,7 @@ #include "blitz.h" void -blitz_create_win(Blitz *blitz, BlitzWindow *win, unsigned long mask, +blitz_create_win(BlitzWindow *win, unsigned long mask, int x, int y, int w, int h) { XSetWindowAttributes wa; @@ -17,11 +17,11 @@ blitz_create_win(Blitz *blitz, BlitzWindow *win, unsigned long mask, wa.background_pixmap = ParentRelative; wa.event_mask = mask; - win->drawable = XCreateWindow(blitz->display, blitz->root, - x, y, w, h, 0, DefaultDepth(blitz->display, blitz->screen), - CopyFromParent, DefaultVisual(blitz->display, blitz->screen), + win->drawable = XCreateWindow(__blitz.display, __blitz.root, + x, y, w, h, 0, DefaultDepth(__blitz.display, __blitz.screen), + CopyFromParent, DefaultVisual(__blitz.display, __blitz.screen), CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); - win->gc = XCreateGC(blitz->display, win->drawable, 0, 0); + win->gc = XCreateGC(__blitz.display, win->drawable, 0, 0); win->rect.x = x; win->rect.y = y; win->rect.width = w; @@ -29,15 +29,15 @@ blitz_create_win(Blitz *blitz, BlitzWindow *win, unsigned long mask, } void -blitz_resize_win(Blitz *blitz, BlitzWindow *win, int x, int y, int w, int h) +blitz_resize_win(BlitzWindow *win, int x, int y, int w, int h) { - XMoveResizeWindow(blitz->display, win->drawable, x, y, w, h); + XMoveResizeWindow(__blitz.display, win->drawable, x, y, w, h); } void -blitz_destroy_win(Blitz *blitz, BlitzWindow *win) +blitz_destroy_win(BlitzWindow *win) { - XFreeGC(blitz->display, win->gc); - XDestroyWindow(blitz->display, win->drawable); + XFreeGC(__blitz.display, win->gc); + XDestroyWindow(__blitz.display, win->drawable); free(win); }