1/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7#ifndef SkPathWriter_DEFINED
8#define SkPathWriter_DEFINED
9
10#include "SkPath.h"
11
12class SkPathWriter {
13public:
14    SkPathWriter(SkPath& path);
15    void close();
16    void conicTo(const SkPoint& pt1, const SkPoint& pt2, SkScalar weight);
17    void cubicTo(const SkPoint& pt1, const SkPoint& pt2, const SkPoint& pt3);
18    void deferredLine(const SkPoint& pt);
19    void deferredMove(const SkPoint& pt);
20    void deferredMoveLine(const SkPoint& pt);
21    bool hasMove() const;
22    void init();
23    bool isClosed() const;
24    bool isEmpty() const { return fEmpty; }
25    void lineTo();
26    const SkPath* nativePath() const;
27    void nudge();
28    void quadTo(const SkPoint& pt1, const SkPoint& pt2);
29    bool someAssemblyRequired() const;
30
31private:
32    bool changedSlopes(const SkPoint& pt) const;
33    void moveTo();
34
35    SkPath* fPathPtr;
36    SkPoint fDefer[2];
37    SkPoint fFirstPt;
38    int fCloses;
39    int fMoves;
40    bool fEmpty;
41    bool fHasMove;
42    bool fMoved;
43};
44
45#endif /* defined(__PathOps__SkPathWriter__) */
46