diff options
Diffstat (limited to 'dom/svg/SVGComponentTransferFunctionElement.h')
-rw-r--r-- | dom/svg/SVGComponentTransferFunctionElement.h | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/dom/svg/SVGComponentTransferFunctionElement.h b/dom/svg/SVGComponentTransferFunctionElement.h new file mode 100644 index 000000000..5dd32ce4c --- /dev/null +++ b/dom/svg/SVGComponentTransferFunctionElement.h @@ -0,0 +1,187 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_dom_SVGComponentTransferFunctionElement_h +#define mozilla_dom_SVGComponentTransferFunctionElement_h + +#include "nsSVGEnum.h" +#include "nsSVGFilters.h" +#include "nsSVGNumber2.h" +#include "SVGAnimatedNumberList.h" + + +#define NS_SVG_FE_COMPONENT_TRANSFER_FUNCTION_ELEMENT_CID \ +{ 0xafab106d, 0xbc18, 0x4f7f, \ + { 0x9e, 0x29, 0xfe, 0xb4, 0xb0, 0x16, 0x5f, 0xf4 } } + +namespace mozilla { + +class DOMSVGAnimatedNumberList; + +namespace dom { + +typedef SVGFEUnstyledElement SVGComponentTransferFunctionElementBase; + +class SVGComponentTransferFunctionElement : public SVGComponentTransferFunctionElementBase +{ +protected: + explicit SVGComponentTransferFunctionElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo) + : SVGComponentTransferFunctionElementBase(aNodeInfo) + { + } + + virtual ~SVGComponentTransferFunctionElement() {} + +public: + typedef gfx::AttributeMap AttributeMap; + + // interfaces: + NS_DECLARE_STATIC_IID_ACCESSOR(NS_SVG_FE_COMPONENT_TRANSFER_FUNCTION_ELEMENT_CID) + + NS_DECL_ISUPPORTS_INHERITED + + virtual bool AttributeAffectsRendering( + int32_t aNameSpaceID, nsIAtom* aAttribute) const override; + + virtual int32_t GetChannel() = 0; + + AttributeMap ComputeAttributes(); + + // WebIDL + virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override = 0; + already_AddRefed<SVGAnimatedEnumeration> Type(); + already_AddRefed<DOMSVGAnimatedNumberList> TableValues(); + already_AddRefed<SVGAnimatedNumber> Slope(); + already_AddRefed<SVGAnimatedNumber> Intercept(); + already_AddRefed<SVGAnimatedNumber> Amplitude(); + already_AddRefed<SVGAnimatedNumber> Exponent(); + already_AddRefed<SVGAnimatedNumber> Offset(); + +protected: + virtual NumberAttributesInfo GetNumberInfo() override; + virtual EnumAttributesInfo GetEnumInfo() override; + virtual NumberListAttributesInfo GetNumberListInfo() override; + + enum { TABLEVALUES }; + SVGAnimatedNumberList mNumberListAttributes[1]; + static NumberListInfo sNumberListInfo[1]; + + enum { SLOPE, INTERCEPT, AMPLITUDE, EXPONENT, OFFSET }; + nsSVGNumber2 mNumberAttributes[5]; + static NumberInfo sNumberInfo[5]; + + enum { TYPE }; + nsSVGEnum mEnumAttributes[1]; + static nsSVGEnumMapping sTypeMap[]; + static EnumInfo sEnumInfo[1]; +}; + +NS_DEFINE_STATIC_IID_ACCESSOR(SVGComponentTransferFunctionElement, NS_SVG_FE_COMPONENT_TRANSFER_FUNCTION_ELEMENT_CID) + +} // namespace dom +} // namespace mozilla + +nsresult NS_NewSVGFEFuncRElement( + nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); + +namespace mozilla { +namespace dom { + +class SVGFEFuncRElement : public SVGComponentTransferFunctionElement +{ + friend nsresult (::NS_NewSVGFEFuncRElement( + nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)); +protected: + explicit SVGFEFuncRElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo) + : SVGComponentTransferFunctionElement(aNodeInfo) {} + +public: + virtual int32_t GetChannel() override { return 0; } + + virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override; + + virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override; +}; + +} // namespace dom +} // namespace mozilla + +nsresult NS_NewSVGFEFuncGElement( + nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); + +namespace mozilla { +namespace dom { + +class SVGFEFuncGElement : public SVGComponentTransferFunctionElement +{ + friend nsresult (::NS_NewSVGFEFuncGElement( + nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)); +protected: + explicit SVGFEFuncGElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo) + : SVGComponentTransferFunctionElement(aNodeInfo) {} + +public: + virtual int32_t GetChannel() override { return 1; } + + virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override; + + virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override; +}; + +} // namespace dom +} // namespace mozilla + +nsresult NS_NewSVGFEFuncBElement( + nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); + +namespace mozilla { +namespace dom { + +class SVGFEFuncBElement : public SVGComponentTransferFunctionElement +{ + friend nsresult (::NS_NewSVGFEFuncBElement( + nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)); +protected: + explicit SVGFEFuncBElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo) + : SVGComponentTransferFunctionElement(aNodeInfo) {} + +public: + virtual int32_t GetChannel() override { return 2; } + + virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override; + + virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override; +}; + +} // namespace dom +} // namespace mozilla + +nsresult NS_NewSVGFEFuncAElement( + nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); + +namespace mozilla { +namespace dom { + +class SVGFEFuncAElement : public SVGComponentTransferFunctionElement +{ + friend nsresult (::NS_NewSVGFEFuncAElement( + nsIContent** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)); +protected: + explicit SVGFEFuncAElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo) + : SVGComponentTransferFunctionElement(aNodeInfo) {} + +public: + virtual int32_t GetChannel() override { return 3; } + + virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override; + + virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override; +}; + +} // namespace dom +} // namespace mozilla + +#endif // mozilla_dom_SVGComponentTransferFunctionElement_h |