diff options
Diffstat (limited to 'Source/WebCore/rendering/line/TrailingObjects.cpp')
-rw-r--r-- | Source/WebCore/rendering/line/TrailingObjects.cpp | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/Source/WebCore/rendering/line/TrailingObjects.cpp b/Source/WebCore/rendering/line/TrailingObjects.cpp index 96490cd5b..11ce2b6f6 100644 --- a/Source/WebCore/rendering/line/TrailingObjects.cpp +++ b/Source/WebCore/rendering/line/TrailingObjects.cpp @@ -29,44 +29,44 @@ namespace WebCore { -void TrailingObjects::updateMidpointsForTrailingBoxes(LineMidpointState& lineMidpointState, const InlineIterator& lBreak, CollapseFirstSpaceOrNot collapseFirstSpace) +void TrailingObjects::updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const InlineIterator& lBreak, CollapseFirstSpaceOrNot collapseFirstSpace) { if (!m_whitespace) return; - // This object is either going to be part of the last midpoint, or it is going to be the actual endpoint. + // This object is either going to be part of the last transition, or it is going to be the actual endpoint. // In both cases we just decrease our pos by 1 level to exclude the space, allowing it to - in effect - collapse into the newline. - if (lineMidpointState.numMidpoints() % 2) { - // Find the trailing space object's midpoint. - int trailingSpaceMidpoint = lineMidpointState.numMidpoints() - 1; - for ( ; trailingSpaceMidpoint > 0 && lineMidpointState.midpoints()[trailingSpaceMidpoint].renderer() != m_whitespace; --trailingSpaceMidpoint) { } - ASSERT(trailingSpaceMidpoint >= 0); + if (lineWhitespaceCollapsingState.numTransitions() % 2) { + // Find the trailing space object's transition. + int trailingSpaceTransition = lineWhitespaceCollapsingState.numTransitions() - 1; + for ( ; trailingSpaceTransition > 0 && lineWhitespaceCollapsingState.transitions()[trailingSpaceTransition].renderer() != m_whitespace; --trailingSpaceTransition) { } + ASSERT(trailingSpaceTransition >= 0); if (collapseFirstSpace == CollapseFirstSpace) - lineMidpointState.midpoints()[trailingSpaceMidpoint].setOffset(lineMidpointState.midpoints()[trailingSpaceMidpoint].offset() -1); + lineWhitespaceCollapsingState.decrementTransitionAt(trailingSpaceTransition); - // Now make sure every single trailingPositionedBox following the trailingSpaceMidpoint properly stops and starts + // Now make sure every single trailingPositionedBox following the trailingSpaceTransition properly stops and starts // ignoring spaces. - size_t currentMidpoint = trailingSpaceMidpoint + 1; + size_t currentTransition = trailingSpaceTransition + 1; for (size_t i = 0; i < m_boxes.size(); ++i) { - if (currentMidpoint >= lineMidpointState.numMidpoints()) { - // We don't have a midpoint for this box yet. - lineMidpointState.ensureLineBoxInsideIgnoredSpaces(m_boxes[i]); + if (currentTransition >= lineWhitespaceCollapsingState.numTransitions()) { + // We don't have a transition for this box yet. + lineWhitespaceCollapsingState.ensureLineBoxInsideIgnoredSpaces(m_boxes[i]); } else { - ASSERT(lineMidpointState.midpoints()[currentMidpoint].renderer() == m_boxes[i]); - ASSERT(lineMidpointState.midpoints()[currentMidpoint + 1].renderer() == m_boxes[i]); + ASSERT(lineWhitespaceCollapsingState.transitions()[currentTransition].renderer() == &(m_boxes[i].get())); + ASSERT(lineWhitespaceCollapsingState.transitions()[currentTransition + 1].renderer() == &(m_boxes[i].get())); } - currentMidpoint += 2; + currentTransition += 2; } } else if (!lBreak.renderer()) { ASSERT(m_whitespace->isText()); ASSERT(collapseFirstSpace == CollapseFirstSpace); - // Add a new end midpoint that stops right at the very end. + // Add a new end transition that stops right at the very end. unsigned length = m_whitespace->textLength(); unsigned pos = length >= 2 ? length - 2 : UINT_MAX; InlineIterator endMid(0, m_whitespace, pos); - lineMidpointState.startIgnoringSpaces(endMid); + lineWhitespaceCollapsingState.startIgnoringSpaces(endMid); for (size_t i = 0; i < m_boxes.size(); ++i) - lineMidpointState.ensureLineBoxInsideIgnoredSpaces(m_boxes[i]); + lineWhitespaceCollapsingState.ensureLineBoxInsideIgnoredSpaces(m_boxes[i]); } } |