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 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 // Returns null for cells with a rowspan that exceed the last row. Possibly | 199 // Returns null for cells with a rowspan that exceed the last row. Possibly |
200 // others. | 200 // others. |
201 LayoutTableRow* RowLayoutObjectAt(unsigned row) { return grid_[row].row; } | 201 LayoutTableRow* RowLayoutObjectAt(unsigned row) { return grid_[row].row; } |
202 const LayoutTableRow* RowLayoutObjectAt(unsigned row) const { | 202 const LayoutTableRow* RowLayoutObjectAt(unsigned row) const { |
203 return grid_[row].row; | 203 return grid_[row].row; |
204 } | 204 } |
205 | 205 |
206 void AppendEffectiveColumn(unsigned pos); | 206 void AppendEffectiveColumn(unsigned pos); |
207 void SplitEffectiveColumn(unsigned pos, unsigned first); | 207 void SplitEffectiveColumn(unsigned pos, unsigned first); |
208 | 208 |
209 enum BlockBorderSide { kBorderBefore, kBorderAfter }; | |
210 int CalcBlockDirectionOuterBorder(BlockBorderSide) const; | |
211 enum InlineBorderSide { kBorderStart, kBorderEnd }; | |
212 int CalcInlineDirectionOuterBorder(InlineBorderSide) const; | |
213 void RecalcOuterBorder(); | |
214 | |
215 int OuterBorderBefore() const { return outer_border_before_; } | |
216 int OuterBorderAfter() const { return outer_border_after_; } | |
217 int OuterBorderStart() const { return outer_border_start_; } | |
218 int OuterBorderEnd() const { return outer_border_end_; } | |
219 | |
220 unsigned NumRows() const { | 209 unsigned NumRows() const { |
221 DCHECK(!NeedsCellRecalc()); | 210 DCHECK(!NeedsCellRecalc()); |
222 return grid_.size(); | 211 return grid_.size(); |
223 } | 212 } |
224 // This is slow. Use Table()->NumEffectiveColumns() instead if possible. | 213 // This is slow. Use Table()->NumEffectiveColumns() instead if possible. |
225 unsigned MaxNumEffectiveColumnsOfRows() const; | 214 unsigned MaxNumEffectiveColumnsOfRows() const; |
226 | 215 |
227 // recalcCells() is used when we are not sure about the section's structure | 216 // recalcCells() is used when we are not sure about the section's structure |
228 // and want to do an expensive (but safe) reconstruction of m_grid from | 217 // and want to do an expensive (but safe) reconstruction of m_grid from |
229 // scratch. | 218 // scratch. |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
429 // | 418 // |
430 // The reason for them is that we process cells as we discover them | 419 // The reason for them is that we process cells as we discover them |
431 // during parsing or during recalcCells (ie in DOM order). This means | 420 // during parsing or during recalcCells (ie in DOM order). This means |
432 // that we can discover changes in the structure later (e.g. due to | 421 // that we can discover changes in the structure later (e.g. due to |
433 // colspans, extra cells, ...). | 422 // colspans, extra cells, ...). |
434 // | 423 // |
435 // Do not use outside of recalcCells and addChild. | 424 // Do not use outside of recalcCells and addChild. |
436 unsigned c_col_; | 425 unsigned c_col_; |
437 unsigned c_row_; | 426 unsigned c_row_; |
438 | 427 |
439 int outer_border_start_; | |
440 int outer_border_end_; | |
441 int outer_border_before_; | |
442 int outer_border_after_; | |
443 | |
444 bool needs_cell_recalc_; | 428 bool needs_cell_recalc_; |
445 | 429 |
446 // This HashSet holds the overflowing cells for the partial paint path. If we | 430 // This HashSet holds the overflowing cells for the partial paint path. If we |
447 // have too many overflowing cells, it will be empty and force_full_paint_ | 431 // have too many overflowing cells, it will be empty and force_full_paint_ |
448 // will be set to save memory. See ComputeOverflowFromDescendants(). | 432 // will be set to save memory. See ComputeOverflowFromDescendants(). |
449 HashSet<const LayoutTableCell*> overflowing_cells_; | 433 HashSet<const LayoutTableCell*> overflowing_cells_; |
450 bool force_full_paint_; | 434 bool force_full_paint_; |
451 | 435 |
452 // This boolean tracks if we have cells overlapping due to rowspan / colspan | 436 // This boolean tracks if we have cells overlapping due to rowspan / colspan |
453 // (see class comment above about when it could appear). | 437 // (see class comment above about when it could appear). |
454 // | 438 // |
455 // The use is to disable a painting optimization where we just paint the | 439 // The use is to disable a painting optimization where we just paint the |
456 // invalidated cells. | 440 // invalidated cells. |
457 bool has_multiple_cell_levels_; | 441 bool has_multiple_cell_levels_; |
458 | 442 |
459 // Whether any cell spans multiple rows or cols. | 443 // Whether any cell spans multiple rows or cols. |
460 bool has_spanning_cells_; | 444 bool has_spanning_cells_; |
461 }; | 445 }; |
462 | 446 |
463 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, IsTableSection()); | 447 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, IsTableSection()); |
464 | 448 |
465 } // namespace blink | 449 } // namespace blink |
466 | 450 |
467 #endif // LayoutTableSection_h | 451 #endif // LayoutTableSection_h |
OLD | NEW |