Lines Matching refs:cubic
198 static ReductionType CheckCubicLinear(const SkPoint cubic[4], SkPoint reduction[3],
202 ResultType compareQuadCubic(const SkPoint cubic[4], SkQuadConstruct* );
208 bool cubicMidOnLine(const SkPoint cubic[4], const SkQuadConstruct* ) const;
209 bool cubicPerpRay(const SkPoint cubic[4], SkScalar t, SkPoint* tPt, SkPoint* onPt,
211 bool cubicQuadEnds(const SkPoint cubic[4], SkQuadConstruct* );
212 bool cubicQuadMid(const SkPoint cubic[4], const SkQuadConstruct* , SkPoint* mid) const;
213 bool cubicStroke(const SkPoint cubic[4], SkQuadConstruct* );
223 void setCubicEndNormal(const SkPoint cubic[4],
233 ResultType tangentsMeet(const SkPoint cubic[4], SkQuadConstruct* );
438 void SkPathStroker::setCubicEndNormal(const SkPoint cubic[4], const SkVector& normalAB, in setCubicEndNormal()
440 SkVector ab = cubic[1] - cubic[0]; in setCubicEndNormal()
441 SkVector cd = cubic[3] - cubic[2]; in setCubicEndNormal()
451 ab = cubic[2] - cubic[0]; in setCubicEndNormal()
455 cd = cubic[3] - cubic[1]; in setCubicEndNormal()
513 static bool cubic_in_line(const SkPoint cubic[4]) { in cubic_in_line()
519 SkVector testDiff = cubic[inner] - cubic[index]; in cubic_in_line()
539 return pt_to_line(cubic[mid1], cubic[outer1], cubic[outer2]) <= lineSlop in cubic_in_line()
540 && pt_to_line(cubic[mid2], cubic[outer1], cubic[outer2]) <= lineSlop; in cubic_in_line()
577 SkPathStroker::ReductionType SkPathStroker::CheckCubicLinear(const SkPoint cubic[4], in CheckCubicLinear()
579 bool degenerateAB = degenerate_vector(cubic[1] - cubic[0]); in CheckCubicLinear()
580 bool degenerateBC = degenerate_vector(cubic[2] - cubic[1]); in CheckCubicLinear()
581 bool degenerateCD = degenerate_vector(cubic[3] - cubic[2]); in CheckCubicLinear()
588 if (!cubic_in_line(cubic)) { in CheckCubicLinear()
589 *tangentPtPtr = degenerateAB ? &cubic[2] : &cubic[1]; in CheckCubicLinear()
593 int count = SkFindCubicMaxCurvature(cubic, tValues); in CheckCubicLinear()
599 SkEvalCubicAt(cubic, t, &reduction[index], nullptr, nullptr); in CheckCubicLinear()
789 bool SkPathStroker::cubicPerpRay(const SkPoint cubic[4], SkScalar t, SkPoint* tPt, SkPoint* onPt, in cubicPerpRay()
792 SkEvalCubicAt(cubic, t, tPt, &dxy, nullptr); in cubicPerpRay()
795 dxy = cubic[2] - cubic[0]; in cubicPerpRay()
797 dxy = cubic[3] - cubic[1]; in cubicPerpRay()
802 dxy = cubic[3] - cubic[0]; in cubicPerpRay()
810 bool SkPathStroker::cubicQuadEnds(const SkPoint cubic[4], SkQuadConstruct* quadPts) { in cubicQuadEnds()
813 if (!this->cubicPerpRay(cubic, quadPts->fStartT, &cubicStartPt, &quadPts->fQuad[0], in cubicQuadEnds()
821 if (!this->cubicPerpRay(cubic, quadPts->fEndT, &cubicEndPt, &quadPts->fQuad[2], in cubicQuadEnds()
830 bool SkPathStroker::cubicQuadMid(const SkPoint cubic[4], const SkQuadConstruct* quadPts, in cubicQuadMid()
833 return this->cubicPerpRay(cubic, quadPts->fMidT, &cubicMidPt, mid, nullptr); in cubicQuadMid()
902 SkPathStroker::ResultType SkPathStroker::tangentsMeet(const SkPoint cubic[4], in tangentsMeet()
904 if (!this->cubicQuadEnds(cubic, quadPts)) { in tangentsMeet()
1015 SkPathStroker::ResultType SkPathStroker::compareQuadCubic(const SkPoint cubic[4], in compareQuadCubic()
1018 if (!this->cubicQuadEnds(cubic, quadPts)) { in compareQuadCubic()
1028 if (!this->cubicPerpRay(cubic, quadPts->fMidT, &ray[1], &ray[0], nullptr)) { in compareQuadCubic()
1084 bool SkPathStroker::cubicMidOnLine(const SkPoint cubic[4], const SkQuadConstruct* quadPts) const { in cubicMidOnLine()
1086 if (!cubicQuadMid(cubic, quadPts, &strokeMid)) { in cubicMidOnLine()
1093 bool SkPathStroker::cubicStroke(const SkPoint cubic[4], SkQuadConstruct* quadPts) { in cubicStroke()
1095 ResultType resultType = this->tangentsMeet(cubic, quadPts); in cubicStroke()
1102 fInvResScale)) && cubicMidOnLine(cubic, quadPts)) { in cubicStroke()
1111 ResultType resultType = this->compareQuadCubic(cubic, quadPts); in cubicStroke()
1139 if (!this->cubicStroke(cubic, &half)) { in cubicStroke()
1146 if (!this->cubicStroke(cubic, &half)) { in cubicStroke()
1215 const SkPoint cubic[4] = { fPrevPt, pt1, pt2, pt3 }; in cubicTo() local
1218 ReductionType reductionType = CheckCubicLinear(cubic, reduction, &tangentPt); in cubicTo()
1251 int count = SkFindCubicInflections(cubic, tValues); in cubicTo()
1257 (void) this->cubicStroke(cubic, &quadPts); in cubicTo()
1259 (void) this->cubicStroke(cubic, &quadPts); in cubicTo()
1264 this->setCubicEndNormal(cubic, normalAB, unitAB, &normalCD, &unitCD); in cubicTo()