Commit 470d2dca authored by Michael Ludwig's avatar Michael Ludwig Committed by Chromium LUCI CQ

Update PaintFilter impls to use new SkImageFilters factory functions

This was pulled from https://chromium-review.googlesource.com/c/chromium/src/+/2527768
to keep that CL clearer.

Bug: skia:9310
Change-Id: Ie49c491638f3f859c11257e1b3dc0658a95caabb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2610286
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: default avatarVasiliy Telezhnikov <vasilyt@chromium.org>
Reviewed-by: default avatardanakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#843049}
parent 5d6ff163
...@@ -10,21 +10,8 @@ ...@@ -10,21 +10,8 @@
#include "cc/paint/paint_record.h" #include "cc/paint/paint_record.h"
#include "third_party/skia/include/core/SkColorFilter.h" #include "third_party/skia/include/core/SkColorFilter.h"
#include "third_party/skia/include/core/SkMath.h" #include "third_party/skia/include/core/SkMath.h"
#include "third_party/skia/include/effects/SkAlphaThresholdFilter.h" #include "third_party/skia/include/effects/SkImageFilters.h"
#include "third_party/skia/include/effects/SkArithmeticImageFilter.h"
#include "third_party/skia/include/effects/SkColorFilterImageFilter.h"
#include "third_party/skia/include/effects/SkComposeImageFilter.h"
#include "third_party/skia/include/effects/SkImageSource.h"
#include "third_party/skia/include/effects/SkLightingImageFilter.h"
#include "third_party/skia/include/effects/SkMagnifierImageFilter.h"
#include "third_party/skia/include/effects/SkMergeImageFilter.h"
#include "third_party/skia/include/effects/SkMorphologyImageFilter.h"
#include "third_party/skia/include/effects/SkOffsetImageFilter.h"
#include "third_party/skia/include/effects/SkPaintImageFilter.h"
#include "third_party/skia/include/effects/SkPerlinNoiseShader.h" #include "third_party/skia/include/effects/SkPerlinNoiseShader.h"
#include "third_party/skia/include/effects/SkPictureImageFilter.h"
#include "third_party/skia/include/effects/SkTileImageFilter.h"
#include "third_party/skia/include/effects/SkXfermodeImageFilter.h"
namespace cc { namespace cc {
namespace { namespace {
...@@ -59,86 +46,6 @@ sk_sp<PaintFilter> Snapshot(const sk_sp<PaintFilter>& filter, ...@@ -59,86 +46,6 @@ sk_sp<PaintFilter> Snapshot(const sk_sp<PaintFilter>& filter,
return filter->SnapshotWithImages(image_provider); return filter->SnapshotWithImages(image_provider);
} }
// TODO(michaelludwig): These conversion functions can be removed once the
// PaintFilter implementations are updated to use the new image factory APIs.
SkImageFilter::CropRect ToLegacyCropRect(
const PaintFilter::CropRect* crop_rect) {
if (crop_rect) {
return SkImageFilter::CropRect(*crop_rect);
} else {
return SkImageFilter::CropRect(SkRect::MakeEmpty(), 0x0);
}
}
SkBlurImageFilter::TileMode ToLegacyBlurTileMode(SkTileMode tile_mode) {
switch (tile_mode) {
case SkTileMode::kClamp:
return SkBlurImageFilter::kClamp_TileMode;
case SkTileMode::kRepeat:
return SkBlurImageFilter::kRepeat_TileMode;
case SkTileMode::kMirror:
// The legacy SkBlurImageFilter::TileMode did not expose a mirror tiling
// option, so return kRepeat for now, which is consistent with Skia's
// deprecated behavior.
return SkBlurImageFilter::kRepeat_TileMode;
case SkTileMode::kDecal:
return SkBlurImageFilter::kClampToBlack_TileMode;
default:
NOTREACHED();
return SkBlurImageFilter::kClamp_TileMode;
}
}
SkMatrixConvolutionImageFilter::TileMode ToLegacyConvolutionTileMode(
SkTileMode tile_mode) {
switch (tile_mode) {
case SkTileMode::kClamp:
return SkMatrixConvolutionImageFilter::kClamp_TileMode;
case SkTileMode::kRepeat:
return SkMatrixConvolutionImageFilter::kRepeat_TileMode;
case SkTileMode::kMirror:
// The legacy SkMatrixConvolutionImageFilter::TileMode did not expose a
// mirror tiling option, so return kRepeat for now, which is consistent
// with Skia's deprecated behavior.
return SkMatrixConvolutionImageFilter::kRepeat_TileMode;
case SkTileMode::kDecal:
return SkMatrixConvolutionImageFilter::kClampToBlack_TileMode;
default:
NOTREACHED();
return SkMatrixConvolutionImageFilter::kClamp_TileMode;
}
}
SkDisplacementMapEffect::ChannelSelectorType ToLegacyChannel(
SkColorChannel channel) {
switch (channel) {
case SkColorChannel::kR:
return SkDisplacementMapEffect::kR_ChannelSelectorType;
case SkColorChannel::kG:
return SkDisplacementMapEffect::kG_ChannelSelectorType;
case SkColorChannel::kB:
return SkDisplacementMapEffect::kB_ChannelSelectorType;
case SkColorChannel::kA:
return SkDisplacementMapEffect::kA_ChannelSelectorType;
default:
NOTREACHED();
return SkDisplacementMapEffect::kUnknown_ChannelSelectorType;
}
}
SkDropShadowImageFilter::ShadowMode ToLegacyShadowMode(
DropShadowPaintFilter::ShadowMode shadow_mode) {
switch (shadow_mode) {
case DropShadowPaintFilter::ShadowMode::kDrawShadowAndForeground:
return SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode;
case DropShadowPaintFilter::ShadowMode::kDrawShadowOnly:
return SkDropShadowImageFilter::kDrawShadowOnly_ShadowMode;
default:
NOTREACHED();
return SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode;
}
}
} // namespace } // namespace
PaintFilter::PaintFilter(Type type, PaintFilter::PaintFilter(Type type,
...@@ -325,9 +232,8 @@ ColorFilterPaintFilter::ColorFilterPaintFilter( ...@@ -325,9 +232,8 @@ ColorFilterPaintFilter::ColorFilterPaintFilter(
color_filter_(std::move(color_filter)), color_filter_(std::move(color_filter)),
input_(std::move(input)) { input_(std::move(input)) {
DCHECK(color_filter_); DCHECK(color_filter_);
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ = SkImageFilters::ColorFilter(
cached_sk_filter_ = SkColorFilterImageFilter::Make( color_filter_, GetSkFilter(input_.get()), crop_rect);
color_filter_, GetSkFilter(input_.get()), &sk_crop_rect);
} }
ColorFilterPaintFilter::~ColorFilterPaintFilter() = default; ColorFilterPaintFilter::~ColorFilterPaintFilter() = default;
...@@ -363,10 +269,8 @@ BlurPaintFilter::BlurPaintFilter(SkScalar sigma_x, ...@@ -363,10 +269,8 @@ BlurPaintFilter::BlurPaintFilter(SkScalar sigma_x,
sigma_y_(sigma_y), sigma_y_(sigma_y),
tile_mode_(tile_mode), tile_mode_(tile_mode),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ = SkImageFilters::Blur(
cached_sk_filter_ = sigma_x, sigma_y, tile_mode_, GetSkFilter(input_.get()), crop_rect);
SkBlurImageFilter::Make(sigma_x_, sigma_y_, GetSkFilter(input_.get()),
&sk_crop_rect, ToLegacyBlurTileMode(tile_mode_));
} }
BlurPaintFilter::~BlurPaintFilter() = default; BlurPaintFilter::~BlurPaintFilter() = default;
...@@ -409,10 +313,15 @@ DropShadowPaintFilter::DropShadowPaintFilter(SkScalar dx, ...@@ -409,10 +313,15 @@ DropShadowPaintFilter::DropShadowPaintFilter(SkScalar dx,
color_(color), color_(color),
shadow_mode_(shadow_mode), shadow_mode_(shadow_mode),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect); if (shadow_mode == ShadowMode::kDrawShadowOnly) {
cached_sk_filter_ = SkDropShadowImageFilter::Make( cached_sk_filter_ =
dx_, dy_, sigma_x_, sigma_y_, color_, ToLegacyShadowMode(shadow_mode_), SkImageFilters::DropShadowOnly(dx_, dy_, sigma_x_, sigma_y_, color_,
GetSkFilter(input_.get()), &sk_crop_rect); GetSkFilter(input_.get()), crop_rect);
} else {
cached_sk_filter_ =
SkImageFilters::DropShadow(dx_, dy_, sigma_x_, sigma_y_, color_,
GetSkFilter(input_.get()), crop_rect);
}
} }
DropShadowPaintFilter::~DropShadowPaintFilter() = default; DropShadowPaintFilter::~DropShadowPaintFilter() = default;
...@@ -450,9 +359,8 @@ MagnifierPaintFilter::MagnifierPaintFilter(const SkRect& src_rect, ...@@ -450,9 +359,8 @@ MagnifierPaintFilter::MagnifierPaintFilter(const SkRect& src_rect,
src_rect_(src_rect), src_rect_(src_rect),
inset_(inset), inset_(inset),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ = SkImageFilters::Magnifier(
cached_sk_filter_ = SkMagnifierImageFilter::Make( src_rect_, inset_, GetSkFilter(input_.get()), crop_rect);
src_rect_, inset_, GetSkFilter(input_.get()), &sk_crop_rect);
} }
MagnifierPaintFilter::~MagnifierPaintFilter() = default; MagnifierPaintFilter::~MagnifierPaintFilter() = default;
...@@ -483,8 +391,8 @@ ComposePaintFilter::ComposePaintFilter(sk_sp<PaintFilter> outer, ...@@ -483,8 +391,8 @@ ComposePaintFilter::ComposePaintFilter(sk_sp<PaintFilter> outer,
HasDiscardableImages(outer) || HasDiscardableImages(inner)), HasDiscardableImages(outer) || HasDiscardableImages(inner)),
outer_(std::move(outer)), outer_(std::move(outer)),
inner_(std::move(inner)) { inner_(std::move(inner)) {
cached_sk_filter_ = SkComposeImageFilter::Make(GetSkFilter(outer_.get()), cached_sk_filter_ = SkImageFilters::Compose(GetSkFilter(outer_.get()),
GetSkFilter(inner_.get())); GetSkFilter(inner_.get()));
} }
ComposePaintFilter::~ComposePaintFilter() = default; ComposePaintFilter::~ComposePaintFilter() = default;
...@@ -517,10 +425,8 @@ AlphaThresholdPaintFilter::AlphaThresholdPaintFilter(const SkRegion& region, ...@@ -517,10 +425,8 @@ AlphaThresholdPaintFilter::AlphaThresholdPaintFilter(const SkRegion& region,
inner_min_(inner_min), inner_min_(inner_min),
outer_max_(outer_max), outer_max_(outer_max),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ = SkImageFilters::AlphaThreshold(
cached_sk_filter_ = region_, inner_min_, outer_max_, GetSkFilter(input_.get()), crop_rect);
SkAlphaThresholdFilter::Make(region_, inner_min_, outer_max_,
GetSkFilter(input_.get()), &sk_crop_rect);
} }
AlphaThresholdPaintFilter::~AlphaThresholdPaintFilter() = default; AlphaThresholdPaintFilter::~AlphaThresholdPaintFilter() = default;
...@@ -560,10 +466,9 @@ XfermodePaintFilter::XfermodePaintFilter(SkBlendMode blend_mode, ...@@ -560,10 +466,9 @@ XfermodePaintFilter::XfermodePaintFilter(SkBlendMode blend_mode,
blend_mode_(blend_mode), blend_mode_(blend_mode),
background_(std::move(background)), background_(std::move(background)),
foreground_(std::move(foreground)) { foreground_(std::move(foreground)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ =
cached_sk_filter_ = SkXfermodeImageFilter::Make( SkImageFilters::Blend(blend_mode_, GetSkFilter(background_.get()),
blend_mode_, GetSkFilter(background_.get()), GetSkFilter(foreground_.get()), crop_rect);
GetSkFilter(foreground_.get()), &sk_crop_rect);
} }
XfermodePaintFilter::~XfermodePaintFilter() = default; XfermodePaintFilter::~XfermodePaintFilter() = default;
...@@ -608,10 +513,9 @@ ArithmeticPaintFilter::ArithmeticPaintFilter(float k1, ...@@ -608,10 +513,9 @@ ArithmeticPaintFilter::ArithmeticPaintFilter(float k1,
enforce_pm_color_(enforce_pm_color), enforce_pm_color_(enforce_pm_color),
background_(std::move(background)), background_(std::move(background)),
foreground_(std::move(foreground)) { foreground_(std::move(foreground)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ = SkImageFilters::Arithmetic(
cached_sk_filter_ = SkArithmeticImageFilter::Make(
k1_, k2_, k3_, k4_, enforce_pm_color_, GetSkFilter(background_.get()), k1_, k2_, k3_, k4_, enforce_pm_color_, GetSkFilter(background_.get()),
GetSkFilter(foreground_.get()), &sk_crop_rect); GetSkFilter(foreground_.get()), crop_rect);
} }
ArithmeticPaintFilter::~ArithmeticPaintFilter() = default; ArithmeticPaintFilter::~ArithmeticPaintFilter() = default;
...@@ -668,11 +572,9 @@ MatrixConvolutionPaintFilter::MatrixConvolutionPaintFilter( ...@@ -668,11 +572,9 @@ MatrixConvolutionPaintFilter::MatrixConvolutionPaintFilter(
for (size_t i = 0; i < len; ++i) for (size_t i = 0; i < len; ++i)
kernel_->push_back(kernel[i]); kernel_->push_back(kernel[i]);
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ = SkImageFilters::MatrixConvolution(
cached_sk_filter_ = SkMatrixConvolutionImageFilter::Make( kernel_size_, kernel, gain_, bias_, kernel_offset_, tile_mode_,
kernel_size_, kernel, gain_, bias_, kernel_offset_, convolve_alpha_, GetSkFilter(input_.get()), crop_rect);
ToLegacyConvolutionTileMode(tile_mode_), convolve_alpha_,
GetSkFilter(input_.get()), &sk_crop_rect);
} }
MatrixConvolutionPaintFilter::~MatrixConvolutionPaintFilter() = default; MatrixConvolutionPaintFilter::~MatrixConvolutionPaintFilter() = default;
...@@ -722,11 +624,9 @@ DisplacementMapEffectPaintFilter::DisplacementMapEffectPaintFilter( ...@@ -722,11 +624,9 @@ DisplacementMapEffectPaintFilter::DisplacementMapEffectPaintFilter(
scale_(scale), scale_(scale),
displacement_(std::move(displacement)), displacement_(std::move(displacement)),
color_(std::move(color)) { color_(std::move(color)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ = SkImageFilters::DisplacementMap(
cached_sk_filter_ = SkDisplacementMapEffect::Make( channel_x_, channel_y_, scale_, GetSkFilter(displacement_.get()),
ToLegacyChannel(channel_x_), ToLegacyChannel(channel_y_), scale_, GetSkFilter(color_.get()), crop_rect);
GetSkFilter(displacement_.get()), GetSkFilter(color_.get()),
&sk_crop_rect);
} }
DisplacementMapEffectPaintFilter::~DisplacementMapEffectPaintFilter() = default; DisplacementMapEffectPaintFilter::~DisplacementMapEffectPaintFilter() = default;
...@@ -764,8 +664,8 @@ ImagePaintFilter::ImagePaintFilter(PaintImage image, ...@@ -764,8 +664,8 @@ ImagePaintFilter::ImagePaintFilter(PaintImage image,
src_rect_(src_rect), src_rect_(src_rect),
dst_rect_(dst_rect), dst_rect_(dst_rect),
filter_quality_(filter_quality) { filter_quality_(filter_quality) {
cached_sk_filter_ = SkImageSource::Make(image_.GetSkImage(), src_rect_, cached_sk_filter_ = SkImageFilters::Image(image_.GetSkImage(), src_rect_,
dst_rect_, filter_quality_); dst_rect_, filter_quality_);
} }
ImagePaintFilter::~ImagePaintFilter() = default; ImagePaintFilter::~ImagePaintFilter() = default;
...@@ -816,7 +716,7 @@ RecordPaintFilter::RecordPaintFilter(sk_sp<PaintRecord> record, ...@@ -816,7 +716,7 @@ RecordPaintFilter::RecordPaintFilter(sk_sp<PaintRecord> record,
: PaintFilter(kType, nullptr, record->HasDiscardableImages()), : PaintFilter(kType, nullptr, record->HasDiscardableImages()),
record_(std::move(record)), record_(std::move(record)),
record_bounds_(record_bounds) { record_bounds_(record_bounds) {
cached_sk_filter_ = SkPictureImageFilter::Make( cached_sk_filter_ = SkImageFilters::Picture(
ToSkPicture(record_, record_bounds_, image_provider)); ToSkPicture(record_, record_bounds_, image_provider));
} }
...@@ -860,10 +760,8 @@ MergePaintFilter::MergePaintFilter(const sk_sp<PaintFilter>* const filters, ...@@ -860,10 +760,8 @@ MergePaintFilter::MergePaintFilter(const sk_sp<PaintFilter>* const filters,
sk_filters.push_back(GetSkFilter(inputs_->back().get())); sk_filters.push_back(GetSkFilter(inputs_->back().get()));
} }
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ = SkImageFilters::Merge(
cached_sk_filter_ = SkMergeImageFilter::Make( static_cast<sk_sp<SkImageFilter>*>(sk_filters.data()), count, crop_rect);
static_cast<sk_sp<SkImageFilter>*>(sk_filters.data()), count,
&sk_crop_rect);
} }
MergePaintFilter::~MergePaintFilter() = default; MergePaintFilter::~MergePaintFilter() = default;
...@@ -903,15 +801,14 @@ MorphologyPaintFilter::MorphologyPaintFilter(MorphType morph_type, ...@@ -903,15 +801,14 @@ MorphologyPaintFilter::MorphologyPaintFilter(MorphType morph_type,
radius_x_(radius_x), radius_x_(radius_x),
radius_y_(radius_y), radius_y_(radius_y),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect);
switch (morph_type_) { switch (morph_type_) {
case MorphType::kDilate: case MorphType::kDilate:
cached_sk_filter_ = SkDilateImageFilter::Make( cached_sk_filter_ = SkImageFilters::Dilate(
radius_x_, radius_y_, GetSkFilter(input_.get()), &sk_crop_rect); radius_x_, radius_y_, GetSkFilter(input_.get()), crop_rect);
break; break;
case MorphType::kErode: case MorphType::kErode:
cached_sk_filter_ = SkErodeImageFilter::Make( cached_sk_filter_ = SkImageFilters::Erode(
radius_x_, radius_y_, GetSkFilter(input_.get()), &sk_crop_rect); radius_x_, radius_y_, GetSkFilter(input_.get()), crop_rect);
break; break;
} }
} }
...@@ -948,9 +845,8 @@ OffsetPaintFilter::OffsetPaintFilter(SkScalar dx, ...@@ -948,9 +845,8 @@ OffsetPaintFilter::OffsetPaintFilter(SkScalar dx,
dx_(dx), dx_(dx),
dy_(dy), dy_(dy),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect); cached_sk_filter_ =
cached_sk_filter_ = SkOffsetImageFilter::Make( SkImageFilters::Offset(dx_, dy_, GetSkFilter(input_.get()), crop_rect);
dx_, dy_, GetSkFilter(input_.get()), &sk_crop_rect);
} }
OffsetPaintFilter::~OffsetPaintFilter() = default; OffsetPaintFilter::~OffsetPaintFilter() = default;
...@@ -982,7 +878,7 @@ TilePaintFilter::TilePaintFilter(const SkRect& src, ...@@ -982,7 +878,7 @@ TilePaintFilter::TilePaintFilter(const SkRect& src,
dst_(dst), dst_(dst),
input_(std::move(input)) { input_(std::move(input)) {
cached_sk_filter_ = cached_sk_filter_ =
SkTileImageFilter::Make(src_, dst_, GetSkFilter(input_.get())); SkImageFilters::Tile(src_, dst_, GetSkFilter(input_.get()));
} }
TilePaintFilter::~TilePaintFilter() = default; TilePaintFilter::~TilePaintFilter() = default;
...@@ -1034,10 +930,7 @@ TurbulencePaintFilter::TurbulencePaintFilter(TurbulenceType turbulence_type, ...@@ -1034,10 +930,7 @@ TurbulencePaintFilter::TurbulencePaintFilter(TurbulenceType turbulence_type,
break; break;
} }
SkPaint paint; cached_sk_filter_ = SkImageFilters::Shader(std::move(shader), crop_rect);
paint.setShader(std::move(shader));
auto sk_crop_rect = ToLegacyCropRect(crop_rect);
cached_sk_filter_ = SkPaintImageFilter::Make(paint, &sk_crop_rect);
} }
TurbulencePaintFilter::~TurbulencePaintFilter() = default; TurbulencePaintFilter::~TurbulencePaintFilter() = default;
...@@ -1080,10 +973,36 @@ PaintFlagsPaintFilter::PaintFlagsPaintFilter(PaintFlags flags, ...@@ -1080,10 +973,36 @@ PaintFlagsPaintFilter::PaintFlagsPaintFilter(PaintFlags flags,
raster_flags_.emplace(&flags_, image_provider, SkMatrix::I(), 0, 255u); raster_flags_.emplace(&flags_, image_provider, SkMatrix::I(), 0, 255u);
} }
auto sk_crop_rect = ToLegacyCropRect(crop_rect); const SkPaint& paint =
cached_sk_filter_ = SkPaintImageFilter::Make( raster_flags_ ? raster_flags_->flags()->ToSkPaint() : flags_.ToSkPaint();
raster_flags_ ? raster_flags_->flags()->ToSkPaint() : flags_.ToSkPaint(), // The paint flags should only be a color, shader, and filter quality,
&sk_crop_rect); // just DCHECK to make sure caller expectations are not valid.
DCHECK(paint.getBlendMode() == SkBlendMode::kSrcOver);
DCHECK(paint.getStyle() == SkPaint::kFill_Style);
DCHECK(!paint.getPathEffect());
DCHECK(!paint.getMaskFilter());
DCHECK(!paint.getImageFilter());
DCHECK(!paint.getColorFilter());
sk_sp<SkShader> shader = paint.refShader();
if (shader) {
// Combine paint's alpha if the color isn't opaque (the constant RGB is
// overridden by the shader's per-pixel color).
if (paint.getAlpha() < 255) {
// The blend effectively produces (shader * paint alpha).
shader = SkShaders::Blend(SkBlendMode::kDstIn, std::move(shader),
SkShaders::Color(paint.getColor()));
}
} else {
shader = SkShaders::Color(paint.getColor());
}
// TODO(michaelludwig): Remove SkFilterQuality arg once all image shaders are
// created with explicit filter settings
using Dither = SkImageFilters::Dither;
cached_sk_filter_ = SkImageFilters::Shader(
std::move(shader), paint.isDither() ? Dither::kYes : Dither::kNo,
paint.getFilterQuality(), crop_rect);
} }
PaintFlagsPaintFilter::~PaintFlagsPaintFilter() = default; PaintFlagsPaintFilter::~PaintFlagsPaintFilter() = default;
...@@ -1112,7 +1031,7 @@ MatrixPaintFilter::MatrixPaintFilter(const SkMatrix& matrix, ...@@ -1112,7 +1031,7 @@ MatrixPaintFilter::MatrixPaintFilter(const SkMatrix& matrix,
matrix_(matrix), matrix_(matrix),
filter_quality_(filter_quality), filter_quality_(filter_quality),
input_(std::move(input)) { input_(std::move(input)) {
cached_sk_filter_ = SkImageFilter::MakeMatrixFilter( cached_sk_filter_ = SkImageFilters::MatrixTransform(
matrix_, filter_quality_, GetSkFilter(input_.get())); matrix_, filter_quality_, GetSkFilter(input_.get()));
} }
...@@ -1154,17 +1073,16 @@ LightingDistantPaintFilter::LightingDistantPaintFilter( ...@@ -1154,17 +1073,16 @@ LightingDistantPaintFilter::LightingDistantPaintFilter(
kconstant_(kconstant), kconstant_(kconstant),
shininess_(shininess), shininess_(shininess),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect);
switch (lighting_type_) { switch (lighting_type_) {
case LightingType::kDiffuse: case LightingType::kDiffuse:
cached_sk_filter_ = SkLightingImageFilter::MakeDistantLitDiffuse( cached_sk_filter_ = SkImageFilters::DistantLitDiffuse(
direction_, light_color_, surface_scale_, kconstant_, direction_, light_color_, surface_scale_, kconstant_,
GetSkFilter(input_.get()), &sk_crop_rect); GetSkFilter(input_.get()), crop_rect);
break; break;
case LightingType::kSpecular: case LightingType::kSpecular:
cached_sk_filter_ = SkLightingImageFilter::MakeDistantLitSpecular( cached_sk_filter_ = SkImageFilters::DistantLitSpecular(
direction_, light_color_, surface_scale_, kconstant_, shininess_, direction_, light_color_, surface_scale_, kconstant_, shininess_,
GetSkFilter(input_.get()), &sk_crop_rect); GetSkFilter(input_.get()), crop_rect);
break; break;
} }
} }
...@@ -1214,17 +1132,16 @@ LightingPointPaintFilter::LightingPointPaintFilter(LightingType lighting_type, ...@@ -1214,17 +1132,16 @@ LightingPointPaintFilter::LightingPointPaintFilter(LightingType lighting_type,
kconstant_(kconstant), kconstant_(kconstant),
shininess_(shininess), shininess_(shininess),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect);
switch (lighting_type_) { switch (lighting_type_) {
case LightingType::kDiffuse: case LightingType::kDiffuse:
cached_sk_filter_ = SkLightingImageFilter::MakePointLitDiffuse( cached_sk_filter_ = SkImageFilters::PointLitDiffuse(
location_, light_color_, surface_scale_, kconstant_, location_, light_color_, surface_scale_, kconstant_,
GetSkFilter(input_.get()), &sk_crop_rect); GetSkFilter(input_.get()), crop_rect);
break; break;
case LightingType::kSpecular: case LightingType::kSpecular:
cached_sk_filter_ = SkLightingImageFilter::MakePointLitSpecular( cached_sk_filter_ = SkImageFilters::PointLitSpecular(
location_, light_color_, surface_scale_, kconstant_, shininess_, location_, light_color_, surface_scale_, kconstant_, shininess_,
GetSkFilter(input_.get()), &sk_crop_rect); GetSkFilter(input_.get()), crop_rect);
break; break;
} }
} }
...@@ -1280,18 +1197,17 @@ LightingSpotPaintFilter::LightingSpotPaintFilter(LightingType lighting_type, ...@@ -1280,18 +1197,17 @@ LightingSpotPaintFilter::LightingSpotPaintFilter(LightingType lighting_type,
kconstant_(kconstant), kconstant_(kconstant),
shininess_(shininess), shininess_(shininess),
input_(std::move(input)) { input_(std::move(input)) {
auto sk_crop_rect = ToLegacyCropRect(crop_rect);
switch (lighting_type_) { switch (lighting_type_) {
case LightingType::kDiffuse: case LightingType::kDiffuse:
cached_sk_filter_ = SkLightingImageFilter::MakeSpotLitDiffuse( cached_sk_filter_ = SkImageFilters::SpotLitDiffuse(
location_, target_, specular_exponent_, cutoff_angle_, light_color_, location_, target_, specular_exponent_, cutoff_angle_, light_color_,
surface_scale_, kconstant_, GetSkFilter(input_.get()), &sk_crop_rect); surface_scale_, kconstant_, GetSkFilter(input_.get()), crop_rect);
break; break;
case LightingType::kSpecular: case LightingType::kSpecular:
cached_sk_filter_ = SkLightingImageFilter::MakeSpotLitSpecular( cached_sk_filter_ = SkImageFilters::SpotLitSpecular(
location_, target_, specular_exponent_, cutoff_angle_, light_color_, location_, target_, specular_exponent_, cutoff_angle_, light_color_,
surface_scale_, kconstant_, shininess_, GetSkFilter(input_.get()), surface_scale_, kconstant_, shininess_, GetSkFilter(input_.get()),
&sk_crop_rect); crop_rect);
break; break;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment