| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2012 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 void LayoutMultiColumnSet::updateMinimumColumnHeight(LayoutUnit offsetInFlowThre
ad, LayoutUnit height) | 212 void LayoutMultiColumnSet::updateMinimumColumnHeight(LayoutUnit offsetInFlowThre
ad, LayoutUnit height) |
| 213 { | 213 { |
| 214 fragmentainerGroupAtFlowThreadOffset(offsetInFlowThread).updateMinimumColumn
Height(height); | 214 fragmentainerGroupAtFlowThreadOffset(offsetInFlowThread).updateMinimumColumn
Height(height); |
| 215 } | 215 } |
| 216 | 216 |
| 217 LayoutUnit LayoutMultiColumnSet::pageLogicalTopForOffset(LayoutUnit offset) cons
t | 217 LayoutUnit LayoutMultiColumnSet::pageLogicalTopForOffset(LayoutUnit offset) cons
t |
| 218 { | 218 { |
| 219 return fragmentainerGroupAtFlowThreadOffset(offset).columnLogicalTopForOffse
t(offset); | 219 return fragmentainerGroupAtFlowThreadOffset(offset).columnLogicalTopForOffse
t(offset); |
| 220 } | 220 } |
| 221 | 221 |
| 222 void LayoutMultiColumnSet::addContentRun(LayoutUnit endOffsetFromFirstPage) | |
| 223 { | |
| 224 if (!heightIsAuto()) | |
| 225 return; | |
| 226 fragmentainerGroupAtFlowThreadOffset(endOffsetFromFirstPage).addContentRun(e
ndOffsetFromFirstPage); | |
| 227 } | |
| 228 | |
| 229 bool LayoutMultiColumnSet::recalculateColumnHeight(BalancedColumnHeightCalculati
on calculationMode) | 222 bool LayoutMultiColumnSet::recalculateColumnHeight(BalancedColumnHeightCalculati
on calculationMode) |
| 230 { | 223 { |
| 231 bool changed = false; | 224 bool changed = false; |
| 232 for (auto& group : m_fragmentainerGroups) | 225 for (auto& group : m_fragmentainerGroups) |
| 233 changed = group.recalculateColumnHeight(calculationMode) || changed; | 226 changed = group.recalculateColumnHeight(calculationMode) || changed; |
| 234 return changed; | 227 return changed; |
| 235 } | 228 } |
| 236 | 229 |
| 237 void LayoutMultiColumnSet::recordSpaceShortage(LayoutUnit offsetInFlowThread, La
youtUnit spaceShortage) | |
| 238 { | |
| 239 MultiColumnFragmentainerGroup& row = fragmentainerGroupAtFlowThreadOffset(of
fsetInFlowThread); | |
| 240 row.recordSpaceShortage(spaceShortage); | |
| 241 | |
| 242 // Since we're at a potential break here, take the opportunity to check if w
e need another | |
| 243 // fragmentainer group. If we've run out of columns in the last fragmentaine
r group (column | |
| 244 // row), we need to insert another fragmentainer group to hold more columns. | |
| 245 if (!row.isLastGroup()) | |
| 246 return; | |
| 247 LayoutMultiColumnFlowThread* flowThread = multiColumnFlowThread(); | |
| 248 if (!flowThread->multiColumnBlockFlow()->isInsideFlowThread()) | |
| 249 return; // Early bail. We're not nested, so waste no more time on this. | |
| 250 if (!flowThread->isInInitialLayoutPass()) | |
| 251 return; | |
| 252 // Move the offset to where the next column starts, if we're not there alrea
dy. | |
| 253 offsetInFlowThread += flowThread->pageRemainingLogicalHeightForOffset(offset
InFlowThread, AssociateWithFormerPage); | |
| 254 | |
| 255 flowThread->appendNewFragmentainerGroupIfNeeded(offsetInFlowThread); | |
| 256 } | |
| 257 | |
| 258 void LayoutMultiColumnSet::resetColumnHeight() | 230 void LayoutMultiColumnSet::resetColumnHeight() |
| 259 { | 231 { |
| 260 m_fragmentainerGroups.deleteExtraGroups(); | 232 m_fragmentainerGroups.deleteExtraGroups(); |
| 261 m_fragmentainerGroups.first().resetColumnHeight(); | 233 m_fragmentainerGroups.first().resetColumnHeight(); |
| 262 } | 234 } |
| 263 | 235 |
| 264 void LayoutMultiColumnSet::beginFlow(LayoutUnit offsetInFlowThread) | 236 void LayoutMultiColumnSet::beginFlow(LayoutUnit offsetInFlowThread) |
| 265 { | 237 { |
| 266 // At this point layout is exactly at the beginning of this set. Store block
offset from flow | 238 // At this point layout is exactly at the beginning of this set. Store block
offset from flow |
| 267 // thread start. | 239 // thread start. |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 | 353 |
| 382 LayoutRect LayoutMultiColumnSet::flowThreadPortionRect() const | 354 LayoutRect LayoutMultiColumnSet::flowThreadPortionRect() const |
| 383 { | 355 { |
| 384 LayoutRect portionRect(LayoutUnit(), logicalTopInFlowThread(), pageLogicalWi
dth(), logicalHeightInFlowThread()); | 356 LayoutRect portionRect(LayoutUnit(), logicalTopInFlowThread(), pageLogicalWi
dth(), logicalHeightInFlowThread()); |
| 385 if (!isHorizontalWritingMode()) | 357 if (!isHorizontalWritingMode()) |
| 386 return portionRect.transposedRect(); | 358 return portionRect.transposedRect(); |
| 387 return portionRect; | 359 return portionRect; |
| 388 } | 360 } |
| 389 | 361 |
| 390 } | 362 } |
| OLD | NEW |