| Index: src/pathops/SkOpSegment.h
|
| diff --git a/src/pathops/SkOpSegment.h b/src/pathops/SkOpSegment.h
|
| index 4c35ac7e7e519a68f52749afd98469b66b06639e..b4da929d99c4e573acf887292b43f8f64d371510 100644
|
| --- a/src/pathops/SkOpSegment.h
|
| +++ b/src/pathops/SkOpSegment.h
|
| @@ -302,7 +302,7 @@ public:
|
| double calcMissingTStart(const SkOpSegment* ref, double loEnd, double min, double max,
|
| double hiEnd, const SkOpSegment* other, int thisEnd);
|
| void checkDuplicates();
|
| - void checkEnds();
|
| + bool checkEnds();
|
| void checkMultiples();
|
| void checkSmall();
|
| bool checkSmall(int index) const;
|
| @@ -323,8 +323,10 @@ public:
|
| int findT(double t, const SkPoint& , const SkOpSegment* ) const;
|
| SkOpSegment* findTop(int* tIndex, int* endIndex, bool* unsortable, bool firstPass);
|
| void fixOtherTIndex();
|
| + bool inconsistentAngle(int maxWinding, int sumWinding, int oppMaxWinding, int oppSumWinding,
|
| + const SkOpAngle* angle) const;
|
| void initWinding(int start, int end, SkOpAngle::IncludeType angleIncludeType);
|
| - void initWinding(int start, int end, double tHit, int winding, SkScalar hitDx, int oppWind,
|
| + bool initWinding(int start, int end, double tHit, int winding, SkScalar hitDx, int oppWind,
|
| SkScalar hitOppDx);
|
| bool isMissing(double startT, const SkPoint& pt) const;
|
| bool isTiny(const SkOpAngle* angle) const;
|
| @@ -332,11 +334,13 @@ public:
|
| bool cancel);
|
| SkOpSpan* markAndChaseDoneBinary(int index, int endIndex);
|
| SkOpSpan* markAndChaseDoneUnary(int index, int endIndex);
|
| - SkOpSpan* markAndChaseWinding(const SkOpAngle* angle, int winding, int oppWinding);
|
| + bool markAndChaseWinding(const SkOpAngle* angle, int winding, int oppWinding,
|
| + SkOpSpan** lastPtr);
|
| SkOpSpan* markAngle(int maxWinding, int sumWinding, int oppMaxWinding, int oppSumWinding,
|
| const SkOpAngle* angle);
|
| void markDone(int index, int winding);
|
| void markDoneBinary(int index);
|
| + void markDoneFinal(int index);
|
| void markDoneUnary(int index);
|
| bool nextCandidate(int* start, int* end) const;
|
| int nextSpan(int from, int step) const;
|
| @@ -403,15 +407,16 @@ private:
|
| SkOpAngle* addSingletonAngleDown(SkOpSegment** otherPtr, SkOpAngle** );
|
| SkOpAngle* addSingletonAngleUp(SkOpSegment** otherPtr, SkOpAngle** );
|
| SkOpAngle* addSingletonAngles(int step);
|
| + void alignRange(int lower, int upper, const SkOpSegment* other, int oLower, int oUpper);
|
| void alignSpan(const SkPoint& newPt, double newT, const SkOpSegment* other, double otherT,
|
| const SkOpSegment* other2, SkOpSpan* oSpan, SkTDArray<AlignedSpan>* );
|
| bool betweenPoints(double midT, const SkPoint& pt1, const SkPoint& pt2) const;
|
| void bumpCoincidentBlind(bool binary, int index, int last);
|
| bool bumpCoincidentThis(const SkOpSpan& oTest, bool binary, int* index,
|
| - SkTArray<SkPoint, true>* outsideTs);
|
| + SkTArray<SkPoint, true>* outsideTs);
|
| void bumpCoincidentOBlind(int index, int last);
|
| - void bumpCoincidentOther(const SkOpSpan& oTest, int* index,
|
| - SkTArray<SkPoint, true>* outsideTs);
|
| + bool bumpCoincidentOther(const SkOpSpan& oTest, int* index,
|
| + SkTArray<SkPoint, true>* outsideTs, const SkPoint& endPt);
|
| bool bumpSpan(SkOpSpan* span, int windDelta, int oppDelta);
|
| bool calcLoopSpanCount(const SkOpSpan& thisSpan, int* smallCounts);
|
| bool checkForSmall(const SkOpSpan* span, const SkPoint& pt, double newT,
|
| @@ -438,6 +443,9 @@ private:
|
| const SkOpSpan& firstSpan(const SkOpSpan& thisSpan) const;
|
| void init(const SkPoint pts[], SkPath::Verb verb, bool operand, bool evenOdd);
|
| bool inCoincidentSpan(double t, const SkOpSegment* other) const;
|
| + bool inconsistentWinding(const SkOpAngle* , int maxWinding, int oppMaxWinding) const;
|
| + bool inconsistentWinding(int min, int maxWinding, int oppMaxWinding) const;
|
| + bool inconsistentWinding(const char* funName, int tIndex, int winding, int oppWinding) const;
|
| bool inLoop(const SkOpAngle* baseAngle, int spanCount, int* indexPtr) const;
|
| #if OLD_CHASE
|
| bool isSimple(int end) const;
|
| @@ -449,30 +457,35 @@ private:
|
| void matchWindingValue(int tIndex, double t, bool borrowWind);
|
| SkOpSpan* markAndChaseDone(int index, int endIndex, int winding);
|
| SkOpSpan* markAndChaseDoneBinary(const SkOpAngle* angle, int winding, int oppWinding);
|
| - SkOpSpan* markAndChaseWinding(const SkOpAngle* angle, int winding);
|
| - SkOpSpan* markAndChaseWinding(int index, int endIndex, int winding);
|
| - SkOpSpan* markAndChaseWinding(int index, int endIndex, int winding, int oppWinding);
|
| + bool markAndChaseWinding(const SkOpAngle* angle, int winding, SkOpSpan** lastPtr);
|
| + bool markAndChaseWinding(int index, int endIndex, int winding, SkOpSpan** lastPtr);
|
| + bool markAndChaseWinding(int index, int endIndex, int winding, int oppWinding,
|
| + SkOpSpan** lastPtr);
|
| SkOpSpan* markAngle(int maxWinding, int sumWinding, const SkOpAngle* angle);
|
| void markDoneBinary(int index, int winding, int oppWinding);
|
| SkOpSpan* markAndChaseDoneUnary(const SkOpAngle* angle, int winding);
|
| void markOneDone(const char* funName, int tIndex, int winding);
|
| void markOneDoneBinary(const char* funName, int tIndex);
|
| void markOneDoneBinary(const char* funName, int tIndex, int winding, int oppWinding);
|
| + void markOneDoneFinal(const char* funName, int tIndex);
|
| void markOneDoneUnary(const char* funName, int tIndex);
|
| - SkOpSpan* markOneWinding(const char* funName, int tIndex, int winding);
|
| - SkOpSpan* markOneWinding(const char* funName, int tIndex, int winding, int oppWinding);
|
| - void markWinding(int index, int winding);
|
| - void markWinding(int index, int winding, int oppWinding);
|
| + bool markOneWinding(const char* funName, int tIndex, int winding, SkOpSpan** lastPtr);
|
| + bool markOneWinding(const char* funName, int tIndex, int winding, int oppWinding,
|
| + SkOpSpan** lastPtr);
|
| + bool markWinding(int index, int winding);
|
| + bool markWinding(int index, int winding, int oppWinding);
|
| bool monotonicInY(int tStart, int tEnd) const;
|
|
|
| bool multipleEnds() const { return fTs[count() - 2].fT == 1; }
|
| bool multipleStarts() const { return fTs[1].fT == 0; }
|
|
|
| - SkOpSegment* nextChase(int* index, int* step, int* min, SkOpSpan** last);
|
| + SkOpSegment* nextChase(int* index, int* step, int* min, SkOpSpan** last) const;
|
| int nextExactSpan(int from, int step) const;
|
| + void resetSpanFlags();
|
| bool serpentine(int tStart, int tEnd) const;
|
| void setCoincidentRange(const SkPoint& startPt, const SkPoint& endPt, SkOpSegment* other);
|
| void setFromAngle(int endIndex, SkOpAngle* );
|
| + void setSpanFlags(const SkPoint& pt, double newT, SkOpSpan* span);
|
| void setToAngle(int endIndex, SkOpAngle* );
|
| void setUpWindings(int index, int endIndex, int* sumMiWinding,
|
| int* maxWinding, int* sumWinding);
|
| @@ -527,6 +540,7 @@ private:
|
| void debugConstructQuad(SkPoint shortQuad[3]);
|
| void debugReset();
|
| void dumpDPts() const;
|
| + void dumpHexPts() const;
|
| void dumpSpan(int index) const;
|
|
|
| const SkPoint* fPts;
|
|
|