Index: src/pathops/SkOpAngle.h |
diff --git a/src/pathops/SkOpAngle.h b/src/pathops/SkOpAngle.h |
index 4b209de32da3448d15d72e4d01be74bb5e988d0b..a1ead1ecfda3945a6d88561c3403fcdd3514da2b 100644 |
--- a/src/pathops/SkOpAngle.h |
+++ b/src/pathops/SkOpAngle.h |
@@ -19,7 +19,8 @@ class SkOpSegment; |
class SkOpSpanBase; |
class SkOpSpan; |
-struct SkOpAngle { |
+class SkOpAngle { |
+public: |
enum IncludeType { |
kUnaryWinding, |
kUnaryXor, |
@@ -27,14 +28,8 @@ struct SkOpAngle { |
kBinaryOpp, |
}; |
- bool after(SkOpAngle* test); |
- int allOnOneSide(const SkOpAngle* test); |
- bool checkCrossesZero() const; |
- bool checkParallel(SkOpAngle* ); |
- bool computeSector(); |
- int convexHullOverlaps(const SkOpAngle* ) const; |
- |
const SkOpAngle* debugAngle(int id) const; |
+ const SkOpCoincidence* debugCoincidence() const; |
SkOpContour* debugContour(int id); |
int debugID() const { |
@@ -46,6 +41,7 @@ struct SkOpAngle { |
#endif |
#if DEBUG_ANGLE |
+ bool debugCheckCoincidence() const { return fCheckCoincidence; } |
void debugCheckNearCoincidence() const; |
SkString debugPart() const; |
#endif |
@@ -53,7 +49,7 @@ struct SkOpAngle { |
const SkOpSegment* debugSegment(int id) const; |
int debugSign() const; |
const SkOpSpanBase* debugSpan(int id) const; |
- void debugValidate() const; |
+ void debugValidate() const; |
void debugValidateNext() const; // in debug builds, verify that angle loop is uncorrupted |
double distEndRatio(double dist) const; |
// available to testing only |
@@ -68,62 +64,56 @@ struct SkOpAngle { |
return fEnd; |
} |
- bool endsIntersect(SkOpAngle* ); |
- bool endToSide(const SkOpAngle* rh, bool* inside) const; |
- int findSector(SkPath::Verb verb, double x, double y) const; |
- SkOpGlobalState* globalState() const; |
void insert(SkOpAngle* ); |
SkOpSpanBase* lastMarked() const; |
bool loopContains(const SkOpAngle* ) const; |
int loopCount() const; |
- bool merge(SkOpAngle* ); |
- double midT() const; |
- bool midToSide(const SkOpAngle* rh, bool* inside) const; |
SkOpAngle* next() const { |
return fNext; |
} |
- bool oppositePlanes(const SkOpAngle* rh) const; |
- bool orderable(SkOpAngle* rh); // false == this < rh ; true == this > rh |
SkOpAngle* previous() const; |
- |
- int sectorEnd() const { |
- return fSectorEnd; |
- } |
- |
- int sectorStart() const { |
- return fSectorStart; |
- } |
- |
SkOpSegment* segment() const; |
- |
void set(SkOpSpanBase* start, SkOpSpanBase* end); |
- void setCurveHullSweep(); |
- |
- void setID(int id) { |
- SkDEBUGCODE(fID = id); |
- } |
void setLastMarked(SkOpSpanBase* marked) { |
fLastMarked = marked; |
} |
- void setSector(); |
- void setSpans(); |
- |
SkOpSpanBase* start() const { |
return fStart; |
} |
SkOpSpan* starter(); |
- bool tangentsDiverge(const SkOpAngle* rh, double s0xt0) const; |
bool unorderable() const { |
return fUnorderable; |
} |
- SkDCurve fCurvePart; // the curve from start to end |
+private: |
+ bool after(SkOpAngle* test); |
+ int allOnOneSide(const SkOpAngle* test); |
+ bool checkCrossesZero() const; |
+ bool checkParallel(SkOpAngle* ); |
+ bool computeSector(); |
+ int convexHullOverlaps(const SkOpAngle* ) const; |
+ bool endToSide(const SkOpAngle* rh, bool* inside) const; |
+ bool endsIntersect(SkOpAngle* ); |
+ int findSector(SkPath::Verb verb, double x, double y) const; |
+ SkOpGlobalState* globalState() const; |
+ bool merge(SkOpAngle* ); |
+ double midT() const; |
+ bool midToSide(const SkOpAngle* rh, bool* inside) const; |
+ bool oppositePlanes(const SkOpAngle* rh) const; |
+ bool orderable(SkOpAngle* rh); // false == this < rh ; true == this > rh |
+ void setCurveHullSweep(); |
+ void setSector(); |
+ void setSpans(); |
+ bool tangentsDiverge(const SkOpAngle* rh, double s0xt0) const; |
+ |
+ SkDCurve fOriginalCurvePart; // the curve from start to end |
+ SkDCurve fCurvePart; // the curve from start to end offset as needed |
double fSide; |
SkLineParameters fTangentHalf; // used only to sort a pair of lines or line-like sections |
SkOpAngle* fNext; |
@@ -143,6 +133,7 @@ struct SkOpAngle { |
bool fCheckCoincidence; |
SkDEBUGCODE(int fID); |
+ friend class PathOpsAngleTester; |
}; |