Home | History | Annotate | Download | only in core

Lines Matching refs:dst

264 static void interp_quad_coords(const SkScalar* src, SkScalar* dst, SkScalar t)
269 dst[0] = src[0];
270 dst[2] = ab;
271 dst[4] = SkScalarInterp(ab, bc, t);
272 dst[6] = bc;
273 dst[8] = src[4];
276 void SkChopQuadAt(const SkPoint src[3], SkPoint dst[5], SkScalar t)
280 interp_quad_coords(&src[0].fX, &dst[0].fX, t);
281 interp_quad_coords(&src[0].fY, &dst[0].fY, t);
284 void SkChopQuadAtHalf(const SkPoint src[3], SkPoint dst[5])
291 dst[0] = src[0];
292 dst[1].set(x01, y01);
293 dst[2].set(SkScalarAve(x01, x12), SkScalarAve(y01, y12));
294 dst[3].set(x12, y12);
295 dst[4] = src[2];
321 stored in dst[]. Guarantees that the 1/2 quads will be monotonic.
323 int SkChopQuadAtYExtrema(const SkPoint src[3], SkPoint dst[5])
326 SkASSERT(dst);
350 SkChopQuadAt(src, dst, tValue);
351 flatten_double_quad_extrema(&dst[0].fY);
354 // if we get here, we need to force dst to be monotonic, even though
358 dst[0].set(src[0].fX, a);
359 dst[1].set(src[1].fX, b);
360 dst[2].set(src[2].fX, c);
365 stored in dst[]. Guarantees that the 1/2 quads will be monotonic.
367 int SkChopQuadAtXExtrema(const SkPoint src[3], SkPoint dst[5])
370 SkASSERT(dst);
379 SkChopQuadAt(src, dst, tValue);
380 flatten_double_quad_extrema(&dst[0].fX);
383 // if we get here, we need to force dst to be monotonic, even though
387 dst[0].set(a, src[0].fY);
388 dst[1].set(b, src[1].fY);
389 dst[2].set(c, src[2].fY);
405 int SkChopQuadAtMaxCurvature(const SkPoint src[3], SkPoint dst[5])
441 memcpy(dst, src, 3 * sizeof(SkPoint));
446 SkChopQuadAt(src, dst, t);
451 void SkConvertQuadToCubic(const SkPoint src[3], SkPoint dst[4])
455 dst[0].set(src[0].fX, src[0].fY);
456 dst[1].set(
459 dst[2].set(
462 dst[3].set(src[2].fX, src[2].fY);
574 static void interp_cubic_coords(const SkScalar* src, SkScalar* dst, SkScalar t)
583 dst[0] = src[0];
584 dst[2] = ab;
585 dst[4] = abc;
586 dst[6] = abcd;
587 dst[8] = bcd;
588 dst[10] = cd;
589 dst[12] = src[6];
592 void SkChopCubicAt(const SkPoint src[4], SkPoint dst[7], SkScalar t)
596 interp_cubic_coords(&src[0].fX, &dst[0].fX, t);
597 interp_cubic_coords(&src[0].fY, &dst[0].fY, t);
617 SkPoint dst[10];
619 SkChopCubicAt(src, dst, tval, 2);
623 void SkChopCubicAt(const SkPoint src[4], SkPoint dst[], const SkScalar tValues[], int roots)
636 if (dst)
639 memcpy(dst, src, 4*sizeof(SkPoint));
647 SkChopCubicAt(src, dst, t);
651 dst += 3;
653 memcpy(tmp, dst, 4 * sizeof(SkPoint));
660 dst[4] = dst[5] = dst[6] = src[3];
668 void SkChopCubicAtHalf(const SkPoint src[4], SkPoint dst[7])
682 dst[0] = src[0];
683 dst[1].set(x01, y01);
684 dst[2].set(x012, y012);
685 dst[3].set(SkScalarAve(x012, x123), SkScalarAve(y012, y123));
686 dst[4].set(x123, y123);
687 dst[5].set(x23, y23);
688 dst[6] = src[3];
698 Depending on what is returned, dst[] is treated as follows
699 0 dst[0..3] is the original cubic
700 1 dst[0..3] and dst[3..6] are the two new cubics
701 2 dst[0..3], dst[3..6], dst[6..9] are the three new cubics
702 If dst == null, it is ignored and only the count is returned.
704 int SkChopCubicAtYExtrema(const SkPoint src[4], SkPoint dst[10]) {
709 SkChopCubicAt(src, dst, tValues, roots);
710 if (dst && roots > 0) {
712 flatten_double_cubic_extrema(&dst[0].fY);
714 flatten_double_cubic_extrema(&dst[3].fY);
720 int SkChopCubicAtXExtrema(const SkPoint src[4], SkPoint dst[10]) {
725 SkChopCubicAt(src, dst, tValues, roots);
726 if (dst && roots > 0) {
728 flatten_double_cubic_extrema(&dst[0].fX);
730 flatten_double_cubic_extrema(&dst[3].fX);
780 int SkChopCubicAtInflections(const SkPoint src[], SkPoint dst[10])
785 if (dst)
788 memcpy(dst, src, 4 * sizeof(SkPoint));
790 SkChopCubicAt(src, dst, tValues, count);
994 int SkChopCubicAtMaxCurvature(const SkPoint src[4], SkPoint dst[13], SkScalar tValues[3])
1003 if (dst)
1006 memcpy(dst, src, 4 * sizeof(SkPoint));
1008 SkChopCubicAt(src, dst, tValues, count);