Index: third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp |
diff --git a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp |
index 5927d1acef1bbf6222d925d58af87d01ecced3c3..952a322a917214052ec3e5f544d17459dcc19f88 100644 |
--- a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp |
@@ -251,25 +251,25 @@ LayoutRectOutsets doubleStripeInsets(const BorderEdge edges[], BorderEdge::Doubl |
-edges[BSLeft].getDoubleBorderStripeWidth(stripe)); |
} |
-void drawSolidBorderRect(GraphicsContext* context, const FloatRect& borderRect, |
+void drawSolidBorderRect(GraphicsContext& context, const FloatRect& borderRect, |
float borderWidth, const Color& color) |
{ |
FloatRect strokeRect(borderRect); |
strokeRect.inflate(-borderWidth / 2); |
- bool wasAntialias = context->shouldAntialias(); |
+ bool wasAntialias = context.shouldAntialias(); |
if (!wasAntialias) |
- context->setShouldAntialias(true); |
+ context.setShouldAntialias(true); |
- context->setStrokeStyle(SolidStroke); |
- context->setStrokeColor(color); |
- context->strokeRect(strokeRect, borderWidth); |
+ context.setStrokeStyle(SolidStroke); |
+ context.setStrokeColor(color); |
+ context.strokeRect(strokeRect, borderWidth); |
if (!wasAntialias) |
- context->setShouldAntialias(false); |
+ context.setShouldAntialias(false); |
} |
-void drawBleedAdjustedDRRect(GraphicsContext* context, BackgroundBleedAvoidance bleedAvoidance, |
+void drawBleedAdjustedDRRect(GraphicsContext& context, BackgroundBleedAvoidance bleedAvoidance, |
const FloatRoundedRect& outer, const FloatRoundedRect& inner, Color color) |
{ |
switch (bleedAvoidance) { |
@@ -287,7 +287,7 @@ void drawBleedAdjustedDRRect(GraphicsContext* context, BackgroundBleedAvoidance |
paint.setColor(color.rgb()); |
paint.setStyle(SkPaint::kFill_Style); |
paint.setAntiAlias(true); |
- context->drawPath(path, paint); |
+ context.drawPath(path, paint); |
break; |
} |
@@ -296,12 +296,12 @@ void drawBleedAdjustedDRRect(GraphicsContext* context, BackgroundBleedAvoidance |
// BackgroundBleedClipOnly clips the outer rrect corners for us. |
FloatRoundedRect adjustedOuter = outer; |
adjustedOuter.setRadii(FloatRoundedRect::Radii()); |
- context->fillDRRect(adjustedOuter, inner, color); |
+ context.fillDRRect(adjustedOuter, inner, color); |
break; |
} |
// fall through |
default: |
- context->fillDRRect(outer, inner, color); |
+ context.fillDRRect(outer, inner, color); |
break; |
} |
} |
@@ -439,7 +439,7 @@ private: |
} |
}; |
-void BoxBorderPainter::drawDoubleBorder(GraphicsContext* context, const LayoutRect& borderRect) const |
+void BoxBorderPainter::drawDoubleBorder(GraphicsContext& context, const LayoutRect& borderRect) const |
{ |
ASSERT(m_isUniformColor); |
ASSERT(m_isUniformStyle); |
@@ -460,10 +460,10 @@ void BoxBorderPainter::drawDoubleBorder(GraphicsContext* context, const LayoutRe |
doubleStripeInsets(m_edges, BorderEdge::DoubleBorderStripeInner); |
const FloatRoundedRect innerThirdRect = m_style.getRoundedInnerBorderFor(borderRect, |
innerThirdInsets, m_includeLogicalLeftEdge, m_includeLogicalRightEdge); |
- context->fillDRRect(innerThirdRect, m_inner, color); |
+ context.fillDRRect(innerThirdRect, m_inner, color); |
} |
-bool BoxBorderPainter::paintBorderFastPath(GraphicsContext* context, const LayoutRect& borderRect) const |
+bool BoxBorderPainter::paintBorderFastPath(GraphicsContext& context, const LayoutRect& borderRect) const |
{ |
if (!m_isUniformColor || !m_isUniformStyle || !m_inner.isRenderable()) |
return false; |
@@ -503,8 +503,8 @@ bool BoxBorderPainter::paintBorderFastPath(GraphicsContext* context, const Layou |
path.addRect(calculateSideRect(m_outer, currEdge, i)); |
} |
- context->setFillColor(firstEdge().color); |
- context->fillPath(path); |
+ context.setFillColor(firstEdge().color); |
+ context.fillPath(path); |
return true; |
} |
@@ -600,20 +600,20 @@ void BoxBorderPainter::paintBorder(const PaintInfo& info, const LayoutRect& rect |
if (!m_visibleEdgeCount || m_outer.rect().isEmpty()) |
return; |
- GraphicsContext* graphicsContext = info.context; |
+ GraphicsContext& graphicsContext = info.context; |
if (paintBorderFastPath(graphicsContext, rect)) |
return; |
bool clipToOuterBorder = m_outer.isRounded(); |
- GraphicsContextStateSaver stateSaver(*graphicsContext, clipToOuterBorder); |
+ GraphicsContextStateSaver stateSaver(graphicsContext, clipToOuterBorder); |
if (clipToOuterBorder) { |
// For BackgroundBleedClip{Only,Layer}, the outer rrect clip is already applied. |
if (!bleedAvoidanceIsClipping(m_bleedAvoidance)) |
- graphicsContext->clipRoundedRect(m_outer); |
+ graphicsContext.clipRoundedRect(m_outer); |
if (m_inner.isRenderable() && !m_inner.isEmpty()) |
- graphicsContext->clipOutRoundedRect(m_inner); |
+ graphicsContext.clipOutRoundedRect(m_inner); |
} |
const ComplexBorderInfo borderInfo(*this, true); |
@@ -662,7 +662,7 @@ void BoxBorderPainter::paintBorder(const PaintInfo& info, const LayoutRect& rect |
// Note that we're always drawing using opaque paints on top of less-opaque content - hence |
// we can use overdraw to mask portions of the previous sides. |
// |
-BorderEdgeFlags BoxBorderPainter::paintOpacityGroup(GraphicsContext* context, |
+BorderEdgeFlags BoxBorderPainter::paintOpacityGroup(GraphicsContext& context, |
const ComplexBorderInfo& borderInfo, unsigned index, float effectiveOpacity) const |
{ |
ASSERT(effectiveOpacity > 0 && effectiveOpacity <= 1); |
@@ -691,7 +691,7 @@ BorderEdgeFlags BoxBorderPainter::paintOpacityGroup(GraphicsContext* context, |
const float groupOpacity = static_cast<float>(group.alpha) / 255; |
ASSERT(groupOpacity < effectiveOpacity); |
- context->beginLayer(groupOpacity / effectiveOpacity); |
+ context.beginLayer(groupOpacity / effectiveOpacity); |
effectiveOpacity = groupOpacity; |
// Group opacity is applied via a layer => we draw the members using opaque paint. |
@@ -711,12 +711,12 @@ BorderEdgeFlags BoxBorderPainter::paintOpacityGroup(GraphicsContext* context, |
} |
if (needsLayer) |
- context->endLayer(); |
+ context.endLayer(); |
return completedEdges; |
} |
-void BoxBorderPainter::paintSide(GraphicsContext* context, const ComplexBorderInfo& borderInfo, |
+void BoxBorderPainter::paintSide(GraphicsContext& context, const ComplexBorderInfo& borderInfo, |
BoxSide side, unsigned alpha, BorderEdgeFlags completedEdges) const |
{ |
const BorderEdge& edge = m_edges[side]; |
@@ -822,7 +822,7 @@ bool BoxBorderPainter::mitersRequireClipping(MiterType miter1, MiterType miter2, |
return shouldClip; |
} |
-void BoxBorderPainter::paintOneBorderSide(GraphicsContext* graphicsContext, |
+void BoxBorderPainter::paintOneBorderSide(GraphicsContext& graphicsContext, |
const FloatRect& sideRect, BoxSide side, BoxSide adjacentSide1, BoxSide adjacentSide2, |
const Path* path, bool antialias, Color color, BorderEdgeFlags completedEdges) const |
{ |
@@ -835,7 +835,7 @@ void BoxBorderPainter::paintOneBorderSide(GraphicsContext* graphicsContext, |
MiterType miter1 = colorsMatchAtCorner(side, adjacentSide1, m_edges) ? HardMiter : SoftMiter; |
MiterType miter2 = colorsMatchAtCorner(side, adjacentSide2, m_edges) ? HardMiter : SoftMiter; |
- GraphicsContextStateSaver stateSaver(*graphicsContext); |
+ GraphicsContextStateSaver stateSaver(graphicsContext); |
if (m_inner.isRenderable()) |
clipBorderSidePolygon(graphicsContext, side, miter1, miter2); |
else |
@@ -848,7 +848,7 @@ void BoxBorderPainter::paintOneBorderSide(GraphicsContext* graphicsContext, |
MiterType miter2 = computeMiter(side, adjacentSide2, completedEdges, antialias); |
bool shouldClip = mitersRequireClipping(miter1, miter2, edgeToRender.borderStyle(), antialias); |
- GraphicsContextStateSaver clipStateSaver(*graphicsContext, shouldClip); |
+ GraphicsContextStateSaver clipStateSaver(graphicsContext, shouldClip); |
if (shouldClip) { |
clipBorderSidePolygon(graphicsContext, side, miter1, miter2); |
@@ -863,7 +863,7 @@ void BoxBorderPainter::paintOneBorderSide(GraphicsContext* graphicsContext, |
} |
} |
-void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext* graphicsContext, |
+void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext& graphicsContext, |
const LayoutRect& borderRect, const Path& borderPath, float thickness, float drawThickness, |
BoxSide side, Color color, EBorderStyle borderStyle) const |
{ |
@@ -879,14 +879,14 @@ void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext* graphicsContext, |
return; |
case DOTTED: |
case DASHED: { |
- graphicsContext->setStrokeColor(color); |
+ graphicsContext.setStrokeColor(color); |
// The stroke is doubled here because the provided path is the |
// outside edge of the border so half the stroke is clipped off. |
// The extra multiplier is so that the clipping mask can antialias |
// the edges to prevent jaggies. |
- graphicsContext->setStrokeThickness(drawThickness * 2 * 1.1f); |
- graphicsContext->setStrokeStyle(borderStyle == DASHED ? DashedStroke : DottedStroke); |
+ graphicsContext.setStrokeThickness(drawThickness * 2 * 1.1f); |
+ graphicsContext.setStrokeStyle(borderStyle == DASHED ? DashedStroke : DottedStroke); |
// If the number of dashes that fit in the path is odd and non-integral then we |
// will have an awkwardly-sized dash at the end of the path. To try to avoid that |
@@ -909,31 +909,31 @@ void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext* graphicsContext, |
DashArray lineDash; |
lineDash.append(dashLength); |
lineDash.append(gapLength); |
- graphicsContext->setLineDash(lineDash, dashLength); |
+ graphicsContext.setLineDash(lineDash, dashLength); |
} |
// FIXME: stroking the border path causes issues with tight corners: |
// https://bugs.webkit.org/show_bug.cgi?id=58711 |
// Also, to get the best appearance we should stroke a path between the two borders. |
- graphicsContext->strokePath(borderPath); |
+ graphicsContext.strokePath(borderPath); |
return; |
} |
case DOUBLE: { |
// Draw inner border line |
{ |
- GraphicsContextStateSaver stateSaver(*graphicsContext); |
+ GraphicsContextStateSaver stateSaver(graphicsContext); |
const LayoutRectOutsets innerInsets = doubleStripeInsets(m_edges, BorderEdge::DoubleBorderStripeInner); |
FloatRoundedRect innerClip = m_style.getRoundedInnerBorderFor(borderRect, innerInsets, |
m_includeLogicalLeftEdge, m_includeLogicalRightEdge); |
- graphicsContext->clipRoundedRect(innerClip); |
+ graphicsContext.clipRoundedRect(innerClip); |
drawBoxSideFromPath(graphicsContext, borderRect, borderPath, thickness, drawThickness, |
side, color, SOLID); |
} |
// Draw outer border line |
{ |
- GraphicsContextStateSaver stateSaver(*graphicsContext); |
+ GraphicsContextStateSaver stateSaver(graphicsContext); |
LayoutRect outerRect = borderRect; |
LayoutRectOutsets outerInsets = doubleStripeInsets(m_edges, BorderEdge::DoubleBorderStripeOuter); |
@@ -947,7 +947,7 @@ void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext* graphicsContext, |
FloatRoundedRect outerClip = m_style.getRoundedInnerBorderFor(outerRect, outerInsets, |
m_includeLogicalLeftEdge, m_includeLogicalRightEdge); |
- graphicsContext->clipOutRoundedRect(outerClip); |
+ graphicsContext.clipOutRoundedRect(outerClip); |
drawBoxSideFromPath(graphicsContext, borderRect, borderPath, thickness, drawThickness, |
side, color, SOLID); |
} |
@@ -971,7 +971,7 @@ void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext* graphicsContext, |
side, color, s1); |
// Paint inner only |
- GraphicsContextStateSaver stateSaver(*graphicsContext); |
+ GraphicsContextStateSaver stateSaver(graphicsContext); |
LayoutUnit topWidth = m_edges[BSTop].usedWidth() / 2; |
LayoutUnit bottomWidth = m_edges[BSBottom].usedWidth() / 2; |
LayoutUnit leftWidth = m_edges[BSLeft].usedWidth() / 2; |
@@ -981,7 +981,7 @@ void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext* graphicsContext, |
LayoutRectOutsets(-topWidth, -rightWidth, -bottomWidth, -leftWidth), |
m_includeLogicalLeftEdge, m_includeLogicalRightEdge); |
- graphicsContext->clipRoundedRect(clipRect); |
+ graphicsContext.clipRoundedRect(clipRect); |
drawBoxSideFromPath(graphicsContext, borderRect, borderPath, thickness, drawThickness, |
side, color, s2); |
return; |
@@ -998,21 +998,21 @@ void BoxBorderPainter::drawBoxSideFromPath(GraphicsContext* graphicsContext, |
break; |
} |
- graphicsContext->setStrokeStyle(NoStroke); |
- graphicsContext->setFillColor(color); |
- graphicsContext->drawRect(pixelSnappedIntRect(borderRect)); |
+ graphicsContext.setStrokeStyle(NoStroke); |
+ graphicsContext.setFillColor(color); |
+ graphicsContext.drawRect(pixelSnappedIntRect(borderRect)); |
} |
-void BoxBorderPainter::clipBorderSideForComplexInnerPath(GraphicsContext* graphicsContext, |
+void BoxBorderPainter::clipBorderSideForComplexInnerPath(GraphicsContext& graphicsContext, |
BoxSide side) const |
{ |
- graphicsContext->clip(calculateSideRectIncludingInner(m_outer, m_edges, side)); |
+ graphicsContext.clip(calculateSideRectIncludingInner(m_outer, m_edges, side)); |
FloatRoundedRect adjustedInnerRect = calculateAdjustedInnerBorder(m_inner, side); |
if (!adjustedInnerRect.isEmpty()) |
- graphicsContext->clipOutRoundedRect(adjustedInnerRect); |
+ graphicsContext.clipOutRoundedRect(adjustedInnerRect); |
} |
-void BoxBorderPainter::clipBorderSidePolygon(GraphicsContext* graphicsContext, BoxSide side, |
+void BoxBorderPainter::clipBorderSidePolygon(GraphicsContext& graphicsContext, BoxSide side, |
MiterType firstMiter, MiterType secondMiter) const |
{ |
ASSERT(firstMiter != NoMiter || secondMiter != NoMiter); |
@@ -1155,7 +1155,7 @@ void BoxBorderPainter::clipBorderSidePolygon(GraphicsContext* graphicsContext, B |
} |
if (firstMiter == secondMiter) { |
- graphicsContext->clipPolygon(4, quad, firstMiter == SoftMiter); |
+ graphicsContext.clipPolygon(4, quad, firstMiter == SoftMiter); |
return; |
} |
@@ -1188,7 +1188,7 @@ void BoxBorderPainter::clipBorderSidePolygon(GraphicsContext* graphicsContext, B |
firstQuad[1] = quad[1]; |
firstQuad[2] = FloatPoint(quad[3].x() + r2 * ax, quad[3].y() + r2 * ay); |
firstQuad[3] = quad[3]; |
- graphicsContext->clipPolygon(4, firstQuad, firstMiter == SoftMiter); |
+ graphicsContext.clipPolygon(4, firstQuad, firstMiter == SoftMiter); |
} |
if (secondMiter != NoMiter) { |
@@ -1197,7 +1197,7 @@ void BoxBorderPainter::clipBorderSidePolygon(GraphicsContext* graphicsContext, B |
secondQuad[1] = FloatPoint(quad[0].x() - r1 * cx, quad[0].y() - r1 * cy); |
secondQuad[2] = quad[2]; |
secondQuad[3] = quad[3]; |
- graphicsContext->clipPolygon(4, secondQuad, secondMiter == SoftMiter); |
+ graphicsContext.clipPolygon(4, secondQuad, secondMiter == SoftMiter); |
} |
} |