diff options
author | caryclark <caryclark@google.com> | 2015-07-06 11:38:33 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-06 11:38:33 -0700 |
commit | 27c8eb8ffd7e221693d840c2b9279d53fe6f03d4 (patch) | |
tree | 67fbbc378aced5c5de9ec9611021db6ef7659c3c /src/pathops/SkPathOpsTypes.h | |
parent | 334e588d9ed5390efb82beb37329b56a380f1d0e (diff) |
When three or more edges are coincident, the logic needs
to compute the overlapping ranges and combine the winding
into a single destination.
This computes coincidence more rigorously, fixing the
edge cases exposed by this bug.
Also, add the ability to debug and dump pathop structures
from the coincident context.
TBR=reed@google.com
BUG=skia:3651
Review URL: https://codereview.chromium.org/1182493015
Diffstat (limited to 'src/pathops/SkPathOpsTypes.h')
-rw-r--r-- | src/pathops/SkPathOpsTypes.h | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/src/pathops/SkPathOpsTypes.h b/src/pathops/SkPathOpsTypes.h index 13ebfee84d..9550aa1ead 100644 --- a/src/pathops/SkPathOpsTypes.h +++ b/src/pathops/SkPathOpsTypes.h @@ -28,19 +28,7 @@ class SkOpContourHead; class SkOpGlobalState { public: - SkOpGlobalState(SkOpCoincidence* coincidence, SkOpContourHead* head) - : fCoincidence(coincidence) - , fContourHead(head) - , fNested(0) - , fWindingFailed(false) - , fAngleCoincidence(false) - , fPhase(kIntersecting) - SkDEBUGPARAMS(fAngleID(0)) - SkDEBUGPARAMS(fContourID(0)) - SkDEBUGPARAMS(fPtTID(0)) - SkDEBUGPARAMS(fSegmentID(0)) - SkDEBUGPARAMS(fSpanID(0)) { - } + SkOpGlobalState(SkOpCoincidence* coincidence, SkOpContourHead* head); enum Phase { kIntersecting, @@ -76,6 +64,7 @@ public: const struct SkOpAngle* debugAngle(int id) const; SkOpContour* debugContour(int id); const class SkOpPtT* debugPtT(int id) const; + bool debugRunFail() const; const class SkOpSegment* debugSegment(int id) const; const class SkOpSpanBase* debugSpan(int id) const; #endif |