⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 294758 in webkit


Ignore:
Timestamp:
May 24, 2022, 12:43:40 PM (4 years ago)
Author:
commit-queue@webkit.org
Message:

Simplify ExpansionBehavior to avoid using getters/setters
https://bugs.webkit.org/show_bug.cgi?id=240823

Patch by Kiet Ho <Kiet Ho> on 2022-05-24
Reviewed by Cameron McCormack.

  • Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp:

(WebCore::Layout::Line::applyRunExpansion):

  • Source/WebCore/platform/graphics/ComplexTextController.cpp:

(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

  • Source/WebCore/platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::expansionOpportunityCountInternal):

  • Source/WebCore/platform/graphics/TextRun.cpp:
  • Source/WebCore/platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::WidthIterator):
(WebCore::WidthIterator::calculateAdditionalWidth const):

  • Source/WebCore/platform/text/TextFlags.h:

(WebCore::ExpansionBehavior::ExpansionBehavior):
(WebCore::ExpansionBehavior::defaultBehavior):
(WebCore::ExpansionBehavior::allowRightOnly):
(WebCore::ExpansionBehavior::allowLeftOnly):
(WebCore::ExpansionBehavior::forceLeftOnly):
(WebCore::ExpansionBehavior::forbidAll):
(WebCore::ExpansionBehavior::left const): Deleted.
(WebCore::ExpansionBehavior::setLeft): Deleted.
(WebCore::ExpansionBehavior::right const): Deleted.
(WebCore::ExpansionBehavior::setRight): Deleted.

  • Source/WebCore/rendering/LegacyInlineTextBox.cpp:

(WebCore::LegacyInlineTextBox::expansionBehavior const):

  • Source/WebCore/rendering/LegacyLineLayout.cpp:

(WebCore::expansionBehaviorForInlineTextBox):
(WebCore::applyExpansionBehavior):

Canonical link: https://commits.webkit.org/250926@main

Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp

    r294607 r294758  
    124124                expansionBehavior = ExpansionBehavior::forbidAll();
    125125            else {
    126                 expansionBehavior.setLeft(runIsAfterExpansion ? ExpansionBehavior::Behavior::Forbid : ExpansionBehavior::Behavior::Allow);
    127                 expansionBehavior.setRight(ExpansionBehavior::Behavior::Allow);
     126                expansionBehavior.left = runIsAfterExpansion ? ExpansionBehavior::Behavior::Forbid : ExpansionBehavior::Behavior::Allow;
     127                expansionBehavior.right = ExpansionBehavior::Behavior::Allow;
    128128                auto& textContent = *run.textContent();
    129129                // Trailing hanging whitespace sequence is ignored when computing the expansion opportunities.
     
    145145    // Forbid right expansion in the last run to prevent trailing expansion at the end of the line.
    146146    if (lastRunIndexWithContent && runsExpansionOpportunities[*lastRunIndexWithContent]) {
    147         runsExpansionBehaviors[*lastRunIndexWithContent].setRight(ExpansionBehavior::Behavior::Forbid);
     147        runsExpansionBehaviors[*lastRunIndexWithContent].right = ExpansionBehavior::Behavior::Forbid;
    148148        if (runIsAfterExpansion) {
    149149            // When the last run has an after expansion (e.g. CJK ideograph) we need to remove this trailing expansion opportunity.
  • trunk/Source/WebCore/platform/graphics/ComplexTextController.cpp

    r294607 r294758  
    674674void ComplexTextController::adjustGlyphsAndAdvances()
    675675{
    676     bool afterExpansion = m_run.expansionBehavior().left() == ExpansionBehavior::Behavior::Forbid;
     676    bool afterExpansion = m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Forbid;
    677677    size_t runCount = m_complexTextRuns.size();
    678678    bool hasExtraSpacing = (m_font.letterSpacing() || m_font.wordSpacing() || m_expansion) && !m_run.spacingDisabled();
    679     bool runForcesLeftExpansion = m_run.expansionBehavior().left() == ExpansionBehavior::Behavior::Force;
    680     bool runForcesRightExpansion = m_run.expansionBehavior().right() == ExpansionBehavior::Behavior::Force;
    681     bool runForbidsLeftExpansion = m_run.expansionBehavior().left() == ExpansionBehavior::Behavior::Forbid;
    682     bool runForbidsRightExpansion = m_run.expansionBehavior().right() == ExpansionBehavior::Behavior::Forbid;
     679    bool runForcesLeftExpansion = m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Force;
     680    bool runForcesRightExpansion = m_run.expansionBehavior().right == ExpansionBehavior::Behavior::Force;
     681    bool runForbidsLeftExpansion = m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Forbid;
     682    bool runForbidsRightExpansion = m_run.expansionBehavior().right == ExpansionBehavior::Behavior::Forbid;
    683683
    684684    // We are iterating in glyph order, not string order. Compare this to WidthIterator::advanceInternal()
  • trunk/Source/WebCore/platform/graphics/FontCascade.cpp

    r294607 r294758  
    963963{
    964964    unsigned count = 0;
    965     bool isAfterExpansion = expansionBehavior.left() == ExpansionBehavior::Behavior::Forbid;
    966     if (expansionBehavior.left() == ExpansionBehavior::Behavior::Force) {
     965    bool isAfterExpansion = expansionBehavior.left == ExpansionBehavior::Behavior::Forbid;
     966    if (expansionBehavior.left == ExpansionBehavior::Behavior::Force) {
    967967        ++count;
    968968        isAfterExpansion = true;
     
    985985        }
    986986    }
    987     if (!isAfterExpansion && expansionBehavior.right() == ExpansionBehavior::Behavior::Force) {
     987    if (!isAfterExpansion && expansionBehavior.right == ExpansionBehavior::Behavior::Force) {
    988988        ++count;
    989989        isAfterExpansion = true;
    990     } else if (isAfterExpansion && expansionBehavior.right() == ExpansionBehavior::Behavior::Forbid) {
     990    } else if (isAfterExpansion && expansionBehavior.right == ExpansionBehavior::Behavior::Forbid) {
    991991        ASSERT(count);
    992992        --count;
     
    999999{
    10001000    unsigned count = 0;
    1001     bool isAfterExpansion = expansionBehavior.left() == ExpansionBehavior::Behavior::Forbid;
    1002     if (expansionBehavior.left() == ExpansionBehavior::Behavior::Force) {
     1001    bool isAfterExpansion = expansionBehavior.left == ExpansionBehavior::Behavior::Forbid;
     1002    if (expansionBehavior.left == ExpansionBehavior::Behavior::Force) {
    10031003        ++count;
    10041004        isAfterExpansion = true;
     
    10471047        }
    10481048    }
    1049     if (!isAfterExpansion && expansionBehavior.right() == ExpansionBehavior::Behavior::Force) {
     1049    if (!isAfterExpansion && expansionBehavior.right == ExpansionBehavior::Behavior::Force) {
    10501050        ++count;
    10511051        isAfterExpansion = true;
    1052     } else if (isAfterExpansion && expansionBehavior.right() == ExpansionBehavior::Behavior::Forbid) {
     1052    } else if (isAfterExpansion && expansionBehavior.right == ExpansionBehavior::Behavior::Forbid) {
    10531053        ASSERT(count);
    10541054        --count;
  • trunk/Source/WebCore/platform/graphics/WidthIterator.cpp

    r294607 r294758  
    4242    , m_fallbackFonts(fallbackFonts)
    4343    , m_expansion(run.expansion())
    44     , m_isAfterExpansion(run.expansionBehavior().left() == ExpansionBehavior::Behavior::Forbid)
     44    , m_isAfterExpansion(run.expansionBehavior().left == ExpansionBehavior::Behavior::Forbid)
    4545    , m_accountForGlyphBounds(accountForGlyphBounds)
    4646    , m_enableKerning(font.enableKerning())
     
    382382                std::swap(isLeftmostCharacter, isRightmostCharacter);
    383383
    384             bool forceLeftExpansion = isLeftmostCharacter && m_run.expansionBehavior().left() == ExpansionBehavior::Behavior::Force;
    385             bool forceRightExpansion = isRightmostCharacter && m_run.expansionBehavior().right() == ExpansionBehavior::Behavior::Force;
    386             bool forbidLeftExpansion = isLeftmostCharacter && m_run.expansionBehavior().left() == ExpansionBehavior::Behavior::Forbid;
    387             bool forbidRightExpansion = isRightmostCharacter && m_run.expansionBehavior().right() == ExpansionBehavior::Behavior::Forbid;
     384            bool forceLeftExpansion = isLeftmostCharacter && m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Force;
     385            bool forceRightExpansion = isRightmostCharacter && m_run.expansionBehavior().right == ExpansionBehavior::Behavior::Force;
     386            bool forbidLeftExpansion = isLeftmostCharacter && m_run.expansionBehavior().left == ExpansionBehavior::Behavior::Forbid;
     387            bool forbidRightExpansion = isRightmostCharacter && m_run.expansionBehavior().right == ExpansionBehavior::Behavior::Forbid;
    388388
    389389            bool isIdeograph = FontCascade::canExpandAroundIdeographsInComplexText() && FontCascade::isCJKIdeographOrSymbol(character);
  • trunk/Source/WebCore/platform/text/TextFlags.h

    r294607 r294758  
    5959};
    6060
    61 class ExpansionBehavior {
    62 public:
     61struct ExpansionBehavior {
    6362    enum class Behavior : uint8_t {
    6463        Forbid,
     
    7069
    7170    ExpansionBehavior(Behavior left, Behavior right)
    72         : m_left(static_cast<uint8_t>(left))
    73         , m_right(static_cast<uint8_t>(right))
    74     {
    75     }
    76 
    77     static const ExpansionBehavior defaultBehavior()
     71        : left(left)
     72        , right(right)
     73    {
     74    }
     75
     76    static ExpansionBehavior defaultBehavior()
    7877    {
    7978        return { };
    8079    }
    8180
    82     static const ExpansionBehavior allowRightOnly()
     81    static ExpansionBehavior allowRightOnly()
    8382    {
    8483        return { Behavior::Forbid, Behavior::Allow };
    8584    }
    8685
    87     static const ExpansionBehavior allowLeftOnly()
     86    static ExpansionBehavior allowLeftOnly()
    8887    {
    8988        return { Behavior::Allow, Behavior::Forbid };
    9089    }
    9190
    92     static const ExpansionBehavior forceLeftOnly()
     91    static ExpansionBehavior forceLeftOnly()
    9392    {
    9493        return { Behavior::Force, Behavior::Forbid };
    9594    }
    9695
    97     static const ExpansionBehavior forbidAll()
     96    static ExpansionBehavior forbidAll()
    9897    {
    9998        return { Behavior::Forbid, Behavior::Forbid };
    10099    }
    101100
    102     Behavior left() const { return static_cast<Behavior>(m_left); }
    103     void setLeft(Behavior behavior) { m_left = static_cast<uint8_t>(behavior); }
    104 
    105     Behavior right() const { return static_cast<Behavior>(m_right); }
    106     void setRight(Behavior behavior) { m_right = static_cast<uint8_t>(behavior); }
    107 
    108 private:
    109     // Default behavior follows the previous implementation:
    110     // forbids left and allows right expansions.
    111     uint8_t m_left : 2 { static_cast<uint8_t>(Behavior::Forbid) };
    112     uint8_t m_right : 2 { static_cast<uint8_t>(Behavior::Allow) };
     101    Behavior left : 2 { Behavior::Forbid };
     102    Behavior right : 2 { Behavior::Allow };
    113103};
    114104
  • trunk/Source/WebCore/rendering/LegacyInlineTextBox.cpp

    r294607 r294758  
    492492
    493493    if (forceLeftExpansion())
    494         behavior.setLeft(ExpansionBehavior::Behavior::Force);
     494        behavior.left = ExpansionBehavior::Behavior::Force;
    495495    else if (canHaveLeftExpansion())
    496         behavior.setLeft(ExpansionBehavior::Behavior::Allow);
     496        behavior.left = ExpansionBehavior::Behavior::Allow;
    497497    else
    498         behavior.setLeft(ExpansionBehavior::Behavior::Forbid);
     498        behavior.left = ExpansionBehavior::Behavior::Forbid;
    499499
    500500    if (forceRightExpansion())
    501         behavior.setRight(ExpansionBehavior::Behavior::Force);
     501        behavior.right = ExpansionBehavior::Behavior::Force;
    502502    else if (expansion() && nextLeafOnLine() && !nextLeafOnLine()->isLineBreak())
    503         behavior.setRight(ExpansionBehavior::Behavior::Allow);
     503        behavior.right = ExpansionBehavior::Behavior::Allow;
    504504    else
    505         behavior.setRight(ExpansionBehavior::Behavior::Forbid);
     505        behavior.right = ExpansionBehavior::Behavior::Forbid;
    506506
    507507    return behavior;
  • trunk/Source/WebCore/rendering/LegacyLineLayout.cpp

    r294699 r294758  
    744744                        if (FontCascade::leftExpansionOpportunity(downcast<RenderText>(leafChild->renderer()).stringView(), leafChild->direction())) {
    745745                            setRightExpansion = true;
    746                             result.setRight(ExpansionBehavior::Behavior::Force);
     746                            result.right = ExpansionBehavior::Behavior::Force;
    747747                        }
    748748                    }
     
    759759                        if (FontCascade::rightExpansionOpportunity(downcast<RenderText>(leafChild->renderer()).stringView(), leafChild->direction())) {
    760760                            setLeftExpansion = true;
    761                             result.setLeft(ExpansionBehavior::Behavior::Force);
     761                            result.left = ExpansionBehavior::Behavior::Force;
    762762                        }
    763763                    }
     
    770770            if (&textBox == rubyBase.firstRootBox()->firstLeafDescendant()) {
    771771                setLeftExpansion = true;
    772                 result.setLeft(ExpansionBehavior::Behavior::Forbid);
     772                result.left = ExpansionBehavior::Behavior::Forbid;
    773773            } if (&textBox == rubyBase.firstRootBox()->lastLeafDescendant()) {
    774774                setRightExpansion = true;
    775                 result.setRight(ExpansionBehavior::Behavior::Forbid);
     775                result.right = ExpansionBehavior::Behavior::Forbid;
    776776            }
    777777        }
    778778    }
    779779    if (!setLeftExpansion)
    780         result.setLeft(isAfterExpansion ? ExpansionBehavior::Behavior::Forbid : ExpansionBehavior::Behavior::Allow);
     780        result.left = isAfterExpansion ? ExpansionBehavior::Behavior::Forbid : ExpansionBehavior::Behavior::Allow;
    781781    if (!setRightExpansion)
    782         result.setRight(ExpansionBehavior::Behavior::Allow);
     782        result.right = ExpansionBehavior::Behavior::Allow;
    783783    return result;
    784784}
     
    786786static inline void applyExpansionBehavior(LegacyInlineTextBox& textBox, ExpansionBehavior expansionBehavior)
    787787{
    788     switch (expansionBehavior.left()) {
     788    switch (expansionBehavior.left) {
    789789    case ExpansionBehavior::Behavior::Force:
    790790        textBox.setForceLeftExpansion();
     
    801801    };
    802802
    803     switch (expansionBehavior.right()) {
     803    switch (expansionBehavior.right) {
    804804    case ExpansionBehavior::Behavior::Force:
    805805        textBox.setForceRightExpansion();
Note: See TracChangeset for help on using the changeset viewer.