Index: src/core/SkAnalyticEdge.h |
diff --git a/src/core/SkAnalyticEdge.h b/src/core/SkAnalyticEdge.h |
index f4b23ba2b6bd6ab77c5e0b2d0bc5aaeb1d291d96..cc07aec77063e74923e022a377af308b38074402 100644 |
--- a/src/core/SkAnalyticEdge.h |
+++ b/src/core/SkAnalyticEdge.h |
@@ -43,7 +43,9 @@ struct SkAnalyticEdge { |
static const int kDefaultAccuracy = 2; // default accuracy for snapping |
static inline SkFixed snapY(SkFixed y, int accuracy = kDefaultAccuracy) { |
- return SkFixedRoundToFixed(y << accuracy) >> accuracy; |
+ return (y + (SK_Fixed1 >> (accuracy + 1))) >> (16 - accuracy) << (16 - accuracy); |
caryclark
2016/10/20 16:58:14
As I overheard mtklein say, this looks like a job
|
+ // The following does not work correctly for negative y. I've no idea why... |
+ // return SkFixedRoundToFixed(y << accuracy) >> accuracy; |
} |
// Update fX, fY of this edge so fY = y |