SkDisplacementMapEffect::SkDisplacementMapEffect(SkReadBuffer& buffer) : INHERITED(2, buffer) { fXChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.readInt(); fYChannelSelector = (SkDisplacementMapEffect::ChannelSelectorType) buffer.readInt(); fScale = buffer.readScalar(); buffer.validate(channel_selector_type_is_valid(fXChannelSelector) && channel_selector_type_is_valid(fYChannelSelector) && SkScalarIsFinite(fScale)); }
SkDisplacementMapEffect* SkDisplacementMapEffect::Create(ChannelSelectorType xChannelSelector, ChannelSelectorType yChannelSelector, SkScalar scale, SkImageFilter* displacement, SkImageFilter* color, const CropRect* cropRect) { if (!channel_selector_type_is_valid(xChannelSelector) || !channel_selector_type_is_valid(yChannelSelector)) { return nullptr; } SkImageFilter* inputs[2] = { displacement, color }; return new SkDisplacementMapEffect(xChannelSelector, yChannelSelector, scale, inputs, cropRect); }
SkDisplacementMapEffect* SkDisplacementMapEffect::Create(ChannelSelectorType xChannelSelector, ChannelSelectorType yChannelSelector, SkScalar scale, SkImageFilter* displacement, SkImageFilter* color, const CropRect* cropRect, uint32_t uniqueID) { if (!channel_selector_type_is_valid(xChannelSelector) || !channel_selector_type_is_valid(yChannelSelector)) { return NULL; } SkImageFilter* inputs[2] = { displacement, color }; return SkNEW_ARGS(SkDisplacementMapEffect, (xChannelSelector, yChannelSelector, scale, inputs, cropRect, uniqueID)); }
sk_sp<SkImageFilter> SkDisplacementMapEffect::Make(ChannelSelectorType xChannelSelector, ChannelSelectorType yChannelSelector, SkScalar scale, sk_sp<SkImageFilter> displacement, sk_sp<SkImageFilter> color, const CropRect* cropRect) { if (!channel_selector_type_is_valid(xChannelSelector) || !channel_selector_type_is_valid(yChannelSelector)) { return nullptr; } sk_sp<SkImageFilter> inputs[2] = { std::move(displacement), std::move(color) }; return sk_sp<SkImageFilter>(new SkDisplacementMapEffect(xChannelSelector, yChannelSelector, scale, inputs, cropRect)); }