OLD | NEW |
| (Empty) |
1 Index: sgl/SkEdge.cpp | |
2 =================================================================== | |
3 --- sgl/SkEdge.cpp (revision 42965) | |
4 +++ sgl/SkEdge.cpp (working copy) | |
5 @@ -17,6 +17,7 @@ | |
6 | |
7 #include "SkEdge.h" | |
8 #include "SkFDot6.h" | |
9 +#include <limits> | |
10 | |
11 /* | |
12 In setLine, setQuadratic, setCubic, the first thing we do is to convert | |
13 @@ -76,8 +77,23 @@ | |
14 | |
15 fX = SkFDot6ToFixed(x0 + SkFixedMul(slope, (32 - y0) & 63)); //
+ SK_Fixed1/2 | |
16 fDX = slope; | |
17 - fFirstY = SkToS16(top); | |
18 - fLastY = SkToS16(bot - 1); | |
19 + fFirstY = (int16_t)(top); // inlined skToS16() | |
20 + if (top != (long)fFirstY) { | |
21 + if (fFirstY < top) { | |
22 + fFirstY = std::numeric_limits<int16_t>::max(); | |
23 + } else { | |
24 + fFirstY = std::numeric_limits<int16_t>::min(); | |
25 + } | |
26 + fX -= fDX * (top - (long)fFirstY); | |
27 + } | |
28 + fLastY = (int16_t)(bot - 1); // inlined SkToS16() | |
29 + if (bot-1 != (long)fLastY) { | |
30 + if (fLastY < bot-1) { | |
31 + fLastY = std::numeric_limits<int16_t>::max(); | |
32 + } else { | |
33 + fLastY = std::numeric_limits<int16_t>::min(); | |
34 + } | |
35 + } | |
36 fCurveCount = 0; | |
37 fWinding = SkToS8(winding); | |
38 fCurveShift = 0; | |
OLD | NEW |