| 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. All rights reserv
ed. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2009, 2010 Apple Inc. All rights reserv
ed. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 | 164 |
| 165 unsigned lastColumnIndex() const { return numEffCols() - 1; } | 165 unsigned lastColumnIndex() const { return numEffCols() - 1; } |
| 166 | 166 |
| 167 void splitColumn(unsigned position, unsigned firstSpan); | 167 void splitColumn(unsigned position, unsigned firstSpan); |
| 168 void appendColumn(unsigned span); | 168 void appendColumn(unsigned span); |
| 169 unsigned numEffCols() const { return m_columns.size(); } | 169 unsigned numEffCols() const { return m_columns.size(); } |
| 170 unsigned spanOfEffCol(unsigned effCol) const { return m_columns[effCol].span
; } | 170 unsigned spanOfEffCol(unsigned effCol) const { return m_columns[effCol].span
; } |
| 171 | 171 |
| 172 unsigned colToEffCol(unsigned column) const | 172 unsigned colToEffCol(unsigned column) const |
| 173 { | 173 { |
| 174 if (!m_hasCellColspanThatDeterminesTableWidth) |
| 175 return column; |
| 176 |
| 174 unsigned effColumn = 0; | 177 unsigned effColumn = 0; |
| 175 unsigned numColumns = numEffCols(); | 178 unsigned numColumns = numEffCols(); |
| 176 for (unsigned c = 0; effColumn < numColumns && c + m_columns[effColumn].
span - 1 < column; ++effColumn) | 179 for (unsigned c = 0; effColumn < numColumns && c + m_columns[effColumn].
span - 1 < column; ++effColumn) |
| 177 c += m_columns[effColumn].span; | 180 c += m_columns[effColumn].span; |
| 178 return effColumn; | 181 return effColumn; |
| 179 } | 182 } |
| 180 | 183 |
| 181 unsigned effColToCol(unsigned effCol) const | 184 unsigned effColToCol(unsigned effCol) const |
| 182 { | 185 { |
| 186 if (!m_hasCellColspanThatDeterminesTableWidth) |
| 187 return effCol; |
| 188 |
| 183 unsigned c = 0; | 189 unsigned c = 0; |
| 184 for (unsigned i = 0; i < effCol; i++) | 190 for (unsigned i = 0; i < effCol; i++) |
| 185 c += m_columns[i].span; | 191 c += m_columns[i].span; |
| 186 return c; | 192 return c; |
| 187 } | 193 } |
| 188 | 194 |
| 189 LayoutUnit borderSpacingInRowDirection() const | 195 LayoutUnit borderSpacingInRowDirection() const |
| 190 { | 196 { |
| 191 if (unsigned effectiveColumnCount = numEffCols()) | 197 if (unsigned effectiveColumnCount = numEffCols()) |
| 192 return static_cast<LayoutUnit>(effectiveColumnCount + 1) * hBorderSp
acing(); | 198 return static_cast<LayoutUnit>(effectiveColumnCount + 1) * hBorderSp
acing(); |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 | 331 |
| 326 CollapsedBorderValues m_collapsedBorders; | 332 CollapsedBorderValues m_collapsedBorders; |
| 327 const CollapsedBorderValue* m_currentBorder; | 333 const CollapsedBorderValue* m_currentBorder; |
| 328 bool m_collapsedBordersValid : 1; | 334 bool m_collapsedBordersValid : 1; |
| 329 | 335 |
| 330 mutable bool m_hasColElements : 1; | 336 mutable bool m_hasColElements : 1; |
| 331 mutable bool m_needsSectionRecalc : 1; | 337 mutable bool m_needsSectionRecalc : 1; |
| 332 | 338 |
| 333 bool m_columnLogicalWidthChanged : 1; | 339 bool m_columnLogicalWidthChanged : 1; |
| 334 mutable bool m_columnRenderersValid: 1; | 340 mutable bool m_columnRenderersValid: 1; |
| 341 mutable bool m_hasCellColspanThatDeterminesTableWidth : 1; |
| 342 bool hasCellColspanThatDeterminesTableWidth() const |
| 343 { |
| 344 for (unsigned c = 0; c < numEffCols(); c++) { |
| 345 if (m_columns[c].span > 1) |
| 346 return true; |
| 347 } |
| 348 return false; |
| 349 } |
| 335 | 350 |
| 336 short m_hSpacing; | 351 short m_hSpacing; |
| 337 short m_vSpacing; | 352 short m_vSpacing; |
| 338 int m_borderStart; | 353 int m_borderStart; |
| 339 int m_borderEnd; | 354 int m_borderEnd; |
| 340 }; | 355 }; |
| 341 | 356 |
| 342 inline RenderTableSection* RenderTable::topSection() const | 357 inline RenderTableSection* RenderTable::topSection() const |
| 343 { | 358 { |
| 344 ASSERT(!needsSectionRecalc()); | 359 ASSERT(!needsSectionRecalc()); |
| 345 if (m_head) | 360 if (m_head) |
| 346 return m_head; | 361 return m_head; |
| 347 if (m_firstBody) | 362 if (m_firstBody) |
| 348 return m_firstBody; | 363 return m_firstBody; |
| 349 return m_foot; | 364 return m_foot; |
| 350 } | 365 } |
| 351 | 366 |
| 352 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderTable, isTable()); | 367 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderTable, isTable()); |
| 353 | 368 |
| 354 } // namespace WebCore | 369 } // namespace WebCore |
| 355 | 370 |
| 356 #endif // RenderTable_h | 371 #endif // RenderTable_h |
| OLD | NEW |