2 * Copyright 2020 Google Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
8 #ifndef SkSVGFeColorMatrix_DEFINED
9 #define SkSVGFeColorMatrix_DEFINED
11 #include "include/effects/SkColorMatrix.h"
12 #include "modules/svg/include/SkSVGFe.h"
13 #include "modules/svg/include/SkSVGTypes.h"
15 class SkSVGFeColorMatrix final : public SkSVGFe {
17 static sk_sp<SkSVGFeColorMatrix> Make() {
18 return sk_sp<SkSVGFeColorMatrix>(new SkSVGFeColorMatrix());
21 SVG_ATTR(Type, SkSVGFeColorMatrixType, SkSVGFeColorMatrixType(SkSVGFeColorMatrixType::kMatrix))
22 SVG_ATTR(Values, SkSVGFeColorMatrixValues, SkSVGFeColorMatrixValues())
25 sk_sp<SkImageFilter> onMakeImageFilter(const SkSVGRenderContext&,
26 const SkSVGFilterContext&) const override;
28 std::vector<SkSVGFeInputType> getInputs() const override { return {this->getIn()}; }
30 bool parseAndSetAttribute(const char*, const char*) override;
33 SkSVGFeColorMatrix() : INHERITED(SkSVGTag::kFeColorMatrix) {}
35 SkColorMatrix makeMatrixForType() const;
37 static SkColorMatrix MakeSaturate(SkSVGNumberType s);
39 static SkColorMatrix MakeHueRotate(SkSVGNumberType degrees);
41 static SkColorMatrix MakeLuminanceToAlpha();
43 using INHERITED = SkSVGFe;
46 #endif // SkSVGFeColorMatrix_DEFINED