Home | History | Annotate | Download | only in skia
      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;
     39