32class GaussianBlurEffectAdapter final :
public AnimatablePropertyContainer {
36 const AnimationBuilder* abuilder) {
47 const AnimationBuilder* abuilder)
48 : fBlur(
sksg::BlurImageFilter::
Make())
49 , fImageFilterEffect(
sksg::ImageFilterEffect::
Make(
std::move(layer), fBlur)) {
51 kBlurriness_Index = 0,
52 kDimensions_Index = 1,
53 kRepeatEdge_Index = 2,
56 EffectBinder(jprops, *abuilder,
this)
57 .bind(kBlurriness_Index, fBlurriness)
58 .bind(kDimensions_Index, fDimensions)
59 .bind(kRepeatEdge_Index, fRepeatEdge);
62 void onSync()
override {
63 static constexpr SkVector kDimensionsMap[] = {
69 const auto dim_index = SkTPin<size_t>(
static_cast<size_t>(fDimensions),
70 1, std::size(kDimensionsMap)) - 1;
74 fBlur->setSigma({ sigma * kDimensionsMap[dim_index].
x(),
75 sigma * kDimensionsMap[dim_index].
y() });
79 const auto repeat_edge =
static_cast<bool>(fRepeatEdge);
84 fBlur->setTileMode(repeat_edge
89 :
sksg::ImageFilterEffect::Cropping::
kNone);
static std::unique_ptr< SkEncoder > Make(SkWStream *dst, const SkPixmap *src, const SkYUVAPixmaps *srcYUVA, const SkColorSpace *srcYUVAColorSpace, const SkJpegEncoder::Options &options)
void attachDiscardableAdapter(sk_sp< T > adapter) const
static constexpr float kBlurSizeToSigma
constexpr float x() const