diff options
author | Yuqian Li <liyuqian@google.com> | 2017-01-18 10:51:26 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-01-18 20:04:59 +0000 |
commit | ce7e18f548cf8af0bc7c3950824221c5c08e1e25 (patch) | |
tree | f388c07049430924da340d3489a5b0cec8dd5ccd /src/core/SkAnalyticEdge.h | |
parent | 8461506c8b025522eb89cd754c63fb5dbf0cb7f1 (diff) |
Reject horizontal edges in FDot6 precision
This simplifies the slope computation because we don't have to check dy
!= 0.
BUG=skia:
Change-Id: I5c09a9217ceed65f81f9d82cb045e33a70218077
Reviewed-on: https://skia-review.googlesource.com/7180
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
Diffstat (limited to 'src/core/SkAnalyticEdge.h')
-rw-r--r-- | src/core/SkAnalyticEdge.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/SkAnalyticEdge.h b/src/core/SkAnalyticEdge.h index e2a9867d0f..c5f0a02a2d 100644 --- a/src/core/SkAnalyticEdge.h +++ b/src/core/SkAnalyticEdge.h @@ -147,11 +147,6 @@ bool SkAnalyticEdge::setLine(const SkPoint& p0, const SkPoint& p1) { SkFixed x1 = SkFDot6ToFixed(SkScalarToFDot6(p1.fX * multiplier)) >> accuracy; SkFixed y1 = SnapY(SkFDot6ToFixed(SkScalarToFDot6(p1.fY * multiplier)) >> accuracy); - // are we a zero-height line? - if (y0 == y1) { - return false; - } - int winding = 1; if (y0 > y1) { @@ -160,12 +155,19 @@ bool SkAnalyticEdge::setLine(const SkPoint& p0, const SkPoint& p1) { winding = -1; } + // are we a zero-height line? #ifdef SK_SUPPORT_LEGACY_AAA + if (y0 == y1) { + return false; + } SkFixed slope = SkFixedDiv(x1 - x0, y1 - y0); #else SkFDot6 dy = SkFixedToFDot6(y1 - y0); + if (dy == 0) { + return false; + } SkFDot6 dx = SkFixedToFDot6(x1 - x0); - SkFixed slope = dy ? QuickSkFDot6Div(dx, dy) : SK_MaxS32; + SkFixed slope = QuickSkFDot6Div(dx, dy); SkFixed absSlope = SkAbs32(slope); #endif |