Changeset 283367 in webkit
- Timestamp:
- Oct 1, 2021, 8:12:38 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 20 edited
- 2 moved
-
ChangeLog (modified) (1 diff)
-
Sources.txt (modified) (2 diffs)
-
WebCore.xcodeproj/project.pbxproj (modified) (7 diffs)
-
dom/Position.cpp (modified) (1 diff)
-
layout/integration/LayoutIntegrationCoverage.cpp (modified) (1 diff)
-
rendering/LegacyInlineIterator.cpp (moved) (moved from trunk/Source/WebCore/rendering/InlineIterator.cpp ) (1 diff)
-
rendering/LegacyInlineIterator.h (moved) (moved from trunk/Source/WebCore/rendering/InlineIterator.h ) (17 diffs)
-
rendering/LegacyLineLayout.cpp (modified) (18 diffs)
-
rendering/LegacyLineLayout.h (modified) (2 diffs)
-
rendering/LegacyRootInlineBox.h (modified) (1 diff)
-
rendering/RenderBlock.cpp (modified) (1 diff)
-
rendering/RenderBlockFlow.cpp (modified) (1 diff)
-
rendering/RenderInline.cpp (modified) (1 diff)
-
rendering/RenderInline.h (modified) (1 diff)
-
rendering/RenderTreeAsText.cpp (modified) (1 diff)
-
rendering/line/BreakingContext.h (modified) (17 diffs)
-
rendering/line/LineBreaker.cpp (modified) (2 diffs)
-
rendering/line/LineBreaker.h (modified) (3 diffs)
-
rendering/line/LineInlineHeaders.h (modified) (2 diffs)
-
rendering/line/TrailingObjects.cpp (modified) (2 diffs)
-
rendering/line/TrailingObjects.h (modified) (3 diffs)
-
rendering/updating/RenderTreeBuilderList.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r283365 r283367 1 2021-10-01 Antti Koivisto <antti@apple.com> 2 3 Rename InlineIterator to LegacyInlineIterator 4 https://bugs.webkit.org/show_bug.cgi?id=231077 5 6 Reviewed by Alan Bujtas. 7 8 It is only used by the legacy line layout. 9 10 * Sources.txt: 11 * WebCore.xcodeproj/project.pbxproj: 12 * dom/Position.cpp: 13 * layout/integration/LayoutIntegrationCoverage.cpp: 14 * rendering/LegacyInlineIterator.cpp: Renamed from Source/WebCore/rendering/InlineIterator.cpp. 15 (WebCore::LegacyInlineIterator::surrogateTextDirection const): 16 * rendering/LegacyInlineIterator.h: Renamed from Source/WebCore/rendering/InlineIterator.h. 17 (WebCore::LegacyInlineIterator::LegacyInlineIterator): 18 (WebCore::operator==): 19 (WebCore::operator!=): 20 (WebCore::nextInlineRendererSkippingEmpty): 21 (WebCore::firstInlineRendererSkippingEmpty): 22 23 Rename this to not say "bidi". 24 25 (WebCore::LegacyInlineIterator::fastIncrementInTextNode): 26 (WebCore::LegacyInlineIterator::incrementByCodePointInTextNode): 27 (WebCore::LegacyInlineIterator::setOffset): 28 (WebCore::LegacyInlineIterator::setRefersToEndOfPreviousNode): 29 (WebCore::LegacyInlineIterator::increment): 30 (WebCore::LegacyInlineIterator::fastDecrement): 31 (WebCore::LegacyInlineIterator::atEnd const): 32 (WebCore::LegacyInlineIterator::characterAt const): 33 (WebCore::LegacyInlineIterator::current const): 34 (WebCore::LegacyInlineIterator::previousInSameNode const): 35 (WebCore::LegacyInlineIterator::direction const): 36 (WebCore::numberOfIsolateAncestors): 37 (WebCore::InlineBidiResolver::appendRunInternal): 38 * rendering/LegacyLineLayout.cpp: 39 (WebCore::determineDirectionality): 40 (WebCore::LegacyLineLayout::appendRunsForObject): 41 (WebCore::constructBidiRunsForSegment): 42 (WebCore::LegacyLineLayout::createLineBoxesFromBidiRuns): 43 (WebCore::LegacyLineLayout::layoutRunsAndFloats): 44 (WebCore::LegacyLineLayout::restartLayoutRunsAndFloatsInRange): 45 (WebCore::LegacyLineLayout::layoutRunsAndFloatsInRange): 46 (WebCore::LegacyLineLayout::determineStartPosition): 47 (WebCore::LegacyLineLayout::determineEndPosition): 48 (WebCore::LegacyLineLayout::matchedEndLine): 49 * rendering/LegacyLineLayout.h: 50 * rendering/LegacyRootInlineBox.h: 51 * rendering/RenderBlock.cpp: 52 * rendering/RenderBlockFlow.cpp: 53 * rendering/RenderInline.cpp: 54 (WebCore::isEmptyInline): 55 * rendering/RenderInline.h: 56 * rendering/RenderTreeAsText.cpp: 57 * rendering/line/BreakingContext.h: 58 (WebCore::BreakingContext::lineBreak): 59 (WebCore::BreakingContext::initializeForCurrentObject): 60 (WebCore::BreakingContext::handleBR): 61 (WebCore::shouldSkipWhitespaceAfterStartObject): 62 (WebCore::BreakingContext::handleReplaced): 63 (WebCore::iteratorIsBeyondEndOfRenderCombineText): 64 (WebCore::ensureCharacterGetsLineBox): 65 (WebCore::tryHyphenating): 66 (WebCore::BreakingContext::handleText): 67 (WebCore::BreakingContext::trailingSpacesHang): 68 (WebCore::checkWhitespaceCollapsingTransitions): 69 (WebCore::BreakingContext::handleEndOfLine): 70 * rendering/line/LineBreaker.cpp: 71 (WebCore::LineBreaker::skipTrailingWhitespace): 72 (WebCore::LineBreaker::nextLineBreak): 73 * rendering/line/LineBreaker.h: 74 * rendering/line/LineInlineHeaders.h: 75 (WebCore::skipNonBreakingSpace): 76 (WebCore::requiresLineBox): 77 * rendering/line/TrailingObjects.cpp: 78 (WebCore::TrailingObjects::updateWhitespaceCollapsingTransitionsForTrailingBoxes): 79 * rendering/line/TrailingObjects.h: 80 * rendering/updating/RenderTreeBuilderList.cpp: 81 (WebCore::generatesLineBoxesForInlineChild): 82 1 83 2021-10-01 Antti Koivisto <antti@apple.com> 2 84 -
trunk/Source/WebCore/Sources.txt
r283347 r283367 2215 2215 rendering/ImageQualityController.cpp 2216 2216 rendering/InlineBoxPainter.cpp 2217 rendering/InlineIterator.cpp2218 2217 rendering/LayerAncestorClippingStack.cpp 2219 2218 rendering/LayerOverlapMap.cpp … … 2224 2223 rendering/LegacyInlineElementBox.cpp 2225 2224 rendering/LegacyInlineFlowBox.cpp 2225 rendering/LegacyInlineIterator.cpp 2226 2226 rendering/LegacyLineLayout.cpp 2227 2227 rendering/LegacyRootInlineBox.cpp -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r283365 r283367 4223 4223 BCE65BEB0EACDF16007E4533 /* Length.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE65BE90EACDF16007E4533 /* Length.h */; settings = {ATTRIBUTES = (Private, ); }; }; 4224 4224 BCE691E5264637FC00EBDC3A /* PixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = BC4839BA2646181A00A28B62 /* PixelBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 4225 BCE789161120D6080060ECE5 /* InlineIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE789151120D6080060ECE5 /*InlineIterator.h */; };4225 BCE789161120D6080060ECE5 /* LegacyInlineIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE789151120D6080060ECE5 /* LegacyInlineIterator.h */; }; 4226 4226 BCE789861120E7A60060ECE5 /* BidiRun.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE789851120E7A60060ECE5 /* BidiRun.h */; }; 4227 4227 BCE93F451517C567008CCF74 /* RenderFragmentContainerSet.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE93F441517C567008CCF74 /* RenderFragmentContainerSet.h */; }; … … 11679 11679 930AACA0250ED4110013DA9F /* JSCSSGroupingRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSGroupingRule.h; sourceTree = "<group>"; }; 11680 11680 930AACA1250ED4110013DA9F /* JSCSSGroupingRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSGroupingRule.cpp; sourceTree = "<group>"; }; 11681 930C90DC19CF965300D6C21A /* InlineIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path =InlineIterator.cpp; sourceTree = "<group>"; };11681 930C90DC19CF965300D6C21A /* LegacyInlineIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LegacyInlineIterator.cpp; sourceTree = "<group>"; }; 11682 11682 93153BD914181F7A00FCF5BE /* missingImage@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "missingImage@2x.png"; sourceTree = "<group>"; }; 11683 11683 93153BDB141959BB00FCF5BE /* textAreaResizeCorner.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = textAreaResizeCorner.png; sourceTree = "<group>"; }; … … 14673 14673 BCE65BE90EACDF16007E4533 /* Length.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Length.h; sourceTree = "<group>"; }; 14674 14674 BCE65D310EAD1211007E4533 /* Theme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Theme.cpp; sourceTree = "<group>"; }; 14675 BCE789151120D6080060ECE5 /* InlineIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =InlineIterator.h; sourceTree = "<group>"; };14675 BCE789151120D6080060ECE5 /* LegacyInlineIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyInlineIterator.h; sourceTree = "<group>"; }; 14676 14676 BCE789851120E7A60060ECE5 /* BidiRun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BidiRun.h; sourceTree = "<group>"; }; 14677 14677 BCE7898A1120E8020060ECE5 /* BidiRun.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BidiRun.cpp; sourceTree = "<group>"; }; … … 29966 29966 E4F819C226FB4EAF0094E162 /* InlineBoxPainter.cpp */, 29967 29967 E4F819C526FB4EBF0094E162 /* InlineBoxPainter.h */, 29968 930C90DC19CF965300D6C21A /* InlineIterator.cpp */,29969 BCE789151120D6080060ECE5 /* InlineIterator.h */,29970 29968 E47CEBC72706EF5100B8D8F5 /* InlineWalker.h */, 29971 29969 0FEC120B22BF2CC7004E9D35 /* LayerAncestorClippingStack.cpp */, … … 29986 29984 A8CFF5DD0A155A05000A4234 /* LegacyInlineFlowBox.cpp */, 29987 29985 A8CFF5DC0A155A05000A4234 /* LegacyInlineFlowBox.h */, 29986 930C90DC19CF965300D6C21A /* LegacyInlineIterator.cpp */, 29987 BCE789151120D6080060ECE5 /* LegacyInlineIterator.h */, 29988 29988 BCEA481A097D93020094C9E4 /* LegacyInlineTextBox.cpp */, 29989 29989 BCEA481B097D93020094C9E4 /* LegacyInlineTextBox.h */, … … 32980 32980 111FA1C726F0F30F003B8F16 /* InlineInvalidation.h in Headers */, 32981 32981 6FE7CFA22177EEF2005B1573 /* InlineItem.h in Headers */, 32982 BCE789161120D6080060ECE5 /* InlineIterator.h in Headers */,32983 32982 6FAAE71326A2814B00E07502 /* InlineLevelBox.h in Headers */, 32984 32983 6F0CD695229ED32700C5994E /* InlineLine.h in Headers */, … … 34011 34010 B57CB52E182A3EFC0079A647 /* LegacyInlineElementBox.h in Headers */, 34012 34011 A8CFF5E30A155A05000A4234 /* LegacyInlineFlowBox.h in Headers */, 34012 BCE789161120D6080060ECE5 /* LegacyInlineIterator.h in Headers */, 34013 34013 BCEA485A097D93020094C9E4 /* LegacyInlineTextBox.h in Headers */, 34014 34014 E4E94D6122FF158A00DD191F /* LegacyLineLayout.h in Headers */, -
trunk/Source/WebCore/dom/Position.cpp
r283105 r283367 36 36 #include "HTMLParserIdioms.h" 37 37 #include "HTMLTableElement.h" 38 #include "InlineIterator.h"39 38 #include "InlineRunAndOffset.h" 40 39 #include "LayoutIntegrationLineIterator.h" -
trunk/Source/WebCore/layout/integration/LayoutIntegrationCoverage.cpp
r283365 r283367 28 28 29 29 #include "HTMLTextFormControlElement.h" 30 #include "Inline Iterator.h"30 #include "InlineWalker.h" 31 31 #include "Logging.h" 32 32 #include "RenderBlockFlow.h" -
trunk/Source/WebCore/rendering/LegacyInlineIterator.cpp
r283366 r283367 26 26 27 27 #include "config.h" 28 #include " InlineIterator.h"28 #include "LegacyInlineIterator.h" 29 29 30 30 namespace WebCore { 31 31 32 UCharDirection InlineIterator::surrogateTextDirection(UChar currentCodeUnit) const32 UCharDirection LegacyInlineIterator::surrogateTextDirection(UChar currentCodeUnit) const 33 33 { 34 34 RenderText& text = downcast<RenderText>(*m_renderer); -
trunk/Source/WebCore/rendering/LegacyInlineIterator.h
r283366 r283367 48 48 49 49 // This class is used to RenderInline subtrees, stepping by character within the 50 // text children. InlineIterator will use bidiNext to find the next RenderText50 // text children. LegacyInlineIterator will use next to find the next RenderText 51 51 // optionally notifying a BidiResolver every time it steps into/out of a RenderInline. 52 class InlineIterator {52 class LegacyInlineIterator { 53 53 public: 54 InlineIterator()55 { 56 } 57 58 InlineIterator(RenderElement* root, RenderObject* o, unsigned p)54 LegacyInlineIterator() 55 { 56 } 57 58 LegacyInlineIterator(RenderElement* root, RenderObject* o, unsigned p) 59 59 : m_root(root) 60 60 , m_renderer(o) … … 123 123 unsigned m_pos { 0 }; 124 124 125 // There are a couple places where we want to decrement an InlineIterator.125 // There are a couple places where we want to decrement an LegacyInlineIterator. 126 126 // Usually this take the form of decrementing m_pos; however, m_pos might be 0. 127 // However, we shouldn't ever need to decrement an InlineIterator more than127 // However, we shouldn't ever need to decrement an LegacyInlineIterator more than 128 128 // once, so rather than implementing a decrement() function which traverses 129 129 // nodes, we can simply keep track of this state and handle it. … … 131 131 }; 132 132 133 inline bool operator==(const InlineIterator& it1, constInlineIterator& it2)133 inline bool operator==(const LegacyInlineIterator& it1, const LegacyInlineIterator& it2) 134 134 { 135 135 return it1.offset() == it2.offset() && it1.renderer() == it2.renderer(); 136 136 } 137 137 138 inline bool operator!=(const InlineIterator& it1, constInlineIterator& it2)138 inline bool operator!=(const LegacyInlineIterator& it1, const LegacyInlineIterator& it2) 139 139 { 140 140 return it1.offset() != it2.offset() || it1.renderer() != it2.renderer(); … … 200 200 } 201 201 202 static bool isEmptyInline(const RenderInline& renderer)203 {204 for (auto& current : childrenOfType<RenderObject>(renderer)) {205 if (current.isFloatingOrOutOfFlowPositioned())206 continue;207 if (is<RenderText>(current)) {208 if (!downcast<RenderText>(current).isAllCollapsibleWhitespace())209 return false;210 continue;211 }212 if (!is<RenderInline>(current) || !isEmptyInline(downcast<RenderInline>(current)))213 return false;214 }215 return true;216 }217 218 202 template <class Observer> 219 static inline RenderObject* bidiNextSkippingEmptyInlines(RenderElement& root, RenderObject* current, Observer* observer)203 static inline RenderObject* nextInlineRendererSkippingEmpty(RenderElement& root, RenderObject* current, Observer* observer) 220 204 { 221 205 RenderObject* next = nullptr; … … 254 238 255 239 // This makes callers cleaner as they don't have to specify a type for the observer when not providing one. 256 static inline RenderObject* bidiNextSkippingEmptyInlines(RenderElement& root, RenderObject* current)240 static inline RenderObject* nextInlineRendererSkippingEmpty(RenderElement& root, RenderObject* current) 257 241 { 258 242 InlineBidiResolver* observer = nullptr; 259 return bidiNextSkippingEmptyInlines(root, current, observer);260 } 261 262 static inline RenderObject* bidiFirstSkippingEmptyInlines(RenderElement& root, InlineBidiResolver* resolver = nullptr)243 return nextInlineRendererSkippingEmpty(root, current, observer); 244 } 245 246 static inline RenderObject* firstInlineRendererSkippingEmpty(RenderElement& root, InlineBidiResolver* resolver = nullptr) 263 247 { 264 248 RenderObject* renderer = root.firstChild(); … … 269 253 notifyObserverEnteredObject(resolver, renderer); 270 254 if (!isEmptyInline(downcast<RenderInline>(*renderer))) 271 renderer = bidiNextSkippingEmptyInlines(root, renderer, resolver);255 renderer = nextInlineRendererSkippingEmpty(root, renderer, resolver); 272 256 else { 273 257 // Never skip empty inlines. … … 278 262 } 279 263 280 // FIXME: Unify this with the bidiNext call above.264 // FIXME: Unify this with the next call above. 281 265 if (renderer && !isIteratorTarget(renderer)) 282 renderer = bidiNextSkippingEmptyInlines(root, renderer, resolver);266 renderer = nextInlineRendererSkippingEmpty(root, renderer, resolver); 283 267 284 268 if (resolver) … … 287 271 } 288 272 289 inline void InlineIterator::fastIncrementInTextNode()273 inline void LegacyInlineIterator::fastIncrementInTextNode() 290 274 { 291 275 ASSERT(m_renderer); … … 294 278 } 295 279 296 inline void InlineIterator::incrementByCodePointInTextNode()280 inline void LegacyInlineIterator::incrementByCodePointInTextNode() 297 281 { 298 282 ASSERT(m_renderer); … … 307 291 } 308 292 309 inline void InlineIterator::setOffset(unsigned position)293 inline void LegacyInlineIterator::setOffset(unsigned position) 310 294 { 311 295 ASSERT(position <= UINT_MAX - 10); // Sanity check … … 313 297 } 314 298 315 inline void InlineIterator::setRefersToEndOfPreviousNode()299 inline void LegacyInlineIterator::setRefersToEndOfPreviousNode() 316 300 { 317 301 ASSERT(!m_pos); … … 321 305 322 306 323 inline void InlineIterator::increment(InlineBidiResolver* resolver)307 inline void LegacyInlineIterator::increment(InlineBidiResolver* resolver) 324 308 { 325 309 if (!m_renderer) … … 330 314 return; 331 315 } 332 // bidiNext can return nullptr333 RenderObject* bidiNext = bidiNextSkippingEmptyInlines(*m_root, m_renderer, resolver);334 if ( bidiNext)335 moveToStartOf(* bidiNext);316 // next can return nullptr 317 RenderObject* next = nextInlineRendererSkippingEmpty(*m_root, m_renderer, resolver); 318 if (next) 319 moveToStartOf(*next); 336 320 else 337 321 clear(); 338 322 } 339 323 340 inline void InlineIterator::fastDecrement()324 inline void LegacyInlineIterator::fastDecrement() 341 325 { 342 326 ASSERT(!refersToEndOfPreviousNode()); … … 347 331 } 348 332 349 inline bool InlineIterator::atEnd() const333 inline bool LegacyInlineIterator::atEnd() const 350 334 { 351 335 return !m_renderer; 352 336 } 353 337 354 inline UChar InlineIterator::characterAt(unsigned index) const338 inline UChar LegacyInlineIterator::characterAt(unsigned index) const 355 339 { 356 340 if (!is<RenderText>(m_renderer)) … … 360 344 } 361 345 362 inline UChar InlineIterator::current() const346 inline UChar LegacyInlineIterator::current() const 363 347 { 364 348 return characterAt(m_pos); 365 349 } 366 350 367 inline UChar InlineIterator::previousInSameNode() const351 inline UChar LegacyInlineIterator::previousInSameNode() const 368 352 { 369 353 return characterAt(m_pos - 1); 370 354 } 371 355 372 ALWAYS_INLINE UCharDirection InlineIterator::direction() const356 ALWAYS_INLINE UCharDirection LegacyInlineIterator::direction() const 373 357 { 374 358 if (UNLIKELY(!m_renderer)) … … 409 393 } 410 394 411 static inline unsigned numberOfIsolateAncestors(const InlineIterator& iter)395 static inline unsigned numberOfIsolateAncestors(const LegacyInlineIterator& iter) 412 396 { 413 397 unsigned count = 0; … … 491 475 else 492 476 LegacyLineLayout::appendRunsForObject(&m_runs, start, obj->length(), *obj, *this); 493 // FIXME: start/obj should be an InlineIterator instead of two separate variables.477 // FIXME: start/obj should be an LegacyInlineIterator instead of two separate variables. 494 478 start = 0; 495 obj = bidiNextSkippingEmptyInlines(*m_sor.root(), obj, &isolateTracker);479 obj = nextInlineRendererSkippingEmpty(*m_sor.root(), obj, &isolateTracker); 496 480 } 497 481 if (obj) { -
trunk/Source/WebCore/rendering/LegacyLineLayout.cpp
r283365 r283367 31 31 #include "FloatingObjects.h" 32 32 #include "HTMLParserIdioms.h" 33 #include "InlineIterator.h"34 33 #include "InlineTextBoxStyle.h" 35 34 #include "InlineWalker.h" 36 35 #include "LayoutIntegrationRunIterator.h" 37 36 #include "LegacyInlineElementBox.h" 37 #include "LegacyInlineIterator.h" 38 38 #include "LegacyInlineTextBox.h" 39 39 #include "LineLayoutState.h" … … 68 68 }; 69 69 70 static void determineDirectionality(TextDirection& dir, InlineIterator iter)70 static void determineDirectionality(TextDirection& dir, LegacyInlineIterator iter) 71 71 { 72 72 while (!iter.atEnd()) { … … 100 100 LineWhitespaceCollapsingState& lineWhitespaceCollapsingState = resolver.whitespaceCollapsingState(); 101 101 bool haveNextTransition = (lineWhitespaceCollapsingState.currentTransition() < lineWhitespaceCollapsingState.numTransitions()); 102 InlineIterator nextTransition;102 LegacyInlineIterator nextTransition; 103 103 if (haveNextTransition) 104 104 nextTransition = lineWhitespaceCollapsingState.transitions()[lineWhitespaceCollapsingState.currentTransition()]; … … 1170 1170 1171 1171 // FIXME: BidiResolver should have this logic. 1172 static inline void constructBidiRunsForSegment(InlineBidiResolver& topResolver, BidiRunList<BidiRun>& bidiRuns, const InlineIterator& endOfRuns, VisualDirectionOverride override, bool previousLineBrokeCleanly)1172 static inline void constructBidiRunsForSegment(InlineBidiResolver& topResolver, BidiRunList<BidiRun>& bidiRuns, const LegacyInlineIterator& endOfRuns, VisualDirectionOverride override, bool previousLineBrokeCleanly) 1173 1173 { 1174 1174 // FIXME: We should pass a BidiRunList into createBidiRunsForLine instead … … 1199 1199 TextDirection direction; 1200 1200 if (unicodeBidi == Plaintext) 1201 determineDirectionality(direction, InlineIterator(isolatedInline, &isolatedRun.object, 0));1201 determineDirectionality(direction, LegacyInlineIterator(isolatedInline, &isolatedRun.object, 0)); 1202 1202 else { 1203 1203 ASSERT(unicodeBidi == Isolate || unicodeBidi == IsolateOverride); … … 1211 1211 // during the earlier call to createBidiRunsForLine. This can be but is not necessarily the 1212 1212 // first run within the isolate. 1213 InlineIterator iter =InlineIterator(isolatedInline, &startObject, isolatedRun.position);1213 LegacyInlineIterator iter = LegacyInlineIterator(isolatedInline, &startObject, isolatedRun.position); 1214 1214 isolatedResolver.setPositionIgnoringNestedIsolates(iter); 1215 1215 … … 1237 1237 1238 1238 // This function constructs line boxes for all of the text runs in the resolver and computes their position. 1239 LegacyRootInlineBox* LegacyLineLayout::createLineBoxesFromBidiRuns(unsigned bidiLevel, BidiRunList<BidiRun>& bidiRuns, const InlineIterator& end, LineInfo& lineInfo, VerticalPositionCache& verticalPositionCache, BidiRun* trailingSpaceRun, WordMeasurements& wordMeasurements)1239 LegacyRootInlineBox* LegacyLineLayout::createLineBoxesFromBidiRuns(unsigned bidiLevel, BidiRunList<BidiRun>& bidiRuns, const LegacyInlineIterator& end, LineInfo& lineInfo, VerticalPositionCache& verticalPositionCache, BidiRun* trailingSpaceRun, WordMeasurements& wordMeasurements) 1240 1240 { 1241 1241 if (!bidiRuns.runCount()) … … 1337 1337 // We also find the first clean line and extract these lines. We will add them back 1338 1338 // if we determine that we're able to synchronize after handling all our dirty lines. 1339 InlineIterator cleanLineStart;1339 LegacyInlineIterator cleanLineStart; 1340 1340 BidiStatus cleanLineBidiStatus; 1341 1341 if (!layoutState.isFullLayout() && startLine) … … 1370 1370 1371 1371 // Before restarting the layout loop with a new logicalHeight, remove all floats that were added and reset the resolver. 1372 inline const InlineIterator& LegacyLineLayout::restartLayoutRunsAndFloatsInRange(LayoutUnit oldLogicalHeight, LayoutUnit newLogicalHeight, FloatingObject* lastFloatFromPreviousLine, InlineBidiResolver& resolver, constInlineIterator& oldEnd)1372 inline const LegacyInlineIterator& LegacyLineLayout::restartLayoutRunsAndFloatsInRange(LayoutUnit oldLogicalHeight, LayoutUnit newLogicalHeight, FloatingObject* lastFloatFromPreviousLine, InlineBidiResolver& resolver, const LegacyInlineIterator& oldEnd) 1373 1373 { 1374 1374 m_flow.removeFloatingObjectsBelow(lastFloatFromPreviousLine, oldLogicalHeight); … … 1378 1378 } 1379 1379 1380 void LegacyLineLayout::layoutRunsAndFloatsInRange(LineLayoutState& layoutState, InlineBidiResolver& resolver, const InlineIterator& cleanLineStart, const BidiStatus& cleanLineBidiStatus, unsigned consecutiveHyphenatedLines)1380 void LegacyLineLayout::layoutRunsAndFloatsInRange(LineLayoutState& layoutState, InlineBidiResolver& resolver, const LegacyInlineIterator& cleanLineStart, const BidiStatus& cleanLineBidiStatus, unsigned consecutiveHyphenatedLines) 1381 1381 { 1382 1382 const RenderStyle& styleToUse = style(); 1383 1383 bool paginated = layoutContext().layoutState() && layoutContext().layoutState()->isPaginated(); 1384 1384 LineWhitespaceCollapsingState& lineWhitespaceCollapsingState = resolver.whitespaceCollapsingState(); 1385 InlineIterator end = resolver.position();1385 LegacyInlineIterator end = resolver.position(); 1386 1386 bool checkForEndLineMatch = layoutState.endLine(); 1387 1387 RenderTextInfo renderTextInfo; … … 1395 1395 layoutState.setEndLineMatched(matchedEndLine(layoutState, resolver, cleanLineStart, cleanLineBidiStatus)); 1396 1396 if (layoutState.endLineMatched()) { 1397 resolver.setPosition( InlineIterator(resolver.position().root(), 0, 0), 0);1397 resolver.setPosition(LegacyInlineIterator(resolver.position().root(), 0, 0), 0); 1398 1398 layoutState.marginInfo().clearMargin(); 1399 1399 break; … … 1406 1406 layoutState.lineInfo().resetRunsFromLeadingWhitespace(); 1407 1407 1408 const InlineIterator oldEnd = end;1408 const LegacyInlineIterator oldEnd = end; 1409 1409 bool isNewUBAParagraph = layoutState.lineInfo().previousLineBrokeCleanly(); 1410 1410 FloatingObject* lastFloatFromPreviousLine = (m_flow.containsFloats()) ? m_flow.floatingObjects()->set().last().get() : nullptr; … … 1420 1420 resolver.markCurrentRunEmpty(); // FIXME: This can probably be replaced by an ASSERT (or just removed). 1421 1421 layoutState.setCheckForFloatsFromLastLine(true); 1422 resolver.setPosition( InlineIterator(resolver.position().root(), 0, 0), 0);1422 resolver.setPosition(LegacyInlineIterator(resolver.position().root(), 0, 0), 0); 1423 1423 break; 1424 1424 } … … 1959 1959 if (lastLine) { 1960 1960 m_flow.setLogicalHeight(lastLine->lineBoxBottom()); 1961 InlineIterator iter =InlineIterator(&m_flow, lastLine->lineBreakObj(), lastLine->lineBreakPos());1961 LegacyInlineIterator iter = LegacyInlineIterator(&m_flow, lastLine->lineBreakObj(), lastLine->lineBreakPos()); 1962 1962 resolver.setPosition(iter, numberOfIsolateAncestors(iter)); 1963 1963 resolver.setStatus(lastLine->lineBreakBidiStatus()); … … 1965 1965 TextDirection direction = style().direction(); 1966 1966 if (style().unicodeBidi() == Plaintext) 1967 determineDirectionality(direction, InlineIterator(&m_flow, bidiFirstSkippingEmptyInlines(m_flow), 0));1967 determineDirectionality(direction, LegacyInlineIterator(&m_flow, firstInlineRendererSkippingEmpty(m_flow), 0)); 1968 1968 resolver.setStatus(BidiStatus(direction, isOverride(style().unicodeBidi()))); 1969 InlineIterator iter = InlineIterator(&m_flow, bidiFirstSkippingEmptyInlines(m_flow, &resolver), 0);1969 LegacyInlineIterator iter = LegacyInlineIterator(&m_flow, firstInlineRendererSkippingEmpty(m_flow, &resolver), 0); 1970 1970 resolver.setPosition(iter, numberOfIsolateAncestors(iter)); 1971 1971 } … … 1973 1973 } 1974 1974 1975 void LegacyLineLayout::determineEndPosition(LineLayoutState& layoutState, LegacyRootInlineBox* startLine, InlineIterator& cleanLineStart, BidiStatus& cleanLineBidiStatus)1975 void LegacyLineLayout::determineEndPosition(LineLayoutState& layoutState, LegacyRootInlineBox* startLine, LegacyInlineIterator& cleanLineStart, BidiStatus& cleanLineBidiStatus) 1976 1976 { 1977 1977 auto iteratorForFirstDirtyFloat = [](LineLayoutState::FloatList& floats) { … … 2016 2016 // in the block. 2017 2017 LegacyRootInlineBox* previousLine = lastLine->prevRootBox(); 2018 cleanLineStart = InlineIterator(&m_flow, previousLine->lineBreakObj(), previousLine->lineBreakPos());2018 cleanLineStart = LegacyInlineIterator(&m_flow, previousLine->lineBreakObj(), previousLine->lineBreakPos()); 2019 2019 cleanLineBidiStatus = previousLine->lineBreakBidiStatus(); 2020 2020 layoutState.setEndLineLogicalTop(previousLine->lineBoxBottom()); … … 2085 2085 } 2086 2086 2087 bool LegacyLineLayout::matchedEndLine(LineLayoutState& layoutState, const InlineBidiResolver& resolver, const InlineIterator& endLineStart, const BidiStatus& endLineStatus)2087 bool LegacyLineLayout::matchedEndLine(LineLayoutState& layoutState, const InlineBidiResolver& resolver, const LegacyInlineIterator& endLineStart, const BidiStatus& endLineStatus) 2088 2088 { 2089 2089 if (resolver.position() == endLineStart) { -
trunk/Source/WebCore/rendering/LegacyLineLayout.h
r278405 r283367 39 39 class FrameViewLayoutContext; 40 40 class LegacyInlineBox; 41 class InlineIterator;41 class LegacyInlineIterator; 42 42 class LineInfo; 43 43 class LineLayoutState; … … 92 92 inline BidiRun* handleTrailingSpaces(BidiRunList<BidiRun>& bidiRuns, BidiContext* currentContext); 93 93 void appendFloatingObjectToLastLine(FloatingObject&); 94 LegacyRootInlineBox* createLineBoxesFromBidiRuns(unsigned bidiLevel, BidiRunList<BidiRun>& bidiRuns, const InlineIterator& end, LineInfo&, VerticalPositionCache&, BidiRun* trailingSpaceRun, WordMeasurements&);94 LegacyRootInlineBox* createLineBoxesFromBidiRuns(unsigned bidiLevel, BidiRunList<BidiRun>& bidiRuns, const LegacyInlineIterator& end, LineInfo&, VerticalPositionCache&, BidiRun* trailingSpaceRun, WordMeasurements&); 95 95 void layoutRunsAndFloats(LineLayoutState&, bool hasInlineChild); 96 inline const InlineIterator& restartLayoutRunsAndFloatsInRange(LayoutUnit oldLogicalHeight, LayoutUnit newLogicalHeight, FloatingObject* lastFloatFromPreviousLine, InlineBidiResolver&, constInlineIterator& oldEnd);97 void layoutRunsAndFloatsInRange(LineLayoutState&, InlineBidiResolver&, const InlineIterator& cleanLineStart, const BidiStatus& cleanLineBidiStatus, unsigned consecutiveHyphenatedLines);96 inline const LegacyInlineIterator& restartLayoutRunsAndFloatsInRange(LayoutUnit oldLogicalHeight, LayoutUnit newLogicalHeight, FloatingObject* lastFloatFromPreviousLine, InlineBidiResolver&, const LegacyInlineIterator& oldEnd); 97 void layoutRunsAndFloatsInRange(LineLayoutState&, InlineBidiResolver&, const LegacyInlineIterator& cleanLineStart, const BidiStatus& cleanLineBidiStatus, unsigned consecutiveHyphenatedLines); 98 98 void reattachCleanLineFloats(LegacyRootInlineBox& cleanLine, LayoutUnit delta, bool isFirstCleanLine); 99 99 void linkToEndLineIfNeeded(LineLayoutState&); 100 100 void checkFloatInCleanLine(LegacyRootInlineBox& cleanLine, RenderBox& floatBoxOnCleanLine, FloatWithRect& matchingFloatWithRect, bool& encounteredNewFloat, bool& dirtiedByFloat); 101 101 LegacyRootInlineBox* determineStartPosition(LineLayoutState&, InlineBidiResolver&); 102 void determineEndPosition(LineLayoutState&, LegacyRootInlineBox* startLine, InlineIterator& cleanLineStart, BidiStatus& cleanLineBidiStatus);102 void determineEndPosition(LineLayoutState&, LegacyRootInlineBox* startLine, LegacyInlineIterator& cleanLineStart, BidiStatus& cleanLineBidiStatus); 103 103 bool checkPaginationAndFloatsAtEndLine(LineLayoutState&); 104 104 bool lineWidthForPaginatedLineChanged(LegacyRootInlineBox* rootBox, LayoutUnit lineDelta, RenderFragmentedFlow*) const; 105 bool matchedEndLine(LineLayoutState&, const InlineBidiResolver&, const InlineIterator& endLineStart, const BidiStatus& endLineStatus);105 bool matchedEndLine(LineLayoutState&, const InlineBidiResolver&, const LegacyInlineIterator& endLineStart, const BidiStatus& endLineStatus); 106 106 void deleteEllipsisLineBoxes(); 107 107 void checkLinesForTextOverflow(); -
trunk/Source/WebCore/rendering/LegacyRootInlineBox.h
r282736 r283367 201 201 202 202 // Where this line ended. The exact object and the position within that object are stored so that 203 // we can create an InlineIterator beginning just after the end of this line.203 // we can create an LegacyInlineIterator beginning just after the end of this line. 204 204 WeakPtr<RenderObject> m_lineBreakObj; 205 205 RefPtr<BidiContext> m_lineBreakContext; -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r283365 r283367 40 40 #include "HitTestResult.h" 41 41 #include "ImageBuffer.h" 42 #include "InlineIterator.h"43 42 #include "InlineWalker.h" 44 43 #include "LayoutRepainter.h" -
trunk/Source/WebCore/rendering/RenderBlockFlow.cpp
r282873 r283367 34 34 #include "HTMLTextAreaElement.h" 35 35 #include "HitTestLocation.h" 36 #include "InlineIterator.h"37 36 #include "LayoutIntegrationLineIterator.h" 38 37 #include "LayoutIntegrationLineLayout.h" -
trunk/Source/WebCore/rendering/RenderInline.cpp
r283312 r283367 1119 1119 } 1120 1120 1121 bool isEmptyInline(const RenderInline& renderer) 1122 { 1123 for (auto& current : childrenOfType<RenderObject>(renderer)) { 1124 if (current.isFloatingOrOutOfFlowPositioned()) 1125 continue; 1126 if (is<RenderText>(current)) { 1127 if (!downcast<RenderText>(current).isAllCollapsibleWhitespace()) 1128 return false; 1129 continue; 1130 } 1131 if (!is<RenderInline>(current) || !isEmptyInline(downcast<RenderInline>(current))) 1132 return false; 1133 } 1134 return true; 1135 } 1136 1121 1137 } // namespace WebCore -
trunk/Source/WebCore/rendering/RenderInline.h
r282223 r283367 149 149 }; 150 150 151 bool isEmptyInline(const RenderInline&); 152 151 153 } // namespace WebCore 152 154 -
trunk/Source/WebCore/rendering/RenderTreeAsText.cpp
r282223 r283367 36 36 #include "HTMLNames.h" 37 37 #include "HTMLSpanElement.h" 38 #include "InlineIterator.h"39 38 #include "LayoutIntegrationRunIterator.h" 40 39 #include "LegacyInlineTextBox.h" -
trunk/Source/WebCore/rendering/line/BreakingContext.h
r281731 r283367 130 130 131 131 RenderObject* currentObject() { return m_current.renderer(); } 132 InlineIterator lineBreak() { return m_lineBreak; }132 LegacyInlineIterator lineBreak() { return m_lineBreak; } 133 133 LineWidth& lineWidth() { return m_width; } 134 134 bool atEnd() { return m_atEnd; } … … 146 146 void handleReplaced(); 147 147 bool handleText(WordMeasurements&, bool& hyphenated, unsigned& consecutiveHyphenatedLines); 148 void trailingSpacesHang( InlineIterator&, RenderObject&, bool canBreakMidWord, bool previousCharacterIsSpace);148 void trailingSpacesHang(LegacyInlineIterator&, RenderObject&, bool canBreakMidWord, bool previousCharacterIsSpace); 149 149 bool canBreakAtThisPosition(); 150 150 void commitAndUpdateLineBreakIfNeeded(); 151 InlineIterator handleEndOfLine();151 LegacyInlineIterator handleEndOfLine(); 152 152 153 153 float computeAdditionalBetweenWordsWidth(RenderText&, TextLayout*, UChar, WordTrailingSpace&, HashSet<const Font*>& fallbackFonts, WordMeasurements&, const FontCascade&, bool isFixedPitch, unsigned lastSpace, float lastSpaceWordSpacing, float wordSpacingForWordMeasurement, unsigned offset); … … 178 178 InlineBidiResolver& m_resolver; 179 179 180 InlineIterator m_current;181 InlineIterator m_lineBreak;182 InlineIterator m_startOfIgnoredSpaces;180 LegacyInlineIterator m_current; 181 LegacyInlineIterator m_lineBreak; 182 LegacyInlineIterator m_startOfIgnoredSpaces; 183 183 184 184 RenderBlockFlow& m_block; … … 238 238 auto& renderer = *m_current.renderer(); 239 239 240 m_nextObject = bidiNextSkippingEmptyInlines(m_block, &renderer);240 m_nextObject = nextInlineRendererSkippingEmpty(m_block, &renderer); 241 241 if (m_nextObject && m_nextObject->parent() && !m_nextObject->parent()->isDescendantOf(renderer.parent())) 242 242 m_includeEndWidth = true; … … 293 293 // FIXME: Do this regardless of the container's alignment - will require rebaselining a lot of test results. 294 294 else if (m_ignoringSpaces && (m_blockStyle.textAlign() == TextAlignMode::Right || m_blockStyle.textAlign() == TextAlignMode::WebKitRight)) 295 m_lineWhitespaceCollapsingState.stopIgnoringSpaces( InlineIterator(0, m_current.renderer(), m_current.offset()));295 m_lineWhitespaceCollapsingState.stopIgnoringSpaces(LegacyInlineIterator(0, m_current.renderer(), m_current.offset())); 296 296 297 297 if (!m_lineInfo.isEmpty()) … … 404 404 inline bool shouldSkipWhitespaceAfterStartObject(RenderBlockFlow& block, RenderObject* o, LineWhitespaceCollapsingState& lineWhitespaceCollapsingState) 405 405 { 406 RenderObject* next = bidiNextSkippingEmptyInlines(block, o);406 RenderObject* next = nextInlineRendererSkippingEmpty(block, o); 407 407 while (next && next->isFloatingOrOutOfFlowPositioned()) 408 next = bidiNextSkippingEmptyInlines(block, next);408 next = nextInlineRendererSkippingEmpty(block, next); 409 409 410 410 if (is<RenderText>(next) && downcast<RenderText>(*next).text().length() > 0) { … … 412 412 UChar nextChar = nextText.characterAt(0); 413 413 if (nextText.style().isCollapsibleWhiteSpace(nextChar)) { 414 lineWhitespaceCollapsingState.startIgnoringSpaces( InlineIterator(nullptr, o, 0));414 lineWhitespaceCollapsingState.startIgnoringSpaces(LegacyInlineIterator(nullptr, o, 0)); 415 415 return true; 416 416 } … … 475 475 476 476 if (m_ignoringSpaces) 477 m_lineWhitespaceCollapsingState.stopIgnoringSpaces( InlineIterator(0, &replacedBox, 0));477 m_lineWhitespaceCollapsingState.stopIgnoringSpaces(LegacyInlineIterator(0, &replacedBox, 0)); 478 478 479 479 m_lineInfo.setEmpty(false, &m_block, &m_width); … … 516 516 } 517 517 518 inline bool iteratorIsBeyondEndOfRenderCombineText(const InlineIterator& iter, RenderCombineText& renderer)518 inline bool iteratorIsBeyondEndOfRenderCombineText(const LegacyInlineIterator& iter, RenderCombineText& renderer) 519 519 { 520 520 return iter.renderer() == &renderer && iter.offset() >= renderer.text().length(); … … 562 562 563 563 // Adding a pair of whitespace collapsing transitions before a character will split it out into a new line box. 564 inline void ensureCharacterGetsLineBox(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, InlineIterator& textParagraphSeparator)565 { 566 InlineIterator transition(0, textParagraphSeparator.renderer(), textParagraphSeparator.offset());567 lineWhitespaceCollapsingState.startIgnoringSpaces( InlineIterator(0, textParagraphSeparator.renderer(), textParagraphSeparator.offset() - 1));568 lineWhitespaceCollapsingState.stopIgnoringSpaces( InlineIterator(0, textParagraphSeparator.renderer(), textParagraphSeparator.offset()));569 } 570 571 inline void tryHyphenating(RenderText& text, const FontCascade& font, const AtomString& localeIdentifier, unsigned consecutiveHyphenatedLines, int consecutiveHyphenatedLinesLimit, int minimumPrefixLimit, int minimumSuffixLimit, unsigned lastSpace, unsigned pos, float xPos, float availableWidth, bool isFixedPitch, bool collapseWhiteSpace, int lastSpaceWordSpacing, InlineIterator& lineBreak, std::optional<unsigned> nextBreakable, bool& hyphenated)564 inline void ensureCharacterGetsLineBox(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, LegacyInlineIterator& textParagraphSeparator) 565 { 566 LegacyInlineIterator transition(0, textParagraphSeparator.renderer(), textParagraphSeparator.offset()); 567 lineWhitespaceCollapsingState.startIgnoringSpaces(LegacyInlineIterator(0, textParagraphSeparator.renderer(), textParagraphSeparator.offset() - 1)); 568 lineWhitespaceCollapsingState.stopIgnoringSpaces(LegacyInlineIterator(0, textParagraphSeparator.renderer(), textParagraphSeparator.offset())); 569 } 570 571 inline void tryHyphenating(RenderText& text, const FontCascade& font, const AtomString& localeIdentifier, unsigned consecutiveHyphenatedLines, int consecutiveHyphenatedLinesLimit, int minimumPrefixLimit, int minimumSuffixLimit, unsigned lastSpace, unsigned pos, float xPos, float availableWidth, bool isFixedPitch, bool collapseWhiteSpace, int lastSpaceWordSpacing, LegacyInlineIterator& lineBreak, std::optional<unsigned> nextBreakable, bool& hyphenated) 572 572 { 573 573 // Map 'hyphenate-limit-{before,after}: auto;' to 2. … … 817 817 wordSpacingForWordMeasurement = 0; 818 818 lastSpace = m_current.offset(); // e.g., "Foo goo", don't add in any of the ignored spaces. 819 m_lineWhitespaceCollapsingState.stopIgnoringSpaces( InlineIterator(0, &renderer, m_current.offset()));819 m_lineWhitespaceCollapsingState.stopIgnoringSpaces(LegacyInlineIterator(0, &renderer, m_current.offset())); 820 820 stoppedIgnoringSpaces = true; 821 821 } else { … … 978 978 // before the second space. 979 979 m_lineWhitespaceCollapsingState.startIgnoringSpaces(m_startOfIgnoredSpaces); 980 m_trailingObjects.updateWhitespaceCollapsingTransitionsForTrailingBoxes(m_lineWhitespaceCollapsingState, InlineIterator(), TrailingObjects::CollapseFirstSpace::No);980 m_trailingObjects.updateWhitespaceCollapsingTransitionsForTrailingBoxes(m_lineWhitespaceCollapsingState, LegacyInlineIterator(), TrailingObjects::CollapseFirstSpace::No); 981 981 } 982 982 } … … 995 995 wordSpacingForWordMeasurement = (applyWordSpacing && wordMeasurements.last().width) ? wordSpacing : 0; 996 996 lastSpace = m_current.offset(); // e.g., "Foo goo", don't add in any of the ignored spaces. 997 m_lineWhitespaceCollapsingState.stopIgnoringSpaces( InlineIterator(nullptr, &renderer, m_current.offset()));997 m_lineWhitespaceCollapsingState.stopIgnoringSpaces(LegacyInlineIterator(nullptr, &renderer, m_current.offset())); 998 998 } 999 999 if (m_hangsAtEnd && !renderer.isHangableStopOrComma(c)) … … 1083 1083 } 1084 1084 1085 inline void BreakingContext::trailingSpacesHang( InlineIterator& lineBreak, RenderObject& renderObject, bool canBreakMidWord, bool previousCharacterIsSpace)1085 inline void BreakingContext::trailingSpacesHang(LegacyInlineIterator& lineBreak, RenderObject& renderObject, bool canBreakMidWord, bool previousCharacterIsSpace) 1086 1086 { 1087 1087 ASSERT(m_currWS == WhiteSpace::BreakSpaces); … … 1183 1183 } 1184 1184 1185 inline TrailingObjects::CollapseFirstSpace checkWhitespaceCollapsingTransitions(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const InlineIterator& lBreak)1185 inline TrailingObjects::CollapseFirstSpace checkWhitespaceCollapsingTransitions(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const LegacyInlineIterator& lBreak) 1186 1186 { 1187 1187 // Check to see if our last transition is a start point beyond the line break. If so, … … 1189 1189 // preserve whitespace. 1190 1190 if (lBreak.renderer() && lineWhitespaceCollapsingState.numTransitions() && !(lineWhitespaceCollapsingState.numTransitions() % 2)) { 1191 const InlineIterator* transitions = lineWhitespaceCollapsingState.transitions().data();1192 const InlineIterator& endpoint = transitions[lineWhitespaceCollapsingState.numTransitions() - 2];1193 const InlineIterator& startpoint = transitions[lineWhitespaceCollapsingState.numTransitions() - 1];1194 InlineIterator currpoint = endpoint;1191 const LegacyInlineIterator* transitions = lineWhitespaceCollapsingState.transitions().data(); 1192 const LegacyInlineIterator& endpoint = transitions[lineWhitespaceCollapsingState.numTransitions() - 2]; 1193 const LegacyInlineIterator& startpoint = transitions[lineWhitespaceCollapsingState.numTransitions() - 1]; 1194 LegacyInlineIterator currpoint = endpoint; 1195 1195 while (!currpoint.atEnd() && currpoint != startpoint && currpoint != lBreak) 1196 1196 currpoint.increment(); … … 1207 1207 } 1208 1208 1209 inline InlineIterator BreakingContext::handleEndOfLine()1209 inline LegacyInlineIterator BreakingContext::handleEndOfLine() 1210 1210 { 1211 1211 if (m_lineBreak == m_resolver.position()) { -
trunk/Source/WebCore/rendering/line/LineBreaker.cpp
r278305 r283367 44 44 // NB. this function will insert any floating elements that would otherwise 45 45 // be skipped but it will not position them. 46 void LineBreaker::skipTrailingWhitespace( InlineIterator& iterator, const LineInfo& lineInfo)46 void LineBreaker::skipTrailingWhitespace(LegacyInlineIterator& iterator, const LineInfo& lineInfo) 47 47 { 48 48 while (!iterator.atEnd() && !requiresLineBox(iterator, lineInfo, TrailingWhitespace)) { … … 78 78 } 79 79 80 InlineIterator LineBreaker::nextLineBreak(InlineBidiResolver& resolver, LineInfo& lineInfo, RenderTextInfo& renderTextInfo, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements& wordMeasurements)80 LegacyInlineIterator LineBreaker::nextLineBreak(InlineBidiResolver& resolver, LineInfo& lineInfo, RenderTextInfo& renderTextInfo, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements& wordMeasurements) 81 81 { 82 82 reset(); -
trunk/Source/WebCore/rendering/line/LineBreaker.h
r278305 r283367 25 25 #pragma once 26 26 27 #include " InlineIterator.h"27 #include "LegacyInlineIterator.h" 28 28 #include "LineInfo.h" 29 29 #include "LineInlineHeaders.h" … … 52 52 } 53 53 54 InlineIterator nextLineBreak(InlineBidiResolver&, LineInfo&, RenderTextInfo&, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements&);54 LegacyInlineIterator nextLineBreak(InlineBidiResolver&, LineInfo&, RenderTextInfo&, FloatingObject* lastFloatFromPreviousLine, unsigned consecutiveHyphenatedLines, WordMeasurements&); 55 55 56 56 bool lineWasHyphenated() { return m_hyphenated; } … … 61 61 void reset(); 62 62 63 void skipTrailingWhitespace( InlineIterator&, const LineInfo&);63 void skipTrailingWhitespace(LegacyInlineIterator&, const LineInfo&); 64 64 void skipLeadingWhitespace(InlineBidiResolver&, LineInfo&, FloatingObject* lastFloatFromPreviousLine, LineWidth&); 65 65 -
trunk/Source/WebCore/rendering/line/LineInlineHeaders.h
r248528 r283367 73 73 } 74 74 75 inline bool skipNonBreakingSpace(const InlineIterator& it, const LineInfo& lineInfo)75 inline bool skipNonBreakingSpace(const LegacyInlineIterator& it, const LineInfo& lineInfo) 76 76 { 77 77 if (it.renderer()->style().nbspMode() != NBSPMode::Space || it.current() != noBreakSpace) … … 97 97 } 98 98 99 inline bool requiresLineBox(const InlineIterator& it, const LineInfo& lineInfo = LineInfo(), WhitespacePosition whitespacePosition = LeadingWhitespace)99 inline bool requiresLineBox(const LegacyInlineIterator& it, const LineInfo& lineInfo = LineInfo(), WhitespacePosition whitespacePosition = LeadingWhitespace) 100 100 { 101 101 if (it.renderer()->isFloatingOrOutOfFlowPositioned()) -
trunk/Source/WebCore/rendering/line/TrailingObjects.cpp
r276202 r283367 26 26 #include "TrailingObjects.h" 27 27 28 #include " InlineIterator.h"28 #include "LegacyInlineIterator.h" 29 29 30 30 namespace WebCore { 31 31 32 void TrailingObjects::updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const InlineIterator& lBreak, CollapseFirstSpace collapseFirstSpace)32 void TrailingObjects::updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState& lineWhitespaceCollapsingState, const LegacyInlineIterator& lBreak, CollapseFirstSpace collapseFirstSpace) 33 33 { 34 34 if (!m_whitespace) … … 64 64 unsigned length = m_whitespace->text().length(); 65 65 unsigned pos = length >= 2 ? length - 2 : UINT_MAX; 66 InlineIterator endMid(0, m_whitespace, pos);66 LegacyInlineIterator endMid(0, m_whitespace, pos); 67 67 lineWhitespaceCollapsingState.startIgnoringSpaces(endMid); 68 68 for (size_t i = 0; i < m_boxes.size(); ++i) -
trunk/Source/WebCore/rendering/line/TrailingObjects.h
r276202 r283367 29 29 namespace WebCore { 30 30 31 class InlineIterator;31 class LegacyInlineIterator; 32 32 class RenderBoxModelObject; 33 33 class RenderText; … … 39 39 template <class Iterator, class Run, class IsolateRun> class BidiResolverWithIsolate; 40 40 template <class Iterator> class WhitespaceCollapsingState; 41 typedef BidiResolverWithIsolate< InlineIterator, BidiRun, BidiIsolatedRun> InlineBidiResolver;42 typedef WhitespaceCollapsingState< InlineIterator> LineWhitespaceCollapsingState;41 typedef BidiResolverWithIsolate<LegacyInlineIterator, BidiRun, BidiIsolatedRun> InlineBidiResolver; 42 typedef WhitespaceCollapsingState<LegacyInlineIterator> LineWhitespaceCollapsingState; 43 43 44 44 class TrailingObjects { … … 58 58 59 59 enum class CollapseFirstSpace { No, Yes }; 60 void updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState&, const InlineIterator& lBreak, CollapseFirstSpace);60 void updateWhitespaceCollapsingTransitionsForTrailingBoxes(LineWhitespaceCollapsingState&, const LegacyInlineIterator& lBreak, CollapseFirstSpace); 61 61 62 62 private: -
trunk/Source/WebCore/rendering/updating/RenderTreeBuilderList.cpp
r248517 r283367 25 25 #include "RenderTreeBuilderList.h" 26 26 27 #include " InlineIterator.h"27 #include "LegacyInlineIterator.h" 28 28 #include "LineInlineHeaders.h" 29 29 #include "RenderChildIterator.h" … … 35 35 namespace WebCore { 36 36 37 // FIXME: This shouldn't need InlineIterator37 // FIXME: This shouldn't need LegacyInlineIterator 38 38 static bool generatesLineBoxesForInlineChild(RenderBlock& current, RenderObject* inlineObj) 39 39 { 40 InlineIterator it(¤t, inlineObj, 0);40 LegacyInlineIterator it(¤t, inlineObj, 0); 41 41 while (!it.atEnd() && !requiresLineBox(it)) 42 42 it.increment();
Note:
See TracChangeset
for help on using the changeset viewer.