From dc640ab50a63b0383c6aec6df4e0427df1824c3e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 29 Jan 2017 18:40:36 +0100 Subject: [PATCH] GRAPHICS: Added optional initial line width ot text wrapper --- graphics/font.cpp | 12 ++++++------ graphics/font.h | 11 ++++++----- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/graphics/font.cpp b/graphics/font.cpp index 7768b7362d1..3446619299f 100644 --- a/graphics/font.cpp +++ b/graphics/font.cpp @@ -142,11 +142,11 @@ struct WordWrapper { }; template -int wordWrapTextImpl(const Font &font, const StringType &str, int maxWidth, Common::Array &lines) { +int wordWrapTextImpl(const Font &font, const StringType &str, int maxWidth, Common::Array &lines, int initWidth) { WordWrapper wrapper(lines); StringType line; StringType tmpStr; - int lineWidth = 0; + int lineWidth = initWidth; int tmpWidth = 0; // The rough idea behind this algorithm is as follows: @@ -305,12 +305,12 @@ void Font::drawString(ManagedSurface *dst, const Common::U32String &str, int x, } } -int Font::wordWrapText(const Common::String &str, int maxWidth, Common::Array &lines) const { - return wordWrapTextImpl(*this, str, maxWidth, lines); +int Font::wordWrapText(const Common::String &str, int maxWidth, Common::Array &lines, int initWidth) const { + return wordWrapTextImpl(*this, str, maxWidth, lines, initWidth); } -int Font::wordWrapText(const Common::U32String &str, int maxWidth, Common::Array &lines) const { - return wordWrapTextImpl(*this, str, maxWidth, lines); +int Font::wordWrapText(const Common::U32String &str, int maxWidth, Common::Array &lines, int initWidth) const { + return wordWrapTextImpl(*this, str, maxWidth, lines, initWidth); } Common::String Font::handleEllipsis(const Common::String &input, int w) const { diff --git a/graphics/font.h b/graphics/font.h index 0478608708e..6682ce015b5 100644 --- a/graphics/font.h +++ b/graphics/font.h @@ -169,13 +169,14 @@ public: * It returns the maximal width of any of the new lines (i.e. a value which is less * or equal to maxWidth). * - * @param str the string to word wrap - * @param maxWidth the maximum width a line may have - * @param lines the string list to which the text lines from str are appended + * @param str the string to word wrap + * @param maxWidth the maximum width a line may have + * @param lines the string list to which the text lines from str are appended + * @param initWidth the starting width of the first line, for partially filled lines (optional) * @return the maximal width of any of the lines added to lines */ - int wordWrapText(const Common::String &str, int maxWidth, Common::Array &lines) const; - int wordWrapText(const Common::U32String &str, int maxWidth, Common::Array &lines) const; + int wordWrapText(const Common::String &str, int maxWidth, Common::Array &lines, int initWidth = 0) const; + int wordWrapText(const Common::U32String &str, int maxWidth, Common::Array &lines, int initWidth = 0) const; private: Common::String handleEllipsis(const Common::String &str, int w) const;