shape ops work in progress
git-svn-id: http://skia.googlecode.com/svn/trunk@7738 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/Intersection/LineCubicIntersection.cpp b/experimental/Intersection/LineCubicIntersection.cpp
index faed89f..1e97ab2 100644
--- a/experimental/Intersection/LineCubicIntersection.cpp
+++ b/experimental/Intersection/LineCubicIntersection.cpp
@@ -107,7 +107,9 @@
double cubicT = rootVals[index];
double lineT = findLineT(cubicT);
if (pinTs(cubicT, lineT)) {
- intersections.insert(cubicT, lineT);
+ _Point pt;
+ xy_at_t(line, lineT, pt.x, pt.y);
+ intersections.insert(cubicT, lineT, pt);
}
}
return intersections.fUsed;
@@ -125,12 +127,12 @@
double rootVals[3];
int roots = horizontalIntersect(axisIntercept, rootVals);
for (int index = 0; index < roots; ++index) {
- double x;
+ _Point pt;
double cubicT = rootVals[index];
- xy_at_t(cubic, cubicT, x, *(double*) NULL);
- double lineT = (x - left) / (right - left);
+ xy_at_t(cubic, cubicT, pt.x, pt.y);
+ double lineT = (pt.x - left) / (right - left);
if (pinTs(cubicT, lineT)) {
- intersections.insert(cubicT, lineT);
+ intersections.insert(cubicT, lineT, pt);
}
}
if (flipped) {
@@ -151,12 +153,12 @@
double rootVals[3];
int roots = verticalIntersect(axisIntercept, rootVals);
for (int index = 0; index < roots; ++index) {
- double y;
+ _Point pt;
double cubicT = rootVals[index];
- xy_at_t(cubic, cubicT, *(double*) NULL, y);
- double lineT = (y - top) / (bottom - top);
+ xy_at_t(cubic, cubicT, pt.x, pt.y);
+ double lineT = (pt.y - top) / (bottom - top);
if (pinTs(cubicT, lineT)) {
- intersections.insert(cubicT, lineT);
+ intersections.insert(cubicT, lineT, pt);
}
}
if (flipped) {
@@ -172,7 +174,7 @@
for (int cIndex = 0; cIndex < 4; cIndex += 3) {
for (int lIndex = 0; lIndex < 2; lIndex++) {
if (cubic[cIndex] == line[lIndex]) {
- intersections.insert(cIndex >> 1, lIndex);
+ intersections.insert(cIndex >> 1, lIndex, line[lIndex]);
}
}
}
@@ -185,10 +187,10 @@
continue;
}
if (cubic[cIndex].x == left) {
- intersections.insert(cIndex >> 1, 0);
+ intersections.insert(cIndex >> 1, 0, cubic[cIndex]);
}
if (cubic[cIndex].x == right) {
- intersections.insert(cIndex >> 1, 1);
+ intersections.insert(cIndex >> 1, 1, cubic[cIndex]);
}
}
}
@@ -200,10 +202,10 @@
continue;
}
if (cubic[cIndex].y == top) {
- intersections.insert(cIndex >> 1, 0);
+ intersections.insert(cIndex >> 1, 0, cubic[cIndex]);
}
if (cubic[cIndex].y == bottom) {
- intersections.insert(cIndex >> 1, 1);
+ intersections.insert(cIndex >> 1, 1, cubic[cIndex]);
}
}
}