| Index: third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp b/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
|
| index ddd2b52b443f52b3d25d6720ab9452e164cd1522..54da701875ad199c90fb1d35d87139209c9ecbe3 100644
|
| --- a/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
|
| @@ -24,7 +24,7 @@ GraphicsContext* SVGFilterRecordingContext::beginContent(FilterData* filterData)
|
| {
|
| ASSERT(filterData->m_state == FilterData::Initial);
|
|
|
| - GraphicsContext* context = paintingContext();
|
| + GraphicsContext* context = &paintingContext();
|
|
|
| // Create a new context so the contents of the filter can be drawn and cached.
|
| m_paintController = PaintController::create();
|
| @@ -42,7 +42,7 @@ void SVGFilterRecordingContext::endContent(FilterData* filterData)
|
| SourceGraphic* sourceGraphic = filterData->filter->sourceGraphic();
|
| ASSERT(sourceGraphic);
|
|
|
| - GraphicsContext* context = paintingContext();
|
| + GraphicsContext* context = &paintingContext();
|
|
|
| // Use the context that contains the filtered content.
|
| ASSERT(m_paintController);
|
| @@ -61,7 +61,7 @@ void SVGFilterRecordingContext::endContent(FilterData* filterData)
|
| filterData->m_state = FilterData::ReadyToPaint;
|
| }
|
|
|
| -static void paintFilteredContent(const LayoutObject& object, GraphicsContext* context, FilterData* filterData)
|
| +static void paintFilteredContent(const LayoutObject& object, GraphicsContext& context, FilterData* filterData)
|
| {
|
| ASSERT(filterData->m_state == FilterData::ReadyToPaint);
|
| ASSERT(filterData->filter->sourceGraphic());
|
| @@ -71,11 +71,11 @@ static void paintFilteredContent(const LayoutObject& object, GraphicsContext* co
|
| SkiaImageFilterBuilder builder;
|
| RefPtr<SkImageFilter> imageFilter = builder.build(filterData->filter->lastEffect(), ColorSpaceDeviceRGB);
|
| FloatRect boundaries = filterData->filter->filterRegion();
|
| - context->save();
|
| + context.save();
|
|
|
| // Clip drawing of filtered image to the minimum required paint rect.
|
| FilterEffect* lastEffect = filterData->filter->lastEffect();
|
| - context->clipRect(lastEffect->determineAbsolutePaintRect(lastEffect->maxEffectRect()));
|
| + context.clipRect(lastEffect->determineAbsolutePaintRect(lastEffect->maxEffectRect()));
|
|
|
| #ifdef CHECK_CTM_FOR_TRANSFORMED_IMAGEFILTER
|
| // TODO: Remove this workaround once skew/rotation support is added in Skia
|
| @@ -91,22 +91,20 @@ static void paintFilteredContent(const LayoutObject& object, GraphicsContext* co
|
| ASSERT(scaleAndTranslate.isInvertible());
|
| AffineTransform shearAndRotate = scaleAndTranslate.inverse();
|
| shearAndRotate.multiply(ctm);
|
| - context->concatCTM(shearAndRotate.inverse());
|
| + context.concatCTM(shearAndRotate.inverse());
|
| imageFilter = builder.buildTransform(shearAndRotate, imageFilter.get());
|
| }
|
| #endif
|
|
|
| - context->beginLayer(1, SkXfermode::kSrcOver_Mode, &boundaries, ColorFilterNone, imageFilter.get());
|
| - context->endLayer();
|
| - context->restore();
|
| + context.beginLayer(1, SkXfermode::kSrcOver_Mode, &boundaries, ColorFilterNone, imageFilter.get());
|
| + context.endLayer();
|
| + context.restore();
|
|
|
| filterData->m_state = FilterData::ReadyToPaint;
|
| }
|
|
|
| GraphicsContext* SVGFilterPainter::prepareEffect(const LayoutObject& object, SVGFilterRecordingContext& recordingContext)
|
| {
|
| - ASSERT(recordingContext.paintingContext());
|
| -
|
| m_filter.clearInvalidationMask();
|
|
|
| if (FilterData* filterData = m_filter.getFilterDataForLayoutObject(&object)) {
|
| @@ -175,13 +173,12 @@ void SVGFilterPainter::finishEffect(const LayoutObject& object, SVGFilterRecordi
|
| filterData->m_state = FilterData::RecordingContent;
|
| }
|
|
|
| - GraphicsContext* context = recordingContext.paintingContext();
|
| - ASSERT(context);
|
| - if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(*context, object, DisplayItem::SVGFilter, LayoutPoint()))
|
| + GraphicsContext& context = recordingContext.paintingContext();
|
| + if (LayoutObjectDrawingRecorder::useCachedDrawingIfPossible(context, object, DisplayItem::SVGFilter, LayoutPoint()))
|
| return;
|
|
|
| // TODO(chrishtr): stop using an infinite rect, and instead bound the filter.
|
| - LayoutObjectDrawingRecorder recorder(*context, object, DisplayItem::SVGFilter, LayoutRect::infiniteIntRect(), LayoutPoint());
|
| + LayoutObjectDrawingRecorder recorder(context, object, DisplayItem::SVGFilter, LayoutRect::infiniteIntRect(), LayoutPoint());
|
| if (filterData && filterData->m_state == FilterData::ReadyToPaint)
|
| paintFilteredContent(object, context, filterData);
|
| }
|
|
|