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; |