| Index: src/pathops/SkPathOpsConic.cpp
|
| diff --git a/src/pathops/SkPathOpsConic.cpp b/src/pathops/SkPathOpsConic.cpp
|
| index 1b544e405f5eb3aae75350ed1ab2fd26237f7e89..869a406dceb00b41209cba3b88b142481d119658 100644
|
| --- a/src/pathops/SkPathOpsConic.cpp
|
| +++ b/src/pathops/SkPathOpsConic.cpp
|
| @@ -82,25 +82,6 @@ SkDPoint SkDConic::ptAtT(double t) const {
|
| return result;
|
| }
|
|
|
| -SkDPoint SkDConic::top(double startT, double endT) const {
|
| - SkDConic sub = subDivide(startT, endT);
|
| - SkDPoint topPt = sub[0];
|
| - if (topPt.fY > sub[2].fY || (topPt.fY == sub[2].fY && topPt.fX > sub[2].fX)) {
|
| - topPt = sub[2];
|
| - }
|
| - if (!between(sub[0].fY, sub[1].fY, sub[2].fY)) {
|
| - double extremeT;
|
| - if (FindExtrema(&sub[0].fY, sub.fWeight, &extremeT)) {
|
| - extremeT = startT + (endT - startT) * extremeT;
|
| - SkDPoint test = ptAtT(extremeT);
|
| - if (topPt.fY > test.fY || (topPt.fY == test.fY && topPt.fX > test.fX)) {
|
| - topPt = test;
|
| - }
|
| - }
|
| - }
|
| - return topPt;
|
| -}
|
| -
|
| /* see quad subdivide for rationale */
|
| SkDConic SkDConic::subDivide(double t1, double t2) const {
|
| double ax = conic_eval_numerator(&fPts[0].fX, fWeight, t1);
|
| @@ -130,3 +111,25 @@ SkDPoint SkDConic::subDivide(const SkDPoint& a, const SkDPoint& c, double t1, do
|
| *weight = chopped.fWeight;
|
| return chopped[1];
|
| }
|
| +
|
| +SkDPoint SkDConic::top(double startT, double endT, double* topT) const {
|
| + SkDConic 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.fWeight, &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;
|
| +}
|
|
|