From b1a830491aa01218cf0ec699269bd5d6a107f6f8 Mon Sep 17 00:00:00 2001 From: yexo Date: Thu, 12 Jan 2012 19:11:51 +0000 Subject: (svn r23791) -Fix [FS#4960]: resize text panel for parameter description if it doesn't fit in 4 lines. If you resize the window so it's smaller than default the text might still not fit --- 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 5dcd9a09d..55721e052 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -821,6 +821,36 @@ Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestio return box; } + +/** + * Calculates height of string (in pixels). The string is changed to a multiline string if needed. + * @param str string to check + * @param maxw maximum string width + * @return height of pixels of string when it is drawn + */ +int GetStringHeight(const char *str, int maxw) +{ + char buffer[DRAW_STRING_BUFFER]; + + strecpy(buffer, str, lastof(buffer)); + + uint32 tmp = FormatStringLinebreaks(buffer, lastof(buffer), maxw); + + return GetMultilineStringHeight(buffer, GB(tmp, 0, 16), FS_NORMAL); +} + +/** + * Calculate string bounding box for multi-line strings. + * @param str String to check. + * @param suggestion Suggested bounding box. + * @return Bounding box for the multi-line string, may be bigger than \a suggestion. + */ +Dimension GetStringMultiLineBoundingBox(const char *str, const Dimension &suggestion) +{ + Dimension box = {suggestion.width, GetStringHeight(str, suggestion.width)}; + return box; +} + /** * Draw string, possibly over multiple lines. * -- cgit v1.2.3-54-g00ecf