from LCD.hpp:604
class WideTextInternalStruct
{
public:
WideTextInternalStruct(TextProvider& _textProvider, uint16_t _maxWidth, TextDirection _textDirection, const Font* _font, WideTextAction action) : currChar(0), textProvider(_textProvider), textDirection(_textDirection), wideTextAction(action), ellipsisGlyph(0), font(_font), maxWidth(_maxWidth), charsRead(0), width(0), charsReadAhead(0), widthAhead(0), widthWithoutWhiteSpaceAtEnd(0), ellipsisGlyphWidth(0), useEllipsis(false)
{
Unicode::UnicodeChar ellipsisChar = font->getEllipsisChar();
if (ellipsisChar != 0)
{
ellipsisGlyph = font->getGlyph(ellipsisChar);
ellipsisGlyphWidth = ellipsisGlyph->advance();
if (wideTextAction == WIDE_TEXT_CHARWRAP_DOUBLE_ELLIPSIS)
{
ellipsisGlyphWidth += font->getKerning(ellipsisChar, ellipsisGlyph) + ellipsisGlyph->advance();
}
}
}
void addWord(uint16_t widthBeforeCurrChar, uint16_t widthBeforeWhiteSpaceAtEnd, uint16_t charsReadTooMany);
void getStringLengthForLine(bool useWideTextEllipsisFlag);
Unicode::UnicodeChar getCurrChar() const
{
return currChar;
}
uint16_t getLineWidth() const
{
return widthWithoutWhiteSpaceAtEnd;
}
uint16_t getCharsRead() const
{
return charsRead;
}
bool getUseEllipsis() const
{
return useEllipsis;
}
private:
Unicode::UnicodeChar currChar;
TextProvider& textProvider;
TextDirection textDirection;
WideTextAction wideTextAction;
const GlyphNode* ellipsisGlyph;
const Font* font;
uint16_t maxWidth;
uint16_t charsRead;
uint16_t width;
uint16_t charsReadAhead;
uint16_t widthAhead;
uint16_t widthWithoutWhiteSpaceAtEnd;
uint16_t ellipsisGlyphWidth;
bool useEllipsis;
};