From 17895403886c9b282ff32076e0d4fb6090b93451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Sat, 24 Jan 2026 17:59:09 -0300 Subject: [PATCH] Separate TextLayout result into paragraphs with ShapedTextParagraph. Change the `Text::wrapText` implementation to use the `LineWrap::computeLineBreaks` function, so it's consistent across eepp. Also renamed the function to `Text::hardWrapText` to be more descriptive. Added new-line support in `LineWrap::computeLineBreaks`. --- .../assets/fontrendering/eepp-fonts.webp | Bin 86682 -> 86858 bytes .../assets/fontrendering/eepp-text-wrap.webp | Bin 8348 -> 8552 bytes .../fontrendering/eepp-ui-text-test.webp | Bin 7950 -> 7960 bytes include/eepp/graphics/text.hpp | 24 +- include/eepp/graphics/textlayout.hpp | 10 +- src/eepp/graphics/linewrap.cpp | 7 + src/eepp/graphics/text.cpp | 560 ++++++++---------- src/eepp/graphics/textlayout.cpp | 44 +- src/eepp/ui/uitextview.cpp | 2 +- src/eepp/ui/uitooltip.cpp | 2 +- src/examples/fonts/fonts.cpp | 4 +- src/tests/unit_tests/fontrendering.cpp | 6 +- src/tools/ecode/plugins/git/gitplugin.cpp | 4 +- 13 files changed, 310 insertions(+), 353 deletions(-) diff --git a/bin/unit_tests/assets/fontrendering/eepp-fonts.webp b/bin/unit_tests/assets/fontrendering/eepp-fonts.webp index f769431f89ae551cffb1bdeec64bbde84ff66f7f..5ddbeb0c6b51ec7050e7869b5419acb1dd89b9ba 100644 GIT binary patch literal 86858 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

&f=qsqTf=(uUQRb!~o=%fEL2HGd-jz-8aI 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 diff --git a/bin/unit_tests/assets/fontrendering/eepp-text-wrap.webp b/bin/unit_tests/assets/fontrendering/eepp-text-wrap.webp index 3d6daa99db2ff6c1430486dc1fba319fa06bc002..e40b70d2bac101a0e18ab52c7c220af08de35b62 100644 GIT binary patch literal 8552 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 Y*7eBQQrJrmyyeHEU<0(fUIc{y2O6n7*8l(j diff --git a/bin/unit_tests/assets/fontrendering/eepp-ui-text-test.webp b/bin/unit_tests/assets/fontrendering/eepp-ui-text-test.webp index ce72650c7691615758a4f0610f9348b252355e09..d97d432da5081567ad51b79bfe9a3e5f1c2d0705 100644 GIT binary patch literal 7960 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 ScA<5cvnKNg{Qt#3B=&z$Zt>Fq literal 7950 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 diff --git a/include/eepp/graphics/text.hpp b/include/eepp/graphics/text.hpp index 7085a7bb0..fccc6d1b2 100644 --- a/include/eepp/graphics/text.hpp +++ b/include/eepp/graphics/text.hpp @@ -153,13 +153,13 @@ class EE_API Text { std::optional tabOffset = {}, Uint32 textHints = 0, TextDirection direction = TextDirection::Unspecified ); - static bool wrapText( Font* font, const Uint32& fontSize, String& string, const Float& maxWidth, - const Uint32& style, const Uint32& tabWidth = 4, - const Float& outlineThickness = 0.f, - std::optional tabOffset = {} ); + static bool hardWrapText( Font* font, const Uint32& fontSize, String& string, + const Float& maxWidth, const Uint32& style, + const Uint32& tabWidth = 4, const Float& outlineThickness = 0.f, + std::optional tabOffset = {} ); - static bool wrapText( String& string, const Float& maxWidth, const FontStyleConfig& config, - const Uint32& tabWidth = 4, std::optional tabOffset = {} ); + static bool hardWrapText( String& string, const Float& maxWidth, const FontStyleConfig& config, + const Uint32& tabWidth = 4, std::optional tabOffset = {} ); static Text* New(); @@ -279,7 +279,7 @@ class EE_API Text { /** Shrink the String to a max width * @param MaxWidth The maximum possible width */ - void wrapText( const Uint32& maxWidth ); + void hardWrapText( const Uint32& maxWidth ); /** Invalidates the color cache */ void invalidateColors(); @@ -411,16 +411,6 @@ class EE_API Text { const Float& outlineThickness = 0.f, std::optional tabOffset = {}, Uint32 textHints = 0, TextDirection direction = TextDirection::Unspecified ); - - template - static bool wrapText( Font* font, const Uint32& fontSize, StringType& string, - const Float& maxWidth, const Uint32& style, const Uint32& tabWidth = 4, - const Float& outlineThickness = 0.f, - std::optional tabOffset = {} ); - - template - static bool wrapText( StringType& string, const Float& maxWidth, const FontStyleConfig& config, - const Uint32& tabWidth = 4, std::optional tabOffset = {} ); }; }} // namespace EE::Graphics diff --git a/include/eepp/graphics/textlayout.hpp b/include/eepp/graphics/textlayout.hpp index 5a781f78c..302b1d881 100644 --- a/include/eepp/graphics/textlayout.hpp +++ b/include/eepp/graphics/textlayout.hpp @@ -13,18 +13,24 @@ namespace EE::Graphics { class Font; +struct ShapedTextParagraph { + std::vector shapedGlyphs; + Sizef size; +}; + class EE_API TextLayout { public: using Cache = std::shared_ptr; - std::vector shapedGlyphs; - std::vector linesWidth; + std::vector paragraphs; Sizef size; TextDirection direction{ TextDirection::Unspecified }; bool hasMixedDirection : 1 { false }; bool isRTL() const { return direction == TextDirection::RightToLeft; } + std::vector getLinesWidth() const; + static Cache layout( const String& string, Font* font, const Uint32& fontSize, const Uint32& style, const Uint32& tabWidth = 4, const Float& outlineThickness = 0.f, std::optional tabOffset = {}, diff --git a/src/eepp/graphics/linewrap.cpp b/src/eepp/graphics/linewrap.cpp index 289008eb6..8047dba10 100644 --- a/src/eepp/graphics/linewrap.cpp +++ b/src/eepp/graphics/linewrap.cpp @@ -101,6 +101,13 @@ LineWrapInfo LineWrap::computeLineBreaks( const String::View& string, Font* font size_t idx = 0; for ( const auto& curChar : string ) { + if ( curChar == '\n' ) { + xoffset = 0; + lastSpace = idx; + idx++; + continue; + } + Float w = !isMonospace ? font->getGlyph( curChar, characterSize, bold, italic, outlineThickness ).advance diff --git a/src/eepp/graphics/text.cpp b/src/eepp/graphics/text.cpp index 9ed8a2fcc..6c8c89ec4 100644 --- a/src/eepp/graphics/text.cpp +++ b/src/eepp/graphics/text.cpp @@ -315,69 +315,72 @@ Sizef Text::draw( const StringType& string, const Vector2f& pos, Font* font, Flo auto layout = TextLayout::layout( string, rFont, fontSize, style, tabWidth, outlineThickness, tabOffset, textDrawHints, direction ); - for ( const ShapedGlyph& sg : layout->shapedGlyphs ) { - auto ch = string[sg.stringIndex]; - auto gpos( ( sg.position + pos ).trunc() ); + for ( const ShapedTextParagraph& sp : layout->paragraphs ) { + for ( const ShapedGlyph& sg : sp.shapedGlyphs ) { + auto ch = string[sg.stringIndex]; + auto gpos( ( sg.position + pos ).trunc() ); - if ( ch == '\t' ) { - if ( whitespaceDisplayConfig.tabDisplayCharacter ) { - Float advance = tabAdvance( hspace, tabWidth, - tabOffset ? gpos.x - pos.x + *tabOffset - : std::optional{} ); + if ( ch == '\t' ) { + if ( whitespaceDisplayConfig.tabDisplayCharacter ) { + Float advance = tabAdvance( hspace, tabWidth, + tabOffset ? gpos.x - pos.x + *tabOffset + : std::optional{} ); - switch ( whitespaceDisplayConfig.tabAlign ) { - case CharacterAlignment::Center: - tabAlign = ( advance - tabGlyph->getPixelsSize().getWidth() ) * 0.5f; - break; - case CharacterAlignment::Right: - tabAlign = advance - tabGlyph->getPixelsSize().getWidth(); - break; - case CharacterAlignment::Left: - break; - } - - if ( tabGlyph ) { - drawGlyph( BR, tabGlyph, { gpos.x + tabAlign, gpos.y }, - whitespaceDisplayConfig.color, isItalic ); + switch ( whitespaceDisplayConfig.tabAlign ) { + case CharacterAlignment::Center: + tabAlign = + ( advance - tabGlyph->getPixelsSize().getWidth() ) * 0.5f; + break; + case CharacterAlignment::Right: + tabAlign = advance - tabGlyph->getPixelsSize().getWidth(); + break; + case CharacterAlignment::Left: + break; + } + + if ( tabGlyph ) { + drawGlyph( BR, tabGlyph, { gpos.x + tabAlign, gpos.y }, + whitespaceDisplayConfig.color, isItalic ); + } } + continue; } - continue; - } - if ( ch == ' ' ) { - if ( whitespaceDisplayConfig.spaceDisplayCharacter ) { - if ( spaceGlyph == nullptr ) { - spaceGlyph = font->getGlyphDrawable( - whitespaceDisplayConfig.spaceDisplayCharacter, fontSize ); + if ( ch == ' ' ) { + if ( whitespaceDisplayConfig.spaceDisplayCharacter ) { + if ( spaceGlyph == nullptr ) { + spaceGlyph = font->getGlyphDrawable( + whitespaceDisplayConfig.spaceDisplayCharacter, fontSize ); + } + drawGlyph( BR, spaceGlyph, gpos, whitespaceDisplayConfig.color, isItalic ); } - drawGlyph( BR, spaceGlyph, gpos, whitespaceDisplayConfig.color, isItalic ); + continue; } - continue; - } - if ( style & Text::Shadow ) { - auto* gds = sg.font->getGlyphDrawableFromGlyphIndex( - sg.glyphIndex, fontSize, isBold, isItalic, outlineThickness, - rFont->getPage( fontSize ) ); - if ( gds ) - drawGlyph( BR, gds, gpos, shadowColor, isItalic ); - } + if ( style & Text::Shadow ) { + auto* gds = sg.font->getGlyphDrawableFromGlyphIndex( + sg.glyphIndex, fontSize, isBold, isItalic, outlineThickness, + rFont->getPage( fontSize ) ); + if ( gds ) + drawGlyph( BR, gds, gpos, shadowColor, isItalic ); + } - if ( outlineThickness != 0.f ) { - auto* gdo = sg.font->getGlyphDrawableFromGlyphIndex( - sg.glyphIndex, fontSize, isBold, isItalic, outlineThickness, - rFont->getPage( fontSize ) ); - if ( gdo ) - drawGlyph( BR, gdo, gpos, outlineColor, isItalic ); - } + if ( outlineThickness != 0.f ) { + auto* gdo = sg.font->getGlyphDrawableFromGlyphIndex( + sg.glyphIndex, fontSize, isBold, isItalic, outlineThickness, + rFont->getPage( fontSize ) ); + if ( gdo ) + drawGlyph( BR, gdo, gpos, outlineColor, isItalic ); + } - auto* gd = sg.font->getGlyphDrawableFromGlyphIndex( - sg.glyphIndex, fontSize, isBold, isItalic, 0, rFont->getPage( fontSize ) ); - if ( gd ) { - drawGlyph( BR, gd, gpos, - fallbacksToColorEmoji && Font::isEmojiCodePoint( ch ) ? Color::White - : fontColor, - isItalic ); + auto* gd = sg.font->getGlyphDrawableFromGlyphIndex( + sg.glyphIndex, fontSize, isBold, isItalic, 0, rFont->getPage( fontSize ) ); + if ( gd ) { + drawGlyph( BR, gd, gpos, + fallbacksToColorEmoji && Font::isEmojiCodePoint( ch ) ? Color::White + : fontColor, + isItalic ); + } } } @@ -513,111 +516,30 @@ Sizef Text::draw( const StringType& string, const Vector2f& pos, const FontStyle direction, whitespaceDisplayConfig ); } -template -bool Text::wrapText( Font* font, const Uint32& fontSize, StringType& string, const Float& maxWidth, - const Uint32& style, const Uint32& tabWidth, const Float& outlineThickness, - std::optional tabOffset ) { +bool Text::hardWrapText( Font* font, const Uint32& fontSize, String& string, const Float& maxWidth, + const Uint32& style, const Uint32& tabWidth, const Float& outlineThickness, + std::optional tabOffset ) { + if ( string.empty() || NULL == font ) return false; - Float x = 0.f; - Float tCurWidth = 0.f; - Float tWordWidth = 0.f; - auto tChar = &string[0]; - decltype( tChar ) tLastSpace = NULL; - decltype( tChar ) tLastChar = &string[string.size() - 1]; - Uint32 prevChar = 0; - bool bold = ( style & Bold ) != 0; - bool italic = ( style & Italic ) != 0; - bool wrapped = false; + LineWrapInfo lineWrap = LineWrap::computeLineBreaks( + string, font, fontSize, maxWidth, LineWrapMode::Word, style, outlineThickness, + tabOffset.has_value(), tabWidth, tabOffset ? *tabOffset : 0.f ); - Float hspace = static_cast( - font->getGlyph( L' ', fontSize, bold, italic, outlineThickness ).advance ); + if ( lineWrap.wraps.size() <= 1 ) + return false; - while ( *tChar && tChar <= tLastChar ) { - Glyph pChar = font->getGlyph( *tChar, fontSize, bold, italic, outlineThickness ); + for ( Int64 i = lineWrap.wraps.size() - 1; i > 0; i-- ) + string.insert( lineWrap.wraps[i], '\n' ); - Float fCharWidth = (Float)pChar.advance; - - if ( ( *tChar ) == '\t' ) - fCharWidth = tabAdvance( hspace, tabWidth, tabOffset ? ( *tabOffset + x ) : tabOffset ); - else if ( ( *tChar ) == '\r' ) - fCharWidth = 0; - - // Add the new char width to the current word width - tWordWidth += fCharWidth; - x += fCharWidth; - - if ( *tChar != '\n' && *tChar != '\r' ) { - tWordWidth += - font->getKerning( prevChar, *tChar, fontSize, bold, italic, outlineThickness ); - prevChar = *tChar; - } - - if ( ' ' == *tChar || tChar == tLastChar ) { - // If current width plus word width is minor to the max width, continue adding - if ( tCurWidth + tWordWidth < maxWidth ) { - tCurWidth += tWordWidth; - tLastSpace = tChar; - - tChar++; - } else { - // If it was an space before, replace that space for an new line - // Start counting from the new line first character - if ( NULL != tLastSpace ) { - *tLastSpace = '\n'; - tChar = tLastSpace + 1; - wrapped = true; - x = 0.f; - } else { // The word is larger than the current possible width - *tChar = '\n'; - wrapped = true; - x = 0.f; - } - - if ( tChar == tLastChar ) - tChar++; - - // Set the last spaces as null, because is a new line - tLastSpace = NULL; - - // New line, new current width - tCurWidth = 0.f; - } - - // New word, so we reset the current word width - tWordWidth = 0.f; - } else if ( '\n' == *tChar ) { - tWordWidth = 0.f; - tCurWidth = 0.f; - x = 0.f; - tLastSpace = NULL; - tChar++; - } else { - tChar++; - } - } - - return wrapped; + return true; } -template -bool Text::wrapText( StringType& string, const Float& maxWidth, const FontStyleConfig& config, - const Uint32& tabWidth, std::optional tabOffset ) { - return wrapText( config.Font, config.CharacterSize, string, maxWidth, config.Style, - tabWidth, config.OutlineThickness, tabOffset ); -} - -bool Text::wrapText( Font* font, const Uint32& fontSize, String& string, const Float& maxWidth, - const Uint32& style, const Uint32& tabWidth, const Float& outlineThickness, - std::optional tabOffset ) { - return wrapText( font, fontSize, string, maxWidth, style, tabWidth, outlineThickness, - tabOffset ); -} - -bool Text::wrapText( String& string, const Float& maxWidth, const FontStyleConfig& config, - const Uint32& tabWidth, std::optional tabOffset ) { - return wrapText( string, maxWidth, config, tabWidth, tabOffset ); +bool Text::hardWrapText( String& string, const Float& maxWidth, const FontStyleConfig& config, + const Uint32& tabWidth, std::optional tabOffset ) { + return hardWrapText( config.Font, config.CharacterSize, string, maxWidth, config.Style, + tabWidth, config.OutlineThickness, tabOffset ); } Text::Text() {} @@ -972,12 +894,14 @@ Text::findLastCharPosWithinLength( Font* font, const Uint32& fontSize, const Str TextLayout::layout( string, static_cast( font ), fontSize, style, tabWidth, outlineThickness, tabOffset, 0, direction ); size_t lastStringIndex = 0; - for ( const ShapedGlyph& sg : layout->shapedGlyphs ) { - Glyph metrics = - sg.font->getGlyphByIndex( sg.glyphIndex, fontSize, bold, italic, outlineThickness ); - if ( sg.position.x + metrics.advance > maxWidth ) - return lastStringIndex; - lastStringIndex = sg.stringIndex; + for ( const ShapedTextParagraph& sp : layout->paragraphs ) { + for ( const ShapedGlyph& sg : sp.shapedGlyphs ) { + Glyph metrics = sg.font->getGlyphByIndex( sg.glyphIndex, fontSize, bold, italic, + outlineThickness ); + if ( sg.position.x + metrics.advance > maxWidth ) + return lastStringIndex; + lastStringIndex = sg.stringIndex; + } } return string.size(); } @@ -1037,28 +961,29 @@ Vector2f Text::findCharacterPos( std::size_t index, Font* font, const Uint32& fo const ShapedGlyph* msg = nullptr; const ShapedGlyph* csg = nullptr; + for ( const ShapedTextParagraph& sp : layout->paragraphs ) { + for ( const ShapedGlyph& sg : sp.shapedGlyphs ) { + if ( sg.stringIndex >= maxStringIndex ) { + maxStringIndex = std::max( maxStringIndex, sg.stringIndex ); + msg = &sg; + } - for ( const ShapedGlyph& sg : layout->shapedGlyphs ) { - if ( sg.stringIndex >= maxStringIndex ) { - maxStringIndex = std::max( maxStringIndex, sg.stringIndex ); - msg = &sg; - } + auto dist = std::abs( (Int64)index - (Int64)sg.stringIndex ); + if ( dist < closestDist ) { + closestDist = dist; + csg = &sg; + } - auto dist = std::abs( (Int64)index - (Int64)sg.stringIndex ); - if ( dist < closestDist ) { - closestDist = dist; - csg = &sg; - } - - if ( sg.stringIndex == index ) { - if ( layout->isRTL() ) - return ( sg.position + sg.advance ).trunc(); - return sg.position.trunc(); + if ( sg.stringIndex == index ) { + if ( layout->isRTL() ) + return ( sg.position + sg.advance ).trunc(); + return sg.position.trunc(); + } } } - if ( !layout->shapedGlyphs.empty() && !layout->isRTL() && index >= maxStringIndex + 1 && - msg ) { + if ( layout->paragraphs.empty() && !layout->paragraphs.back().shapedGlyphs.empty() && + !layout->isRTL() && index >= maxStringIndex + 1 && msg ) { Glyph metrics = msg->font->getGlyphByIndex( msg->glyphIndex, fontSize, bold, italic, outlineThickness ); if ( string[msg->stringIndex] == '\t' ) { @@ -1149,71 +1074,73 @@ Int32 Text::findCharacterFromPos( const Vector2i& pos, bool returnNearest, Font* auto layout = TextLayout::layout( string, font, fontSize, style, tabWidth, outlineThickness, tabOffset, 0, direction ); - auto sgs = static_cast( layout->shapedGlyphs.size() ); - if ( sgs == 0 ) - return 0; + int sgs; if ( pos.x < 0 ) return layout->isRTL() ? tSize : 0; Float charLeft, charTop, charBottom, charRight; + for ( const ShapedTextParagraph& sp : layout->paragraphs ) { + sgs = sp.shapedGlyphs.size(); + if ( sgs == 0 ) + return 0; - for ( auto i = 0; i < sgs; i++ ) { - const ShapedGlyph* sg = &layout->shapedGlyphs[i]; + for ( auto i = 0; i < sgs; i++ ) { + const ShapedGlyph* sg = &sp.shapedGlyphs[i]; - charLeft = sg->position.x; - charTop = sg->position.y; - charBottom = charTop + vspace; - charRight = charLeft + sg->advance.x; + charLeft = sg->position.x; + charTop = sg->position.y; + charBottom = charTop + vspace; + charRight = charLeft + sg->advance.x; - // Expand bounds over the whole cluster (multiple glyphs for one string index) - while ( i + 1 < sgs && layout->shapedGlyphs[i + 1].stringIndex == sg->stringIndex ) { - i++; - sg = &layout->shapedGlyphs[i]; - charBottom = sg->position.y + vspace; - charRight = sg->position.x + sg->advance.x; - }; - - if ( fpos.y >= charTop && fpos.y <= charBottom ) { - auto findNextInsertionIndex = [&layout, sg, i, sgs, tSize]() -> Int32 { - if ( layout->isRTL() ) { - if ( i > 0 ) { - for ( auto j = i - 1; j >= 0; j-- ) { - if ( layout->shapedGlyphs[j].stringIndex > sg->stringIndex ) - return layout->shapedGlyphs[j].stringIndex; - } - } - return 0; - } else { - for ( auto j = i + 1; j < sgs; ++j ) { - if ( layout->shapedGlyphs[j].stringIndex > sg->stringIndex ) - return layout->shapedGlyphs[j].stringIndex; - } - return tSize; - } + // Expand bounds over the whole cluster (multiple glyphs for one string index) + while ( i + 1 < sgs && sp.shapedGlyphs[i + 1].stringIndex == sg->stringIndex ) { + i++; + sg = &sp.shapedGlyphs[i]; + charBottom = sg->position.y + vspace; + charRight = sg->position.x + sg->advance.x; }; - if ( fpos.x >= charLeft && fpos.x < charRight ) { - Float midPoint = charLeft + ( charRight - charLeft ) * 0.5f; - if ( fpos.x < midPoint ) { - return sg->stringIndex; - } else { - return findNextInsertionIndex(); + if ( fpos.y >= charTop && fpos.y <= charBottom ) { + auto findNextInsertionIndex = [&layout, sg, i, sgs, tSize, sp]() -> Int32 { + if ( layout->isRTL() ) { + if ( i > 0 ) { + for ( auto j = i - 1; j >= 0; j-- ) { + if ( sp.shapedGlyphs[j].stringIndex > sg->stringIndex ) + return sp.shapedGlyphs[j].stringIndex; + } + } + return 0; + } else { + for ( auto j = i + 1; j < sgs; ++j ) { + if ( sp.shapedGlyphs[j].stringIndex > sg->stringIndex ) + return sp.shapedGlyphs[j].stringIndex; + } + return tSize; + } + }; + + if ( fpos.x >= charLeft && fpos.x < charRight ) { + Float midPoint = charLeft + ( charRight - charLeft ) * 0.5f; + if ( fpos.x < midPoint ) { + return sg->stringIndex; + } else { + return findNextInsertionIndex(); + } } } - } - if ( returnNearest ) { - Vector2f cellCenter( charLeft + ( charRight - charLeft ) * 0.5f, - charTop + vspace * 0.5f ); - Int32 dist = static_cast( fpos.distance( cellCenter ) ); - if ( dist < minDist ) { - minDist = dist; - nearest = sg->stringIndex; + if ( returnNearest ) { + Vector2f cellCenter( charLeft + ( charRight - charLeft ) * 0.5f, + charTop + vspace * 0.5f ); + Int32 dist = static_cast( fpos.distance( cellCenter ) ); + if ( dist < minDist ) { + minDist = dist; + nearest = sg->stringIndex; + } } } } - return ( sgs && nearest == sgs - 1 && fpos.x >= charRight ) ? tSize : nearest; } #endif @@ -1334,7 +1261,7 @@ void Text::updateWidthCache() { auto layout = TextLayout::layout( mString, mFontStyleConfig.Font, mFontStyleConfig.CharacterSize, mFontStyleConfig.Style, mTabWidth, mFontStyleConfig.OutlineThickness, {}, mTextHints, mDirection ); - mLinesWidth = layout->linesWidth; + mLinesWidth = layout->getLinesWidth(); mCachedWidth = layout->size.getWidth(); return; } @@ -1381,8 +1308,8 @@ void Text::updateWidthCache() { mCachedWidth = maxWidth; } -void Text::wrapText( const Uint32& maxWidth ) { - if ( wrapText( mString, maxWidth, mFontStyleConfig, mTabWidth ) ) +void Text::hardWrapText( const Uint32& maxWidth ) { + if ( hardWrapText( mString, maxWidth, mFontStyleConfig, mTabWidth ) ) invalidate(); } @@ -1662,81 +1589,83 @@ void Text::ensureGeometryUpdate() { mString, rFont, mFontStyleConfig.CharacterSize, mFontStyleConfig.Style, mTabWidth, mFontStyleConfig.OutlineThickness, {}, mTextHints, mDirection ); - mLinesWidth = layout->linesWidth; + mLinesWidth = layout->getLinesWidth(); mCachedWidth = layout->size.getWidth(); + for ( const ShapedTextParagraph& sp : layout->paragraphs ) { + for ( const ShapedGlyph& sg : sp.shapedGlyphs ) { + if ( mString[sg.stringIndex] == '\t' ) + continue; - for ( const ShapedGlyph& sg : layout->shapedGlyphs ) { - if ( mString[sg.stringIndex] == '\t' ) - continue; + Float currentX = x + sg.position.x; + Float currentY = y + sg.position.y; - Float currentX = x + sg.position.x; - Float currentY = y + sg.position.y; + line = std::floor( sg.position.y / vspace ); - line = std::floor( sg.position.y / vspace ); + switch ( Font::getHorizontalAlign( mAlign ) ) { + case TEXT_ALIGN_CENTER: + centerDiffX = + line < mLinesWidth.size() + ? std::trunc( ( mCachedWidth - mLinesWidth[line] ) * 0.5f ) + : 0.f; + break; + case TEXT_ALIGN_RIGHT: + centerDiffX = + line < mLinesWidth.size() ? mCachedWidth - mLinesWidth[line] : 0.f; + break; + } - switch ( Font::getHorizontalAlign( mAlign ) ) { - case TEXT_ALIGN_CENTER: - centerDiffX = line < mLinesWidth.size() - ? std::trunc( ( mCachedWidth - mLinesWidth[line] ) * 0.5f ) - : 0.f; - break; - case TEXT_ALIGN_RIGHT: - centerDiffX = - line < mLinesWidth.size() ? mCachedWidth - mLinesWidth[line] : 0.f; - break; - } + // Apply the outline + if ( mFontStyleConfig.OutlineThickness != 0 ) { + Glyph glyph = sg.font->getGlyphByIndex( + sg.glyphIndex, mFontStyleConfig.CharacterSize, bold, reqItalic, + mFontStyleConfig.OutlineThickness, + rFont->getPage( mFontStyleConfig.CharacterSize ) ); - // Apply the outline - if ( mFontStyleConfig.OutlineThickness != 0 ) { - Glyph glyph = - sg.font->getGlyphByIndex( sg.glyphIndex, mFontStyleConfig.CharacterSize, bold, - reqItalic, mFontStyleConfig.OutlineThickness, - rFont->getPage( mFontStyleConfig.CharacterSize ) ); + Float left = glyph.bounds.Left; + Float top = glyph.bounds.Top; + Float right = glyph.bounds.Left + glyph.bounds.Right; + Float bottom = glyph.bounds.Top + glyph.bounds.Bottom; + + // Add the outline glyph to the vertices + if ( glyph.bounds.Right > 0 && glyph.bounds.Bottom > 0 ) { + addGlyphQuad( mOutlineVertices, Vector2f( currentX, currentY ), glyph, + italic, mFontStyleConfig.OutlineThickness, centerDiffX ); + } + + // Update the current bounds with the outlined glyph bounds + minX = std::min( minX, currentX + left - italic * bottom - + mFontStyleConfig.OutlineThickness ); + maxX = std::max( maxX, currentX + right - italic * top - + mFontStyleConfig.OutlineThickness ); + minY = std::min( minY, currentY + top - mFontStyleConfig.OutlineThickness ); + maxY = std::max( maxY, currentY + bottom - mFontStyleConfig.OutlineThickness ); + maxW = std::max( maxW, currentX + glyph.advance - italic * top - + mFontStyleConfig.OutlineThickness ); + } + + // Extract the current glyph's description + Glyph glyph = sg.font->getGlyphByIndex( + sg.glyphIndex, mFontStyleConfig.CharacterSize, bold, reqItalic, 0, + rFont->getPage( mFontStyleConfig.CharacterSize ) ); Float left = glyph.bounds.Left; Float top = glyph.bounds.Top; Float right = glyph.bounds.Left + glyph.bounds.Right; Float bottom = glyph.bounds.Top + glyph.bounds.Bottom; - // Add the outline glyph to the vertices + // Add a quad for the current character if ( glyph.bounds.Right > 0 && glyph.bounds.Bottom > 0 ) { - addGlyphQuad( mOutlineVertices, Vector2f( currentX, currentY ), glyph, italic, - mFontStyleConfig.OutlineThickness, centerDiffX ); + addGlyphQuad( mVertices, Vector2f( currentX, currentY ), glyph, italic, 0, + centerDiffX ); } - // Update the current bounds with the outlined glyph bounds - minX = std::min( minX, currentX + left - italic * bottom - - mFontStyleConfig.OutlineThickness ); - maxX = std::max( maxX, currentX + right - italic * top - - mFontStyleConfig.OutlineThickness ); - minY = std::min( minY, currentY + top - mFontStyleConfig.OutlineThickness ); - maxY = std::max( maxY, currentY + bottom - mFontStyleConfig.OutlineThickness ); - maxW = std::max( maxW, currentX + glyph.advance - italic * top - - mFontStyleConfig.OutlineThickness ); + // Update the current bounds + minX = std::min( minX, currentX + left - italic * bottom ); + maxX = std::max( maxX, currentX + right - italic * top ); + minY = std::min( minY, currentY + top ); + maxY = std::max( maxY, currentY + bottom ); + maxW = std::max( maxW, currentX + glyph.advance - italic * top ); } - - // Extract the current glyph's description - Glyph glyph = sg.font->getGlyphByIndex( - sg.glyphIndex, mFontStyleConfig.CharacterSize, bold, reqItalic, 0, - rFont->getPage( mFontStyleConfig.CharacterSize ) ); - - Float left = glyph.bounds.Left; - Float top = glyph.bounds.Top; - Float right = glyph.bounds.Left + glyph.bounds.Right; - Float bottom = glyph.bounds.Top + glyph.bounds.Bottom; - - // Add a quad for the current character - if ( glyph.bounds.Right > 0 && glyph.bounds.Bottom > 0 ) { - addGlyphQuad( mVertices, Vector2f( currentX, currentY ), glyph, italic, 0, - centerDiffX ); - } - - // Update the current bounds - minX = std::min( minX, currentX + left - italic * bottom ); - maxX = std::max( maxX, currentX + right - italic * top ); - minY = std::min( minY, currentY + top ); - maxY = std::max( maxY, currentY + bottom ); - maxW = std::max( maxW, currentX + glyph.advance - italic * top ); } // If we're using the underlined style, add the last line @@ -2119,22 +2048,24 @@ void Text::setFillColor( const Color& color, Uint32 from, Uint32 to ) { bool bold = ( mFontStyleConfig.Style & Bold ) != 0; bool italic = ( mFontStyleConfig.Style & Italic ) != 0; - for ( const ShapedGlyph& sg : layout->shapedGlyphs ) { - if ( mString[sg.stringIndex] == '\t' ) - continue; + for ( const ShapedTextParagraph& sp : layout->paragraphs ) { + for ( const ShapedGlyph& sg : sp.shapedGlyphs ) { + if ( mString[sg.stringIndex] == '\t' ) + continue; - Glyph glyph = - sg.font->getGlyphByIndex( sg.glyphIndex, mFontStyleConfig.CharacterSize, bold, - italic, mFontStyleConfig.OutlineThickness, - rFont->getPage( mFontStyleConfig.CharacterSize ) ); + Glyph glyph = sg.font->getGlyphByIndex( + sg.glyphIndex, mFontStyleConfig.CharacterSize, bold, italic, + mFontStyleConfig.OutlineThickness, + rFont->getPage( mFontStyleConfig.CharacterSize ) ); - if ( glyph.bounds.Right > 0 && glyph.bounds.Bottom > 0 ) { - if ( vIdx + GLi->quadVertex() <= mColors.size() && sg.stringIndex >= from && - sg.stringIndex <= to ) { - for ( int i = 0; i < GLi->quadVertex(); ++i ) - mColors[vIdx + i] = color; + if ( glyph.bounds.Right > 0 && glyph.bounds.Bottom > 0 ) { + if ( vIdx + GLi->quadVertex() <= mColors.size() && sg.stringIndex >= from && + sg.stringIndex <= to ) { + for ( int i = 0; i < GLi->quadVertex(); ++i ) + mColors[vIdx + i] = color; + } + vIdx += GLi->quadVertex(); } - vIdx += GLi->quadVertex(); } } @@ -2247,24 +2178,27 @@ void Text::setFillColor( const std::vector& colors ) { bool bold = ( mFontStyleConfig.Style & Bold ) != 0; bool italic = ( mFontStyleConfig.Style & Italic ) != 0; - for ( const ShapedGlyph& sg : layout->shapedGlyphs ) { - if ( mString[sg.stringIndex] == '\t' ) - continue; + for ( const ShapedTextParagraph& sp : layout->paragraphs ) { + for ( const ShapedGlyph& sg : sp.shapedGlyphs ) { + if ( mString[sg.stringIndex] == '\t' ) + continue; - Glyph glyph = - sg.font->getGlyphByIndex( sg.glyphIndex, mFontStyleConfig.CharacterSize, bold, - italic, mFontStyleConfig.OutlineThickness, - rFont->getPage( mFontStyleConfig.CharacterSize ) ); + Glyph glyph = + sg.font->getGlyphByIndex( sg.glyphIndex, mFontStyleConfig.CharacterSize, bold, + italic, mFontStyleConfig.OutlineThickness, + rFont->getPage( mFontStyleConfig.CharacterSize ) ); - if ( glyph.bounds.Right > 0 && glyph.bounds.Bottom > 0 ) { - if ( vIdx + GLi->quadVertex() <= mColors.size() && - sg.stringIndex < colors.size() ) { - Color color = colors[sg.stringIndex]; - if ( mContainsColorEmoji && Font::isEmojiCodePoint( mString[sg.stringIndex] ) ) - color = Color( 255, 255, 255, color.a ); - for ( int i = 0; i < GLi->quadVertex(); ++i ) - mColors[vIdx + i] = color; - vIdx += GLi->quadVertex(); + if ( glyph.bounds.Right > 0 && glyph.bounds.Bottom > 0 ) { + if ( vIdx + GLi->quadVertex() <= mColors.size() && + sg.stringIndex < colors.size() ) { + Color color = colors[sg.stringIndex]; + if ( mContainsColorEmoji && + Font::isEmojiCodePoint( mString[sg.stringIndex] ) ) + color = Color( 255, 255, 255, color.a ); + for ( int i = 0; i < GLi->quadVertex(); ++i ) + mColors[vIdx + i] = color; + vIdx += GLi->quadVertex(); + } } } } diff --git a/src/eepp/graphics/textlayout.cpp b/src/eepp/graphics/textlayout.cpp index fe5415b5d..f89d5d5f6 100644 --- a/src/eepp/graphics/textlayout.cpp +++ b/src/eepp/graphics/textlayout.cpp @@ -241,6 +241,7 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, if ( !font || string.empty() ) { auto layout = std::make_shared(); + layout->paragraphs.push_back( {} ); layout->size = { 0.f, font ? (Float)font->getFontHeight( characterSize ) : 0.f }; return layout; } @@ -265,6 +266,8 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, auto resultPtr = std::make_shared(); TextLayout& result = *resultPtr; + result.paragraphs.push_back( {} ); + ShapedTextParagraph* curParagraph = &result.paragraphs.back(); struct GlyphDirCounter { int ltr{ 0 }; int rtl{ 0 }; @@ -286,7 +289,9 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, FontTrueType* currentRunFont = run.font(); if ( !currentRunFont ) return true; - result.shapedGlyphs.reserve( result.shapedGlyphs.size() + glyphCount ); + + curParagraph->shapedGlyphs.reserve( curParagraph->shapedGlyphs.size() + + glyphCount ); Uint32 prevGlyphIndex = 0; if ( isSimpleScript( props.script ) ) { @@ -310,7 +315,7 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, sg.advance = { advance, 0 }; sg.direction = (TextDirection)segment.direction; sg.script = (LangScript)props.script; - result.shapedGlyphs.emplace_back( std::move( sg ) ); + curParagraph->shapedGlyphs.emplace_back( std::move( sg ) ); pen.x += advance; prevGlyphIndex = 0; // Reset kerning after a tab @@ -337,7 +342,7 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, sg.script = (LangScript)props.script; sg.position.x = pen.x + ( glyphPos[i].x_offset / 64.f ); sg.position.y = pen.y - ( glyphPos[i].y_offset / 64.f ); - result.shapedGlyphs.emplace_back( std::move( sg ) ); + curParagraph->shapedGlyphs.emplace_back( std::move( sg ) ); pen.x += currentGlyph.advance; prevGlyphIndex = glyphInfo[i].codepoint; @@ -377,7 +382,7 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, sg.direction = (TextDirection)segment.direction; sg.script = (LangScript)props.script; sg.position = pen; - result.shapedGlyphs.emplace_back( std::move( sg ) ); + curParagraph->shapedGlyphs.emplace_back( std::move( sg ) ); pen.x += advance; prevGlyphIndex = 0; // Reset kerning after a tab @@ -401,17 +406,20 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, sg.script = (LangScript)props.script; sg.position.x = std::round( pen.x + ( glyphPos[i].x_offset / 64.f ) ); sg.position.y = std::round( pen.y - ( glyphPos[i].y_offset / 64.f ) ); - result.shapedGlyphs.emplace_back( std::move( sg ) ); + curParagraph->shapedGlyphs.emplace_back( std::move( sg ) ); pen.x += sg.advance.x; pen.y += sg.advance.y; } } if ( run.runIsNewLine() ) { - result.linesWidth.push_back( std::ceil( pen.x ) ); - maxWidth = eemax( maxWidth, result.linesWidth[result.linesWidth.size() - 1] ); + curParagraph->size.x = std::ceil( pen.x ); + maxWidth = eemax( maxWidth, curParagraph->size.x ); pen.x = 0; pen.y += vspace; + curParagraph->size.y = pen.y; + result.paragraphs.push_back( {} ); + curParagraph = &result.paragraphs.back(); } return true; } ); @@ -423,11 +431,14 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, for ( size_t i = 0; i < string.size(); ++i ) { Uint32 curChar = string[i]; if ( curChar == '\n' ) { - result.linesWidth.push_back( pen.x ); + curParagraph->size.x = pen.x; maxWidth = eemax( maxWidth, pen.x ); pen.x = 0; pen.y += vspace; + curParagraph->size.y = pen.y; prevChar = 0; + result.paragraphs.push_back( {} ); + curParagraph = &result.paragraphs.back(); continue; } if ( curChar == '\r' ) { @@ -454,7 +465,7 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, sg.script = LangScript::LATIN; sg.position = pen; pen.x += sg.advance.x; - result.shapedGlyphs.emplace_back( std::move( sg ) ); + curParagraph->shapedGlyphs.emplace_back( std::move( sg ) ); continue; } @@ -469,7 +480,7 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, sg.script = LangScript::LATIN; sg.position = pen; pen.x += sg.advance.x; - result.shapedGlyphs.emplace_back( std::move( sg ) ); + curParagraph->shapedGlyphs.emplace_back( std::move( sg ) ); } } @@ -477,8 +488,9 @@ TextLayout::Cache TextLayout::layout( const StringType& string, Font* font, if ( string[string.size() - 1] != '\n' ) pen.y += vspace; - result.linesWidth.push_back( std::ceil( pen.x ) ); - maxWidth = eemax( maxWidth, result.linesWidth[result.linesWidth.size() - 1] ); + curParagraph->size.x = std::ceil( pen.x ); + curParagraph->size.y = pen.y; + maxWidth = eemax( maxWidth, curParagraph->size.x ); result.size = { maxWidth, std::ceil( pen.y ) }; result.hasMixedDirection = !!gdc.ltr + !!gdc.rtl + !!gdc.ttb + !!gdc.btt + !!gdc.other > 1; @@ -504,4 +516,12 @@ TextLayout::Cache TextLayout::layout( const String::View& string, Font* font, baseDirection ); } +std::vector TextLayout::getLinesWidth() const { + std::vector lw; + lw.reserve( paragraphs.size() ); + for ( const auto& sp : paragraphs ) + lw.push_back( sp.size.x ); + return lw; +} + } // namespace EE::Graphics diff --git a/src/eepp/ui/uitextview.cpp b/src/eepp/ui/uitextview.cpp index c1072e58f..eda5991b0 100644 --- a/src/eepp/ui/uitextview.cpp +++ b/src/eepp/ui/uitextview.cpp @@ -333,7 +333,7 @@ void UITextView::wrapText( const Uint32& maxWidth ) { mTextCache->setString( mString ); } - mTextCache->wrapText( maxWidth ); + mTextCache->hardWrapText( maxWidth ); invalidateDraw(); } diff --git a/src/eepp/ui/uitooltip.cpp b/src/eepp/ui/uitooltip.cpp index 9b1197d55..9ef444d11 100644 --- a/src/eepp/ui/uitooltip.cpp +++ b/src/eepp/ui/uitooltip.cpp @@ -627,7 +627,7 @@ void UITooltip::wrapText( const Uint32& maxWidth ) { mTextCache->setString( mStringBuffer ); } - mTextCache->wrapText( maxWidth ); + mTextCache->hardWrapText( maxWidth ); invalidateDraw(); } diff --git a/src/examples/fonts/fonts.cpp b/src/examples/fonts/fonts.cpp index aef510d6b..8def746a8 100644 --- a/src/examples/fonts/fonts.cpp +++ b/src/examples/fonts/fonts.cpp @@ -49,11 +49,11 @@ EE_MAIN_FUNC int main( int, char*[] ) { text.setFontSize( 24 ); text.setAlign( TEXT_ALIGN_CENTER ); text.setString( Txt ); - text.wrapText( win->getWidth() - 96 ); + text.hardWrapText( win->getWidth() - 96 ); // Set the font color to a substring of the text // Create a gradient - int size = (int)Txt.size(); + int size = (int)text.getString().size(); for ( int i = 0; i < size; i++ ) { text.setFillColor( Color( 255 * i / size, 0, 0, 255 ), i, i + 1 ); diff --git a/src/tests/unit_tests/fontrendering.cpp b/src/tests/unit_tests/fontrendering.cpp index f0dccbebc..9a0cc89b1 100644 --- a/src/tests/unit_tests/fontrendering.cpp +++ b/src/tests/unit_tests/fontrendering.cpp @@ -119,9 +119,9 @@ UTEST( FontRendering, fontsTest ) { text.setFontSize( 24 ); text.setAlign( TEXT_ALIGN_CENTER ); text.setString( Txt ); - text.wrapText( win->getWidth() - 96 ); + text.hardWrapText( win->getWidth() - 96 ); - int size = (int)Txt.size(); + int size = (int)text.getString().size(); for ( int i = 0; i < size; i++ ) { text.setFillColor( Color( 255 * i / size, 0, 0, 255 ), i, i + 1 ); @@ -853,7 +853,7 @@ UTEST( FontRendering, TextWrap ) { text.setFontSize( 16 ); text.setColor( Color::Black ); text.setString( loremIpsum ); - text.wrapText( 500 ); + text.hardWrapText( 500 ); text.draw( pos.x, pos.y ); text.setAlign( TEXT_ALIGN_CENTER ); diff --git a/src/tools/ecode/plugins/git/gitplugin.cpp b/src/tools/ecode/plugins/git/gitplugin.cpp index f3c41130a..ca7e47419 100644 --- a/src/tools/ecode/plugins/git/gitplugin.cpp +++ b/src/tools/ecode/plugins/git/gitplugin.cpp @@ -562,8 +562,8 @@ void GitPlugin::displayTooltip( UICodeEditor* editor, const Git::Blame& blame, blame.commitMessage.c_str() ) : blame.error ); - Text::wrapText( str, PixelDensity::dpToPx( 400 ), tooltip->getFontStyleConfig(), - editor->getTabWidth() ); + Text::hardWrapText( str, PixelDensity::dpToPx( 400 ), tooltip->getFontStyleConfig(), + editor->getTabWidth() ); editor->setTooltipText( str );