#pragma once
#include "SVGGeometryElement.h"
#include "SVGNames.h"
namespace WebCore {
class SVGPolyElement : public SVGGeometryElement {
WTF_MAKE_ISO_ALLOCATED(SVGPolyElement);
public:
const SVGPointList& points() const { return m_points->currentValue(); }
SVGPointList& points() { return m_points->baseVal(); }
SVGPointList& animatedPoints() { return *m_points->animVal(); }
size_t approximateMemoryCost() const override;
protected:
SVGPolyElement(const QualifiedName&, Document&);
private:
using PropertyRegistry = SVGPropertyOwnerRegistry<SVGPolyElement, SVGGeometryElement>;
const SVGPropertyRegistry& propertyRegistry() const final { return m_propertyRegistry; }
void parseAttribute(const QualifiedName&, const AtomString&) override;
void svgAttributeChanged(const QualifiedName&) override;
bool isValid() const override { return SVGTests::isValid(); }
bool supportsMarkers() const override { return true; }
PropertyRegistry m_propertyRegistry { *this };
Ref<SVGAnimatedPointList> m_points { SVGAnimatedPointList::create(this) };
};
}
SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::SVGPolyElement)
static bool isType(const WebCore::SVGElement& element) { return element.hasTagName(WebCore::SVGNames::polygonTag) || element.hasTagName(WebCore::SVGNames::polylineTag); }
static bool isType(const WebCore::Node& node) { return is<WebCore::SVGElement>(node) && isType(downcast<WebCore::SVGElement>(node)); }
SPECIALIZE_TYPE_TRAITS_END()