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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutTableSection.h

Issue 2805103003: Optimize collapsed border calculation (step 2) (Closed)
Patch Set: - Created 3 years, 8 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, 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 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 350
351 bool IsRepeatingHeaderGroup() const; 351 bool IsRepeatingHeaderGroup() const;
352 352
353 void UpdateLayout() override; 353 void UpdateLayout() override;
354 354
355 CellSpan FullSectionRowSpan() const { return CellSpan(0, grid_.size()); } 355 CellSpan FullSectionRowSpan() const { return CellSpan(0, grid_.size()); }
356 CellSpan FullTableEffectiveColumnSpan() const { 356 CellSpan FullTableEffectiveColumnSpan() const {
357 return CellSpan(0, Table()->NumEffectiveColumns()); 357 return CellSpan(0, Table()->NumEffectiveColumns());
358 } 358 }
359 359
360 // Return the primary cell of the table grid slot above or below grid slot
361 // (row, effectiveColumn).
362 LayoutTableCell* PrimaryCellAboveInTable(unsigned row,
363 unsigned effective_column);
364 LayoutTableCell* PrimaryCellBelowInTable(unsigned row,
365 unsigned effective_column);
366
367 void InvalidateCellCollapsedBordersIntersectingRow(unsigned row_index);
368
360 protected: 369 protected:
361 void StyleDidChange(StyleDifference, const ComputedStyle* old_style) override; 370 void StyleDidChange(StyleDifference, const ComputedStyle* old_style) override;
362 bool NodeAtPoint(HitTestResult&, 371 bool NodeAtPoint(HitTestResult&,
363 const HitTestLocation& location_in_container, 372 const HitTestLocation& location_in_container,
364 const LayoutPoint& accumulated_offset, 373 const LayoutPoint& accumulated_offset,
365 HitTestAction) override; 374 HitTestAction) override;
366 375
367 private: 376 private:
368 bool IsOfType(LayoutObjectType type) const override { 377 bool IsOfType(LayoutObjectType type) const override {
369 return type == kLayoutObjectTableSection || LayoutBox::IsOfType(type); 378 return type == kLayoutObjectTableSection || LayoutBox::IsOfType(type);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 void RelayoutCellIfFlexed(LayoutTableCell&, int row_index, int row_height); 455 void RelayoutCellIfFlexed(LayoutTableCell&, int row_index, int row_height);
447 456
448 int LogicalHeightForRow(const LayoutTableRow&) const; 457 int LogicalHeightForRow(const LayoutTableRow&) const;
449 458
450 // Honor breaking restrictions inside the table row, and adjust position and 459 // Honor breaking restrictions inside the table row, and adjust position and
451 // size accordingly. 460 // size accordingly.
452 void AdjustRowForPagination(LayoutTableRow&, SubtreeLayoutScope&); 461 void AdjustRowForPagination(LayoutTableRow&, SubtreeLayoutScope&);
453 462
454 bool PaintedOutputOfObjectHasNoEffectRegardlessOfSize() const override; 463 bool PaintedOutputOfObjectHasNoEffectRegardlessOfSize() const override;
455 464
465 void InvalidateCollapsedBordersOfAffectedCells();
wkorman 2017/04/27 22:05:36 Same as previous comment re: "OfAffectedCells"
466
456 // The representation of the rows and their cells (CellStruct). 467 // The representation of the rows and their cells (CellStruct).
457 Vector<RowStruct> grid_; 468 Vector<RowStruct> grid_;
458 469
459 // The logical offset of each row from the top of the section. 470 // The logical offset of each row from the top of the section.
460 // 471 //
461 // Note that this Vector has one more entry than the number of rows so that 472 // Note that this Vector has one more entry than the number of rows so that
462 // we can keep track of the final size of the section. That is, 473 // we can keep track of the final size of the section. That is,
463 // m_rowPos[m_grid.size()] is a valid entry. 474 // m_rowPos[m_grid.size()] is a valid entry.
464 // 475 //
465 // To know a row's height at |rowIndex|, use the formula: 476 // To know a row's height at |rowIndex|, use the formula:
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 513
503 // Whether any cell spans multiple rows or cols. 514 // Whether any cell spans multiple rows or cols.
504 bool has_spanning_cells_; 515 bool has_spanning_cells_;
505 }; 516 };
506 517
507 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, IsTableSection()); 518 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, IsTableSection());
508 519
509 } // namespace blink 520 } // namespace blink
510 521
511 #endif // LayoutTableSection_h 522 #endif // LayoutTableSection_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698