/* * Copyright (c) 2023, MacDue * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::SVG { class SVGRadialGradientElement : public SVGGradientElement { WEB_PLATFORM_OBJECT(SVGRadialGradientElement, SVGGradientElement); public: virtual ~SVGRadialGradientElement() override = default; virtual void attribute_changed(DeprecatedFlyString const& name, DeprecatedString const& value) override; virtual Optional to_gfx_paint_style(SVGPaintContext const&) const override; JS::NonnullGCPtr cx() const; JS::NonnullGCPtr cy() const; JS::NonnullGCPtr fx() const; JS::NonnullGCPtr fy() const; JS::NonnullGCPtr fr() const; JS::NonnullGCPtr r() const; protected: SVGRadialGradientElement(DOM::Document&, DOM::QualifiedName); virtual JS::ThrowCompletionOr initialize(JS::Realm&) override; private: JS::GCPtr radial_gradient_xlink_href() const { if (auto href = xlink_href(); href && is(*href)) return &verify_cast(*href); return {}; } NumberPercentage start_circle_x() const; NumberPercentage start_circle_y() const; NumberPercentage start_circle_radius() const; NumberPercentage end_circle_x() const; NumberPercentage end_circle_y() const; NumberPercentage end_circle_radius() const; Optional m_cx; Optional m_cy; Optional m_fx; Optional m_fy; Optional m_fr; Optional m_r; mutable RefPtr m_paint_style; }; }