| Index: third_party/WebKit/Source/core/paint/SVGShapePainter.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/SVGShapePainter.cpp b/third_party/WebKit/Source/core/paint/SVGShapePainter.cpp
|
| index cc5f82dbc1fcbdc3e04e0aa4004176341f949756..bbf9b4c831ee6926ae4b4dda1e2a2119fd7fbbc0 100644
|
| --- a/third_party/WebKit/Source/core/paint/SVGShapePainter.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/SVGShapePainter.cpp
|
| @@ -32,7 +32,7 @@ static bool setupNonScalingStrokeContext(AffineTransform& strokeTransform, Graph
|
| return false;
|
|
|
| stateSaver.save();
|
| - stateSaver.context()->concatCTM(strokeTransform.inverse());
|
| + stateSaver.context().concatCTM(strokeTransform.inverse());
|
| return true;
|
| }
|
|
|
| @@ -54,11 +54,11 @@ void SVGShapePainter::paint(const PaintInfo& paintInfo)
|
|
|
| PaintInfo paintInfoBeforeFiltering(paintInfo);
|
| // Shapes cannot have children so do not call updateCullRect.
|
| - TransformRecorder transformRecorder(*paintInfoBeforeFiltering.context, m_layoutSVGShape, m_layoutSVGShape.localTransform());
|
| + TransformRecorder transformRecorder(paintInfoBeforeFiltering.context, m_layoutSVGShape, m_layoutSVGShape.localTransform());
|
| {
|
| SVGPaintContext paintContext(m_layoutSVGShape, paintInfoBeforeFiltering);
|
| - if (paintContext.applyClipMaskAndFilterIfNecessary() && !LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(*paintContext.paintInfo().context, m_layoutSVGShape, paintContext.paintInfo().phase, LayoutPoint())) {
|
| - LayoutObjectDrawingRecorder recorder(*paintContext.paintInfo().context, m_layoutSVGShape, paintContext.paintInfo().phase, boundingBox, LayoutPoint());
|
| + if (paintContext.applyClipMaskAndFilterIfNecessary() && !LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(paintContext.paintInfo().context, m_layoutSVGShape, paintContext.paintInfo().phase, LayoutPoint())) {
|
| + LayoutObjectDrawingRecorder recorder(paintContext.paintInfo().context, m_layoutSVGShape, paintContext.paintInfo().phase, boundingBox, LayoutPoint());
|
| const SVGComputedStyle& svgStyle = m_layoutSVGShape.style()->svgStyle();
|
|
|
| bool shouldAntiAlias = svgStyle.shapeRendering() != SR_CRISPEDGES;
|
| @@ -75,7 +75,7 @@ void SVGShapePainter::paint(const PaintInfo& paintInfo)
|
| }
|
| case PT_STROKE:
|
| if (svgStyle.hasVisibleStroke()) {
|
| - GraphicsContextStateSaver stateSaver(*paintContext.paintInfo().context, false);
|
| + GraphicsContextStateSaver stateSaver(paintContext.paintInfo().context, false);
|
| AffineTransform nonScalingTransform;
|
| const AffineTransform* additionalPaintServerTransform = 0;
|
|
|
| @@ -138,40 +138,40 @@ private:
|
| SkPath::FillType m_savedFillType;
|
| };
|
|
|
| -void SVGShapePainter::fillShape(GraphicsContext* context, const SkPaint& paint, SkPath::FillType fillType)
|
| +void SVGShapePainter::fillShape(GraphicsContext& context, const SkPaint& paint, SkPath::FillType fillType)
|
| {
|
| switch (m_layoutSVGShape.geometryCodePath()) {
|
| case RectGeometryFastPath:
|
| - context->drawRect(m_layoutSVGShape.objectBoundingBox(), paint);
|
| + context.drawRect(m_layoutSVGShape.objectBoundingBox(), paint);
|
| break;
|
| case EllipseGeometryFastPath:
|
| - context->drawOval(m_layoutSVGShape.objectBoundingBox(), paint);
|
| + context.drawOval(m_layoutSVGShape.objectBoundingBox(), paint);
|
| break;
|
| default: {
|
| PathWithTemporaryWindingRule pathWithWinding(m_layoutSVGShape.path(), fillType);
|
| - context->drawPath(pathWithWinding.skPath(), paint);
|
| + context.drawPath(pathWithWinding.skPath(), paint);
|
| }
|
| }
|
| }
|
|
|
| -void SVGShapePainter::strokeShape(GraphicsContext* context, const SkPaint& paint)
|
| +void SVGShapePainter::strokeShape(GraphicsContext& context, const SkPaint& paint)
|
| {
|
| if (!m_layoutSVGShape.style()->svgStyle().hasVisibleStroke())
|
| return;
|
|
|
| switch (m_layoutSVGShape.geometryCodePath()) {
|
| case RectGeometryFastPath:
|
| - context->drawRect(m_layoutSVGShape.objectBoundingBox(), paint);
|
| + context.drawRect(m_layoutSVGShape.objectBoundingBox(), paint);
|
| break;
|
| case EllipseGeometryFastPath:
|
| - context->drawOval(m_layoutSVGShape.objectBoundingBox(), paint);
|
| + context.drawOval(m_layoutSVGShape.objectBoundingBox(), paint);
|
| break;
|
| default:
|
| ASSERT(m_layoutSVGShape.hasPath());
|
| Path* usePath = &m_layoutSVGShape.path();
|
| if (m_layoutSVGShape.hasNonScalingStroke())
|
| usePath = m_layoutSVGShape.nonScalingStrokePath(usePath, m_layoutSVGShape.nonScalingStrokeTransform());
|
| - context->drawPath(usePath->skPath(), paint);
|
| + context.drawPath(usePath->skPath(), paint);
|
| }
|
| }
|
|
|
| @@ -196,9 +196,8 @@ void SVGShapePainter::paintMarkers(const PaintInfo& paintInfo, const FloatRect&
|
|
|
| for (unsigned i = 0; i < size; ++i) {
|
| if (LayoutSVGResourceMarker* marker = SVGMarkerData::markerForType((*markerPositions)[i].type, markerStart, markerMid, markerEnd)) {
|
| - SkPictureBuilder pictureBuilder(boundingBox, nullptr, paintInfo.context);
|
| - PaintInfo markerPaintInfo(paintInfo);
|
| - markerPaintInfo.context = &pictureBuilder.context();
|
| + SkPictureBuilder pictureBuilder(boundingBox, nullptr, &paintInfo.context);
|
| + PaintInfo markerPaintInfo(pictureBuilder.context(), paintInfo);
|
|
|
| // It's expensive to track the transformed paint cull rect for each
|
| // marker so just disable culling. The shape paint call will already
|
| @@ -206,7 +205,7 @@ void SVGShapePainter::paintMarkers(const PaintInfo& paintInfo, const FloatRect&
|
| markerPaintInfo.m_cullRect.m_rect = LayoutRect::infiniteIntRect();
|
|
|
| paintMarker(markerPaintInfo, *marker, (*markerPositions)[i], strokeWidth);
|
| - pictureBuilder.endRecording()->playback(paintInfo.context->canvas());
|
| + pictureBuilder.endRecording()->playback(paintInfo.context.canvas());
|
| }
|
| }
|
| }
|
| @@ -219,10 +218,10 @@ void SVGShapePainter::paintMarker(const PaintInfo& paintInfo, LayoutSVGResourceM
|
| if (markerElement->hasAttribute(SVGNames::viewBoxAttr) && markerElement->viewBox()->currentValue()->isValid() && markerElement->viewBox()->currentValue()->value().isEmpty())
|
| return;
|
|
|
| - TransformRecorder transformRecorder(*paintInfo.context, marker, marker.markerTransformation(position.origin, position.angle, strokeWidth));
|
| + TransformRecorder transformRecorder(paintInfo.context, marker, marker.markerTransformation(position.origin, position.angle, strokeWidth));
|
| Optional<FloatClipRecorder> clipRecorder;
|
| if (SVGLayoutSupport::isOverflowHidden(&marker))
|
| - clipRecorder.emplace(*paintInfo.context, marker, paintInfo.phase, marker.viewport());
|
| + clipRecorder.emplace(paintInfo.context, marker, paintInfo.phase, marker.viewport());
|
| SVGContainerPainter(marker).paint(paintInfo);
|
| }
|
|
|
|
|