| Index: src/pathops/SkPathOpsQuad.cpp
|
| diff --git a/src/pathops/SkPathOpsQuad.cpp b/src/pathops/SkPathOpsQuad.cpp
|
| index 66f191bb0e5c9aba158109b3609c4b1043f60a7c..717d8bc03ded508438d1798d6b7bb12c66ad8d7b 100644
|
| --- a/src/pathops/SkPathOpsQuad.cpp
|
| +++ b/src/pathops/SkPathOpsQuad.cpp
|
| @@ -73,39 +73,6 @@ void SkDQuad::otherPts(int oddMan, const SkDPoint* endPt[2]) const {
|
| }
|
| }
|
|
|
| -// from http://blog.gludion.com/2009/08/distance-to-quadratic-bezier-curve.html
|
| -// (currently only used by testing)
|
| -double SkDQuad::nearestT(const SkDPoint& pt) const {
|
| - SkDVector pos = fPts[0] - pt;
|
| - // search points P of bezier curve with PM.(dP / dt) = 0
|
| - // a calculus leads to a 3d degree equation :
|
| - SkDVector A = fPts[1] - fPts[0];
|
| - SkDVector B = fPts[2] - fPts[1];
|
| - B -= A;
|
| - double a = B.dot(B);
|
| - double b = 3 * A.dot(B);
|
| - double c = 2 * A.dot(A) + pos.dot(B);
|
| - double d = pos.dot(A);
|
| - double ts[3];
|
| - int roots = SkDCubic::RootsValidT(a, b, c, d, ts);
|
| - double d0 = pt.distanceSquared(fPts[0]);
|
| - double d2 = pt.distanceSquared(fPts[2]);
|
| - double distMin = SkTMin(d0, d2);
|
| - int bestIndex = -1;
|
| - for (int index = 0; index < roots; ++index) {
|
| - SkDPoint onQuad = ptAtT(ts[index]);
|
| - double dist = pt.distanceSquared(onQuad);
|
| - if (distMin > dist) {
|
| - distMin = dist;
|
| - bestIndex = index;
|
| - }
|
| - }
|
| - if (bestIndex >= 0) {
|
| - return ts[bestIndex];
|
| - }
|
| - return d0 < d2 ? 0 : 1;
|
| -}
|
| -
|
| int SkDQuad::AddValidTs(double s[], int realRoots, double* t) {
|
| int foundRoots = 0;
|
| for (int index = 0; index < realRoots; ++index) {
|
| @@ -188,25 +155,6 @@ bool SkDQuad::isLinear(int startIndex, int endIndex) const {
|
| return approximately_zero_when_compared_to(distance, largest);
|
| }
|
|
|
| -SkDConic SkDQuad::toConic() const {
|
| - SkDConic conic;
|
| - memcpy(conic.fPts.fPts, fPts, sizeof(fPts));
|
| - conic.fWeight = 1;
|
| - return conic;
|
| -}
|
| -
|
| -SkDCubic SkDQuad::toCubic() const {
|
| - SkDCubic cubic;
|
| - cubic[0] = fPts[0];
|
| - cubic[2] = fPts[1];
|
| - cubic[3] = fPts[2];
|
| - cubic[1].fX = (cubic[0].fX + cubic[2].fX * 2) / 3;
|
| - cubic[1].fY = (cubic[0].fY + cubic[2].fY * 2) / 3;
|
| - cubic[2].fX = (cubic[3].fX + cubic[2].fX * 2) / 3;
|
| - cubic[2].fY = (cubic[3].fY + cubic[2].fY * 2) / 3;
|
| - return cubic;
|
| -}
|
| -
|
| SkDVector SkDQuad::dxdyAtT(double t) const {
|
| double a = t - 1;
|
| double b = 1 - 2 * t;
|
| @@ -346,17 +294,6 @@ SkDQuadPair SkDQuad::chopAt(double t) const
|
| return dst;
|
| }
|
|
|
| -bool SkDQuad::Clockwise(const SkOpCurve& edge, bool* swap) {
|
| - SkDQuad temp;
|
| - double sum = (edge[0].fX - edge[kPointLast].fX) * (edge[0].fY + edge[kPointLast].fY);
|
| - for (int idx = 0; idx < kPointLast; ++idx){
|
| - sum += (edge[idx + 1].fX - edge[idx].fX) * (edge[idx + 1].fY + edge[idx].fY);
|
| - }
|
| - temp.set(edge.fPts);
|
| - *swap = sum > 0 && !temp.monotonicInY();
|
| - return sum <= 0;
|
| -}
|
| -
|
| static int valid_unit_divide(double numer, double denom, double* ratio)
|
| {
|
| if (numer < 0) {
|
|
|