blob: f32074d3cde827bc2e1f1bd03ce241f1e241469b [file] [log] [blame]
caryclark@google.com07393ca2013-04-08 11:47:37 +00001/*
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;
caryclark@google.coma5e55922013-05-07 18:51:31 +000023 bool isEmpty() const { return fEmpty; }
caryclark@google.com07393ca2013-04-08 11:47:37 +000024 void lineTo();
25 const SkPath* nativePath() const;
26 void nudge();
27 void quadTo(const SkPoint& pt1, const SkPoint& pt2);
28 bool someAssemblyRequired() const;
skia.committer@gmail.com32840172013-04-09 07:01:27 +000029
caryclark@google.com07393ca2013-04-08 11:47:37 +000030private:
31 bool changedSlopes(const SkPoint& pt) const;
32 void moveTo();
skia.committer@gmail.com32840172013-04-09 07:01:27 +000033
caryclark@google.com07393ca2013-04-08 11:47:37 +000034 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
caryclark@google.com07393ca2013-04-08 11:47:37 +000044#endif /* defined(__PathOps__SkPathWriter__) */