• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2024 Google Inc.
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 SkSVGFeMerge_DEFINED
9 #define SkSVGFeMerge_DEFINED
10 
11 #include "modules/svg/include/SkSVGFe.h"
12 #include "modules/svg/include/SkSVGHiddenContainer.h"
13 #include "modules/svg/include/SkSVGNode.h"
14 #include "modules/svg/include/SkSVGTypes.h"
15 
16 // https://www.w3.org/TR/SVG11/filters.html#feMergeNodeElement
17 class SK_API SkSVGFeMergeNode : public SkSVGHiddenContainer {
18 public:
19     static constexpr SkSVGTag tag = SkSVGTag::kFeMergeNode;
20 
Make()21     static sk_sp<SkSVGFeMergeNode> Make() {
22         return sk_sp<SkSVGFeMergeNode>(new SkSVGFeMergeNode());
23     }
24 
25     SVG_ATTR(In, SkSVGFeInputType, SkSVGFeInputType())
26 
27 protected:
28     bool parseAndSetAttribute(const char*, const char*) override;
29 
30 private:
SkSVGFeMergeNode()31     SkSVGFeMergeNode() : INHERITED(tag) {}
32 
33     using INHERITED = SkSVGHiddenContainer;
34 };
35 
36 // https://www.w3.org/TR/SVG11/filters.html#feMergeElement
37 class SK_API SkSVGFeMerge : public SkSVGFe {
38 public:
39     static constexpr SkSVGTag tag = SkSVGTag::kFeMerge;
40 
Make()41     static sk_sp<SkSVGFeMerge> Make() { return sk_sp<SkSVGFeMerge>(new SkSVGFeMerge()); }
42 
43 protected:
44     sk_sp<SkImageFilter> onMakeImageFilter(const SkSVGRenderContext&,
45                                            const SkSVGFilterContext&) const override;
46 
47     std::vector<SkSVGFeInputType> getInputs() const override;
48 
49 private:
SkSVGFeMerge()50     SkSVGFeMerge() : INHERITED(tag) {}
51 
52     using INHERITED = SkSVGFe;
53 };
54 
55 #endif //  SkSVGFeMerge_DEFINED
56