/* * Copyright (c) 2020, Matthew Olsson * Copyright (c) 2021-2022, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::SVG { class SVGGraphicsElement : public SVGElement { WEB_PLATFORM_OBJECT(SVGGraphicsElement, SVGElement); public: virtual void apply_presentational_hints(CSS::StyleProperties&) const override; virtual void parse_attribute(DeprecatedFlyString const& name, DeprecatedString const& value) override; Optional fill_color() const; Gfx::Painter::WindingRule fill_rule() const; Optional stroke_color() const; Optional stroke_width() const; float visible_stroke_width() const { if (auto color = stroke_color(); color.has_value() && color->alpha() > 0) return stroke_width().value_or(0); return 0; } Gfx::AffineTransform get_transform() const; protected: SVGGraphicsElement(DOM::Document&, DOM::QualifiedName); virtual JS::ThrowCompletionOr initialize(JS::Realm&) override; Optional m_fill_opacity = {}; Gfx::AffineTransform m_transform = {}; }; Gfx::AffineTransform transform_from_transform_list(ReadonlySpan transform_list); }