aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar reed <reed@chromium.org>2015-03-26 20:22:33 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-03-26 20:22:33 -0700
commitdaee7eadd1b704078217e9a0f5ad218fcaeae099 (patch)
treee28ecb03645f705258297543404078710de1e247 /src/core
parent1d24b8dfe9aac9cadaf3914b8574a4ff6e9bc19d (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.cpp32
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) {