SVGLinearGradientElement.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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 SVGLinearGradientElement : public SVGGradientElement {
  12. WEB_PLATFORM_OBJECT(SVGLinearGradientElement, SVGGradientElement);
  13. public:
  14. virtual ~SVGLinearGradientElement() 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> x1() const;
  18. JS::NonnullGCPtr<SVGAnimatedLength> y1() const;
  19. JS::NonnullGCPtr<SVGAnimatedLength> x2() const;
  20. JS::NonnullGCPtr<SVGAnimatedLength> y2() const;
  21. protected:
  22. SVGLinearGradientElement(DOM::Document&, DOM::QualifiedName);
  23. virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
  24. private:
  25. JS::GCPtr<SVGLinearGradientElement const> linear_gradient_xlink_href() const
  26. {
  27. if (auto href = xlink_href(); href && is<SVGLinearGradientElement>(*href))
  28. return &verify_cast<SVGLinearGradientElement>(*href);
  29. return {};
  30. }
  31. NumberPercentage start_x() const;
  32. NumberPercentage start_y() const;
  33. NumberPercentage end_x() const;
  34. NumberPercentage end_y() const;
  35. Optional<NumberPercentage> m_x1;
  36. Optional<NumberPercentage> m_y1;
  37. Optional<NumberPercentage> m_x2;
  38. Optional<NumberPercentage> m_y2;
  39. mutable RefPtr<Gfx::SVGLinearGradientPaintStyle> m_paint_style;
  40. };
  41. }