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

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

Issue 2534413004: Made varied number of cells in each row based on row's requirement. (Closed)
Patch Set: Reset TestExpectations file Created 3 years, 11 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 /* 1 /*
2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org)
3 * (C) 1997 Torben Weis (weis@kde.org) 3 * (C) 1997 Torben Weis (weis@kde.org)
4 * (C) 1998 Waldo Bastian (bastian@kde.org) 4 * (C) 1998 Waldo Bastian (bastian@kde.org)
5 * (C) 1999 Lars Knoll (knoll@kde.org) 5 * (C) 1999 Lars Knoll (knoll@kde.org)
6 * (C) 1999 Antti Koivisto (koivisto@kde.org) 6 * (C) 1999 Antti Koivisto (koivisto@kde.org)
7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. 7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc.
8 * All rights reserved. 8 * All rights reserved.
9 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) 9 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
10 * 10 *
(...skipping 1427 matching lines...) Expand 10 before | Expand all | Expand 10 after
1438 if (section) { 1438 if (section) {
1439 ASSERT(section->numRows()); 1439 ASSERT(section->numRows());
1440 rAbove = section->numRows() - 1; 1440 rAbove = section->numRows() - 1;
1441 } 1441 }
1442 } 1442 }
1443 1443
1444 // Look up the cell in the section's grid, which requires effective col index 1444 // Look up the cell in the section's grid, which requires effective col index
1445 if (section) { 1445 if (section) {
1446 unsigned effCol = 1446 unsigned effCol =
1447 absoluteColumnToEffectiveColumn(cell->absoluteColumnIndex()); 1447 absoluteColumnToEffectiveColumn(cell->absoluteColumnIndex());
1448 LayoutTableSection::CellStruct& aboveCell = section->cellAt(rAbove, effCol); 1448 return section->primaryCellAt(rAbove, effCol);
1449 return aboveCell.primaryCell();
1450 } 1449 }
1451 return nullptr; 1450 return nullptr;
1452 } 1451 }
1453 1452
1454 LayoutTableCell* LayoutTable::cellBelow(const LayoutTableCell* cell) const { 1453 LayoutTableCell* LayoutTable::cellBelow(const LayoutTableCell* cell) const {
1455 recalcSectionsIfNeeded(); 1454 recalcSectionsIfNeeded();
1456 1455
1457 // Find the section and row to look in 1456 // Find the section and row to look in
1458 unsigned r = cell->rowIndex() + cell->rowSpan() - 1; 1457 unsigned r = cell->rowIndex() + cell->rowSpan() - 1;
1459 LayoutTableSection* section = nullptr; 1458 LayoutTableSection* section = nullptr;
1460 unsigned rBelow = 0; 1459 unsigned rBelow = 0;
1461 if (r < cell->section()->numRows() - 1) { 1460 if (r < cell->section()->numRows() - 1) {
1462 // The cell is not in the last row, so use the next row in the section. 1461 // The cell is not in the last row, so use the next row in the section.
1463 section = cell->section(); 1462 section = cell->section();
1464 rBelow = r + 1; 1463 rBelow = r + 1;
1465 } else { 1464 } else {
1466 section = sectionBelow(cell->section(), SkipEmptySections); 1465 section = sectionBelow(cell->section(), SkipEmptySections);
1467 if (section) 1466 if (section)
1468 rBelow = 0; 1467 rBelow = 0;
1469 } 1468 }
1470 1469
1471 // Look up the cell in the section's grid, which requires effective col index 1470 // Look up the cell in the section's grid, which requires effective col index
1472 if (section) { 1471 if (section) {
1473 unsigned effCol = 1472 unsigned effCol =
1474 absoluteColumnToEffectiveColumn(cell->absoluteColumnIndex()); 1473 absoluteColumnToEffectiveColumn(cell->absoluteColumnIndex());
1475 LayoutTableSection::CellStruct& belowCell = section->cellAt(rBelow, effCol); 1474 return section->primaryCellAt(rBelow, effCol);
1476 return belowCell.primaryCell();
1477 } 1475 }
1478 return nullptr; 1476 return nullptr;
1479 } 1477 }
1480 1478
1481 LayoutTableCell* LayoutTable::cellBefore(const LayoutTableCell* cell) const { 1479 LayoutTableCell* LayoutTable::cellBefore(const LayoutTableCell* cell) const {
1482 recalcSectionsIfNeeded(); 1480 recalcSectionsIfNeeded();
1483 1481
1484 LayoutTableSection* section = cell->section(); 1482 LayoutTableSection* section = cell->section();
1485 unsigned effCol = 1483 unsigned effCol =
1486 absoluteColumnToEffectiveColumn(cell->absoluteColumnIndex()); 1484 absoluteColumnToEffectiveColumn(cell->absoluteColumnIndex());
1487 if (!effCol) 1485 if (!effCol)
1488 return nullptr; 1486 return nullptr;
1489 1487
1490 // If we hit a colspan back up to a real cell. 1488 // If we hit a colspan back up to a real cell.
1491 LayoutTableSection::CellStruct& prevCell = 1489 LayoutTableSection::CellStruct& prevCell =
1492 section->cellAt(cell->rowIndex(), effCol - 1); 1490 section->cellAt(cell->rowIndex(), effCol - 1);
1493 return prevCell.primaryCell(); 1491 return prevCell.primaryCell();
1494 } 1492 }
1495 1493
1496 LayoutTableCell* LayoutTable::cellAfter(const LayoutTableCell* cell) const { 1494 LayoutTableCell* LayoutTable::cellAfter(const LayoutTableCell* cell) const {
1497 recalcSectionsIfNeeded(); 1495 recalcSectionsIfNeeded();
1498 1496
1499 unsigned effCol = absoluteColumnToEffectiveColumn( 1497 unsigned effCol = absoluteColumnToEffectiveColumn(
1500 cell->absoluteColumnIndex() + cell->colSpan()); 1498 cell->absoluteColumnIndex() + cell->colSpan());
1501 if (effCol >= numEffectiveColumns())
1502 return nullptr;
1503 return cell->section()->primaryCellAt(cell->rowIndex(), effCol); 1499 return cell->section()->primaryCellAt(cell->rowIndex(), effCol);
1504 } 1500 }
1505 1501
1506 int LayoutTable::baselinePosition(FontBaseline baselineType, 1502 int LayoutTable::baselinePosition(FontBaseline baselineType,
1507 bool firstLine, 1503 bool firstLine,
1508 LineDirectionMode direction, 1504 LineDirectionMode direction,
1509 LinePositionMode linePositionMode) const { 1505 LinePositionMode linePositionMode) const {
1510 ASSERT(linePositionMode == PositionOnContainingLine); 1506 ASSERT(linePositionMode == PositionOnContainingLine);
1511 int baseline = firstLineBoxBaseline(); 1507 int baseline = firstLineBoxBaseline();
1512 if (baseline != -1) { 1508 if (baseline != -1) {
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1692 } 1688 }
1693 1689
1694 LayoutUnit LayoutTable::paddingRight() const { 1690 LayoutUnit LayoutTable::paddingRight() const {
1695 if (collapseBorders()) 1691 if (collapseBorders())
1696 return LayoutUnit(); 1692 return LayoutUnit();
1697 1693
1698 return LayoutBlock::paddingRight(); 1694 return LayoutBlock::paddingRight();
1699 } 1695 }
1700 1696
1701 } // namespace blink 1697 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698