From d55cd8f3b44de42d9be09280634584b6424945f9 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Mon, 9 Jun 2014 18:54:49 +0200 Subject: GRAPHICS: Allow to query the bounding box of chars/strings drawn with Font API. --- graphics/fonts/ttf.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'graphics/fonts/ttf.cpp') 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 -- cgit v1.2.3