/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkSVGPoly_DEFINED #define SkSVGPoly_DEFINED #include "SkPath.h" #include "SkSVGShape.h" // Handles <polygon> and <polyline> elements. class SkSVGPoly final : public SkSVGShape { public: ~SkSVGPoly() override = default; static sk_sp<SkSVGPoly> MakePolygon() { return sk_sp<SkSVGPoly>(new SkSVGPoly(SkSVGTag::kPolygon)); } static sk_sp<SkSVGPoly> MakePolyline() { return sk_sp<SkSVGPoly>(new SkSVGPoly(SkSVGTag::kPolyline)); } void setPoints(const SkSVGPointsType&); protected: void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override; void onDraw(SkCanvas*, const SkSVGLengthContext&, const SkPaint&, SkPath::FillType) const override; SkPath onAsPath(const SkSVGRenderContext&) const override; private: SkSVGPoly(SkSVGTag); mutable SkPath fPath; // mutated in onDraw(), to apply inherited fill types. typedef SkSVGShape INHERITED; }; #endif // SkSVGPoly_DEFINED