commit d675b11baddf50e85d3c8d94d9aca826f9ae9dd6
parent 2007c0194fef81d81dfe5307020b14f32e5200a5
Author: Anselm R. Garbe <arg@10kloc.org>
Date: Thu, 12 Oct 2006 18:26:30 +0200
reorganized (removed {brush,color,font}.c, merged into draw.c)
Diffstat:
| Makefile | | | 4 | ++-- |
| brush.c | | | 66 | ------------------------------------------------------------------ |
| color.c | | | 27 | --------------------------- |
| draw.c | | | 159 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| font.c | | | 82 | ------------------------------------------------------------------------------- |
| wm.h | | | 21 | ++++++++------------- |
6 files changed, 169 insertions(+), 190 deletions(-)
diff --git a/Makefile b/Makefile
@@ -3,8 +3,8 @@
include config.mk
-SRC = area.c bar.c brush.c client.c color.c column.c draw.c event.c \
- font.c frame.c fs.c geom.c key.c mouse.c rule.c view.c wm.c
+SRC = area.c bar.c client.c column.c draw.c event.c \
+ frame.c fs.c geom.c key.c mouse.c rule.c view.c wm.c
OBJ = ${SRC:.c=.o}
all: options wmiiwm
diff --git a/brush.c b/brush.c
@@ -1,66 +0,0 @@
-/* (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
- * See LICENSE file for license details.
- */
-#include "wm.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-void
-draw_tile(BlitzBrush *b) {
- drawbg(b->blitz->dpy, b->drawable, b->gc, b->rect,
- b->color, b->border);
-}
-
-void
-draw_label(BlitzBrush *b, char *text) {
- unsigned int x, y, w, h, len;
- Bool shortened = False;
- static char buf[2048];
- XGCValues gcv;
-
- draw_tile(b);
- if(!text)
- return;
- shortened = 0;
- strncpy(buf, text, sizeof(buf));
- len = strlen(buf);
- gcv.foreground = b->color.fg;
- gcv.background = b->color.bg;
- h = b->font->ascent + b->font->descent;
- y = b->rect.y + b->rect.height / 2 - h / 2 + b->font->ascent;
- /* shorten text if necessary */
- while(len && (w = textwidth(b->font, buf)) > b->rect.width - h) {
- buf[--len] = 0;
- shortened = True;
- }
- if(w > b->rect.width)
- return;
- /* mark shortened info in the string */
- if(shortened) {
- if (len > 3)
- buf[len - 3] = '.';
- if (len > 2)
- buf[len - 2] = '.';
- if (len > 1)
- buf[len - 1] = '.';
- }
- switch (b->align) {
- case EAST:
- x = b->rect.x + b->rect.width - (w + (b->font->height / 2));
- break;
- default:
- x = b->rect.x + (b->font->height / 2);
- break;
- }
- if(b->font->set) {
- XChangeGC(b->blitz->dpy, b->gc, GCForeground | GCBackground, &gcv);
- XmbDrawImageString(b->blitz->dpy, b->drawable, b->font->set, b->gc,
- x, y, buf, len);
- }
- else {
- gcv.font = b->font->xfont->fid;
- XChangeGC(b->blitz->dpy, b->gc, GCForeground | GCBackground | GCFont, &gcv);
- XDrawImageString(b->blitz->dpy, b->drawable, b->gc, x, y, buf, len);
- }
-}
diff --git a/color.c b/color.c
@@ -1,27 +0,0 @@
-/* (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
- * See LICENSE file for license details.
- */
-#include "wm.h"
-#include <string.h>
-
-static unsigned long
-xloadcolor(Blitz *blitz, char *colstr) {
- XColor color;
- char col[8];
-
- strncpy(col, colstr, sizeof(col));
- col[7] = 0;
- XAllocNamedColor(blitz->dpy,
- DefaultColormap(blitz->dpy, blitz->screen), col, &color, &color);
- return color.pixel;
-}
-
-int
-loadcolor(Blitz *blitz, BlitzColor *c) {
- if(!c->colstr || strlen(c->colstr) != 23)
- return -1;
- c->fg = xloadcolor(blitz, &c->colstr[0]);
- c->bg = xloadcolor(blitz, &c->colstr[8]);
- c->border = xloadcolor(blitz, &c->colstr[16]);
- return 0;
-}
diff --git a/draw.c b/draw.c
@@ -2,6 +2,143 @@
* See LICENSE file for license details.
*/
#include "wm.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>
+
+unsigned int
+textwidth_l(BlitzFont *font, char *text, unsigned int len) {
+ if(font->set) {
+ XRectangle r;
+ XmbTextExtents(font->set, text, len, NULL, &r);
+ return r.width;
+ }
+ return XTextWidth(font->xfont, text, len);
+}
+
+unsigned int
+textwidth(BlitzFont *font, char *text) {
+ return textwidth_l(font, text, strlen(text));
+}
+
+void
+loadfont(Blitz *blitz, BlitzFont *font) {
+ char *fontname = font->fontstr;
+ char **missing = NULL, *def = "?";
+ int n;
+
+ setlocale(LC_ALL, "");
+ if(font->set)
+ XFreeFontSet(blitz->dpy, font->set);
+ font->set = XCreateFontSet(blitz->dpy, fontname, &missing, &n, &def);
+ if(missing) {
+ while(n--)
+ fprintf(stderr, "liblitz: missing fontset: %s\n", missing[n]);
+ XFreeStringList(missing);
+ if(font->set) {
+ XFreeFontSet(blitz->dpy, font->set);
+ font->set = NULL;
+ }
+ }
+ if(font->set) {
+ XFontSetExtents *font_extents;
+ XFontStruct **xfonts;
+ char **font_names;
+ unsigned int i;
+ font->ascent = font->descent = 0;
+ font_extents = XExtentsOfFontSet(font->set);
+ n = XFontsOfFontSet(font->set, &xfonts, &font_names);
+ for(i = 0, font->ascent = 0, font->descent = 0; i < n; i++) {
+ if(font->ascent < (*xfonts)->ascent)
+ font->ascent = (*xfonts)->ascent;
+ if(font->descent < (*xfonts)->descent)
+ font->descent = (*xfonts)->descent;
+ xfonts++;
+ }
+ }
+ else {
+ if(font->xfont)
+ XFreeFont(blitz->dpy, font->xfont);
+ font->xfont = NULL;
+ font->xfont = XLoadQueryFont(blitz->dpy, fontname);
+ if (!font->xfont) {
+ fontname = "fixed";
+ font->xfont = XLoadQueryFont(blitz->dpy, fontname);
+ }
+ if (!font->xfont) {
+ fprintf(stderr, "%s", "liblitz: error, cannot load 'fixed' font\n");
+ exit(1);
+ }
+ font->ascent = font->xfont->ascent;
+ font->descent = font->xfont->descent;
+ }
+ font->height = font->ascent + font->descent;
+}
+
+unsigned int
+labelh(BlitzFont *font) {
+ return font->height + 4;
+}
+
+void
+draw_tile(BlitzBrush *b) {
+ drawbg(b->blitz->dpy, b->drawable, b->gc, b->rect,
+ b->color, b->border);
+}
+
+void
+draw_label(BlitzBrush *b, char *text) {
+ unsigned int x, y, w, h, len;
+ Bool shortened = False;
+ static char buf[2048];
+ XGCValues gcv;
+
+ draw_tile(b);
+ if(!text)
+ return;
+ shortened = 0;
+ strncpy(buf, text, sizeof(buf));
+ len = strlen(buf);
+ gcv.foreground = b->color.fg;
+ gcv.background = b->color.bg;
+ h = b->font->ascent + b->font->descent;
+ y = b->rect.y + b->rect.height / 2 - h / 2 + b->font->ascent;
+ /* shorten text if necessary */
+ while(len && (w = textwidth(b->font, buf)) > b->rect.width - h) {
+ buf[--len] = 0;
+ shortened = True;
+ }
+ if(w > b->rect.width)
+ return;
+ /* mark shortened info in the string */
+ if(shortened) {
+ if (len > 3)
+ buf[len - 3] = '.';
+ if (len > 2)
+ buf[len - 2] = '.';
+ if (len > 1)
+ buf[len - 1] = '.';
+ }
+ switch (b->align) {
+ case EAST:
+ x = b->rect.x + b->rect.width - (w + (b->font->height / 2));
+ break;
+ default:
+ x = b->rect.x + (b->font->height / 2);
+ break;
+ }
+ if(b->font->set) {
+ XChangeGC(b->blitz->dpy, b->gc, GCForeground | GCBackground, &gcv);
+ XmbDrawImageString(b->blitz->dpy, b->drawable, b->font->set, b->gc,
+ x, y, buf, len);
+ }
+ else {
+ gcv.font = b->font->xfont->fid;
+ XChangeGC(b->blitz->dpy, b->gc, GCForeground | GCBackground | GCFont, &gcv);
+ XDrawImageString(b->blitz->dpy, b->drawable, b->gc, x, y, buf, len);
+ }
+}
void
drawbg(Display *dpy, Drawable drawable, GC gc, XRectangle rect,
@@ -52,3 +189,25 @@ drawcursor(Display *dpy, Drawable drawable, GC gc,
s[4].x2 = x + 2;
XDrawSegments(dpy, drawable, gc, s, 5);
}
+
+static unsigned long
+xloadcolor(Blitz *blitz, char *colstr) {
+ XColor color;
+ char col[8];
+
+ strncpy(col, colstr, sizeof(col));
+ col[7] = 0;
+ XAllocNamedColor(blitz->dpy,
+ DefaultColormap(blitz->dpy, blitz->screen), col, &color, &color);
+ return color.pixel;
+}
+
+int
+loadcolor(Blitz *blitz, BlitzColor *c) {
+ if(!c->colstr || strlen(c->colstr) != 23)
+ return -1;
+ c->fg = xloadcolor(blitz, &c->colstr[0]);
+ c->bg = xloadcolor(blitz, &c->colstr[8]);
+ c->border = xloadcolor(blitz, &c->colstr[16]);
+ return 0;
+}
diff --git a/font.c b/font.c
@@ -1,82 +0,0 @@
-/* (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
- * See LICENSE file for license details.
- */
-#include "wm.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-
-unsigned int
-textwidth_l(BlitzFont *font, char *text, unsigned int len) {
- if(font->set) {
- XRectangle r;
- XmbTextExtents(font->set, text, len, NULL, &r);
- return r.width;
- }
- return XTextWidth(font->xfont, text, len);
-}
-
-unsigned int
-textwidth(BlitzFont *font, char *text) {
- return textwidth_l(font, text, strlen(text));
-}
-
-void
-loadfont(Blitz *blitz, BlitzFont *font) {
- char *fontname = font->fontstr;
- char **missing = NULL, *def = "?";
- int n;
-
- setlocale(LC_ALL, "");
- if(font->set)
- XFreeFontSet(blitz->dpy, font->set);
- font->set = XCreateFontSet(blitz->dpy, fontname, &missing, &n, &def);
- if(missing) {
- while(n--)
- fprintf(stderr, "liblitz: missing fontset: %s\n", missing[n]);
- XFreeStringList(missing);
- if(font->set) {
- XFreeFontSet(blitz->dpy, font->set);
- font->set = NULL;
- }
- }
- if(font->set) {
- XFontSetExtents *font_extents;
- XFontStruct **xfonts;
- char **font_names;
- unsigned int i;
- font->ascent = font->descent = 0;
- font_extents = XExtentsOfFontSet(font->set);
- n = XFontsOfFontSet(font->set, &xfonts, &font_names);
- for(i = 0, font->ascent = 0, font->descent = 0; i < n; i++) {
- if(font->ascent < (*xfonts)->ascent)
- font->ascent = (*xfonts)->ascent;
- if(font->descent < (*xfonts)->descent)
- font->descent = (*xfonts)->descent;
- xfonts++;
- }
- }
- else {
- if(font->xfont)
- XFreeFont(blitz->dpy, font->xfont);
- font->xfont = NULL;
- font->xfont = XLoadQueryFont(blitz->dpy, fontname);
- if (!font->xfont) {
- fontname = "fixed";
- font->xfont = XLoadQueryFont(blitz->dpy, fontname);
- }
- if (!font->xfont) {
- fprintf(stderr, "%s", "liblitz: error, cannot load 'fixed' font\n");
- exit(1);
- }
- font->ascent = font->xfont->ascent;
- font->descent = font->xfont->descent;
- }
- font->height = font->ascent + font->descent;
-}
-
-unsigned int
-labelh(BlitzFont *font) {
- return font->height + 4;
-}
diff --git a/wm.h b/wm.h
@@ -261,10 +261,6 @@ extern void draw_bar(WMScreen *s);
extern void resize_bar();
extern Bar *bar_of_name(Bar *b_link, const char *name);
-/* brush.c */
-extern void draw_label(BlitzBrush *b, char *text);
-extern void draw_tile(BlitzBrush *b);
-
/* client.c */
extern Client *create_client(Window w, XWindowAttributes *wa);
extern void destroy_client(Client *c);
@@ -293,9 +289,6 @@ extern void update_client_grab(Client *c, Bool is_sel);
extern void apply_rules(Client *c);
extern void apply_tags(Client *c, const char *tags);
-/* color.c */
-extern int loadcolor(Blitz *blitz, BlitzColor *c);
-
/* column.c */
extern void arrange_column(Area *a, Bool dirty);
extern void scale_column(Area *a, float h);
@@ -305,10 +298,18 @@ extern char *str_of_column_mode(int mode);
extern Area *new_column(View *v, Area *pos, unsigned int w);
/* draw.c */
+extern int loadcolor(Blitz *blitz, BlitzColor *c);
+extern void draw_label(BlitzBrush *b, char *text);
+extern void draw_tile(BlitzBrush *b);
+
extern void drawbg(Display *dpy, Drawable drawable, GC gc,
XRectangle rect, BlitzColor c, Bool border);
extern void drawcursor(Display *dpy, Drawable drawable, GC gc,
int x, int y, unsigned int h, BlitzColor c);
+extern unsigned int textwidth(BlitzFont *font, char *text);
+extern unsigned int textwidth_l(BlitzFont *font, char *text, unsigned int len);
+extern void loadfont(Blitz *blitz, BlitzFont *font);
+extern unsigned int labelh(BlitzFont *font);
/* event.c */
extern void check_x_event(IXPConn *c);
@@ -322,12 +323,6 @@ extern void draw_frame(Frame *f);
extern void draw_frames();
extern void update_frame_widget_colors(Frame *f);
-/* font.c */
-extern unsigned int textwidth(BlitzFont *font, char *text);
-extern unsigned int textwidth_l(BlitzFont *font, char *text, unsigned int len);
-extern void loadfont(Blitz *blitz, BlitzFont *font);
-extern unsigned int labelh(BlitzFont *font);
-
/* fs.c */
extern void fs_attach(P9Req *r);
extern void fs_clunk(P9Req *r);