diff options
Diffstat (limited to 'graphics/fonts/ttf.cpp')
-rw-r--r-- | graphics/fonts/ttf.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/graphics/fonts/ttf.cpp b/graphics/fonts/ttf.cpp index 09a00672e3..4b63c6c60f 100644 --- a/graphics/fonts/ttf.cpp +++ b/graphics/fonts/ttf.cpp @@ -111,6 +111,8 @@ public: virtual int getKerningOffset(uint32 left, uint32 right) const; + virtual Common::Rect getBoundingBox(uint32 chr) const; + virtual void drawChar(Surface *dst, uint32 chr, int x, int y, uint32 color) const; private: bool _initialized; @@ -309,6 +311,19 @@ int TTFFont::getKerningOffset(uint32 left, uint32 right) const { return (kerningVector.x / 64); } +Common::Rect TTFFont::getBoundingBox(uint32 chr) const { + assureCached(chr); + GlyphCache::const_iterator glyphEntry = _glyphs.find(chr); + if (glyphEntry == _glyphs.end()) { + return Common::Rect(); + } else { + const int xOffset = glyphEntry->_value.xOffset; + const int yOffset = glyphEntry->_value.yOffset; + const Graphics::Surface &image = glyphEntry->_value.image; + return Common::Rect(xOffset, yOffset, xOffset + image.w, yOffset + image.h); + } +} + namespace { template<typename ColorType> |