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

Unified Diff: Source/core/paint/BlockPainter.cpp

Issue 1158183006: Remove the old multicol implementation. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase master Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/paint/BlockPainter.h ('k') | Source/core/paint/DeprecatedPaintLayer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/paint/BlockPainter.cpp
diff --git a/Source/core/paint/BlockPainter.cpp b/Source/core/paint/BlockPainter.cpp
index 104e07dbab59d2a26a294a99c28c9ed19abceee0..a21a7870bc69c48a77ec9c8f0dd694e8f0eaada4 100644
--- a/Source/core/paint/BlockPainter.cpp
+++ b/Source/core/paint/BlockPainter.cpp
@@ -201,37 +201,18 @@ void BlockPainter::paintObject(const PaintInfo& paintInfo, const LayoutPoint& pa
}
}
- if ((paintPhase == PaintPhaseBlockBackground || paintPhase == PaintPhaseChildBlockBackground)
- && m_layoutBlock.style()->visibility() == VISIBLE
- && m_layoutBlock.hasColumns()
- && !paintInfo.paintRootBackgroundOnly()) {
- LayoutObjectDrawingRecorder recorder(*paintInfo.context, m_layoutBlock, DisplayItem::ColumnRules, bounds);
- if (!recorder.canUseCachedDrawing())
- paintColumnRules(scrolledPaintInfo, paintOffset);
- }
-
// We're done. We don't bother painting any children.
if (paintPhase == PaintPhaseBlockBackground || paintInfo.paintRootBackgroundOnly())
return;
- if (paintPhase != PaintPhaseSelfOutline) {
- if (m_layoutBlock.hasColumns())
- paintColumnContents(scrolledPaintInfo, paintOffset);
- else
- paintContents(scrolledPaintInfo, paintOffset);
- }
+ if (paintPhase != PaintPhaseSelfOutline)
+ paintContents(scrolledPaintInfo, paintOffset);
- // FIXME: Make this work with multi column layouts. For now don't fill gaps.
- bool isPrinting = m_layoutBlock.document().printing();
- if (!isPrinting && !m_layoutBlock.hasColumns())
+ if (!m_layoutBlock.document().printing())
m_layoutBlock.paintSelection(scrolledPaintInfo, paintOffset); // Fill in gaps in selection on lines and between blocks.
- if (paintPhase == PaintPhaseFloat || paintPhase == PaintPhaseSelection || paintPhase == PaintPhaseTextClip) {
- if (m_layoutBlock.hasColumns())
- paintColumnContents(scrolledPaintInfo, paintOffset, true);
- else
- m_layoutBlock.paintFloats(scrolledPaintInfo, paintOffset, paintPhase == PaintPhaseSelection || paintPhase == PaintPhaseTextClip);
- }
+ if (paintPhase == PaintPhaseFloat || paintPhase == PaintPhaseSelection || paintPhase == PaintPhaseTextClip)
+ m_layoutBlock.paintFloats(scrolledPaintInfo, paintOffset, paintPhase == PaintPhaseSelection || paintPhase == PaintPhaseTextClip);
}
if ((paintPhase == PaintPhaseOutline || paintPhase == PaintPhaseSelfOutline) && m_layoutBlock.style()->hasOutline() && m_layoutBlock.style()->visibility() == VISIBLE) {
@@ -302,151 +283,6 @@ bool BlockPainter::hasCaret() const
|| hasDragCaret(m_layoutBlock.frame()->page()->dragCaretController(), &m_layoutBlock, caretBrowsing);
}
-void BlockPainter::paintColumnRules(const PaintInfo& paintInfo, const LayoutPoint& paintOffset)
-{
- const Color& ruleColor = m_layoutBlock.resolveColor(CSSPropertyWebkitColumnRuleColor);
- bool ruleTransparent = m_layoutBlock.style()->columnRuleIsTransparent();
- EBorderStyle ruleStyle = m_layoutBlock.style()->columnRuleStyle();
- LayoutUnit ruleThickness = m_layoutBlock.style()->columnRuleWidth();
- LayoutUnit colGap = m_layoutBlock.columnGap();
- bool renderRule = ruleStyle > BHIDDEN && !ruleTransparent;
- if (!renderRule)
- return;
-
- ColumnInfo* colInfo = m_layoutBlock.columnInfo();
- unsigned colCount = m_layoutBlock.columnCount(colInfo);
-
- bool antialias = BoxPainter::shouldAntialiasLines(paintInfo.context);
-
- if (colInfo->progressionAxis() == ColumnInfo::InlineAxis) {
- bool leftToRight = m_layoutBlock.style()->isLeftToRightDirection();
- LayoutUnit currLogicalLeftOffset = leftToRight ? LayoutUnit() : m_layoutBlock.contentLogicalWidth();
- LayoutUnit ruleAdd = m_layoutBlock.logicalLeftOffsetForContent();
- LayoutUnit ruleLogicalLeft = leftToRight ? LayoutUnit() : m_layoutBlock.contentLogicalWidth();
- LayoutUnit inlineDirectionSize = colInfo->desiredColumnWidth();
- BoxSide boxSide = m_layoutBlock.isHorizontalWritingMode()
- ? leftToRight ? BSLeft : BSRight
- : leftToRight ? BSTop : BSBottom;
-
- 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_layoutBlock.isHorizontalWritingMode() ? paintOffset.x() + ruleLogicalLeft - ruleThickness / 2 + ruleAdd : paintOffset.x() + m_layoutBlock.borderLeft() + m_layoutBlock.paddingLeft();
- LayoutUnit ruleRight = m_layoutBlock.isHorizontalWritingMode() ? ruleLeft + ruleThickness : ruleLeft + m_layoutBlock.contentWidth();
- LayoutUnit ruleTop = m_layoutBlock.isHorizontalWritingMode() ? paintOffset.y() + m_layoutBlock.borderTop() + m_layoutBlock.paddingTop() : paintOffset.y() + ruleLogicalLeft - ruleThickness / 2 + ruleAdd;
- LayoutUnit ruleBottom = m_layoutBlock.isHorizontalWritingMode() ? ruleTop + m_layoutBlock.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, antialias);
- }
-
- ruleLogicalLeft = currLogicalLeftOffset;
- }
- } else {
- bool topToBottom = !m_layoutBlock.style()->isFlippedBlocksWritingMode();
- LayoutUnit ruleLeft = m_layoutBlock.isHorizontalWritingMode()
- ? m_layoutBlock.borderLeft() + m_layoutBlock.paddingLeft()
- : colGap / 2 - colGap - ruleThickness / 2 + m_layoutBlock.borderBefore() + m_layoutBlock.paddingBefore();
- LayoutUnit ruleWidth = m_layoutBlock.isHorizontalWritingMode() ? m_layoutBlock.contentWidth() : ruleThickness;
- LayoutUnit ruleTop = m_layoutBlock.isHorizontalWritingMode()
- ? colGap / 2 - colGap - ruleThickness / 2 + m_layoutBlock.borderBefore() + m_layoutBlock.paddingBefore()
- : m_layoutBlock.borderStart() + m_layoutBlock.paddingStart();
- LayoutUnit ruleHeight = m_layoutBlock.isHorizontalWritingMode() ? ruleThickness : m_layoutBlock.contentHeight();
- LayoutRect ruleRect(ruleLeft, ruleTop, ruleWidth, ruleHeight);
-
- if (!topToBottom) {
- if (m_layoutBlock.isHorizontalWritingMode())
- ruleRect.setY(m_layoutBlock.size().height() - ruleRect.maxY());
- else
- ruleRect.setX(m_layoutBlock.size().width() - ruleRect.maxX());
- }
-
- ruleRect.moveBy(paintOffset);
-
- BoxSide boxSide = m_layoutBlock.isHorizontalWritingMode()
- ? topToBottom ? BSTop : BSBottom
- : topToBottom ? BSLeft : BSRight;
-
- LayoutSize step(0, topToBottom ? colInfo->columnHeight() + colGap : -(colInfo->columnHeight() + colGap));
- if (!m_layoutBlock.isHorizontalWritingMode())
- step = step.transposedSize();
-
- for (unsigned i = 1; i < colCount; i++) {
- ruleRect.move(step);
- IntRect pixelSnappedRuleRect = pixelSnappedIntRect(ruleRect);
- ObjectPainter::drawLineForBoxSide(paintInfo.context, pixelSnappedRuleRect.x(), pixelSnappedRuleRect.y(), pixelSnappedRuleRect.maxX(), pixelSnappedRuleRect.maxY(), boxSide, ruleColor, ruleStyle, 0, 0, antialias);
- }
- }
-}
-
-void BlockPainter::paintColumnContents(const PaintInfo& paintInfo, const LayoutPoint& paintOffset, bool paintingFloats)
-{
- // We need to do multiple passes, breaking up our child painting into strips.
- ColumnInfo* colInfo = m_layoutBlock.columnInfo();
- unsigned colCount = m_layoutBlock.columnCount(colInfo);
- if (!colCount)
- return;
- LayoutUnit currLogicalTopOffset = 0;
- LayoutUnit colGap = m_layoutBlock.columnGap();
-
- for (unsigned i = 0; i < colCount; i++) {
- ScopeRecorder scopeRecorder(*paintInfo.context, m_layoutBlock);
-
- // For each rect, we clip to the rect, and then we adjust our coords.
- LayoutRect colRect = m_layoutBlock.columnRectAt(colInfo, i);
- m_layoutBlock.flipForWritingMode(colRect);
- LayoutUnit logicalLeftOffset = (m_layoutBlock.isHorizontalWritingMode() ? colRect.x() : colRect.y()) - m_layoutBlock.logicalLeftOffsetForContent();
- LayoutSize offset = m_layoutBlock.isHorizontalWritingMode() ? LayoutSize(logicalLeftOffset, currLogicalTopOffset) : LayoutSize(currLogicalTopOffset, logicalLeftOffset);
- if (colInfo->progressionAxis() == ColumnInfo::BlockAxis) {
- if (m_layoutBlock.isHorizontalWritingMode())
- offset.expand(0, colRect.y() - m_layoutBlock.borderTop() - m_layoutBlock.paddingTop());
- else
- offset.expand(colRect.x() - m_layoutBlock.borderLeft() - m_layoutBlock.paddingLeft(), 0);
- }
- colRect.moveBy(paintOffset);
- PaintInfo info(paintInfo);
- info.rect.intersect(enclosingIntRect(colRect));
-
- if (!info.rect.isEmpty()) {
- LayoutRect clipRect(colRect);
-
- if (i < colCount - 1) {
- if (m_layoutBlock.isHorizontalWritingMode())
- clipRect.expand(colGap / 2, 0);
- else
- clipRect.expand(0, colGap / 2);
- }
- // Each strip pushes a clip, since column boxes are specified as being
- // like overflow:hidden.
- // FIXME: Content and column rules that extend outside column boxes at the edges of the multi-column element
- // are clipped according to the 'overflow' property.
- ClipRecorder clipRecorder(*paintInfo.context, m_layoutBlock,
- DisplayItem::paintPhaseToClipColumnBoundsType(paintInfo.phase), LayoutRect(enclosingIntRect(clipRect)));
-
- // Adjust our x and y when painting.
- LayoutPoint adjustedPaintOffset = paintOffset + offset;
- if (paintingFloats)
- m_layoutBlock.paintFloats(info, adjustedPaintOffset, paintInfo.phase == PaintPhaseSelection || paintInfo.phase == PaintPhaseTextClip);
- else
- paintContents(info, adjustedPaintOffset);
- }
-
- LayoutUnit blockDelta = (m_layoutBlock.isHorizontalWritingMode() ? colRect.height() : colRect.width());
- if (m_layoutBlock.style()->isFlippedBlocksWritingMode())
- currLogicalTopOffset += blockDelta;
- else
- currLogicalTopOffset -= blockDelta;
- }
-}
-
void BlockPainter::paintContents(const PaintInfo& paintInfo, const LayoutPoint& paintOffset)
{
// Avoid painting descendants of the root element when stylesheets haven't loaded. This eliminates FOUC.
« no previous file with comments | « Source/core/paint/BlockPainter.h ('k') | Source/core/paint/DeprecatedPaintLayer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698