| Index: src/pathops/SkPathOpsCubic.cpp
|
| diff --git a/src/pathops/SkPathOpsCubic.cpp b/src/pathops/SkPathOpsCubic.cpp
|
| index 972c510643f48accd5998a45c5a9397586f572c6..f82bc3530c13a0c8abdd50e3ff7a5a0af68bf835 100644
|
| --- a/src/pathops/SkPathOpsCubic.cpp
|
| +++ b/src/pathops/SkPathOpsCubic.cpp
|
| @@ -474,6 +474,19 @@ static double derivative_at_t(const double* src, double t) {
|
| // OPTIMIZE? compute t^2, t(1-t), and (1-t)^2 and pass them to another version of derivative at t?
|
| SkDVector SkDCubic::dxdyAtT(double t) const {
|
| SkDVector result = { derivative_at_t(&fPts[0].fX, t), derivative_at_t(&fPts[0].fY, t) };
|
| + if (result.fX == 0 && result.fY == 0) {
|
| + if (t == 0) {
|
| + result = fPts[2] - fPts[0];
|
| + } else if (t == 1) {
|
| + result = fPts[3] - fPts[1];
|
| + } else {
|
| + // incomplete
|
| + SkDebugf("!c");
|
| + }
|
| + if (result.fX == 0 && result.fY == 0 && zero_or_one(t)) {
|
| + result = fPts[3] - fPts[0];
|
| + }
|
| + }
|
| return result;
|
| }
|
|
|
|
|