aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar egdaniel@google.com <egdaniel@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-12 20:15:34 +0000
committerGravatar egdaniel@google.com <egdaniel@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-07-12 20:15:34 +0000
commit5383a7525355dec72efa2083aeadffdd09a962b9 (patch)
tree317f31d6221f508d0204bf8a01d44f7932198ef5 /src/core
parent400798ad857df418e122302a11859502eb1af548 (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.cpp19
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.