GRAPHICS: Added optional initial line width ot text wrapper

This commit is contained in:
Eugene Sandulenko 2017-01-29 18:40:36 +01:00
parent 1c6b31397a
commit dc640ab50a
2 changed files with 12 additions and 11 deletions

View File

@ -142,11 +142,11 @@ struct WordWrapper {
};
template<class StringType>
int wordWrapTextImpl(const Font &font, const StringType &str, int maxWidth, Common::Array<StringType> &lines) {
int wordWrapTextImpl(const Font &font, const StringType &str, int maxWidth, Common::Array<StringType> &lines, int initWidth) {
WordWrapper<StringType> 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<Common::String> &lines) const {
return wordWrapTextImpl(*this, str, maxWidth, lines);
int Font::wordWrapText(const Common::String &str, int maxWidth, Common::Array<Common::String> &lines, int initWidth) const {
return wordWrapTextImpl(*this, str, maxWidth, lines, initWidth);
}
int Font::wordWrapText(const Common::U32String &str, int maxWidth, Common::Array<Common::U32String> &lines) const {
return wordWrapTextImpl(*this, str, maxWidth, lines);
int Font::wordWrapText(const Common::U32String &str, int maxWidth, Common::Array<Common::U32String> &lines, int initWidth) const {
return wordWrapTextImpl(*this, str, maxWidth, lines, initWidth);
}
Common::String Font::handleEllipsis(const Common::String &input, int w) const {

View File

@ -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<Common::String> &lines) const;
int wordWrapText(const Common::U32String &str, int maxWidth, Common::Array<Common::U32String> &lines) const;
int wordWrapText(const Common::String &str, int maxWidth, Common::Array<Common::String> &lines, int initWidth = 0) const;
int wordWrapText(const Common::U32String &str, int maxWidth, Common::Array<Common::U32String> &lines, int initWidth = 0) const;
private:
Common::String handleEllipsis(const Common::String &str, int w) const;