more simplify bugs
authorCary Clark <caryclark@google.com>
Wed, 14 Dec 2016 16:56:16 +0000 (11:56 -0500)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Wed, 14 Dec 2016 17:26:58 +0000 (17:26 +0000)
commitff11428526843d3e03feb6843bd21f2d80536415
tree686d62dbafaadd50ff59f2e60f541f429c7e170c
parent2052c86a30dffcf124fd7beac293e7fce87bf5cb
more simplify bugs

SkOpAngle::alignmentSameSide()
Shifting an edge to align it for angle sorting may move a compared edge to the opposite side.
For lines that are shifted, check to see if this is so.

class SkOpContourBuilder
If the path contains a pair of lines that cancel, skip them as early as possible.
While not strictly necessary, this optimization is cheap and makes debugging much easier.

SkOpEdgeBuilder::walk()
  case SkPath::kCubic_Verb:
If max curvature or inflections break a cubic into pieces, make sure that the pieces are
large enough to process. If not, add the broken piece back to a neighbor.

Correct debugging that had gone stale.
Add active span debugging cache so only changes are shown.

TBR=reed@google.com
BUG=skia:6401

Change-Id: I766f77e4fb9b76537cf5464961addb103114f5db
Reviewed-on: https://skia-review.googlesource.com/5764
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Cary Clark <caryclark@google.com>
src/pathops/SkOpAngle.cpp
src/pathops/SkOpAngle.h
src/pathops/SkOpContour.cpp
src/pathops/SkOpContour.h
src/pathops/SkOpEdgeBuilder.cpp
src/pathops/SkOpEdgeBuilder.h
src/pathops/SkOpSegment.h
src/pathops/SkPathOpsDebug.cpp
src/pathops/SkPathOpsDebug.h
tests/PathOpsSimplifyTest.cpp
tools/pathops_visualizer.htm