Lines Matching refs:pts

55 static bool quad_too_curvy(const SkPoint pts[3]) {
58 SkScalar dx = SkScalarHalf(pts[1].fX) -
59 SkScalarHalf(SkScalarHalf(pts[0].fX + pts[2].fX));
60 SkScalar dy = SkScalarHalf(pts[1].fY) -
61 SkScalarHalf(SkScalarHalf(pts[0].fY + pts[2].fY));
74 static bool cubic_too_curvy(const SkPoint pts[4]) {
75 return cheap_dist_exceeds_limit(pts[1],
76 SkScalarInterp(pts[0].fX, pts[3].fX, SK_Scalar1/3),
77 SkScalarInterp(pts[0].fY, pts[3].fY, SK_Scalar1/3))
79 cheap_dist_exceeds_limit(pts[2],
80 SkScalarInterp(pts[0].fX, pts[3].fX, SK_Scalar1*2/3),
81 SkScalarInterp(pts[0].fY, pts[3].fY, SK_Scalar1*2/3));
84 SkScalar SkPathMeasure::compute_quad_segs(const SkPoint pts[3],
86 if (tspan_big_enough(maxt - mint) && quad_too_curvy(pts)) {
90 SkChopQuadAtHalf(pts, tmp);
94 SkScalar d = SkPoint::Distance(pts[0], pts[2]);
132 SkScalar SkPathMeasure::compute_cubic_segs(const SkPoint pts[4],
134 if (tspan_big_enough(maxt - mint) && cubic_too_curvy(pts)) {
138 SkChopCubicAtHalf(pts, tmp);
142 SkScalar d = SkPoint::Distance(pts[0], pts[3]);
157 SkPoint pts[4];
174 switch (fIter.next(pts)) {
177 fPts.append(1, pts);
186 SkScalar d = SkPoint::Distance(pts[0], pts[1]);
196 fPts.append(1, pts + 1);
203 distance = this->compute_quad_segs(pts, distance, 0, kMaxTValue, ptIndex);
205 fPts.append(2, pts + 1);
211 const SkConic conic(pts, fIter.conicWeight());
215 // we store the conic weight in our next point, followed by the last 2 pts
217 // SkConic(pts[0], pts[2], pts[3], weight = pts[1].fX)
219 fPts.append(2, pts + 1);
226 distance = this->compute_cubic_segs(pts, distance, 0, kMaxTValue, ptIndex);
228 fPts.append(3, pts + 1);
275 static void compute_pos_tan(const SkPoint pts[], int segType,
280 pos->set(SkScalarInterp(pts[0].fX, pts[1].fX, t),
281 SkScalarInterp(pts[0].fY, pts[1].fY, t));
284 tangent->setNormalize(pts[1].fX - pts[0].fX, pts[1].fY - pts[0].fY);
288 SkEvalQuadAt(pts, t, pos, tangent);
294 SkConic(pts[0], pts[2], pts[3], pts[1].fX).evalAt(t, pos, tangent);
300 SkEvalCubicAt(pts, t, pos, tangent, NULL);
310 static void seg_to(const SkPoint pts[], int segType,
325 dst->lineTo(pts[1]);
327 dst->lineTo(SkScalarInterp(pts[0].fX, pts[1].fX, stopT),
328 SkScalarInterp(pts[0].fY, pts[1].fY, stopT));
334 dst->quadTo(pts[1], pts[2]);
336 SkChopQuadAt(pts, tmp0, stopT);
340 SkChopQuadAt(pts, tmp0, startT);
350 SkConic conic(pts[0], pts[2], pts[3], pts[1].fX);
375 dst->cubicTo(pts[1], pts[2], pts[3]);
377 SkChopCubicAt(pts, tmp0, stopT);
381 SkChopCubicAt(pts, tmp0, startT);