| Index: src/pathops/SkPathWriter.h
|
| diff --git a/src/pathops/SkPathWriter.h b/src/pathops/SkPathWriter.h
|
| index 820ddc52b6f366e4633ec42c73fdb7e36979e735..bd13c718a90f3c2808b95d037c02832b17aff4c5 100644
|
| --- a/src/pathops/SkPathWriter.h
|
| +++ b/src/pathops/SkPathWriter.h
|
| @@ -8,38 +8,47 @@
|
| #define SkPathWriter_DEFINED
|
|
|
| #include "SkPath.h"
|
| +#include "SkTArray.h"
|
| +#include "SkTDArray.h"
|
| +
|
| +class SkOpPtT;
|
| +
|
| +// Construct the path one contour at a time.
|
| +// If the contour is closed, copy it to the final output.
|
| +// Otherwise, keep the partial contour for later assembly.
|
|
|
| class SkPathWriter {
|
| public:
|
| SkPathWriter(SkPath& path);
|
| - void close();
|
| - void conicTo(const SkPoint& pt1, const SkPoint& pt2, SkScalar weight);
|
| - void cubicTo(const SkPoint& pt1, const SkPoint& pt2, const SkPoint& pt3);
|
| - void deferredLine(const SkPoint& pt);
|
| - void deferredMove(const SkPoint& pt);
|
| - void deferredMoveLine(const SkPoint& pt);
|
| - bool hasMove() const;
|
| + void assemble();
|
| + void conicTo(const SkPoint& pt1, const SkOpPtT* pt2, SkScalar weight);
|
| + void cubicTo(const SkPoint& pt1, const SkPoint& pt2, const SkOpPtT* pt3);
|
| + void deferredLine(const SkOpPtT* pt);
|
| + void deferredMove(const SkOpPtT* pt);
|
| + void finishContour();
|
| + bool hasMove() const { return !fFirstPtT; }
|
| void init();
|
| bool isClosed() const;
|
| - bool isEmpty() const { return fEmpty; }
|
| - void lineTo();
|
| - const SkPath* nativePath() const;
|
| - void nudge();
|
| - void quadTo(const SkPoint& pt1, const SkPoint& pt2);
|
| - bool someAssemblyRequired() const;
|
| + const SkPath* nativePath() const { return fPathPtr; }
|
| + void quadTo(const SkPoint& pt1, const SkOpPtT* pt2);
|
|
|
| private:
|
| - bool changedSlopes(const SkPoint& pt) const;
|
| + bool changedSlopes(const SkOpPtT* pt) const;
|
| + void close();
|
| + const SkTDArray<const SkOpPtT*>& endPtTs() const { return fEndPtTs; }
|
| + void lineTo();
|
| + bool matchedLast(const SkOpPtT*) const;
|
| void moveTo();
|
| + const SkTArray<SkPath>& partials() const { return fPartials; }
|
| + bool someAssemblyRequired();
|
| + void update(const SkOpPtT* pt);
|
|
|
| - SkPath* fPathPtr;
|
| - SkPoint fDefer[2];
|
| - SkPoint fFirstPt;
|
| - int fCloses;
|
| - int fMoves;
|
| - bool fEmpty;
|
| - bool fHasMove;
|
| - bool fMoved;
|
| + SkPath fCurrent; // contour under construction
|
| + SkTArray<SkPath> fPartials; // contours with mismatched starts and ends
|
| + SkTDArray<const SkOpPtT*> fEndPtTs; // possible pt values for partial starts and ends
|
| + SkPath* fPathPtr; // closed contours are written here
|
| + const SkOpPtT* fDefer[2]; // [0] deferred move, [1] deferred line
|
| + const SkOpPtT* fFirstPtT; // first in current contour
|
| };
|
|
|
| #endif /* defined(__PathOps__SkPathWriter__) */
|
|
|