1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef DOM_SVG_SVGFECONVOLVEMATRIXELEMENT_H_
8 #define DOM_SVG_SVGFECONVOLVEMATRIXELEMENT_H_
10 #include "SVGAnimatedBoolean.h"
11 #include "SVGAnimatedEnumeration.h"
12 #include "SVGAnimatedInteger.h"
13 #include "SVGAnimatedIntegerPair.h"
14 #include "SVGAnimatedNumber.h"
15 #include "SVGAnimatedNumberList.h"
16 #include "SVGAnimatedString.h"
17 #include "mozilla/dom/SVGFilters.h"
19 nsresult
NS_NewSVGFEConvolveMatrixElement(
20 nsIContent
** aResult
, already_AddRefed
<mozilla::dom::NodeInfo
>&& aNodeInfo
);
22 namespace mozilla::dom
{
23 class DOMSVGAnimatedNumberList
;
24 class DOMSVGAnimatedBoolean
;
26 using SVGFEConvolveMatrixElementBase
= SVGFilterPrimitiveElement
;
28 class SVGFEConvolveMatrixElement final
: public SVGFEConvolveMatrixElementBase
{
29 friend nsresult(::NS_NewSVGFEConvolveMatrixElement(
31 already_AddRefed
<mozilla::dom::NodeInfo
>&& aNodeInfo
));
34 explicit SVGFEConvolveMatrixElement(
35 already_AddRefed
<mozilla::dom::NodeInfo
>&& aNodeInfo
)
36 : SVGFEConvolveMatrixElementBase(std::move(aNodeInfo
)) {}
37 JSObject
* WrapNode(JSContext
* aCx
,
38 JS::Handle
<JSObject
*> aGivenProto
) override
;
41 FilterPrimitiveDescription
GetPrimitiveDescription(
42 SVGFilterInstance
* aInstance
, const IntRect
& aFilterSubregion
,
43 const nsTArray
<bool>& aInputsAreTainted
,
44 nsTArray
<RefPtr
<SourceSurface
>>& aInputImages
) override
;
45 bool AttributeAffectsRendering(int32_t aNameSpaceID
,
46 nsAtom
* aAttribute
) const override
;
47 SVGAnimatedString
& GetResultImageName() override
{
48 return mStringAttributes
[RESULT
];
50 void GetSourceImageNames(nsTArray
<SVGStringInfo
>& aSources
) override
;
52 nsresult
Clone(dom::NodeInfo
*, nsINode
** aResult
) const override
;
54 nsresult
BindToTree(BindContext
& aCtx
, nsINode
& aParent
) override
;
57 already_AddRefed
<DOMSVGAnimatedString
> In1();
58 already_AddRefed
<DOMSVGAnimatedInteger
> OrderX();
59 already_AddRefed
<DOMSVGAnimatedInteger
> OrderY();
60 already_AddRefed
<DOMSVGAnimatedNumberList
> KernelMatrix();
61 already_AddRefed
<DOMSVGAnimatedInteger
> TargetX();
62 already_AddRefed
<DOMSVGAnimatedInteger
> TargetY();
63 already_AddRefed
<DOMSVGAnimatedEnumeration
> EdgeMode();
64 already_AddRefed
<DOMSVGAnimatedBoolean
> PreserveAlpha();
65 already_AddRefed
<DOMSVGAnimatedNumber
> Divisor();
66 already_AddRefed
<DOMSVGAnimatedNumber
> Bias();
67 already_AddRefed
<DOMSVGAnimatedNumber
> KernelUnitLengthX();
68 already_AddRefed
<DOMSVGAnimatedNumber
> KernelUnitLengthY();
71 NumberAttributesInfo
GetNumberInfo() override
;
72 NumberPairAttributesInfo
GetNumberPairInfo() override
;
73 IntegerAttributesInfo
GetIntegerInfo() override
;
74 IntegerPairAttributesInfo
GetIntegerPairInfo() override
;
75 BooleanAttributesInfo
GetBooleanInfo() override
;
76 EnumAttributesInfo
GetEnumInfo() override
;
77 StringAttributesInfo
GetStringInfo() override
;
78 NumberListAttributesInfo
GetNumberListInfo() override
;
80 enum { DIVISOR
, BIAS
};
81 SVGAnimatedNumber mNumberAttributes
[2];
82 static NumberInfo sNumberInfo
[2];
84 enum { KERNEL_UNIT_LENGTH
};
85 SVGAnimatedNumberPair mNumberPairAttributes
[1];
86 static NumberPairInfo sNumberPairInfo
[1];
88 enum { TARGET_X
, TARGET_Y
};
89 SVGAnimatedInteger mIntegerAttributes
[2];
90 static IntegerInfo sIntegerInfo
[2];
93 SVGAnimatedIntegerPair mIntegerPairAttributes
[1];
94 static IntegerPairInfo sIntegerPairInfo
[1];
96 enum { PRESERVEALPHA
};
97 SVGAnimatedBoolean mBooleanAttributes
[1];
98 static BooleanInfo sBooleanInfo
[1];
101 SVGAnimatedEnumeration mEnumAttributes
[1];
102 static SVGEnumMapping sEdgeModeMap
[];
103 static EnumInfo sEnumInfo
[1];
105 enum { RESULT
, IN1
};
106 SVGAnimatedString mStringAttributes
[2];
107 static StringInfo sStringInfo
[2];
109 enum { KERNELMATRIX
};
110 SVGAnimatedNumberList mNumberListAttributes
[1];
111 static NumberListInfo sNumberListInfo
[1];
114 } // namespace mozilla::dom
116 #endif // DOM_SVG_SVGFECONVOLVEMATRIXELEMENT_H_