diff options
author | caryclark <caryclark@google.com> | 2015-05-13 08:23:48 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-13 08:23:48 -0700 |
commit | bca19f77479adfd8ba2171753382bc8bf4c2b4ca (patch) | |
tree | 767104fcb63f7fab8901f7f7597a12bb78bf2e1e /src/pathops/SkPathOpsCommon.h | |
parent | 04d24a3f86b6f2382e5c6ffaf161ffc734a4d02a (diff) |
deal more consistently with unsortable edges
Improve line/curve coincident detection and resolution. This fixed the remaining simple failures.
When an edge is unsortable, use the ray intersection to determine the angles' winding.
Deal with degenerate segments.
TBR=reed@google.com
BUG=skia:3588,skia:3762
Review URL: https://codereview.chromium.org/1140813002
Diffstat (limited to 'src/pathops/SkPathOpsCommon.h')
-rw-r--r-- | src/pathops/SkPathOpsCommon.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pathops/SkPathOpsCommon.h b/src/pathops/SkPathOpsCommon.h index 25faf8223e..b7fbf38b3d 100644 --- a/src/pathops/SkPathOpsCommon.h +++ b/src/pathops/SkPathOpsCommon.h @@ -14,12 +14,14 @@ class SkOpCoincidence; class SkOpContour; class SkPathWriter; +const SkOpAngle* AngleWinding(SkOpSpanBase* start, SkOpSpanBase* end, int* windingPtr, + bool* sortable); void Assemble(const SkPathWriter& path, SkPathWriter* simple); SkOpSegment* FindChase(SkTDArray<SkOpSpanBase*>* chase, SkOpSpanBase** startPtr, SkOpSpanBase** endPtr); SkOpSpan* FindSortableTop(SkOpContourHead* ); SkOpSegment* FindUndone(SkOpContourHead* , SkOpSpanBase** startPtr, - SkOpSpanBase** endPtr); + SkOpSpanBase** endPtr); bool SortContourList(SkOpContourHead** , bool evenOdd, bool oppEvenOdd); bool HandleCoincidence(SkOpContourHead* , SkOpCoincidence* , SkChunkAlloc* ); bool OpDebug(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result, bool expectSuccess); |