OLD | NEW |
---|---|
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, 2009, 2013 Apple Inc. All rights | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2009, 2013 Apple Inc. All rights |
8 * reserved. | 8 * reserved. |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
211 const LayoutTableCell* firstRowCellAdjoiningTableStart() const; | 211 const LayoutTableCell* firstRowCellAdjoiningTableStart() const; |
212 const LayoutTableCell* firstRowCellAdjoiningTableEnd() const; | 212 const LayoutTableCell* firstRowCellAdjoiningTableEnd() const; |
213 | 213 |
214 CellStruct& cellAt(unsigned row, unsigned effectiveColumn) { | 214 CellStruct& cellAt(unsigned row, unsigned effectiveColumn) { |
215 return m_grid[row].row[effectiveColumn]; | 215 return m_grid[row].row[effectiveColumn]; |
216 } | 216 } |
217 const CellStruct& cellAt(unsigned row, unsigned effectiveColumn) const { | 217 const CellStruct& cellAt(unsigned row, unsigned effectiveColumn) const { |
218 return m_grid[row].row[effectiveColumn]; | 218 return m_grid[row].row[effectiveColumn]; |
219 } | 219 } |
220 LayoutTableCell* primaryCellAt(unsigned row, unsigned effectiveColumn) { | 220 LayoutTableCell* primaryCellAt(unsigned row, unsigned effectiveColumn) { |
221 if (effectiveColumn >= numCols(row)) | |
222 return nullptr; | |
221 CellStruct& c = m_grid[row].row[effectiveColumn]; | 223 CellStruct& c = m_grid[row].row[effectiveColumn]; |
222 return c.primaryCell(); | 224 return c.primaryCell(); |
223 } | 225 } |
224 const LayoutTableCell* primaryCellAt(unsigned row, | 226 const LayoutTableCell* primaryCellAt(unsigned row, |
225 unsigned effectiveColumn) const { | 227 unsigned effectiveColumn) const { |
226 return const_cast<LayoutTableSection*>(this)->primaryCellAt( | 228 return const_cast<LayoutTableSection*>(this)->primaryCellAt( |
227 row, effectiveColumn); | 229 row, effectiveColumn); |
228 } | 230 } |
229 | 231 |
232 unsigned numCols(unsigned row) const { return m_grid[row].row.size(); } | |
233 | |
230 // Returns null for cells with a rowspan that exceed the last row. Possibly | 234 // Returns null for cells with a rowspan that exceed the last row. Possibly |
231 // others. | 235 // others. |
232 LayoutTableRow* rowLayoutObjectAt(unsigned row) { | 236 LayoutTableRow* rowLayoutObjectAt(unsigned row) { |
233 return m_grid[row].rowLayoutObject; | 237 return m_grid[row].rowLayoutObject; |
234 } | 238 } |
235 const LayoutTableRow* rowLayoutObjectAt(unsigned row) const { | 239 const LayoutTableRow* rowLayoutObjectAt(unsigned row) const { |
236 return m_grid[row].rowLayoutObject; | 240 return m_grid[row].rowLayoutObject; |
237 } | 241 } |
238 | 242 |
239 void appendEffectiveColumn(unsigned pos); | 243 void appendEffectiveColumn(unsigned pos); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
340 void willBeRemovedFromTree() override; | 344 void willBeRemovedFromTree() override; |
341 | 345 |
342 void layout() override; | 346 void layout() override; |
343 | 347 |
344 int borderSpacingForRow(unsigned row) const { | 348 int borderSpacingForRow(unsigned row) const { |
345 return m_grid[row].rowLayoutObject ? table()->vBorderSpacing() : 0; | 349 return m_grid[row].rowLayoutObject ? table()->vBorderSpacing() : 0; |
346 } | 350 } |
347 | 351 |
348 void ensureRows(unsigned); | 352 void ensureRows(unsigned); |
349 | 353 |
354 void ensureCol(unsigned r, unsigned c) { | |
mstensho (USE GERRIT)
2017/01/03 15:18:41
Maybe it should be named ensureCols(), since we al
a.suchit
2017/01/04 10:35:18
Done.
| |
355 if (c >= numCols(r)) | |
356 m_grid[r].row.grow(c + 1); | |
357 } | |
358 | |
350 bool rowHasOnlySpanningCells(unsigned); | 359 bool rowHasOnlySpanningCells(unsigned); |
351 unsigned calcRowHeightHavingOnlySpanningCells(unsigned, | 360 unsigned calcRowHeightHavingOnlySpanningCells(unsigned, |
352 int&, | 361 int&, |
353 unsigned, | 362 unsigned, |
354 unsigned&, | 363 unsigned&, |
355 Vector<int>&); | 364 Vector<int>&); |
356 void updateRowsHeightHavingOnlySpanningCells(LayoutTableCell*, | 365 void updateRowsHeightHavingOnlySpanningCells(LayoutTableCell*, |
357 struct SpanningRowsHeight&, | 366 struct SpanningRowsHeight&, |
358 unsigned&, | 367 unsigned&, |
359 Vector<int>&); | 368 Vector<int>&); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
463 // The use is to disable a painting optimization where we just paint the | 472 // The use is to disable a painting optimization where we just paint the |
464 // invalidated cells. | 473 // invalidated cells. |
465 bool m_hasMultipleCellLevels; | 474 bool m_hasMultipleCellLevels; |
466 }; | 475 }; |
467 | 476 |
468 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, isTableSection()); | 477 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, isTableSection()); |
469 | 478 |
470 } // namespace blink | 479 } // namespace blink |
471 | 480 |
472 #endif // LayoutTableSection_h | 481 #endif // LayoutTableSection_h |
OLD | NEW |