| Index: third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
|
| diff --git a/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp b/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
|
| index b57cc40f185f4ada1b3a1f7af808c176fe72b1c9..43beaf1c3d215a42b645d70af8a3d32dc5b7d6c4 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
|
| +++ b/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
|
| @@ -31,8 +31,9 @@
|
| #include "SkTableColorFilter.h"
|
| #include "platform/graphics/BoxReflection.h"
|
| #include "platform/graphics/filters/FilterEffect.h"
|
| +#include "platform/graphics/paint/PaintCanvas.h"
|
| +#include "platform/graphics/paint/PaintRecord.h"
|
| #include "platform/graphics/skia/SkiaUtils.h"
|
| -#include "third_party/skia/include/core/SkPicture.h"
|
| #include "third_party/skia/include/effects/SkImageSource.h"
|
| #include "third_party/skia/include/effects/SkOffsetImageFilter.h"
|
| #include "third_party/skia/include/effects/SkPictureImageFilter.h"
|
| @@ -99,11 +100,12 @@ sk_sp<SkImageFilter> transformColorSpace(sk_sp<SkImageFilter> input,
|
| std::move(input));
|
| }
|
|
|
| -void buildSourceGraphic(FilterEffect* sourceGraphic, sk_sp<SkPicture> picture) {
|
| +void buildSourceGraphic(FilterEffect* sourceGraphic,
|
| + sk_sp<PaintRecord> picture) {
|
| ASSERT(picture);
|
| SkRect cullRect = picture->cullRect();
|
| sk_sp<SkImageFilter> filter =
|
| - SkPictureImageFilter::Make(std::move(picture), cullRect);
|
| + SkPictureImageFilter::Make(ToSkPicture(picture), cullRect);
|
| populateSourceGraphicImageFilters(sourceGraphic, std::move(filter),
|
| sourceGraphic->operatingColorSpace());
|
| }
|
| @@ -114,7 +116,7 @@ static float kMaxMaskBufferSize =
|
| sk_sp<SkImageFilter> buildBoxReflectFilter(const BoxReflection& reflection,
|
| sk_sp<SkImageFilter> input) {
|
| sk_sp<SkImageFilter> maskedInput;
|
| - if (SkPicture* maskPicture = reflection.mask()) {
|
| + if (PaintRecord* maskPicture = reflection.mask()) {
|
| // Since SkPictures can't be serialized to the browser process, first raster
|
| // the mask to a bitmap, then encode it in an SkImageSource, which can be
|
| // serialized.
|
| @@ -125,7 +127,8 @@ sk_sp<SkImageFilter> buildBoxReflectFilter(const BoxReflection& reflection,
|
| kMaxMaskBufferSize) {
|
| bitmap.allocPixels(
|
| SkImageInfo::MakeN32Premul(cullRect.width(), cullRect.height()));
|
| - SkCanvas canvas(bitmap);
|
| + SkCanvas skiaCanvas(bitmap);
|
| + PaintCanvasPassThrough canvas(&skiaCanvas);
|
| canvas.clear(SK_ColorTRANSPARENT);
|
| canvas.translate(-cullRect.x(), -cullRect.y());
|
| canvas.drawPicture(maskPicture);
|
| @@ -147,7 +150,8 @@ sk_sp<SkImageFilter> buildBoxReflectFilter(const BoxReflection& reflection,
|
| SkImageFilter::CropRect cropRect(maskPicture->cullRect());
|
| maskedInput = SkXfermodeImageFilter::Make(
|
| SkBlendMode::kSrcOver,
|
| - SkPictureImageFilter::Make(sk_ref_sp(maskPicture)), input, &cropRect);
|
| + SkPictureImageFilter::Make(sk_ref_sp(ToSkPicture(maskPicture))),
|
| + input, &cropRect);
|
| }
|
| } else {
|
| maskedInput = input;
|
|
|