Simplified Pango integration by settling on common function signatures.
This commit is contained in:
41
drw.c
41
drw.c
@@ -9,7 +9,7 @@
|
||||
#include "drw.h"
|
||||
#include "util.h"
|
||||
|
||||
#if !PANGO_PATCH
|
||||
#if !BAR_PANGO_PATCH
|
||||
#define UTF_INVALID 0xFFFD
|
||||
#define UTF_SIZ 4
|
||||
|
||||
@@ -118,11 +118,7 @@ drw_free(Drw *drw)
|
||||
{
|
||||
XFreePixmap(drw->dpy, drw->drawable);
|
||||
XFreeGC(drw->dpy, drw->gc);
|
||||
#if BAR_PANGO_PATCH
|
||||
drw_font_free(drw->font);
|
||||
#else
|
||||
drw_fontset_free(drw->fonts);
|
||||
#endif // BAR_PANGO_PATCH
|
||||
free(drw);
|
||||
}
|
||||
|
||||
@@ -247,7 +243,7 @@ drw_font_create(Drw* drw, const char font[])
|
||||
|
||||
fnt = xfont_create(drw, font);
|
||||
|
||||
return (drw->font = fnt);
|
||||
return (drw->fonts = fnt);
|
||||
}
|
||||
#else
|
||||
Fnt*
|
||||
@@ -269,23 +265,16 @@ drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount)
|
||||
}
|
||||
#endif // BAR_PANGO_PATCH
|
||||
|
||||
#if BAR_PANGO_PATCH
|
||||
void
|
||||
drw_font_free(Fnt *font)
|
||||
{
|
||||
if (font)
|
||||
xfont_free(font);
|
||||
}
|
||||
#else
|
||||
void
|
||||
drw_fontset_free(Fnt *font)
|
||||
{
|
||||
if (font) {
|
||||
#if !BAR_PANGO_PATCH
|
||||
drw_fontset_free(font->next);
|
||||
#endif // BAR_PANGO_PATCH
|
||||
xfont_free(font);
|
||||
}
|
||||
}
|
||||
#endif // BAR_PANGO_PATCH
|
||||
|
||||
void
|
||||
drw_clr_create(
|
||||
@@ -394,7 +383,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
||||
size_t i, len;
|
||||
int render = x || y || w || h;
|
||||
|
||||
if (!drw || (render && !drw->scheme) || !text || !drw->font)
|
||||
if (!drw || (render && !drw->scheme) || !text || !drw->fonts)
|
||||
return 0;
|
||||
|
||||
if (!render) {
|
||||
@@ -416,10 +405,10 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
||||
len = strlen(text);
|
||||
|
||||
if (len) {
|
||||
drw_font_getexts(drw->font, text, len, &ew, NULL, markup);
|
||||
drw_font_getexts(drw->fonts, text, len, &ew, NULL, markup);
|
||||
/* shorten text if necessary */
|
||||
for (len = MIN(len, sizeof(buf) - 1); len && ew > w; len--)
|
||||
drw_font_getexts(drw->font, text, len, &ew, NULL, markup);
|
||||
drw_font_getexts(drw->fonts, text, len, &ew, NULL, markup);
|
||||
|
||||
if (len) {
|
||||
memcpy(buf, text, len);
|
||||
@@ -450,7 +439,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
||||
}
|
||||
#else
|
||||
int
|
||||
drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert)
|
||||
drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert, Bool ignored)
|
||||
{
|
||||
char buf[1024];
|
||||
int ty;
|
||||
@@ -628,23 +617,13 @@ drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h)
|
||||
XSync(drw->dpy, False);
|
||||
}
|
||||
|
||||
#if BAR_PANGO_PATCH
|
||||
unsigned int
|
||||
drw_font_getwidth(Drw *drw, const char *text, Bool markup)
|
||||
{
|
||||
if (!drw || !drw->font || !text)
|
||||
return 0;
|
||||
return drw_text(drw, 0, 0, 0, 0, 0, text, 0, markup);
|
||||
}
|
||||
#else
|
||||
unsigned int
|
||||
drw_fontset_getwidth(Drw *drw, const char *text)
|
||||
drw_fontset_getwidth(Drw *drw, const char *text, Bool ignored)
|
||||
{
|
||||
if (!drw || !drw->fonts || !text)
|
||||
return 0;
|
||||
return drw_text(drw, 0, 0, 0, 0, 0, text, 0);
|
||||
return drw_text(drw, 0, 0, 0, 0, 0, text, 0, ignored);
|
||||
}
|
||||
#endif // BAR_PANGO_PATCH
|
||||
|
||||
#if BAR_PANGO_PATCH
|
||||
void
|
||||
|
Reference in New Issue
Block a user