| Index: src/pathops/SkPathOpsQuad.cpp
|
| diff --git a/src/pathops/SkPathOpsQuad.cpp b/src/pathops/SkPathOpsQuad.cpp
|
| index 3deab211339035498238defdd6ea4a1032fef538..dafa3f5b7588cbebbcb64465fb527526d1efba5b 100644
|
| --- a/src/pathops/SkPathOpsQuad.cpp
|
| +++ b/src/pathops/SkPathOpsQuad.cpp
|
| @@ -191,6 +191,12 @@ SkDPoint SkDQuad::ptAtT(double t) const {
|
| }
|
|
|
| static double interp_quad_coords(const double* src, double t) {
|
| + if (0 == t) {
|
| + return src[0];
|
| + }
|
| + if (1 == t) {
|
| + return src[4];
|
| + }
|
| double ab = SkDInterp(src[0], src[2], t);
|
| double bc = SkDInterp(src[2], src[4], t);
|
| double abc = SkDInterp(ab, bc, t);
|
| @@ -228,8 +234,11 @@ Group the known values on one side:
|
| B = D*2 - A/2 - C/2
|
| */
|
|
|
| -// OPTIMIZE : special case either or both of t1 = 0, t2 = 1
|
| +// OPTIMIZE? : special case t1 = 1 && t2 = 0
|
| SkDQuad SkDQuad::subDivide(double t1, double t2) const {
|
| + if (0 == t1 && 1 == t2) {
|
| + return *this;
|
| + }
|
| SkDQuad dst;
|
| double ax = dst[0].fX = interp_quad_coords(&fPts[0].fX, t1);
|
| double ay = dst[0].fY = interp_quad_coords(&fPts[0].fY, t1);
|
| @@ -263,7 +272,7 @@ SkDPoint SkDQuad::subDivide(const SkDPoint& a, const SkDPoint& c, double t1, dou
|
| b = i.pt(0);
|
| } else {
|
| SkASSERT(i.used() <= 2);
|
| - b = SkDPoint::Mid(b0[1], b1[1]);
|
| + return SkDPoint::Mid(b0[1], b1[1]);
|
| }
|
| if (t1 == 0 || t2 == 0) {
|
| align(0, &b);
|
|
|