Refactor the innermost loop of the xdraws function

Signed-off-by: Silvan Jegen <s.jegen@gmail.com>
Signed-off-by: Christoph Lohmann <20h@r-36.net>
This commit is contained in:
Silvan Jegen 2014-06-06 22:09:22 +02:00 committed by Christoph Lohmann
parent 27b28f1dc2
commit c2fd2754eb
1 changed files with 14 additions and 20 deletions

34
st.c
View File

@ -3245,28 +3245,22 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
bytelen -= u8cblen;
doesexist = XftCharExists(xw.dpy, font->match, unicodep);
if(oneatatime || !doesexist || bytelen <= 0) {
if(oneatatime || bytelen <= 0) {
if(doesexist) {
u8fl++;
u8fblen += u8cblen;
}
}
if(u8fl > 0) {
XftDrawStringUtf8(xw.draw, fg,
font->match, xp,
winy + font->ascent,
(FcChar8 *)u8fs,
u8fblen);
xp += xw.cw * u8fl;
}
break;
if(doesexist) {
u8fl++;
u8fblen += u8cblen;
if(!oneatatime && bytelen > 0)
continue;
}
u8fl++;
u8fblen += u8cblen;
if(u8fl > 0) {
XftDrawStringUtf8(xw.draw, fg,
font->match, xp,
winy + font->ascent,
(FcChar8 *)u8fs,
u8fblen);
xp += xw.cw * u8fl;
}
break;
}
if(doesexist) {
if(oneatatime)