Index: src/pathops/SkIntersections.cpp |
diff --git a/src/pathops/SkIntersections.cpp b/src/pathops/SkIntersections.cpp |
index af6cc080efe741c522760882ca6b1aa001306b94..fe23316683ba71f67cdf89ec6bb0da03621bdf03 100644 |
--- a/src/pathops/SkIntersections.cpp |
+++ b/src/pathops/SkIntersections.cpp |
@@ -156,7 +156,7 @@ void SkIntersections::insertCoincidentPair(double s1, double e1, double s2, doub |
insertCoincident(e1, e2, endPt); |
} |
-int SkIntersections::insert(double one, double two, double x, double y) { |
+int SkIntersections::insert(double one, double two, const SkDPoint& pt) { |
if (fIsCoincident[0] == 3 && between(fT[0][0], one, fT[0][1])) { |
// For now, don't allow a mix of coincident and non-coincident intersections |
return -1; |
@@ -166,15 +166,17 @@ int SkIntersections::insert(double one, double two, double x, double y) { |
for (index = 0; index < fUsed; ++index) { |
double oldOne = fT[0][index]; |
double oldTwo = fT[1][index]; |
- if (roughly_equal(oldOne, one) && roughly_equal(oldTwo, two)) { |
+ if (one == oldOne && two == oldTwo) { |
+ return -1; |
+ } |
+ if (more_roughly_equal(oldOne, one) && more_roughly_equal(oldTwo, two)) { |
if ((precisely_zero(one) && !precisely_zero(oldOne)) |
|| (precisely_equal(one, 1) && !precisely_equal(oldOne, 1)) |
|| (precisely_zero(two) && !precisely_zero(oldTwo)) |
|| (precisely_equal(two, 1) && !precisely_equal(oldTwo, 1))) { |
fT[0][index] = one; |
fT[1][index] = two; |
- fPt[index].fX = x; |
- fPt[index].fY = y; |
+ fPt[index] = pt; |
} |
return -1; |
} |
@@ -196,18 +198,13 @@ int SkIntersections::insert(double one, double two, double x, double y) { |
fIsCoincident[0] += fIsCoincident[0] & ~((1 << index) - 1); |
fIsCoincident[1] += fIsCoincident[1] & ~((1 << index) - 1); |
} |
- fPt[index].fX = x; |
- fPt[index].fY = y; |
+ fPt[index] = pt; |
fT[0][index] = one; |
fT[1][index] = two; |
++fUsed; |
return index; |
} |
-int SkIntersections::insert(double one, double two, const SkDPoint& pt) { |
- return insert(one, two, pt.fX, pt.fY); |
-} |
- |
void SkIntersections::insertCoincident(double one, double two, const SkDPoint& pt) { |
int index = insertSwap(one, two, pt); |
int bit = 1 << index; |