1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- /*
- * Copyright 2013 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef SkDisplacementMapEffect_DEFINED
- #define SkDisplacementMapEffect_DEFINED
- #include "include/core/SkImageFilter.h"
- class SK_API SkDisplacementMapEffect : public SkImageFilter {
- public:
- enum ChannelSelectorType {
- kUnknown_ChannelSelectorType,
- kR_ChannelSelectorType,
- kG_ChannelSelectorType,
- kB_ChannelSelectorType,
- kA_ChannelSelectorType,
- kLast_ChannelSelectorType = kA_ChannelSelectorType
- };
- ~SkDisplacementMapEffect() override;
- static sk_sp<SkImageFilter> Make(ChannelSelectorType xChannelSelector,
- ChannelSelectorType yChannelSelector,
- SkScalar scale,
- sk_sp<SkImageFilter> displacement,
- sk_sp<SkImageFilter> color,
- const CropRect* cropRect = nullptr);
- SkRect computeFastBounds(const SkRect& src) const override;
- virtual SkIRect onFilterBounds(const SkIRect& src, const SkMatrix& ctm,
- MapDirection, const SkIRect* inputRect) const override;
- SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix& ctm,
- MapDirection, const SkIRect* inputRect) const override;
- protected:
- sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&,
- SkIPoint* offset) const override;
- SkDisplacementMapEffect(ChannelSelectorType xChannelSelector,
- ChannelSelectorType yChannelSelector,
- SkScalar scale, sk_sp<SkImageFilter> inputs[2],
- const CropRect* cropRect);
- void flatten(SkWriteBuffer&) const override;
- private:
- SK_FLATTENABLE_HOOKS(SkDisplacementMapEffect)
- ChannelSelectorType fXChannelSelector;
- ChannelSelectorType fYChannelSelector;
- SkScalar fScale;
- typedef SkImageFilter INHERITED;
- const SkImageFilter* getDisplacementInput() const { return getInput(0); }
- const SkImageFilter* getColorInput() const { return getInput(1); }
- };
- #endif
|