| Index: third_party/WebKit/Source/core/paint/MultiColumnSetPainter.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/MultiColumnSetPainter.cpp b/third_party/WebKit/Source/core/paint/MultiColumnSetPainter.cpp
|
| index 66dc1c7b80af1f54a1034a0557d7be4d0aaaa7a0..61e6cc68bb37121279d1ffb1d685d08640f47246 100644
|
| --- a/third_party/WebKit/Source/core/paint/MultiColumnSetPainter.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/MultiColumnSetPainter.cpp
|
| @@ -34,21 +34,8 @@ void MultiColumnSetPainter::paintObject(const PaintInfo& paintInfo, const Layout
|
|
|
| void MultiColumnSetPainter::paintColumnRules(const PaintInfo& paintInfo, const LayoutPoint& paintOffset)
|
| {
|
| - if (m_layoutMultiColumnSet.flowThread()->isLayoutPagedFlowThread())
|
| - return;
|
| -
|
| - const ComputedStyle& blockStyle = m_layoutMultiColumnSet.multiColumnBlockFlow()->styleRef();
|
| - const Color& ruleColor = m_layoutMultiColumnSet.resolveColor(blockStyle, CSSPropertyColumnRuleColor);
|
| - bool ruleTransparent = blockStyle.columnRuleIsTransparent();
|
| - EBorderStyle ruleStyle = blockStyle.columnRuleStyle();
|
| - LayoutUnit ruleThickness(blockStyle.columnRuleWidth());
|
| - LayoutUnit colGap = m_layoutMultiColumnSet.columnGap();
|
| - bool renderRule = ruleStyle > BorderStyleHidden && !ruleTransparent;
|
| - if (!renderRule)
|
| - return;
|
| -
|
| - unsigned colCount = m_layoutMultiColumnSet.actualColumnCount();
|
| - if (colCount <= 1)
|
| + Vector<LayoutRect> columnRuleBounds;
|
| + if (!m_layoutMultiColumnSet.computeColumnRuleBounds(paintOffset, columnRuleBounds))
|
| return;
|
|
|
| if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(paintInfo.context, m_layoutMultiColumnSet, DisplayItem::ColumnRules))
|
| @@ -58,36 +45,17 @@ void MultiColumnSetPainter::paintColumnRules(const PaintInfo& paintInfo, const L
|
| paintRect.moveBy(paintOffset);
|
| LayoutObjectDrawingRecorder drawingRecorder(paintInfo.context, m_layoutMultiColumnSet, DisplayItem::ColumnRules, paintRect);
|
|
|
| + const ComputedStyle& blockStyle = m_layoutMultiColumnSet.multiColumnBlockFlow()->styleRef();
|
| + EBorderStyle ruleStyle = blockStyle.columnRuleStyle();
|
| bool leftToRight = m_layoutMultiColumnSet.style()->isLeftToRightDirection();
|
| - LayoutUnit currLogicalLeftOffset = leftToRight ? LayoutUnit() : m_layoutMultiColumnSet.contentLogicalWidth();
|
| - LayoutUnit ruleAdd = m_layoutMultiColumnSet.borderAndPaddingLogicalLeft();
|
| - LayoutUnit ruleLogicalLeft = leftToRight ? LayoutUnit() : m_layoutMultiColumnSet.contentLogicalWidth();
|
| - LayoutUnit inlineDirectionSize = m_layoutMultiColumnSet.pageLogicalWidth();
|
| BoxSide boxSide = m_layoutMultiColumnSet.isHorizontalWritingMode()
|
| ? leftToRight ? BSLeft : BSRight
|
| : leftToRight ? BSTop : BSBottom;
|
| + const Color& ruleColor = m_layoutMultiColumnSet.resolveColor(blockStyle, CSSPropertyColumnRuleColor);
|
|
|
| - for (unsigned i = 0; i < colCount; i++) {
|
| - // Move to the next position.
|
| - if (leftToRight) {
|
| - ruleLogicalLeft += inlineDirectionSize + colGap / 2;
|
| - currLogicalLeftOffset += inlineDirectionSize + colGap;
|
| - } else {
|
| - ruleLogicalLeft -= (inlineDirectionSize + colGap / 2);
|
| - currLogicalLeftOffset -= (inlineDirectionSize + colGap);
|
| - }
|
| -
|
| - // Now paint the column rule.
|
| - if (i < colCount - 1) {
|
| - LayoutUnit ruleLeft = m_layoutMultiColumnSet.isHorizontalWritingMode() ? paintOffset.x() + ruleLogicalLeft - ruleThickness / 2 + ruleAdd : paintOffset.x() + m_layoutMultiColumnSet.borderLeft() + m_layoutMultiColumnSet.paddingLeft();
|
| - LayoutUnit ruleRight = m_layoutMultiColumnSet.isHorizontalWritingMode() ? ruleLeft + ruleThickness : ruleLeft + m_layoutMultiColumnSet.contentWidth();
|
| - LayoutUnit ruleTop = m_layoutMultiColumnSet.isHorizontalWritingMode() ? paintOffset.y() + m_layoutMultiColumnSet.borderTop() + m_layoutMultiColumnSet.paddingTop() : paintOffset.y() + ruleLogicalLeft - ruleThickness / 2 + ruleAdd;
|
| - LayoutUnit ruleBottom = m_layoutMultiColumnSet.isHorizontalWritingMode() ? ruleTop + m_layoutMultiColumnSet.contentHeight() : ruleTop + ruleThickness;
|
| - IntRect pixelSnappedRuleRect = pixelSnappedIntRectFromEdges(ruleLeft, ruleTop, ruleRight, ruleBottom);
|
| - ObjectPainter::drawLineForBoxSide(paintInfo.context, pixelSnappedRuleRect.x(), pixelSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect.maxY(), boxSide, ruleColor, ruleStyle, 0, 0, true);
|
| - }
|
| -
|
| - ruleLogicalLeft = currLogicalLeftOffset;
|
| + for (auto& bound : columnRuleBounds) {
|
| + IntRect pixelSnappedRuleRect = pixelSnappedIntRect(bound);
|
| + ObjectPainter::drawLineForBoxSide(paintInfo.context, pixelSnappedRuleRect.x(), pixelSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect.maxY(), boxSide, ruleColor, ruleStyle, 0, 0, true);
|
| }
|
| }
|
|
|
|
|