diff options
-rw-r--r-- | src/gfx.cpp | 17 | ||||
-rw-r--r-- | src/gfx_func.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/gfx.cpp b/src/gfx.cpp index 962913495..7cfe08241 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -883,6 +883,23 @@ int GetStringHeight(StringID str, int maxw) } /** + * 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. * @param suggestion Suggested bounding box. diff --git a/src/gfx_func.h b/src/gfx_func.h index 65616e618..42c2b3a5e 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); |