From 996e5eea471f740428f2878884363521200d6ca1 Mon Sep 17 00:00:00 2001 From: alberth Date: Sat, 27 Jun 2009 11:45:05 +0000 Subject: (svn r16672) -Codechange: Add functions to compute size of strings and sprites. --- src/gfx.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/gfx.cpp') diff --git a/src/gfx.cpp b/src/gfx.cpp index 668d33c8a..c67dba176 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -830,6 +830,20 @@ Dimension GetStringBoundingBox(const char *str) return br; } +/** + * Get bounding box of a string. Uses parameters set by #DParam if needed. + * Has the same restrictions as #GetStringBoundingBox(const char *str). + * @param strid String to examine. + * @return Width and height of the bounding box for the string in pixels. + */ +Dimension GetStringBoundingBox(StringID strid) +{ + char buffer[DRAW_STRING_BUFFER]; + + GetString(buffer, strid, lastof(buffer)); + return GetStringBoundingBox(buffer); +} + /** * Draw single character horizontally centered around (x,y) * @param c Character (glyph) to draw @@ -926,6 +940,22 @@ skip_cont:; } } +/** + * Get the size of a sprite. + * @param sprid Sprite to examine. + * @return Sprite size in pixels. + * @note The size assumes (0, 0) as top-left coordinate and ignores any part of the sprite drawn at the left or above that position. + */ +Dimension GetSpriteSize(SpriteID sprid) +{ + const Sprite *sprite = GetSprite(sprid, ST_NORMAL); + + Dimension d; + d.width = max(0, sprite->x_offs + sprite->width); + d.height = max(0, sprite->y_offs + sprite->height); + return d; +} + /** * Draw a sprite. * @param img Image number to draw -- cgit v1.2.3-54-g00ecf