diff options
author | 2015-03-26 20:22:33 -0700 | |
---|---|---|
committer | 2015-03-26 20:22:33 -0700 | |
commit | daee7eadd1b704078217e9a0f5ad218fcaeae099 (patch) | |
tree | e28ecb03645f705258297543404078710de1e247 /src/core | |
parent | 1d24b8dfe9aac9cadaf3914b8574a4ff6e9bc19d (diff) |
impl SkConvertQuadToCubic w/ Sk2s
BUG=skia:
TBR=
Review URL: https://codereview.chromium.org/1041573002
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkGeometry.cpp | 32 |
1 files changed, 7 insertions, 25 deletions
diff --git a/src/core/SkGeometry.cpp b/src/core/SkGeometry.cpp index d542695fbe..c5abe2b9d1 100644 --- a/src/core/SkGeometry.cpp +++ b/src/core/SkGeometry.cpp @@ -311,15 +311,15 @@ int SkChopQuadAtMaxCurvature(const SkPoint src[3], SkPoint dst[5]) { } } -#define SK_ScalarTwoThirds (0.666666666f) - void SkConvertQuadToCubic(const SkPoint src[3], SkPoint dst[4]) { - const SkScalar scale = SK_ScalarTwoThirds; + Sk2s scale(SkDoubleToScalar(2.0 / 3.0)); + Sk2s s0 = from_point(src[0]); + Sk2s s1 = from_point(src[1]); + Sk2s s2 = from_point(src[2]); + dst[0] = src[0]; - dst[1].set(src[0].fX + SkScalarMul(src[1].fX - src[0].fX, scale), - src[0].fY + SkScalarMul(src[1].fY - src[0].fY, scale)); - dst[2].set(src[2].fX + SkScalarMul(src[1].fX - src[2].fX, scale), - src[2].fY + SkScalarMul(src[1].fY - src[2].fY, scale)); + dst[1] = to_point(s0 + (s1 - s0) * scale); + dst[2] = to_point(s2 + (s1 - s2) * scale); dst[3] = src[2]; } @@ -1261,24 +1261,6 @@ SkVector SkConic::evalTangentAt(SkScalar t) const { Sk2s B = p20 - C - C; return to_vector(quad_poly_eval(A, B, C, Sk2s(t))); -#if 0 - static void conic_deriv_coeff(const SkScalar src[], - SkScalar w, - SkScalar coeff[3]) { - const SkScalar P20 = src[4] - src[0]; - const SkScalar P10 = src[2] - src[0]; - const SkScalar wP10 = w * P10; - coeff[0] = w * P20 - P20; - coeff[1] = P20 - 2 * wP10; - coeff[2] = wP10; - } - - static SkScalar conic_eval_tan(const SkScalar coord[], SkScalar w, SkScalar t) { - SkScalar coeff[3]; - conic_deriv_coeff(coord, w, coeff); - return t * (t * coeff[0] + coeff[1]) + coeff[2]; - } -#endif } static SkScalar subdivide_w_value(SkScalar w) { |