-// -*- mode: C++; indent-tabs-mode: nil; -*-
-#ifndef __Font_hh
-#define __Font_hh
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
+#ifndef __font_hh
+#define __font_hh
+
+#include "ustring.hh"
+#include "truerendercontrol.hh"
extern "C" {
#include <X11/Xlib.h>
+#define _XFT_NO_COMPAT_ // no Xft 1 API
#include <X11/Xft/Xft.h>
}
-#include <assert.h>
-#include <string>
+#include <cassert>
namespace otk {
-class BGCCache;
-class BGCCacheItem;
-class BColor;
-class ScreenInfo;
+class Color;
+class Surface;
-class BFont {
+class Font {
/*
* static members
*/
private:
static std::string _fallback_font;
+ static bool _xft_init;
public:
// the fallback is only used for X fonts, not for Xft fonts, since it is
private:
int _screen_num;
- std::string _family;
- bool _simplename; // true if not spec'd as a -*-* string
- int _size;
- bool _bold;
- bool _italic;
+ std::string _fontstring;
- bool _antialias;
bool _shadow;
unsigned char _offset;
unsigned char _tint;
bool createXftFont(void);
- bool _valid;
-
public:
// loads an Xft font
- BFont(int screen_num, const std::string &family, int size,
- bool bold, bool italic, bool shadow, unsigned char offset,
- unsigned char tint, bool antialias = True);
- virtual ~BFont(void);
-
- inline bool valid(void) const { return _valid; }
+ Font(int screen_num, const std::string &fontstring, bool shadow,
+ unsigned char offset, unsigned char tint);
+ virtual ~Font();
- inline std::string family(void) const { assert(_valid); return _family; }
- inline int size(void) const { assert(_valid); return _size; }
- inline bool bold(void) const { assert(_valid); return _bold; }
- inline bool italic(void) const { assert(_valid); return _italic; }
+ inline const std::string &fontstring() const { return _fontstring; }
- unsigned int height(void) const;
- unsigned int maxCharWidth(void) const;
+ int height() const;
+ int maxCharWidth() const;
- unsigned int measureString(const std::string &string) const;
+ int measureString(const ustring &string) const;
- void drawString(Drawable d, int x, int y, const BColor &color,
- const std::string &string) const;
+ // The RenderControl classes use the internal data to render the fonts, but
+ // noone else needs it, so its private.
+ friend class RenderControl;
};
}
-#endif // __Font_hh
+#endif // __font_hh