Index: src/pathops/SkIntersections.cpp |
diff --git a/src/pathops/SkIntersections.cpp b/src/pathops/SkIntersections.cpp |
index 608ffe3b6d49722bbe7cbed022465a305ef1d61c..35846f6cc9f54c3cf2759b45664261e71f2ca4cf 100644 |
--- a/src/pathops/SkIntersections.cpp |
+++ b/src/pathops/SkIntersections.cpp |
@@ -7,6 +7,12 @@ |
#include "SkIntersections.h" |
+void SkIntersections::append(const SkIntersections& i) { |
+ for (int index = 0; index < i.fUsed; ++index) { |
+ insert(i[0][index], i[1][index], i.pt(index)); |
+ } |
+} |
+ |
int (SkIntersections::*CurveVertical[])(const SkPoint[], SkScalar, SkScalar, SkScalar, bool) = { |
NULL, |
&SkIntersections::verticalLine, |
@@ -16,7 +22,7 @@ int (SkIntersections::*CurveVertical[])(const SkPoint[], SkScalar, SkScalar, SkS |
int (SkIntersections::*CurveRay[])(const SkPoint[], const SkDLine&) = { |
NULL, |
- NULL, |
+ &SkIntersections::lineRay, |
&SkIntersections::quadRay, |
&SkIntersections::cubicRay |
}; |
@@ -126,6 +132,13 @@ void SkIntersections::insertCoincident(double one, double two, const SkDPoint& p |
fIsCoincident[1] |= bit; |
} |
+int SkIntersections::lineRay(const SkPoint pts[2], const SkDLine& line) { |
+ SkDLine l; |
+ l.set(pts); |
+ fMax = 2; |
+ return intersectRay(l, line); |
+} |
+ |
void SkIntersections::offset(int base, double start, double end) { |
for (int index = base; index < fUsed; ++index) { |
double val = fT[fSwap][index]; |