| 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 reserv
ed. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2009, 2013 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 16 matching lines...) Expand all Loading... |
| 27 | 27 |
| 28 #include "core/CoreExport.h" | 28 #include "core/CoreExport.h" |
| 29 #include "core/layout/LayoutTable.h" | 29 #include "core/layout/LayoutTable.h" |
| 30 #include "wtf/Vector.h" | 30 #include "wtf/Vector.h" |
| 31 | 31 |
| 32 namespace blink { | 32 namespace blink { |
| 33 | 33 |
| 34 // This variable is used to balance the memory consumption vs the paint invalida
tion time on big tables. | 34 // This variable is used to balance the memory consumption vs the paint invalida
tion time on big tables. |
| 35 const float gMaxAllowedOverflowingCellRatioForFastPaintPath = 0.1f; | 35 const float gMaxAllowedOverflowingCellRatioForFastPaintPath = 0.1f; |
| 36 | 36 |
| 37 enum CollapsedBorderSide { | |
| 38 CBSBefore, | |
| 39 CBSAfter, | |
| 40 CBSStart, | |
| 41 CBSEnd | |
| 42 }; | |
| 43 | |
| 44 // Helper class for paintObject. | 37 // Helper class for paintObject. |
| 45 class CellSpan { | 38 class CellSpan { |
| 46 STACK_ALLOCATED(); | 39 STACK_ALLOCATED(); |
| 47 public: | 40 public: |
| 48 CellSpan(unsigned start, unsigned end) | 41 CellSpan(unsigned start, unsigned end) |
| 49 : m_start(start) | 42 : m_start(start) |
| 50 , m_end(end) | 43 , m_end(end) |
| 51 { | 44 { |
| 52 } | 45 } |
| 53 | 46 |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 recalcCells(); | 266 recalcCells(); |
| 274 } | 267 } |
| 275 | 268 |
| 276 bool needsCellRecalc() const { return m_needsCellRecalc; } | 269 bool needsCellRecalc() const { return m_needsCellRecalc; } |
| 277 void setNeedsCellRecalc(); | 270 void setNeedsCellRecalc(); |
| 278 | 271 |
| 279 int rowBaseline(unsigned row) { return m_grid[row].baseline; } | 272 int rowBaseline(unsigned row) { return m_grid[row].baseline; } |
| 280 | 273 |
| 281 void rowLogicalHeightChanged(LayoutTableRow*); | 274 void rowLogicalHeightChanged(LayoutTableRow*); |
| 282 | 275 |
| 283 void removeCachedCollapsedBorders(const LayoutTableCell*); | |
| 284 // Returns true if any collapsed borders of the cell changed. | |
| 285 bool setCachedCollapsedBorder(const LayoutTableCell*, CollapsedBorderSide, c
onst CollapsedBorderValue&); | |
| 286 // Returns null if the border is not cached (there is no such collapsed bord
er or the border is invisible). | |
| 287 const CollapsedBorderValue* cachedCollapsedBorder(const LayoutTableCell*, Co
llapsedBorderSide) const; | |
| 288 | |
| 289 // distributeExtraLogicalHeightToRows methods return the *consumed* extra lo
gical height. | 276 // distributeExtraLogicalHeightToRows methods return the *consumed* extra lo
gical height. |
| 290 // FIXME: We may want to introduce a structure holding the in-flux layout in
formation. | 277 // FIXME: We may want to introduce a structure holding the in-flux layout in
formation. |
| 291 int distributeExtraLogicalHeightToRows(int extraLogicalHeight); | 278 int distributeExtraLogicalHeightToRows(int extraLogicalHeight); |
| 292 | 279 |
| 293 static LayoutTableSection* createAnonymousWithParent(const LayoutObject*); | 280 static LayoutTableSection* createAnonymousWithParent(const LayoutObject*); |
| 294 LayoutBox* createAnonymousBoxWithSameTypeAs(const LayoutObject* parent) cons
t override | 281 LayoutBox* createAnonymousBoxWithSameTypeAs(const LayoutObject* parent) cons
t override |
| 295 { | 282 { |
| 296 return createAnonymousWithParent(parent); | 283 return createAnonymousWithParent(parent); |
| 297 } | 284 } |
| 298 | 285 |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 // and m_forceSlowPaintPathWithOverflowingCell will be set to save memory. | 392 // and m_forceSlowPaintPathWithOverflowingCell will be set to save memory. |
| 406 HashSet<LayoutTableCell*> m_overflowingCells; | 393 HashSet<LayoutTableCell*> m_overflowingCells; |
| 407 bool m_forceSlowPaintPathWithOverflowingCell; | 394 bool m_forceSlowPaintPathWithOverflowingCell; |
| 408 | 395 |
| 409 // This boolean tracks if we have cells overlapping due to rowspan / colspan | 396 // This boolean tracks if we have cells overlapping due to rowspan / colspan |
| 410 // (see class comment above about when it could appear). | 397 // (see class comment above about when it could appear). |
| 411 // | 398 // |
| 412 // The use is to disable a painting optimization where we just paint the | 399 // The use is to disable a painting optimization where we just paint the |
| 413 // invalidated cells. | 400 // invalidated cells. |
| 414 bool m_hasMultipleCellLevels; | 401 bool m_hasMultipleCellLevels; |
| 415 | |
| 416 // This map holds the collapsed border values for cells with collapsed borde
rs. | |
| 417 // It is held at LayoutTableSection level to spare memory consumption by tab
le cells. | |
| 418 // Invisible borders are never stored in this map. | |
| 419 using CellsCollapsedBordersMap = HashMap<std::pair<const LayoutTableCell*, i
nt>, CollapsedBorderValue>; | |
| 420 CellsCollapsedBordersMap m_cellsCollapsedBorders; | |
| 421 }; | 402 }; |
| 422 | 403 |
| 423 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, isTableSection()); | 404 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutTableSection, isTableSection()); |
| 424 | 405 |
| 425 } // namespace blink | 406 } // namespace blink |
| 426 | 407 |
| 427 #endif // LayoutTableSection_h | 408 #endif // LayoutTableSection_h |
| OLD | NEW |