aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pathops
diff options
context:
space:
mode:
authorGravatar Cary Clark <caryclark@skia.org>2018-06-06 16:56:23 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-06 21:22:44 +0000
commit7db95a645147b7fef47647dc5d3df32b05b141d9 (patch)
treeabcdd5828856e3d6ecb260fb364a4c7f3e3248bf /src/pathops
parent6f02af9b54c28294363b5bde1f9c103fe0f054bc (diff)
add documentation
diagram for pathops change TBR=caryclark@google.com Bug: skia:8049 Change-Id: I2bbd04f1efad53e1197a45baf3ce98f0eb550512 Reviewed-on: https://skia-review.googlesource.com/132664 Commit-Queue: Cary Clark <caryclark@skia.org> Auto-Submit: Cary Clark <caryclark@skia.org> Reviewed-by: Cary Clark <caryclark@skia.org>
Diffstat (limited to 'src/pathops')
-rw-r--r--src/pathops/SkOpAngle.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/pathops/SkOpAngle.cpp b/src/pathops/SkOpAngle.cpp
index 194260f658..9decb272b1 100644
--- a/src/pathops/SkOpAngle.cpp
+++ b/src/pathops/SkOpAngle.cpp
@@ -167,7 +167,8 @@ bool SkOpAngle::after(SkOpAngle* test) {
// SkASSERT(lrOpposite != trOpposite);
return COMPARE_RESULT(10, lrOpposite);
}
- // if a pair couldn't be ordered, there's not enough information to determine the sort
+ // If a pair couldn't be ordered, there's not enough information to determine the sort.
+ // Refer to: https://docs.google.com/drawings/d/1KV-8SJTedku9fj4K6fd1SB-8divuV_uivHVsSgwXICQ
if (fUnorderable || lh->fUnorderable || rh->fUnorderable) {
// limit to lines; should work with curves, but wait for a failing test to verify
if (!fPart.isCurve() && !lh->fPart.isCurve() && !rh->fPart.isCurve()) {
@@ -178,25 +179,25 @@ bool SkOpAngle::after(SkOpAngle* test) {
int trShare = fOriginalCurvePart[0] == rh->fOriginalCurvePart[0];
// if only one pair are the same, the third point touches neither of the pair
if (ltShare + lrShare + trShare == 1) {
- if (ltShare) {
- int lrOOrder = lh->allOnOriginalSide(rh);
- int trOOrder = rh->allOnOriginalSide(this);
- // result must be 0 and 1 or 1 and 0 to be valid
- if ((lrOOrder ^ trOOrder) == 1) {
- return trOOrder;
- }
- } else if (lrShare) {
+ if (lrShare) {
int ltOOrder = lh->allOnOriginalSide(this);
- int trOOrder = rh->allOnOriginalSide(this);
- if ((ltOOrder ^ trOOrder) == 1) {
+ int rtOOrder = rh->allOnOriginalSide(this);
+ if ((rtOOrder ^ ltOOrder) == 1) {
return ltOOrder;
}
+ } else if (trShare) {
+ int tlOOrder = this->allOnOriginalSide(lh);
+ int rlOOrder = rh->allOnOriginalSide(lh);
+ if ((tlOOrder ^ rlOOrder) == 1) {
+ return rlOOrder;
+ }
} else {
- SkASSERT(trShare);
- int ltOOrder = this->allOnOriginalSide(lh);
- int lrOOrder = rh->allOnOriginalSide(lh);
- if ((ltOOrder ^ lrOOrder) == 1) {
- return lrOOrder;
+ SkASSERT(ltShare);
+ int trOOrder = rh->allOnOriginalSide(this);
+ int lrOOrder = lh->allOnOriginalSide(rh);
+ // result must be 0 and 1 or 1 and 0 to be valid
+ if ((lrOOrder ^ trOOrder) == 1) {
+ return trOOrder;
}
}
}