SVGRadialGradientElement.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (c) 2023, MacDue <macdue@dueutil.tech>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/SVG/AttributeParser.h>
  8. #include <LibWeb/SVG/SVGAnimatedLength.h>
  9. #include <LibWeb/SVG/SVGGradientElement.h>
  10. namespace Web::SVG {
  11. class SVGRadialGradientElement : public SVGGradientElement {
  12. WEB_PLATFORM_OBJECT(SVGRadialGradientElement, SVGGradientElement);
  13. public:
  14. virtual ~SVGRadialGradientElement() override = default;
  15. virtual void attribute_changed(DeprecatedFlyString const& name, DeprecatedString const& value) override;
  16. virtual Optional<Gfx::PaintStyle const&> to_gfx_paint_style(SVGPaintContext const&) const override;
  17. JS::NonnullGCPtr<SVGAnimatedLength> cx() const;
  18. JS::NonnullGCPtr<SVGAnimatedLength> cy() const;
  19. JS::NonnullGCPtr<SVGAnimatedLength> fx() const;
  20. JS::NonnullGCPtr<SVGAnimatedLength> fy() const;
  21. JS::NonnullGCPtr<SVGAnimatedLength> fr() const;
  22. JS::NonnullGCPtr<SVGAnimatedLength> r() const;
  23. protected:
  24. SVGRadialGradientElement(DOM::Document&, DOM::QualifiedName);
  25. virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
  26. private:
  27. JS::GCPtr<SVGRadialGradientElement const> radial_gradient_xlink_href() const
  28. {
  29. if (auto href = xlink_href(); href && is<SVGRadialGradientElement>(*href))
  30. return &verify_cast<SVGRadialGradientElement>(*href);
  31. return {};
  32. }
  33. NumberPercentage start_circle_x() const;
  34. NumberPercentage start_circle_y() const;
  35. NumberPercentage start_circle_radius() const;
  36. NumberPercentage end_circle_x() const;
  37. NumberPercentage end_circle_y() const;
  38. NumberPercentage end_circle_radius() const;
  39. Optional<NumberPercentage> m_cx;
  40. Optional<NumberPercentage> m_cy;
  41. Optional<NumberPercentage> m_fx;
  42. Optional<NumberPercentage> m_fy;
  43. Optional<NumberPercentage> m_fr;
  44. Optional<NumberPercentage> m_r;
  45. mutable RefPtr<Gfx::SVGRadialGradientPaintStyle> m_paint_style;
  46. };
  47. }