123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*
- * Copyright 2006 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef SkComposeShader_DEFINED
- #define SkComposeShader_DEFINED
- #include "include/core/SkBlendMode.h"
- #include "src/shaders/SkShaderBase.h"
- class SkShader_Blend final : public SkShaderBase {
- public:
- SkShader_Blend(SkBlendMode mode, sk_sp<SkShader> dst, sk_sp<SkShader> src, const SkMatrix* lm)
- : INHERITED(lm)
- , fDst(std::move(dst))
- , fSrc(std::move(src))
- , fMode(mode)
- {}
- #if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
- #endif
- protected:
- SkShader_Blend(SkReadBuffer&);
- void flatten(SkWriteBuffer&) const override;
- bool onAppendStages(const SkStageRec&) const override;
- private:
- SK_FLATTENABLE_HOOKS(SkShader_Blend)
- sk_sp<SkShader> fDst;
- sk_sp<SkShader> fSrc;
- const SkBlendMode fMode;
- typedef SkShaderBase INHERITED;
- };
- class SkShader_Lerp final : public SkShaderBase {
- public:
- SkShader_Lerp(float weight, sk_sp<SkShader> dst, sk_sp<SkShader> src, const SkMatrix* lm)
- : INHERITED(lm)
- , fDst(std::move(dst))
- , fSrc(std::move(src))
- , fWeight(weight)
- {
- SkASSERT(weight >= 0 && weight <= 1);
- }
- #if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
- #endif
- protected:
- SkShader_Lerp(SkReadBuffer&);
- void flatten(SkWriteBuffer&) const override;
- bool onAppendStages(const SkStageRec&) const override;
- private:
- SK_FLATTENABLE_HOOKS(SkShader_Lerp)
- sk_sp<SkShader> fDst;
- sk_sp<SkShader> fSrc;
- const float fWeight;
- typedef SkShaderBase INHERITED;
- };
- class SkShader_LerpRed final : public SkShaderBase {
- public:
- SkShader_LerpRed(sk_sp<SkShader> red, sk_sp<SkShader> dst, sk_sp<SkShader> src,
- const SkMatrix* lm)
- : INHERITED(lm)
- , fDst(std::move(dst))
- , fSrc(std::move(src))
- , fRed(std::move(red))
- {}
- #if SK_SUPPORT_GPU
- std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs&) const override;
- #endif
- protected:
- SkShader_LerpRed(SkReadBuffer&);
- void flatten(SkWriteBuffer&) const override;
- bool onAppendStages(const SkStageRec&) const override;
- private:
- SK_FLATTENABLE_HOOKS(SkShader_LerpRed)
- sk_sp<SkShader> fDst;
- sk_sp<SkShader> fSrc;
- sk_sp<SkShader> fRed;
- typedef SkShaderBase INHERITED;
- };
- #endif
|