From 5478a480475e3934d3816dc2accfeda0d1ada113 Mon Sep 17 00:00:00 2001
From: Dave Kennedy <dave-kennedy@users.noreply.github.com>
Date: Fri, 27 Nov 2015 22:43:30 -0700
Subject: [PATCH] Renamed and simplified drw_font_getexts - all it was being
 used for was getting the width in pixels of the text, so that's all it should
 return

---
 drw.c | 35 +++++++++++------------------------
 drw.h |  8 +-------
 2 files changed, 12 insertions(+), 31 deletions(-)

diff --git a/drw.c b/drw.c
index f49200b..966b1fa 100644
--- a/drw.c
+++ b/drw.c
@@ -222,8 +222,7 @@ int
 drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert)
 {
 	char buf[1024];
-	int tx, ty, th;
-	Extnts tex;
+	int tx, ty, th, width;
 	XftDraw *d = NULL;
 	Fnt *curfont, *nextfont;
 	size_t i, len;
@@ -277,10 +276,10 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *tex
 		}
 
 		if (utf8strlen) {
-			drw_font_getexts(curfont, utf8str, utf8strlen, &tex);
+			width = drw_get_width(curfont, utf8str, utf8strlen);
 			/* shorten text if necessary */
-			for (len = MIN(utf8strlen, (sizeof buf) - 1); len && (tex.w > w - drw->fonts[0]->h || w < drw->fonts[0]->h); len--)
-				drw_font_getexts(curfont, utf8str, len, &tex);
+			for (len = MIN(utf8strlen, (sizeof buf) - 1); len && (width > w - drw->fonts[0]->h || w < drw->fonts[0]->h); len--)
+				width = drw_get_width(curfont, utf8str, len);
 
 			if (len) {
 				memcpy(buf, utf8str, len);
@@ -294,8 +293,8 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *tex
 					tx = x + (h / 2);
 					XftDrawStringUtf8(d, invert ? &drw->scheme->bg->rgb : &drw->scheme->fg->rgb, curfont->xfont, tx, ty, (XftChar8 *)buf, len);
 				}
-				x += tex.w;
-				w -= tex.w;
+				x += width;
+				w -= width;
 			}
 		}
 
@@ -357,24 +356,12 @@ drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h)
 	XSync(drw->dpy, False);
 }
 
-void
-drw_font_getexts(Fnt *font, const char *text, unsigned int len, Extnts *tex)
-{
-	XGlyphInfo ext;
-
-	XftTextExtentsUtf8(font->dpy, font->xfont, (XftChar8 *)text, len, &ext);
-	tex->h = font->h;
-	tex->w = ext.xOff;
-}
-
-unsigned int
-drw_font_getexts_width(Fnt *font, const char *text, unsigned int len)
+int
+drw_get_width(Fnt *font, const char *text, unsigned int len)
 {
-	Extnts tex;
-
-	drw_font_getexts(font, text, len, &tex);
-
-	return tex.w;
+	XGlyphInfo info;
+	XftTextExtentsUtf8(font->dpy, font->xfont, (XftChar8 *)text, len, &info);
+	return info.xOff;
 }
 
 Cur *
diff --git a/drw.h b/drw.h
index e3b8515..7fd8405 100644
--- a/drw.h
+++ b/drw.h
@@ -37,11 +37,6 @@ typedef struct {
 	Fnt *fonts[DRW_FONT_CACHE_SIZE];
 } Drw;
 
-typedef struct {
-	unsigned int w;
-	unsigned int h;
-} Extnts;
-
 /* Drawable abstraction */
 Drw *drw_create(Display *, int, Window, unsigned int, unsigned int);
 void drw_resize(Drw *, unsigned int, unsigned int);
@@ -51,8 +46,7 @@ void drw_free(Drw *);
 Fnt *drw_font_create(Drw *, const char *);
 void drw_load_fonts(Drw *, const char *[], size_t);
 void drw_font_free(Fnt *);
-void drw_font_getexts(Fnt *, const char *, unsigned int, Extnts *);
-unsigned int drw_font_getexts_width(Fnt *, const char *, unsigned int);
+int drw_get_width(Fnt *, const char *, unsigned int);
 
 /* Colour abstraction */
 Clr *drw_clr_create(Drw *, const char *);
-- 
2.6.2

