int SkDConic::FindExtrema(const double src[], SkScalar w, double t[1]) { double coeff[3]; conic_deriv_coeff(src, w, coeff); double tValues[2]; int roots = SkDQuad::RootsValidT(coeff[0], coeff[1], coeff[2], tValues); SkASSERT(0 == roots || 1 == roots); if (1 == roots) { t[0] = tValues[0]; return 1; } return 0; }
int SkDConic::FindExtrema(const double src[], SkScalar w, double t[1]) { double coeff[3]; conic_deriv_coeff(src, w, coeff); double tValues[2]; int roots = SkDQuad::RootsValidT(coeff[0], coeff[1], coeff[2], tValues); // In extreme cases, the number of roots returned can be 2. Pathops // will fail later on, so there's no advantage to plumbing in an error // return here. // SkASSERT(0 == roots || 1 == roots); if (1 == roots) { t[0] = tValues[0]; return 1; } return 0; }
static double conic_eval_tan(const double coord[], SkScalar w, double t) { double coeff[3]; conic_deriv_coeff(coord, w, coeff); return t * (t * coeff[0] + coeff[1]) + coeff[2]; }