Skip adding coincident edges found
authorcaryclark <caryclark@google.com>
Fri, 9 Sep 2016 16:37:57 +0000 (09:37 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 9 Sep 2016 16:37:57 +0000 (09:37 -0700)
commit81a478ca6c36aac3e53ce0373a281ac8940f4780
tree384aeaec6831263679b6c37393a173e26613255f
parentb2796fdd9eab88836795d6a54cf6811af6ecdc81
Skip adding coincident edges found
during curve intersection if their
ends are nearly the same.

Loosen conic/line intersection point
check.

Detect when coincident points are
unordered. This means that points
a/b/c on one curve may appear in
b/c/a order on the opposite curve.

Restructure addMissing to return
success and return if a coincidence
was added as a parameter.

With this, tiger part a works.
Tiger part b exposes bugs around
tight quads that are nearly coincident
with themselves, and are coincident
with something else.

The greedy coicident matcher
may cause the point order to be
out of sync.

Still working out what to do in
this case.

TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2321773002

Review-Url: https://codereview.chromium.org/2321773002
13 files changed:
src/pathops/SkAddIntersections.cpp
src/pathops/SkDConicLineIntersection.cpp
src/pathops/SkOpCoincidence.cpp
src/pathops/SkOpCoincidence.h
src/pathops/SkOpSpan.cpp
src/pathops/SkOpSpan.h
src/pathops/SkPathOpsCommon.cpp
src/pathops/SkPathOpsDebug.cpp
src/pathops/SkPathOpsDebug.h
src/pathops/SkPathOpsSimplify.cpp
tests/PathOpsSimplifyTest.cpp
tools/pathops_sorter.htm
tools/pathops_visualizer.htm