Make gpu hairline check for degenerate quad more robust
Review URL: http://codereview.appspot.com/4956067/
git-svn-id: http://skia.googlecode.com/svn/trunk@2232 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/src/GrAAHairLinePathRenderer.cpp b/gpu/src/GrAAHairLinePathRenderer.cpp
index e1307a7..13aa001 100644
--- a/gpu/src/GrAAHairLinePathRenderer.cpp
+++ b/gpu/src/GrAAHairLinePathRenderer.cpp
@@ -222,13 +222,20 @@
// if it returns -1 then should be drawn as lines
int num_quad_subdivs(const SkPoint p[3]) {
static const SkScalar gDegenerateToLineTol = SK_Scalar1;
+ static const SkScalar gDegenerateToLineTolSqd =
+ SkScalarMul(gDegenerateToLineTol, gDegenerateToLineTol);
- GrScalar dsqd = p[1].distanceToLineBetweenSqd(p[0], p[2]);
- if (dsqd < gDegenerateToLineTol*gDegenerateToLineTol) {
+ if (p[0].distanceToSqd(p[1]) < gDegenerateToLineTolSqd ||
+ p[1].distanceToSqd(p[2]) < gDegenerateToLineTolSqd) {
return -1;
}
- if (p[2].distanceToLineBetweenSqd(p[1],p[0]) <
- gDegenerateToLineTol*gDegenerateToLineTol) {
+
+ GrScalar dsqd = p[1].distanceToLineBetweenSqd(p[0], p[2]);
+ if (dsqd < gDegenerateToLineTolSqd) {
+ return -1;
+ }
+
+ if (p[2].distanceToLineBetweenSqd(p[1], p[0]) < gDegenerateToLineTolSqd) {
return -1;
}