16ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita/*
26ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita * Copyright 2016 Google Inc.
36ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita *
46ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita * Use of this source code is governed by a BSD-style license that can be
56ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita * found in the LICENSE file.
66ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita */
76ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
86ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita#ifndef SkSVGPath_DEFINED
96ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita#define SkSVGPath_DEFINED
106ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
116ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita#include "SkPath.h"
12bffc2566872f99d378a1113d0a49ec9ee0d60b7afmalita#include "SkSVGShape.h"
136ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
14bffc2566872f99d378a1113d0a49ec9ee0d60b7afmalitaclass SkSVGPath final : public SkSVGShape {
156ceef3dd67617c5f4572ada98d5ee85777d2db99fmalitapublic:
16d3b65972aad96453ff4510caa3e25a2b847c6d1eBrian Salomon    ~SkSVGPath() override = default;
176ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita    static sk_sp<SkSVGPath> Make() { return sk_sp<SkSVGPath>(new SkSVGPath()); }
186ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
196ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita    void setPath(const SkPath& path) { fPath = path; }
206ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
216ceef3dd67617c5f4572ada98d5ee85777d2db99fmalitaprotected:
226ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita    void onSetAttribute(SkSVGAttribute, const SkSVGValue&) override;
236ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
24e932d4b3a99905a6272c5574f21ac651632f4e82Florin Malita    void onDraw(SkCanvas*, const SkSVGLengthContext&, const SkPaint&,
25e932d4b3a99905a6272c5574f21ac651632f4e82Florin Malita                SkPath::FillType) const override;
26bffc2566872f99d378a1113d0a49ec9ee0d60b7afmalita
27ce8840e3842f3a702c5d7bf440ff730bdfaf8e70Florin Malita    SkPath onAsPath(const SkSVGRenderContext&) const override;
28ce8840e3842f3a702c5d7bf440ff730bdfaf8e70Florin Malita
296ceef3dd67617c5f4572ada98d5ee85777d2db99fmalitaprivate:
306ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita    SkSVGPath();
316ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
32e932d4b3a99905a6272c5574f21ac651632f4e82Florin Malita    mutable SkPath fPath; // mutated in onDraw(), to apply inherited fill types.
336ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
34bffc2566872f99d378a1113d0a49ec9ee0d60b7afmalita    typedef SkSVGShape INHERITED;
356ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita};
366ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita
376ceef3dd67617c5f4572ada98d5ee85777d2db99fmalita#endif // SkSVGPath_DEFINED
38