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

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

Issue 2884573002: Replace LayoutTableCell::AbsoluteColumnIndex() with EffectiveColumnIndex()
Patch Set: - Created 3 years, 7 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, 2009, 2013 Apple Inc. 7 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009, 2013 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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 // Called from HTMLTableCellElement. 102 // Called from HTMLTableCellElement.
103 void ColSpanOrRowSpanChanged(); 103 void ColSpanOrRowSpanChanged();
104 104
105 void SetAbsoluteColumnIndex(unsigned column) { 105 void SetAbsoluteColumnIndex(unsigned column) {
106 if (UNLIKELY(column > kMaxColumnIndex)) 106 if (UNLIKELY(column > kMaxColumnIndex))
107 CRASH(); 107 CRASH();
108 108
109 absolute_column_index_ = column; 109 absolute_column_index_ = column;
110 } 110 }
111 111
112 bool HasSetAbsoluteColumnIndex() const { 112 // See LayoutTable.h for definition of absolute and effective columns.
113 return absolute_column_index_ != kUnsetColumnIndex; 113 // In most cases we should use EffectiveColumnIndex() instead of
114 // AbsolutColumnIndex().
115 unsigned AbsoluteColumnIndex() const { return absolute_column_index_; }
116 unsigned EffectiveColumnIndex() const {
117 DCHECK_NE(absolute_column_index_, kUnsetColumnIndex);
118 return Table()->AbsoluteColumnToEffectiveColumn(absolute_column_index_);
114 } 119 }
115 120 // Returns effective column index, of the cell after this cell, or of the
116 unsigned AbsoluteColumnIndex() const { 121 // imaginary cell after this cell if there is no cell after this cell.
117 DCHECK(HasSetAbsoluteColumnIndex()); 122 unsigned EffectiveColumnIndexOfCellAfter() const {
118 return absolute_column_index_; 123 return Table()->AbsoluteColumnToEffectiveColumn(absolute_column_index_ +
124 ColSpan());
119 } 125 }
120 126
121 LayoutTableRow* Row() const { return ToLayoutTableRow(Parent()); } 127 LayoutTableRow* Row() const { return ToLayoutTableRow(Parent()); }
122 LayoutTableSection* Section() const { 128 LayoutTableSection* Section() const {
123 return ToLayoutTableSection(Parent()->Parent()); 129 return ToLayoutTableSection(Parent()->Parent());
124 } 130 }
125 LayoutTable* Table() const { 131 LayoutTable* Table() const {
126 return ToLayoutTable(Parent()->Parent()->Parent()); 132 return ToLayoutTable(Parent()->Parent()->Parent());
127 } 133 }
134 LayoutTable::ColAndColGroup GetColAndColGroup() const {
135 return Table()->ColAndColGroupAtEffectiveColumn(EffectiveColumnIndex());
136 }
128 137
129 LayoutTableCell* PreviousCell() const; 138 LayoutTableCell* PreviousCell() const;
130 LayoutTableCell* NextCell() const; 139 LayoutTableCell* NextCell() const;
131 140
132 unsigned RowIndex() const { 141 unsigned RowIndex() const {
133 // This function shouldn't be called on a detached cell. 142 // This function shouldn't be called on a detached cell.
134 DCHECK(Row()); 143 DCHECK(Row());
135 return Row()->RowIndex(); 144 return Row()->RowIndex();
136 } 145 }
137 146
138 Length StyleOrColLogicalWidth() const { 147 Length StyleOrColLogicalWidth() const {
139 Length style_width = Style()->LogicalWidth(); 148 Length style_width = Style()->LogicalWidth();
140 if (!style_width.IsAuto()) 149 if (!style_width.IsAuto())
141 return style_width; 150 return style_width;
142 if (LayoutTableCol* first_column = 151 if (LayoutTableCol* first_column =
143 Table() 152 GetColAndColGroup().InnermostColOrColGroup())
144 ->ColElementAtAbsoluteColumn(AbsoluteColumnIndex())
145 .InnermostColOrColGroup())
146 return LogicalWidthFromColumns(first_column, style_width); 153 return LogicalWidthFromColumns(first_column, style_width);
147 return style_width; 154 return style_width;
148 } 155 }
149 156
150 int LogicalHeightFromStyle() const { 157 int LogicalHeightFromStyle() const {
151 Length height = Style()->LogicalHeight(); 158 Length height = Style()->LogicalHeight();
152 int style_logical_height = 159 int style_logical_height =
153 height.IsIntrinsicOrAuto() 160 height.IsIntrinsicOrAuto()
154 ? 0 161 ? 0
155 : ValueForLength(height, LayoutUnit()).ToInt(); 162 : ValueForLength(height, LayoutUnit()).ToInt();
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 368
362 void AddLayerHitTestRects(LayerHitTestRects&, 369 void AddLayerHitTestRects(LayerHitTestRects&,
363 const PaintLayer* current_composited_layer, 370 const PaintLayer* current_composited_layer,
364 const LayoutPoint& layer_offset, 371 const LayoutPoint& layer_offset,
365 const LayoutRect& container_rect) const override; 372 const LayoutRect& container_rect) const override;
366 373
367 PaintInvalidationReason InvalidatePaint( 374 PaintInvalidationReason InvalidatePaint(
368 const PaintInvalidatorContext&) const override; 375 const PaintInvalidatorContext&) const override;
369 376
370 private: 377 private:
378 friend class LayoutTableCellDeathTest;
371 friend class LayoutTableCellTest; 379 friend class LayoutTableCellTest;
372 380
373 bool IsOfType(LayoutObjectType type) const override { 381 bool IsOfType(LayoutObjectType type) const override {
374 return type == kLayoutObjectTableCell || LayoutBlockFlow::IsOfType(type); 382 return type == kLayoutObjectTableCell || LayoutBlockFlow::IsOfType(type);
375 } 383 }
376 384
377 void WillBeRemovedFromTree() override; 385 void WillBeRemovedFromTree() override;
378 386
379 void UpdateLogicalWidth() override; 387 void UpdateLogicalWidth() override;
380 388
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 return ToLayoutTableCell(FirstChild()); 494 return ToLayoutTableCell(FirstChild());
487 } 495 }
488 496
489 inline LayoutTableCell* LayoutTableRow::LastCell() const { 497 inline LayoutTableCell* LayoutTableRow::LastCell() const {
490 return ToLayoutTableCell(LastChild()); 498 return ToLayoutTableCell(LastChild());
491 } 499 }
492 500
493 } // namespace blink 501 } // namespace blink
494 502
495 #endif // LayoutTableCell_h 503 #endif // LayoutTableCell_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutTable.cpp ('k') | third_party/WebKit/Source/core/layout/LayoutTableCell.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698