#ifdef XFT
BFont::BFont(Display *d, BScreen *screen, const string &family, int size,
- bool bold, bool italic, bool antialias) :
+ bool bold, bool italic, bool shadow, bool antialias) :
_display(d),
_screen(screen),
_family(family),
_bold(bold),
_italic(italic),
_antialias(antialias),
+ _shadow(shadow),
_xftfont(0),
_font(0),
_fontset(0),
_screen(screen),
#ifdef XFT
_antialias(False),
+ _shadow(False),
_xftfont(0),
#endif // XFT
_font(0),
_screen->getColormap());
assert(draw);
+ if (_shadow) {
+ XftColor c;
+ c.color.red = 0;
+ c.color.green = 0;
+ c.color.blue = 0;
+ c.color.alpha = 0x40 | 0x40 << 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());
+ }
+
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.color.alpha = 0xff | 0xff << 8; // no transparency in BColor yet
c.pixel = color.pixel();
-
+ 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());
XGlyphInfo info;
XftTextExtentsUtf8(_display, _xftfont, (XftChar8 *) string.c_str(),
string.size(), &info);
- return info.xOff;
+ 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())