Index: src/pathops/SkOpEdgeBuilder.h |
=================================================================== |
--- src/pathops/SkOpEdgeBuilder.h (revision 8862) |
+++ src/pathops/SkOpEdgeBuilder.h (working copy) |
@@ -22,7 +22,8 @@ |
SkOpEdgeBuilder(const SkPath& path, SkTArray<SkOpContour>& contours) |
: fPath(&path) |
- , fContours(contours) { |
+ , fContours(contours) |
+ , fAllowOpenContours(false) { |
init(); |
} |
@@ -38,23 +39,30 @@ |
} |
void addOperand(const SkPath& path); |
- void finish(); |
+ bool finish(); |
void init(); |
+ void setAllowOpenContours(bool allow) { |
+ fAllowOpenContours = allow; |
+ } |
private: |
+ bool close(); |
int preFetch(); |
- void walk(); |
+ bool walk(); |
const SkPath* fPath; |
- SkTDArray<SkPoint> fPathPts; // FIXME: point directly to path pts instead |
- SkTDArray<uint8_t> fPathVerbs; // FIXME: remove |
+ SkTDArray<SkPoint> fPathPts; |
+ SkTDArray<uint8_t> fPathVerbs; |
SkOpContour* fCurrentContour; |
SkTArray<SkOpContour>& fContours; |
SkTDArray<SkPoint> fReducePts; // segments created on the fly |
SkTDArray<int> fExtra; // -1 marks new contour, > 0 offsets into contour |
SkPathOpsMask fXorMask[2]; |
+ const SkPoint* fFinalCurveStart; |
+ const SkPoint* fFinalCurveEnd; |
int fSecondHalf; |
bool fOperand; |
+ bool fAllowOpenContours; |
}; |
#endif |