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 cubicTo(const SkPoint& pt1, const SkPoint& pt2, const SkPoint& pt3);
17    void deferredLine(const SkPoint& pt);
18    void deferredMove(const SkPoint& pt);
19    void deferredMoveLine(const SkPoint& pt);
20    bool hasMove() const;
21    void init();
22    bool isClosed() const;
23    bool isEmpty() const { return fEmpty; }
24    void lineTo();
25    const SkPath* nativePath() const;
26    void nudge();
27    void quadTo(const SkPoint& pt1, const SkPoint& pt2);
28    bool someAssemblyRequired() const;
29
30private:
31    bool changedSlopes(const SkPoint& pt) const;
32    void moveTo();
33
34    SkPath* fPathPtr;
35    SkPoint fDefer[2];
36    SkPoint fFirstPt;
37    int fCloses;
38    int fMoves;
39    bool fEmpty;
40    bool fHasMove;
41    bool fMoved;
42};
43
44#endif /* defined(__PathOps__SkPathWriter__) */
45