/* * Copyright (c) 2022, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #include "SVGLineElement.h" #include #include namespace Web::SVG { SVGLineElement::SVGLineElement(DOM::Document& document, DOM::QualifiedName qualified_name) : SVGGeometryElement(document, qualified_name) { } void SVGLineElement::parse_attribute(FlyString const& name, String const& value) { SVGGeometryElement::parse_attribute(name, value); if (name == SVG::AttributeNames::x1) { m_x1 = AttributeParser::parse_coordinate(value); m_path.clear(); } else if (name == SVG::AttributeNames::y1) { m_y1 = AttributeParser::parse_coordinate(value); m_path.clear(); } else if (name == SVG::AttributeNames::x2) { m_x2 = AttributeParser::parse_coordinate(value); m_path.clear(); } else if (name == SVG::AttributeNames::y2) { m_y2 = AttributeParser::parse_coordinate(value); m_path.clear(); } } Gfx::Path& SVGLineElement::get_path() { if (m_path.has_value()) return m_path.value(); Gfx::Path path; float x1 = m_x1.value_or(0); float y1 = m_y1.value_or(0); float x2 = m_x2.value_or(0); float y2 = m_y2.value_or(0); // 1. perform an absolute moveto operation to absolute location (x1,y1) path.move_to({ x1, y1 }); // 2. perform an absolute lineto operation to absolute location (x2,y2) path.line_to({ x2, y2 }); m_path = move(path); return m_path.value(); } }