xref: /third_party/skia/src/core/SkBlendModeBlender.h (revision cb93a386)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/skia/src/core/
1/*
2 * Copyright 2021 Google LLC
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkBlendModeBlender_DEFINED
9#define SkBlendModeBlender_DEFINED
10
11#include "src/core/SkBlenderBase.h"
12
13class SkBlendModeBlender : public SkBlenderBase {
14public:
15    SkBlendModeBlender(SkBlendMode mode) : fMode(mode) {}
16
17    skstd::optional<SkBlendMode> asBlendMode() const final { return fMode; }
18
19#if SK_SUPPORT_GPU
20    std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(
21            std::unique_ptr<GrFragmentProcessor> srcFP,
22            std::unique_ptr<GrFragmentProcessor> dstFP,
23            const GrFPArgs& fpArgs) const override;
24#endif
25
26    SK_FLATTENABLE_HOOKS(SkBlendModeBlender)
27
28private:
29    using INHERITED = SkBlenderBase;
30
31    void flatten(SkWriteBuffer& buffer) const override;
32
33    skvm::Color onProgram(skvm::Builder* p, skvm::Color src, skvm::Color dst,
34                          const SkColorInfo& colorInfo, skvm::Uniforms* uniforms,
35                          SkArenaAlloc* alloc) const override;
36
37    SkBlendMode fMode;
38};
39
40#endif
41

Indexes created Thu Nov 07 10:32:03 CST 2024