int horizontalIntersect(double axisIntercept, double left, double right, bool flipped) {
     addExactHorizontalEndPoints(left, right, axisIntercept);
     if (fAllowNear) {
         addNearHorizontalEndPoints(left, right, axisIntercept);
     }
     double rootVals[2];
     int roots = horizontalIntersect(axisIntercept, rootVals);
     for (int index = 0; index < roots; ++index) {
         double quadT = rootVals[index];
         SkDPoint pt = fQuad.ptAtT(quadT);
         double lineT = (pt.fX - left) / (right - left);
         if (pinTs(&quadT, &lineT, &pt, kPointInitialized)) {
             fIntersections->insert(quadT, lineT, pt);
         }
     }
     if (flipped) {
         fIntersections->flip();
     }
     return fIntersections->used();
 }
 int horizontalIntersect(double axisIntercept, double left, double right, bool flipped) {
     addExactHorizontalEndPoints(left, right, axisIntercept);
     if (fAllowNear) {
         addNearHorizontalEndPoints(left, right, axisIntercept);
     }
     double roots[3];
     int count = HorizontalIntersect(fCubic, axisIntercept, roots);
     for (int index = 0; index < count; ++index) {
         double cubicT = roots[index];
         SkDPoint pt = { fCubic.ptAtT(cubicT).fX,  axisIntercept };
         double lineT = (pt.fX - left) / (right - left);
         if (pinTs(&cubicT, &lineT, &pt, kPointInitialized) && uniqueAnswer(cubicT, pt)) {
             fIntersections->insert(cubicT, lineT, pt);
         }
     }
     if (flipped) {
         fIntersections->flip();
     }
     checkCoincident();
     return fIntersections->used();
 }