#ifdef XFT
BFont::BFont(Display *d, BScreen *screen, const string &family, int size,
- bool bold, bool italic, bool shadow, bool antialias) :
+ bool bold, bool italic, bool shadow, unsigned char offset,
+ unsigned char tint, bool antialias) :
_display(d),
_screen(screen),
_family(family),
_italic(italic),
_antialias(antialias),
_shadow(shadow),
+ _offset(offset),
+ _tint(tint),
_xftfont(0),
_font(0),
_fontset(0),
_screen->getColormap());
assert(draw);
-/* if (_shadow) {
+ if (_shadow) {
XftColor c;
c.color.red = 0;
c.color.green = 0;
c.color.blue = 0;
- c.color.alpha = 0x49 | 0x49 << 8; // transparent shadow
+ c.color.alpha = _tint | _tint << 8; // transparent shadow
c.pixel = BlackPixel(_display, _screen->getScreenNumber());
-
- XftDrawStringUtf8(draw, &c, _xftfont, x + 1, _xftfont->ascent + y + 1,
- (XftChar8 *) string.c_str(), string.size());
+#ifdef XFT_UTF8
+ XftDrawStringUtf8(
+#else
+ XftDrawString8(
+#endif
+ draw, &c, _xftfont, x + _offset,
+ _xftfont->ascent + y + _offset, (XftChar8 *) string.c_str(),
+ string.size());
}
-*/
-
+
XftColor c;
c.color.red = color.red() | color.red() << 8;
c.color.green = color.green() | color.green() << 8;
c.color.blue = color.blue() | color.blue() << 8;
c.pixel = color.pixel();
-
- if (_shadow) {
- c.color.alpha = 0x66 | 0x66 << 8; // transparent shadow
- XftDrawStringUtf8(draw, &c, _xftfont, x + 1, _xftfont->ascent + y + 1,
- (XftChar8 *) string.c_str(), string.size());
- }
-
c.color.alpha = 0xff | 0xff << 8; // no transparency in BColor yet
- XftDrawStringUtf8(draw, &c, _xftfont, x, _xftfont->ascent + y,
- (XftChar8 *) string.c_str(), string.size());
+
+#ifdef XFT_UTF8
+ XftDrawStringUtf8(
+#else
+ XftDrawString8(
+#endif
+ draw, &c, _xftfont, x, _xftfont->ascent + y,
+ (XftChar8 *) string.c_str(), string.size());
XftDrawDestroy(draw);
return;
#ifdef XFT
if (_xftfont) {
XGlyphInfo info;
- XftTextExtentsUtf8(_display, _xftfont, (XftChar8 *) string.c_str(),
- string.size(), &info);
- return info.xOff;
+
+#ifdef XFT_UTF8
+ XftTextExtentsUtf8(
+#else
+ XftTextExtents8(
+#endif
+ _display, _xftfont, (XftChar8 *) string.c_str(),
+ string.size(), &info);
+
+ return info.xOff + (_shadow ? 1 : 0);
}
#endif // XFT
#ifdef XFT
if (_xftfont)
- return _xftfont->height;
+ return _xftfont->height + (_shadow ? 1 : 0);
#endif // XFT
if (i18n.multibyte())