| Index: src/pathops/SkPathOpsQuad.cpp
|
| diff --git a/src/pathops/SkPathOpsQuad.cpp b/src/pathops/SkPathOpsQuad.cpp
|
| index 397a3ce98ab1023ea2ff5a1baeb4ba9ca6e10839..66f191bb0e5c9aba158109b3609c4b1043f60a7c 100644
|
| --- a/src/pathops/SkPathOpsQuad.cpp
|
| +++ b/src/pathops/SkPathOpsQuad.cpp
|
| @@ -240,6 +240,10 @@ static double interp_quad_coords(const double* src, double t) {
|
| return abc;
|
| }
|
|
|
| +bool SkDQuad::monotonicInX() const {
|
| + return between(fPts[0].fX, fPts[1].fX, fPts[2].fX);
|
| +}
|
| +
|
| bool SkDQuad::monotonicInY() const {
|
| return between(fPts[0].fY, fPts[1].fY, fPts[2].fY);
|
| }
|
| @@ -323,28 +327,6 @@ SkDPoint SkDQuad::subDivide(const SkDPoint& a, const SkDPoint& c, double t1, dou
|
| return b;
|
| }
|
|
|
| -SkDPoint SkDQuad::top(double startT, double endT, double* topT) const {
|
| - SkDQuad sub = subDivide(startT, endT);
|
| - SkDPoint topPt = sub[0];
|
| - *topT = startT;
|
| - if (topPt.fY > sub[2].fY || (topPt.fY == sub[2].fY && topPt.fX > sub[2].fX)) {
|
| - *topT = endT;
|
| - topPt = sub[2];
|
| - }
|
| - if (!between(sub[0].fY, sub[1].fY, sub[2].fY)) {
|
| - double extremeT;
|
| - if (FindExtrema(sub[0].fY, sub[1].fY, sub[2].fY, &extremeT)) {
|
| - extremeT = startT + (endT - startT) * extremeT;
|
| - SkDPoint test = ptAtT(extremeT);
|
| - if (topPt.fY > test.fY || (topPt.fY == test.fY && topPt.fX > test.fX)) {
|
| - *topT = extremeT;
|
| - topPt = test;
|
| - }
|
| - }
|
| - }
|
| - return topPt;
|
| -}
|
| -
|
| /* classic one t subdivision */
|
| static void interp_quad_coords(const double* src, double* dst, double t) {
|
| double ab = SkDInterp(src[0], src[2], t);
|
| @@ -397,10 +379,13 @@ static int valid_unit_divide(double numer, double denom, double* ratio)
|
| B = 2(b - a)
|
| Solve for t, only if it fits between 0 < t < 1
|
| */
|
| -int SkDQuad::FindExtrema(double a, double b, double c, double tValue[1]) {
|
| +int SkDQuad::FindExtrema(const double src[], double tValue[1]) {
|
| /* At + B == 0
|
| t = -B / A
|
| */
|
| + double a = src[0];
|
| + double b = src[2];
|
| + double c = src[4];
|
| return valid_unit_divide(a - b, a - b - b + c, tValue);
|
| }
|
|
|
|
|