Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Side by Side Diff: third_party/WebKit/Source/core/layout/ColumnBalancer.cpp

Issue 2682573002: Split EBreak enum into EBreakBetween & EBreakInside (Closed)
Patch Set: Update references to EBreak in ComputedStyle.h comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/layout/ColumnBalancer.h" 5 #include "core/layout/ColumnBalancer.h"
6 6
7 #include "core/layout/LayoutMultiColumnFlowThread.h" 7 #include "core/layout/LayoutMultiColumnFlowThread.h"
8 #include "core/layout/LayoutMultiColumnSet.h" 8 #include "core/layout/LayoutMultiColumnSet.h"
9 #include "core/layout/api/LineLayoutBlockFlow.h" 9 #include "core/layout/api/LineLayoutBlockFlow.h"
10 10
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 continue; 45 continue;
46 if (lineTopInFlowThread >= logicalBottomInFlowThread()) 46 if (lineTopInFlowThread >= logicalBottomInFlowThread())
47 break; 47 break;
48 examineLine(*line); 48 examineLine(*line);
49 } 49 }
50 } 50 }
51 51
52 void ColumnBalancer::traverseChildren(const LayoutObject& object) { 52 void ColumnBalancer::traverseChildren(const LayoutObject& object) {
53 // The break-after value from the previous in-flow block-level object to be 53 // The break-after value from the previous in-flow block-level object to be
54 // joined with the break-before value of the next in-flow block-level sibling. 54 // joined with the break-before value of the next in-flow block-level sibling.
55 EBreak previousBreakAfterValue = BreakAuto; 55 EBreakBetween previousBreakAfterValue = EBreakBetween::kAuto;
56 56
57 for (const LayoutObject* child = object.slowFirstChild(); child; 57 for (const LayoutObject* child = object.slowFirstChild(); child;
58 child = child->nextSibling()) { 58 child = child->nextSibling()) {
59 if (!child->isBox()) { 59 if (!child->isBox()) {
60 // Keep traversing inside inlines. There may be floats there. 60 // Keep traversing inside inlines. There may be floats there.
61 if (child->isLayoutInline()) 61 if (child->isLayoutInline())
62 traverseChildren(*child); 62 traverseChildren(*child);
63 continue; 63 continue;
64 } 64 }
65 65
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 unsigned index = contentRunIndexWithTallestColumns(); 165 unsigned index = contentRunIndexWithTallestColumns();
166 LayoutUnit startOffset = index > 0 ? m_contentRuns[index - 1].breakOffset() 166 LayoutUnit startOffset = index > 0 ? m_contentRuns[index - 1].breakOffset()
167 : logicalTopInFlowThread(); 167 : logicalTopInFlowThread();
168 LayoutUnit height = m_contentRuns[index].columnLogicalHeight(startOffset); 168 LayoutUnit height = m_contentRuns[index].columnLogicalHeight(startOffset);
169 return rowLogicalTop + std::max(height, m_tallestUnbreakableLogicalHeight); 169 return rowLogicalTop + std::max(height, m_tallestUnbreakableLogicalHeight);
170 } 170 }
171 171
172 void InitialColumnHeightFinder::examineBoxAfterEntering( 172 void InitialColumnHeightFinder::examineBoxAfterEntering(
173 const LayoutBox& box, 173 const LayoutBox& box,
174 LayoutUnit childLogicalHeight, 174 LayoutUnit childLogicalHeight,
175 EBreak previousBreakAfterValue) { 175 EBreakBetween previousBreakAfterValue) {
176 if (m_lastBreakSeen > flowThreadOffset()) { 176 if (m_lastBreakSeen > flowThreadOffset()) {
177 // We have moved backwards. We're probably in a parallel flow, caused by 177 // We have moved backwards. We're probably in a parallel flow, caused by
178 // floats, sibling table cells, etc. 178 // floats, sibling table cells, etc.
179 m_lastBreakSeen = LayoutUnit(); 179 m_lastBreakSeen = LayoutUnit();
180 } 180 }
181 if (isLogicalTopWithinBounds(flowThreadOffset() - box.paginationStrut())) { 181 if (isLogicalTopWithinBounds(flowThreadOffset() - box.paginationStrut())) {
182 if (box.needsForcedBreakBefore(previousBreakAfterValue)) { 182 if (box.needsForcedBreakBefore(previousBreakAfterValue)) {
183 addContentRun(flowThreadOffset()); 183 addContentRun(flowThreadOffset());
184 } else if (isFirstAfterBreak(flowThreadOffset()) && 184 } else if (isFirstAfterBreak(flowThreadOffset()) &&
185 m_lastBreakSeen != flowThreadOffset()) { 185 m_lastBreakSeen != flowThreadOffset()) {
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 logicalBottomInFlowThread), 354 logicalBottomInFlowThread),
355 m_minimumSpaceShortage(LayoutUnit::max()), 355 m_minimumSpaceShortage(LayoutUnit::max()),
356 m_pendingStrut(LayoutUnit::min()), 356 m_pendingStrut(LayoutUnit::min()),
357 m_forcedBreaksCount(0) { 357 m_forcedBreaksCount(0) {
358 traverse(); 358 traverse();
359 } 359 }
360 360
361 void MinimumSpaceShortageFinder::examineBoxAfterEntering( 361 void MinimumSpaceShortageFinder::examineBoxAfterEntering(
362 const LayoutBox& box, 362 const LayoutBox& box,
363 LayoutUnit childLogicalHeight, 363 LayoutUnit childLogicalHeight,
364 EBreak previousBreakAfterValue) { 364 EBreakBetween previousBreakAfterValue) {
365 LayoutBox::PaginationBreakability breakability = 365 LayoutBox::PaginationBreakability breakability =
366 box.getPaginationBreakability(); 366 box.getPaginationBreakability();
367 367
368 // Look for breaks before the child box. 368 // Look for breaks before the child box.
369 if (isLogicalTopWithinBounds(flowThreadOffset() - box.paginationStrut())) { 369 if (isLogicalTopWithinBounds(flowThreadOffset() - box.paginationStrut())) {
370 if (box.needsForcedBreakBefore(previousBreakAfterValue)) { 370 if (box.needsForcedBreakBefore(previousBreakAfterValue)) {
371 m_forcedBreaksCount++; 371 m_forcedBreaksCount++;
372 } else { 372 } else {
373 if (isFirstAfterBreak(flowThreadOffset())) { 373 if (isFirstAfterBreak(flowThreadOffset())) {
374 // This box is first after a soft break. 374 // This box is first after a soft break.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 if (group.columnLogicalTopForOffset(lineTopInFlowThread) != 482 if (group.columnLogicalTopForOffset(lineTopInFlowThread) !=
483 group.columnLogicalTopForOffset(lineBottomWithOverflow)) { 483 group.columnLogicalTopForOffset(lineBottomWithOverflow)) {
484 LayoutUnit shortage = 484 LayoutUnit shortage =
485 lineBottomWithOverflow - 485 lineBottomWithOverflow -
486 group.columnLogicalTopForOffset(lineBottomWithOverflow); 486 group.columnLogicalTopForOffset(lineBottomWithOverflow);
487 recordSpaceShortage(shortage); 487 recordSpaceShortage(shortage);
488 } 488 }
489 } 489 }
490 490
491 } // namespace blink 491 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/ColumnBalancer.h ('k') | third_party/WebKit/Source/core/layout/LayoutBlockFlow.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698