Enabling the canvas bit to turn the clip stack into a flat replace exposed around...
authorcaryclark <caryclark@google.com>
Tue, 17 Jun 2014 12:15:38 +0000 (05:15 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 17 Jun 2014 12:15:38 +0000 (05:15 -0700)
commitdac1d17027dcaa5596885a9f333979418b35001c
tree923c6ca762654144254565240de5e9ec6598c41f
parentd6043b20b63f895d384b4794205ac914abfafa71
Enabling the canvas bit to turn the clip stack into a flat replace exposed around 100 failures when testing the 800K skp set generated from the top 1M web sites.

This fixes all but one of those failures.

Major changes include:
- Replace angle indices with angle pointers. This was motivated by the need to add angles later but not renumber existing angles.
- Aggressive segment chase. When the winding is known on a segment, more aggressively passing that winding to adjacent segments allows fragmented data sets to succeed.
- Line segments with ends nearly the same are treated as coincident first.
- Transfer partial coincidence by observing that if segment A is partially coincident to B and C then B and C may be partially coincident.

TBR=reed

Author: caryclark@google.com

Review URL: https://codereview.chromium.org/272153002
39 files changed:
src/pathops/SkAddIntersections.cpp
src/pathops/SkDCubicIntersection.cpp
src/pathops/SkDCubicLineIntersection.cpp
src/pathops/SkDLineIntersection.cpp
src/pathops/SkDQuadIntersection.cpp
src/pathops/SkDQuadLineIntersection.cpp
src/pathops/SkIntersectionHelper.h
src/pathops/SkIntersections.cpp
src/pathops/SkIntersections.h
src/pathops/SkOpAngle.cpp
src/pathops/SkOpAngle.h
src/pathops/SkOpContour.cpp
src/pathops/SkOpContour.h
src/pathops/SkOpSegment.cpp
src/pathops/SkOpSegment.h
src/pathops/SkOpSpan.h
src/pathops/SkPathOpsCommon.cpp
src/pathops/SkPathOpsCommon.h
src/pathops/SkPathOpsDebug.cpp
src/pathops/SkPathOpsDebug.h
src/pathops/SkPathOpsLine.cpp
src/pathops/SkPathOpsLine.h
src/pathops/SkPathOpsOp.cpp
src/pathops/SkPathOpsPoint.h
src/pathops/SkPathOpsSimplify.cpp
src/pathops/SkPathOpsTriangle.cpp
src/pathops/SkPathOpsTypes.h
tests/PathOpsAngleIdeas.cpp
tests/PathOpsAngleTest.cpp
tests/PathOpsCubicIntersectionTest.cpp
tests/PathOpsDebug.cpp
tests/PathOpsExtendedTest.cpp
tests/PathOpsLineIntersectionTest.cpp
tests/PathOpsOpTest.cpp
tests/PathOpsSimplifyTest.cpp
tests/PathOpsSkpClipTest.cpp
tests/PathOpsSkpTest.cpp
tools/pathops_sorter.htm
tools/pathops_visualizer.htm [new file with mode: 0644]