From 5478a480475e3934d3816dc2accfeda0d1ada113 Mon Sep 17 00:00:00 2001 From: Dave Kennedy 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