/* * Copyright (c) 2023, MacDue * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::SVG { class SVGLinearGradientElement : public SVGGradientElement { WEB_PLATFORM_OBJECT(SVGLinearGradientElement, SVGGradientElement); public: virtual ~SVGLinearGradientElement() override = default; virtual void parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value) override; virtual Optional to_gfx_paint_style(SVGPaintContext const&) const override; JS::NonnullGCPtr x1() const; JS::NonnullGCPtr y1() const; JS::NonnullGCPtr x2() const; JS::NonnullGCPtr y2() const; protected: SVGLinearGradientElement(DOM::Document&, DOM::QualifiedName); virtual JS::ThrowCompletionOr initialize(JS::Realm&) override; private: JS::GCPtr linear_gradient_xlink_href() const { if (auto href = xlink_href(); href && is(*href)) return &verify_cast(*href); return {}; } NumberPercentage start_x() const; NumberPercentage start_y() const; NumberPercentage end_x() const; NumberPercentage end_y() const; Optional m_x1; Optional m_y1; Optional m_x2; Optional m_y2; mutable RefPtr m_paint_style; }; }