From 793deacd432b8a3aeb227ffa3e7203a9ca0e5053 Mon Sep 17 00:00:00 2001 From: Don Stewart Date: Sun, 27 May 2007 14:59:28 +0200 Subject: mod-b, toggle on or off the status bar gap darcs-hash:20070527125928-9c5c1-a16246810db9d4abfe81d0d5814721b64f59a14c --- util/gapcalc.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 util/gapcalc.c (limited to 'util') diff --git a/util/gapcalc.c b/util/gapcalc.c new file mode 100644 index 0000000..4a4c3db --- /dev/null +++ b/util/gapcalc.c @@ -0,0 +1,70 @@ +/* gapcalc - calculate height of given font + * Copyright (C) 2007 by Robert Manea + * + * Compile with: cc -lX11 -o gapcalc gapcalc.c + */ + +#include +#include +#include +#include +#include + +void +eprint(const char *errstr, ...) { + va_list ap; + + va_start(ap, errstr); + vfprintf(stderr, errstr, ap); + va_end(ap); + exit(EXIT_FAILURE); +} + + +int +main(int argc, char *argv[]) { + Display *dpy; + XFontStruct *xfont; + XFontSet set; + char *def, **missing; + char *fontstr; + int i, n, ascent, descent; + + if(argc < 2) + eprint("Usage: gapcalc \n"); + + if(!(dpy = XOpenDisplay(0))) + eprint("fatal: cannot open display\n"); + + fontstr = argv[1]; + missing = NULL; + + set = XCreateFontSet(dpy, fontstr, &missing, &n, &def); + if(missing) + XFreeStringList(missing); + if(set) { + XFontSetExtents *font_extents; + XFontStruct **xfonts; + char **font_names; + ascent = descent = 0; + font_extents = XExtentsOfFontSet(set); + n = XFontsOfFontSet(set, &xfonts, &font_names); + for(i = 0, ascent = 0, descent = 0; i < n; i++) { + if(ascent < (*xfonts)->ascent) + ascent = (*xfonts)->ascent; + if(descent < (*xfonts)->descent) + descent = (*xfonts)->descent; + xfonts++; + } + } else if(!set && (xfont = XLoadQueryFont(dpy, fontstr))) { + ascent = xfont->ascent; + descent = xfont->descent; + } else + eprint("fatal: cannot find specified font\n"); + + printf("%d\n", ascent + descent + 2); + + + return EXIT_SUCCESS; +} + -- cgit v1.2.3