| Index: src/pathops/SkDQuadLineIntersection.cpp
|
| diff --git a/src/pathops/SkDQuadLineIntersection.cpp b/src/pathops/SkDQuadLineIntersection.cpp
|
| index bae003c18421355a0bc7e41390f72755a230d229..45daa10dbdd35a3cb4ebc1ce4a852935fa8e1890 100644
|
| --- a/src/pathops/SkDQuadLineIntersection.cpp
|
| +++ b/src/pathops/SkDQuadLineIntersection.cpp
|
| @@ -86,7 +86,6 @@ Thus, if the slope of the line tends towards vertical, we use:
|
| C = ( (a ) - g'*(d ) - h' )
|
| */
|
|
|
| -
|
| class LineQuadraticIntersections {
|
| public:
|
| enum PinTPoint {
|
| @@ -311,10 +310,10 @@ protected:
|
| }
|
|
|
| bool pinTs(double* quadT, double* lineT, SkDPoint* pt, PinTPoint ptSet) {
|
| - if (!approximately_one_or_less(*lineT)) {
|
| + if (!approximately_one_or_less_double(*lineT)) {
|
| return false;
|
| }
|
| - if (!approximately_zero_or_more(*lineT)) {
|
| + if (!approximately_zero_or_more_double(*lineT)) {
|
| return false;
|
| }
|
| double qT = *quadT = SkPinT(*quadT);
|
| @@ -326,13 +325,17 @@ protected:
|
| }
|
| SkPoint gridPt = pt->asSkPoint();
|
| if (gridPt == fLine[0].asSkPoint()) {
|
| + *pt = fLine[0];
|
| *lineT = 0;
|
| } else if (gridPt == fLine[1].asSkPoint()) {
|
| + *pt = fLine[1];
|
| *lineT = 1;
|
| }
|
| if (gridPt == fQuad[0].asSkPoint()) {
|
| + *pt = fQuad[0];
|
| *quadT = 0;
|
| } else if (gridPt == fQuad[2].asSkPoint()) {
|
| + *pt = fQuad[2];
|
| *quadT = 1;
|
| }
|
| return true;
|
| @@ -345,44 +348,6 @@ private:
|
| bool fAllowNear;
|
| };
|
|
|
| -// utility for pairs of coincident quads
|
| -static double horizontalIntersect(const SkDQuad& quad, const SkDPoint& pt) {
|
| - LineQuadraticIntersections q(quad, *(static_cast<SkDLine*>(0)),
|
| - static_cast<SkIntersections*>(0));
|
| - double rootVals[2];
|
| - int roots = q.horizontalIntersect(pt.fY, rootVals);
|
| - for (int index = 0; index < roots; ++index) {
|
| - double t = rootVals[index];
|
| - SkDPoint qPt = quad.ptAtT(t);
|
| - if (AlmostEqualUlps(qPt.fX, pt.fX)) {
|
| - return t;
|
| - }
|
| - }
|
| - return -1;
|
| -}
|
| -
|
| -static double verticalIntersect(const SkDQuad& quad, const SkDPoint& pt) {
|
| - LineQuadraticIntersections q(quad, *(static_cast<SkDLine*>(0)),
|
| - static_cast<SkIntersections*>(0));
|
| - double rootVals[2];
|
| - int roots = q.verticalIntersect(pt.fX, rootVals);
|
| - for (int index = 0; index < roots; ++index) {
|
| - double t = rootVals[index];
|
| - SkDPoint qPt = quad.ptAtT(t);
|
| - if (AlmostEqualUlps(qPt.fY, pt.fY)) {
|
| - return t;
|
| - }
|
| - }
|
| - return -1;
|
| -}
|
| -
|
| -double SkIntersections::Axial(const SkDQuad& q1, const SkDPoint& p, bool vertical) {
|
| - if (vertical) {
|
| - return verticalIntersect(q1, p);
|
| - }
|
| - return horizontalIntersect(q1, p);
|
| -}
|
| -
|
| int SkIntersections::horizontal(const SkDQuad& quad, double left, double right, double y,
|
| bool flipped) {
|
| SkDLine line = {{{ left, y }, { right, y }}};
|
|
|