X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=otk%2Ffont.cc;h=121f4fa7b5bb77449c6d2888f909c602eb5be2f8;hb=395b9e155aafbc09024d811260da961498f8334d;hp=91f8ffb656109f237621d9c76f14e78114004100;hpb=85c41a1aec90b8daefc425596ea34b6f9d0e643c;p=chaz%2Fopenbox diff --git a/otk/font.cc b/otk/font.cc index 91f8ffb6..121f4fa7 100644 --- a/otk/font.cc +++ b/otk/font.cc @@ -21,14 +21,16 @@ using std::endl; #include "util.hh" #include "gccache.hh" #include "color.hh" +#include "screeninfo.hh" + +namespace otk { string BFont::_fallback_font = "fixed"; -BFont::BFont(Display *d, BScreen *screen, const string &family, int size, +BFont::BFont(int screen_num, const string &family, int size, bool bold, bool italic, bool shadow, unsigned char offset, unsigned char tint, bool antialias) : - _display(d), - _screen(screen), + _screen_num(screen_num), _family(family), _simplename(False), _size(size), @@ -41,7 +43,7 @@ BFont::BFont(Display *d, BScreen *screen, const string &family, int size, _xftfont(0) { _valid = False; - _xftfont = XftFontOpen(_display, _screen->getScreenNumber(), + _xftfont = XftFontOpen(OBDisplay::display, _screen_num, XFT_FAMILY, XftTypeString, _family.c_str(), XFT_SIZE, XftTypeInteger, _size, XFT_WEIGHT, XftTypeInteger, (_bold ? @@ -61,7 +63,7 @@ BFont::BFont(Display *d, BScreen *screen, const string &family, int size, BFont::~BFont(void) { if (_xftfont) - XftFontClose(_display, _xftfont); + XftFontClose(OBDisplay::display, _xftfont); } @@ -69,8 +71,9 @@ void BFont::drawString(Drawable d, int x, int y, const BColor &color, const string &string) const { assert(_valid); - XftDraw *draw = XftDrawCreate(_display, d, _screen->getVisual(), - _screen->getColormap()); + const ScreenInfo *info = OBDisplay::screenInfo(_screen_num); + XftDraw *draw = XftDrawCreate(OBDisplay::display, d, + info->getVisual(), info->getColormap()); assert(draw); if (_shadow) { @@ -79,12 +82,12 @@ void BFont::drawString(Drawable d, int x, int y, const BColor &color, c.color.green = 0; c.color.blue = 0; c.color.alpha = _tint | _tint << 8; // transparent shadow - c.pixel = BlackPixel(_display, _screen->getScreenNumber()); + c.pixel = BlackPixel(OBDisplay::display, _screen_num); - XftDrawStringUtf8(draw, &c, _xftfont, x + _offset, - _xftfont->ascent + y + _offset, - (XftChar8 *) string.c_str(), - string.size()); + XftDrawString8(draw, &c, _xftfont, x + _offset, + _xftfont->ascent + y + _offset, + (XftChar8 *) string.c_str(), + string.size()); } XftColor c; @@ -94,8 +97,8 @@ void BFont::drawString(Drawable d, int x, int y, const BColor &color, 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()); + XftDrawString8(draw, &c, _xftfont, x, _xftfont->ascent + y, + (XftChar8 *) string.c_str(), string.size()); XftDrawDestroy(draw); return; @@ -107,8 +110,8 @@ unsigned int BFont::measureString(const string &string) const { XGlyphInfo info; - XftTextExtentsUtf8(_display, _xftfont, (XftChar8 *) string.c_str(), - string.size(), &info); + XftTextExtents8(OBDisplay::display, _xftfont, + (XftChar8 *) string.c_str(), string.size(), &info); return info.xOff + (_shadow ? _offset : 0); } @@ -126,3 +129,5 @@ unsigned int BFont::maxCharWidth(void) const { return _xftfont->max_advance_width; } + +}