From fb7b6b37615cafa5d553560d78f931e0003fb6cc Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Thu, 25 Jul 2002 04:40:04 +0000 Subject: [PATCH] add the xftlsfonts utility --- util/Makefile.am | 5 ++- util/xftlsfonts.cc | 93 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 util/xftlsfonts.cc diff --git a/util/Makefile.am b/util/Makefile.am index 7da2187b..118c56fc 100644 --- a/util/Makefile.am +++ b/util/Makefile.am @@ -4,11 +4,13 @@ CPPFLAGS= @CPPFLAGS@ @DEBUG@ SUBDIRS = epist bin_SCRIPTS = bsetbg -bin_PROGRAMS = bsetroot +bin_PROGRAMS = bsetroot xftlsfonts bsetroot_SOURCES = bsetroot.cc bsetroot_LDADD = ../src/BaseDisplay.o ../src/Color.o ../src/GCCache.o ../src/Texture.o ../src/Timer.o ../src/Image.o ../src/ImageControl.o ../src/i18n.o ../src/Util.o +xftlsfonts_SOURCES = xftlsfonts.cc + MAINTAINERCLEANFILES = Makefile.in distclean-local: @@ -20,3 +22,4 @@ bsetroot.o: bsetroot.cc ../config.h ../src/i18n.hh \ ../src/../nls/blackbox-nls.hh ../src/GCCache.hh ../src/BaseDisplay.hh \ ../src/Timer.hh ../src/Color.hh ../src/Texture.hh ../src/Util.hh \ bsetroot.hh ../src/Image.hh +xftlsfonts.o: xftlsfonts.cc diff --git a/util/xftlsfonts.cc b/util/xftlsfonts.cc new file mode 100644 index 00000000..1e0075ed --- /dev/null +++ b/util/xftlsfonts.cc @@ -0,0 +1,93 @@ +extern "C" { +#include +#include +} + +#include +#include +#include + +const char *NAME = "xftlsfonts"; +const char *VERSION = "1.0"; + +using std::string; +using std::cout; +using std::endl; + +int main(int argc, char **argv) { + if (argc > 1) { + for (int i = 1; i < argc; ++i) + if (string(argv[i]) == "-help" || + string(argv[i]) == "--help" || + string(argv[i]) == "-version" || + string(argv[i]) == "--version") { + cout << NAME << " version " << VERSION << endl; + cout << "Copyright (c) 2002, Ben Jansens " << endl; + cout << endl; + return 1; + } + } + + Display *display = XOpenDisplay(NULL); + + XftFontSet *set = XftListFonts(display, DefaultScreen(display), + 0, XFT_FAMILY, 0); + + cout << "Found " << set->nfont << " fonts:" << endl; + + for (int i = 0; i < set->nfont; ++i) { + for (int e = 0; e < set->fonts[i]->num; ++e) { +// if (string(set->fonts[i]->elts[e].object) != "family") +// continue; // i just want font family names + + if (e > 0) + cout << " "; // indent after the first element + cout << set->fonts[i]->elts[e].object << ": "; + + XftValueList *vallist = set->fonts[i]->elts[e].values; + bool f = true; + do { + if (f) + f = false; + else + cout << ", "; + + XftValue val = vallist->value; + switch (val.type) { + case XftTypeVoid: + cout << "(void)"; + break; + + case XftTypeInteger: + cout << val.u.i; + break; + + case XftTypeDouble: + cout << val.u.d; + break; + + case XftTypeString: + cout << val.u.s; + break; + + case XftTypeBool: + cout << val.u.b; + break; + + case XftTypeMatrix: + cout << "xx(" << val.u.m->xx << ") "; + cout << "xy(" << val.u.m->xy << ") "; + cout << "yx(" << val.u.m->yx << ") "; + cout << "yy(" << val.u.m->yy << ")"; + break; + } + } while ((vallist = vallist->next)); + cout << endl; + } + } + + XFree(set); + + XCloseDisplay(display); + return 0; +} -- 2.45.2