void
drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert) {
+ _drw_text(drw, x, y, w, h, text, invert, 1);
+}
+
+void
+drw_text_nopad(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert) {
+ _drw_text(drw, x, y, w, h, text, invert, 0);
+}
+
+void
+_drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert, int pad) {
char buf[256];
int i, tx, ty, th, len, olen;
Extnts tex;
drw_font_getexts(drw->font, text, olen, &tex);
th = drw->font->ascent + drw->font->descent;
ty = y + (h / 2) - (th / 2) + drw->font->ascent;
- tx = x + (h / 2);
+ tx = x + (h / 2) * pad;
/* shorten text if necessary */
- for(len = MIN(olen, sizeof buf); len && (tex.w > w - tex.h || w < tex.h); len--)
+ for(len = MIN(olen, sizeof buf); len && (tex.w > w - tex.h * pad || w < tex.h * pad); len--)
drw_font_getexts(drw->font, text, len, &tex);
if(!len)
return;
/* Drawing functions */
void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int empty, int invert);
void drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert);
+void drw_text_nopad(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert);
+void _drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, const char *text, int invert, int pad);
/* Map functions */
void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h);
#define WIDTH(X) ((X)->w + 2 * (X)->bw)
#define HEIGHT(X) ((X)->h + 2 * (X)->bw)
#define TAGMASK ((1 << LENGTH(tags)) - 1)
-#define TEXTW(X) (drw_font_getexts_width(drw->font, X, strlen(X)) + drw->font->h)
+#define TEXTW_NOPAD(X) drw_font_getexts_width(drw->font, X, strlen(X))
+#define TEXTW(X) (TEXTW_NOPAD(X) + drw->font->h)
/* enums */
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
}
x = 0;
for(i = 0; i < LENGTH(tags); i++) {
- w = TEXTW(tags[i]);
+ w = TEXTW_NOPAD(tags[i]);
drw_setscheme(drw, m->tagset[m->seltags] & 1 << i ? &scheme[SchemeSel] : &scheme[SchemeNorm]);
- drw_text(drw, x, 0, w, bh, tags[i], urg & 1 << i);
- drw_rect(drw, x, 0, w, bh, m == selmon && selmon->sel && selmon->sel->tags & 1 << i,
- occ & 1 << i, urg & 1 << i);
+ drw_text_nopad(drw, x, 0, w, bh, tags[i], urg & 1 << i);
x += w;
}
xx = x;