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, 2010 Apple Inc. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010 Apple Inc. |
8 * All rights reserved. | 8 * All rights 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 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 return; | 385 return; |
386 // For all we know, sections may have been deleted at this point. Don't | 386 // For all we know, sections may have been deleted at this point. Don't |
387 // keep pointers dangling around. | 387 // keep pointers dangling around. |
388 head_ = nullptr; | 388 head_ = nullptr; |
389 foot_ = nullptr; | 389 foot_ = nullptr; |
390 first_body_ = nullptr; | 390 first_body_ = nullptr; |
391 | 391 |
392 needs_section_recalc_ = true; | 392 needs_section_recalc_ = true; |
393 SetNeedsLayoutAndFullPaintInvalidation( | 393 SetNeedsLayoutAndFullPaintInvalidation( |
394 LayoutInvalidationReason::kTableChanged); | 394 LayoutInvalidationReason::kTableChanged); |
| 395 |
| 396 // Grid structure affects cell adjacence relationships which affect |
| 397 // conflict resolution of collapsed borders. |
| 398 InvalidateCollapsedBorders(); |
395 } | 399 } |
396 | 400 |
397 LayoutTableSection* SectionAbove( | 401 LayoutTableSection* SectionAbove( |
398 const LayoutTableSection*, | 402 const LayoutTableSection*, |
399 SkipEmptySectionsValue = kDoNotSkipEmptySections) const; | 403 SkipEmptySectionsValue = kDoNotSkipEmptySections) const; |
400 LayoutTableSection* SectionBelow( | 404 LayoutTableSection* SectionBelow( |
401 const LayoutTableSection*, | 405 const LayoutTableSection*, |
402 SkipEmptySectionsValue = kDoNotSkipEmptySections) const; | 406 SkipEmptySectionsValue = kDoNotSkipEmptySections) const; |
403 | 407 |
404 LayoutTableCell* CellAbove(const LayoutTableCell*) const; | 408 LayoutTableCell* CellAbove(const LayoutTableCell*) const; |
405 LayoutTableCell* CellBelow(const LayoutTableCell*) const; | 409 LayoutTableCell* CellBelow(const LayoutTableCell*) const; |
406 LayoutTableCell* CellBefore(const LayoutTableCell*) const; | 410 LayoutTableCell* CellBefore(const LayoutTableCell*) const; |
407 LayoutTableCell* CellAfter(const LayoutTableCell*) const; | 411 LayoutTableCell* CellAfter(const LayoutTableCell*) const; |
408 | 412 |
409 typedef Vector<CollapsedBorderValue> CollapsedBorderValues; | 413 using CollapsedBorderValues = Vector<CollapsedBorderValue>; |
| 414 const CollapsedBorderValues& CollapsedBorders() const { |
| 415 DCHECK(collapsed_borders_valid_); |
| 416 return collapsed_borders_; |
| 417 } |
410 void InvalidateCollapsedBorders(); | 418 void InvalidateCollapsedBorders(); |
411 | 419 |
412 bool HasSections() const { return Header() || Footer() || FirstBody(); } | 420 bool HasSections() const { return Header() || Footer() || FirstBody(); } |
413 | 421 |
414 void RecalcSectionsIfNeeded() const { | 422 void RecalcSectionsIfNeeded() const { |
415 if (needs_section_recalc_) | 423 if (needs_section_recalc_) |
416 RecalcSections(); | 424 RecalcSections(); |
417 } | 425 } |
418 | 426 |
419 static LayoutTable* CreateAnonymousWithParent(const LayoutObject*); | 427 static LayoutTable* CreateAnonymousWithParent(const LayoutObject*); |
420 LayoutBox* CreateAnonymousBoxWithSameTypeAs( | 428 LayoutBox* CreateAnonymousBoxWithSameTypeAs( |
421 const LayoutObject* parent) const override { | 429 const LayoutObject* parent) const override { |
422 return CreateAnonymousWithParent(parent); | 430 return CreateAnonymousWithParent(parent); |
423 } | 431 } |
424 | 432 |
425 const BorderValue& TableStartBorderAdjoiningCell( | 433 const BorderValue& TableStartBorderAdjoiningCell( |
426 const LayoutTableCell*) const; | 434 const LayoutTableCell*) const; |
427 const BorderValue& TableEndBorderAdjoiningCell(const LayoutTableCell*) const; | 435 const BorderValue& TableEndBorderAdjoiningCell(const LayoutTableCell*) const; |
428 | 436 |
429 void AddCaption(const LayoutTableCaption*); | 437 void AddCaption(const LayoutTableCaption*); |
430 void RemoveCaption(const LayoutTableCaption*); | 438 void RemoveCaption(const LayoutTableCaption*); |
431 void AddColumn(const LayoutTableCol*); | 439 void AddColumn(const LayoutTableCol*); |
432 void RemoveColumn(const LayoutTableCol*); | 440 void RemoveColumn(const LayoutTableCol*); |
433 | 441 |
434 void PaintBoxDecorationBackground(const PaintInfo&, | 442 void PaintBoxDecorationBackground(const PaintInfo&, |
435 const LayoutPoint&) const final; | 443 const LayoutPoint&) const final; |
436 | 444 |
437 void PaintMask(const PaintInfo&, const LayoutPoint&) const final; | 445 void PaintMask(const PaintInfo&, const LayoutPoint&) const final; |
438 | 446 |
439 const CollapsedBorderValues& CollapsedBorders() const { | |
440 DCHECK(collapsed_borders_valid_); | |
441 return collapsed_borders_; | |
442 } | |
443 | |
444 void SubtractCaptionRect(LayoutRect&) const; | 447 void SubtractCaptionRect(LayoutRect&) const; |
445 | 448 |
446 bool IsLogicalWidthAuto() const; | 449 bool IsLogicalWidthAuto() const; |
447 | 450 |
448 // When table headers are repeated, we need to know the offset from the block | 451 // When table headers are repeated, we need to know the offset from the block |
449 // start of the fragmentation context to the first occurrence of the table | 452 // start of the fragmentation context to the first occurrence of the table |
450 // header. | 453 // header. |
451 LayoutUnit BlockOffsetToFirstRepeatableHeader() const { | 454 LayoutUnit BlockOffsetToFirstRepeatableHeader() const { |
452 return block_offset_to_first_repeatable_header_; | 455 return block_offset_to_first_repeatable_header_; |
453 } | 456 } |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
617 if (first_body_) | 620 if (first_body_) |
618 return first_body_; | 621 return first_body_; |
619 return foot_; | 622 return foot_; |
620 } | 623 } |
621 | 624 |
622 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTable, IsTable()); | 625 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTable, IsTable()); |
623 | 626 |
624 } // namespace blink | 627 } // namespace blink |
625 | 628 |
626 #endif // LayoutTable_h | 629 #endif // LayoutTable_h |
OLD | NEW |