Index: third_party/WebKit/Source/core/paint/TableCellPainter.cpp |
diff --git a/third_party/WebKit/Source/core/paint/TableCellPainter.cpp b/third_party/WebKit/Source/core/paint/TableCellPainter.cpp |
index 063e9fe2ec31fe78e6339fa9c2fc768d999cd72a..0c93a97043077f7134d4954808605616c96cb373 100644 |
--- a/third_party/WebKit/Source/core/paint/TableCellPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/TableCellPainter.cpp |
@@ -13,46 +13,32 @@ |
namespace blink { |
-inline const CollapsedBorderValue* TableCellPainter::cachedCollapsedLeftBorder(const ComputedStyle& styleForCellFlow) const |
+static const CollapsedBorderValue& collapsedLeftBorder(const ComputedStyle& styleForCellFlow, const LayoutTableCell::CollapsedBorderValues& values) |
{ |
- if (styleForCellFlow.isHorizontalWritingMode()) { |
- return styleForCellFlow.isLeftToRightDirection() |
- ? m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSStart) |
- : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd); |
- } |
- return styleForCellFlow.isFlippedBlocksWritingMode() |
- ? m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSAfter) |
- : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSBefore); |
+ if (styleForCellFlow.isHorizontalWritingMode()) |
+ return styleForCellFlow.isLeftToRightDirection() ? values.startBorder : values.endBorder; |
+ return styleForCellFlow.isFlippedBlocksWritingMode() ? values.afterBorder : values.beforeBorder; |
} |
-inline const CollapsedBorderValue* TableCellPainter::cachedCollapsedRightBorder(const ComputedStyle& styleForCellFlow) const |
+static const CollapsedBorderValue& collapsedRightBorder(const ComputedStyle& styleForCellFlow, const LayoutTableCell::CollapsedBorderValues& values) |
{ |
- if (styleForCellFlow.isHorizontalWritingMode()) { |
- return styleForCellFlow.isLeftToRightDirection() |
- ? m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd) |
- : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSStart); |
- } |
- return styleForCellFlow.isFlippedBlocksWritingMode() |
- ? m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSBefore) |
- : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSAfter); |
+ if (styleForCellFlow.isHorizontalWritingMode()) |
+ return styleForCellFlow.isLeftToRightDirection() ? values.endBorder : values.startBorder; |
+ return styleForCellFlow.isFlippedBlocksWritingMode() ? values.beforeBorder : values.afterBorder; |
} |
-inline const CollapsedBorderValue* TableCellPainter::cachedCollapsedTopBorder(const ComputedStyle& styleForCellFlow) const |
+static const CollapsedBorderValue& collapsedTopBorder(const ComputedStyle& styleForCellFlow, const LayoutTableCell::CollapsedBorderValues& values) |
{ |
if (styleForCellFlow.isHorizontalWritingMode()) |
- return m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSBefore); |
- return styleForCellFlow.isLeftToRightDirection() |
- ? m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSStart) |
- : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd); |
+ return values.beforeBorder; |
+ return styleForCellFlow.isLeftToRightDirection() ? values.startBorder : values.endBorder; |
} |
-inline const CollapsedBorderValue* TableCellPainter::cachedCollapsedBottomBorder(const ComputedStyle& styleForCellFlow) const |
+static const CollapsedBorderValue& collapsedBottomBorder(const ComputedStyle& styleForCellFlow, const LayoutTableCell::CollapsedBorderValues& values) |
{ |
if (styleForCellFlow.isHorizontalWritingMode()) |
- return m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSAfter); |
- return styleForCellFlow.isLeftToRightDirection() |
- ? m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd) |
- : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSStart); |
+ return values.afterBorder; |
+ return styleForCellFlow.isLeftToRightDirection() ? values.endBorder : values.startBorder; |
} |
void TableCellPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
@@ -74,40 +60,33 @@ void TableCellPainter::paintCollapsedBorders(const PaintInfo& paintInfo, const L |
if (m_layoutTableCell.style()->visibility() != VISIBLE) |
return; |
+ const LayoutTableCell::CollapsedBorderValues* values = m_layoutTableCell.collapsedBorderValues(); |
+ if (!values) |
+ return; |
+ |
const ComputedStyle& styleForCellFlow = m_layoutTableCell.styleForCellFlow(); |
- const CollapsedBorderValue* leftBorderValue = cachedCollapsedLeftBorder(styleForCellFlow); |
- const CollapsedBorderValue* rightBorderValue = cachedCollapsedRightBorder(styleForCellFlow); |
- const CollapsedBorderValue* topBorderValue = cachedCollapsedTopBorder(styleForCellFlow); |
- const CollapsedBorderValue* bottomBorderValue = cachedCollapsedBottomBorder(styleForCellFlow); |
+ const CollapsedBorderValue& leftBorderValue = collapsedLeftBorder(styleForCellFlow, *values); |
+ const CollapsedBorderValue& rightBorderValue = collapsedRightBorder(styleForCellFlow, *values); |
+ const CollapsedBorderValue& topBorderValue = collapsedTopBorder(styleForCellFlow, *values); |
+ const CollapsedBorderValue& bottomBorderValue = collapsedBottomBorder(styleForCellFlow, *values); |
int displayItemType = DisplayItem::TableCollapsedBorderBase; |
- int topWidth = 0; |
- int bottomWidth = 0; |
- int leftWidth = 0; |
- int rightWidth = 0; |
- if (topBorderValue) { |
- if (topBorderValue->shouldPaint(currentBorderValue)) |
- displayItemType |= DisplayItem::TableCollapsedBorderTop; |
- topWidth = topBorderValue->width(); |
- } |
- if (bottomBorderValue) { |
- if (bottomBorderValue->shouldPaint(currentBorderValue)) |
- displayItemType |= DisplayItem::TableCollapsedBorderBottom; |
- bottomWidth = bottomBorderValue->width(); |
- } |
- if (leftBorderValue) { |
- if (leftBorderValue->shouldPaint(currentBorderValue)) |
- displayItemType |= DisplayItem::TableCollapsedBorderLeft; |
- leftWidth = leftBorderValue->width(); |
- } |
- if (rightBorderValue) { |
- if (rightBorderValue->shouldPaint(currentBorderValue)) |
- displayItemType |= DisplayItem::TableCollapsedBorderRight; |
- rightWidth = rightBorderValue->width(); |
- } |
+ if (topBorderValue.shouldPaint(currentBorderValue)) |
+ displayItemType |= DisplayItem::TableCollapsedBorderTop; |
+ if (bottomBorderValue.shouldPaint(currentBorderValue)) |
+ displayItemType |= DisplayItem::TableCollapsedBorderBottom; |
+ if (leftBorderValue.shouldPaint(currentBorderValue)) |
+ displayItemType |= DisplayItem::TableCollapsedBorderLeft; |
+ if (rightBorderValue.shouldPaint(currentBorderValue)) |
+ displayItemType |= DisplayItem::TableCollapsedBorderRight; |
if (displayItemType == DisplayItem::TableCollapsedBorderBase) |
return; |
+ int topWidth = topBorderValue.width(); |
+ int bottomWidth = bottomBorderValue.width(); |
+ int leftWidth = leftBorderValue.width(); |
+ int rightWidth = rightBorderValue.width(); |
+ |
// Adjust our x/y/width/height so that we paint the collapsed borders at the correct location. |
LayoutRect paintRect = paintBounds(paintOffset, AddOffsetFromParent); |
IntRect borderRect = pixelSnappedIntRect(paintRect.x() - leftWidth / 2, |
@@ -129,19 +108,19 @@ void TableCellPainter::paintCollapsedBorders(const PaintInfo& paintInfo, const L |
// precedence paint on top of borders with lower precedence. |
if (displayItemType & DisplayItem::TableCollapsedBorderTop) { |
ObjectPainter::drawLineForBoxSide(graphicsContext, borderRect.x(), borderRect.y(), borderRect.maxX(), borderRect.y() + topWidth, BSTop, |
- topBorderValue->color().resolve(cellColor), collapsedBorderStyle(topBorderValue->style()), 0, 0, true); |
+ topBorderValue.color().resolve(cellColor), collapsedBorderStyle(topBorderValue.style()), 0, 0, true); |
} |
if (displayItemType & DisplayItem::TableCollapsedBorderBottom) { |
ObjectPainter::drawLineForBoxSide(graphicsContext, borderRect.x(), borderRect.maxY() - bottomWidth, borderRect.maxX(), borderRect.maxY(), BSBottom, |
- bottomBorderValue->color().resolve(cellColor), collapsedBorderStyle(bottomBorderValue->style()), 0, 0, true); |
+ bottomBorderValue.color().resolve(cellColor), collapsedBorderStyle(bottomBorderValue.style()), 0, 0, true); |
} |
if (displayItemType & DisplayItem::TableCollapsedBorderLeft) { |
ObjectPainter::drawLineForBoxSide(graphicsContext, borderRect.x(), borderRect.y(), borderRect.x() + leftWidth, borderRect.maxY(), BSLeft, |
- leftBorderValue->color().resolve(cellColor), collapsedBorderStyle(leftBorderValue->style()), 0, 0, true); |
+ leftBorderValue.color().resolve(cellColor), collapsedBorderStyle(leftBorderValue.style()), 0, 0, true); |
} |
if (displayItemType & DisplayItem::TableCollapsedBorderRight) { |
ObjectPainter::drawLineForBoxSide(graphicsContext, borderRect.maxX() - rightWidth, borderRect.y(), borderRect.maxX(), borderRect.maxY(), BSRight, |
- rightBorderValue->color().resolve(cellColor), collapsedBorderStyle(rightBorderValue->style()), 0, 0, true); |
+ rightBorderValue.color().resolve(cellColor), collapsedBorderStyle(rightBorderValue.style()), 0, 0, true); |
} |
} |