diff options
author | egdaniel@google.com <egdaniel@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-07-12 20:15:34 +0000 |
---|---|---|
committer | egdaniel@google.com <egdaniel@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-07-12 20:15:34 +0000 |
commit | 5383a7525355dec72efa2083aeadffdd09a962b9 (patch) | |
tree | 317f31d6221f508d0204bf8a01d44f7932198ef5 /src/core | |
parent | 400798ad857df418e122302a11859502eb1af548 (diff) |
Add implicit hairline conic rendering to GPU
R=bsalomon@google.com
Review URL: https://codereview.chromium.org/18258005
git-svn-id: http://skia.googlecode.com/svn/trunk@10055 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkGeometry.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/core/SkGeometry.cpp b/src/core/SkGeometry.cpp index cd6aa2e7fc..5e77dd3d15 100644 --- a/src/core/SkGeometry.cpp +++ b/src/core/SkGeometry.cpp @@ -394,8 +394,7 @@ int SkChopQuadAtXExtrema(const SkPoint src[3], SkPoint dst[5]) // // t = - (Ax Bx + Ay By) / (Bx ^ 2 + By ^ 2) // -int SkChopQuadAtMaxCurvature(const SkPoint src[3], SkPoint dst[5]) -{ +float SkFindQuadMaxCurvature(const SkPoint src[3]) { SkScalar Ax = src[1].fX - src[0].fX; SkScalar Ay = src[1].fY - src[0].fY; SkScalar Bx = src[0].fX - src[1].fX - src[1].fX + src[2].fX; @@ -427,14 +426,16 @@ int SkChopQuadAtMaxCurvature(const SkPoint src[3], SkPoint dst[5]) } } #endif + return t; +} - if (t == 0) - { +int SkChopQuadAtMaxCurvature(const SkPoint src[3], SkPoint dst[5]) +{ + SkScalar t = SkFindQuadMaxCurvature(src); + if (t == 0) { memcpy(dst, src, 3 * sizeof(SkPoint)); return 1; - } - else - { + } else { SkChopQuadAt(src, dst, t); return 2; } @@ -1061,8 +1062,7 @@ int SkChopCubicAtMaxCurvature(const SkPoint src[4], SkPoint dst[13], SkScalar tV int count = SkFindCubicMaxCurvature(src, tValues); - if (dst) - { + if (dst) { if (count == 0) memcpy(dst, src, 4 * sizeof(SkPoint)); else @@ -1185,7 +1185,6 @@ int SkNumXRayCrossingsForCubic(const SkXRay& pt, const SkPoint cubic[4], bool* a } return num_crossings; } - //////////////////////////////////////////////////////////////////////////////// /* Find t value for quadratic [a, b, c] = d. |