diff options
| author | Scott Moynes <smoynes@nexus.carleton.ca> | 2002-10-23 02:46:47 +0000 |
|---|---|---|
| committer | Scott Moynes <smoynes@nexus.carleton.ca> | 2002-10-23 02:46:47 +0000 |
| commit | 1e36acfd9198a7d8cbad4eef094e15a03eebc291 (patch) | |
| tree | 22d51d982f5f0ecd2630d4480bd4ea5b4a9fc5ab /src/Font.cc | |
| parent | dc4957eed8ea4844dc7bdba0830b7bbd95be3fd2 (diff) | |
Allow variable tinting of the shadow. Use *.xft.tint: integer
integer is a number -100 to 100 that specifies the alpha channel, with
negative numbers meaning lighten the background and positive being
darken.
Diffstat (limited to 'src/Font.cc')
| -rw-r--r-- | src/Font.cc | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/Font.cc b/src/Font.cc index ea70933a..4699350c 100644 --- a/src/Font.cc +++ b/src/Font.cc @@ -49,7 +49,7 @@ string BFont::_fallback_font = "fixed"; #ifdef XFT BFont::BFont(Display *d, BScreen *screen, const string &family, int size, bool bold, bool italic, bool shadow, unsigned char offset, - unsigned char tint, bool antialias) : + int tint, bool antialias) : _display(d), _screen(screen), _family(family), @@ -265,14 +265,22 @@ void BFont::drawString(Drawable d, int x, int y, const BColor &color, _screen->getColormap()); assert(draw); + if (_shadow) { XftColor c; - c.color.red = 0; - c.color.green = 0; - c.color.blue = 0; - c.color.alpha = _tint | _tint << 8; // transparent shadow - c.pixel = BlackPixel(_display, _screen->getScreenNumber()); - + if (_tint >= 0) { + c.color.red = 0; + c.color.green = 0; + c.color.blue = 0; + c.color.alpha = 0xffff * _tint/100; // transparent shadow + c.pixel = BlackPixel(_display, _screen->getScreenNumber()); + } else { + c.color.red = 0xffff * -_tint/100; + c.color.green = 0xffff * -_tint/100; + c.color.blue = 0xffff * -_tint/100; + c.color.alpha = 0xffff * -_tint/100; + c.pixel = WhitePixel(_display, _screen->getScreenNumber()); + } #ifdef XFT_UTF8 XftDrawStringUtf8( #else |
