From e31190219872a69e4497f8d8f0fb3235c59f826b Mon Sep 17 00:00:00 2001 From: zuu Date: Sun, 9 Jun 2013 12:21:44 +0000 Subject: [PATCH] (svn r25343) -Add: method to count the number of lines required to draw a string with line warping --- src/gfx.cpp | 17 +++++++++++++++++ src/gfx_func.h | 1 + 2 files changed, 18 insertions(+) diff --git a/src/gfx.cpp b/src/gfx.cpp index 962913495e..7cfe082414 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -882,6 +882,23 @@ int GetStringHeight(StringID str, int maxw) return GetMultilineStringHeight(buffer, GB(tmp, 0, 16), FS_NORMAL); } +/** + * Calculates number of lines of string. The string is changed to a multiline string if needed. + * @param str string to check + * @param maxw maximum string width + * @return number of lines of string when it is drawn + */ +int GetStringLineCount(StringID str, int maxw) +{ + char buffer[DRAW_STRING_BUFFER]; + + GetString(buffer, str, lastof(buffer)); + + uint32 tmp = FormatStringLinebreaks(buffer, lastof(buffer), maxw); + + return 1 + GB(tmp, 0, 16); +} + /** * Calculate string bounding box for multi-line strings. * @param str String to check. diff --git a/src/gfx_func.h b/src/gfx_func.h index 65616e618e..42c2b3a5e9 100644 --- a/src/gfx_func.h +++ b/src/gfx_func.h @@ -124,6 +124,7 @@ Dimension GetStringBoundingBox(const char *str, FontSize start_fontsize = FS_NOR Dimension GetStringBoundingBox(StringID strid); uint32 FormatStringLinebreaks(char *str, const char *last, int maxw, FontSize start_fontsize = FS_NORMAL); int GetStringHeight(StringID str, int maxw); +int GetStringLineCount(StringID str, int maxw); Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestion); Dimension GetStringMultiLineBoundingBox(const char *str, const Dimension &suggestion); void LoadStringWidthTable(bool monospace = false);