preround our fx fractional coordiante, so we get rounded integers (0..255) when
stepping through the gradient.



git-svn-id: http://skia.googlecode.com/svn/trunk@212 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkGradientShader.cpp b/src/effects/SkGradientShader.cpp
index 696def6..a0da6de 100644
--- a/src/effects/SkGradientShader.cpp
+++ b/src/effects/SkGradientShader.cpp
@@ -662,31 +662,27 @@
     TileProc            proc = fTileProc;
     const SkPMColor*    cache = this->getCache32();
 
-    if (fDstToIndexClass != kPerspective_MatrixClass)
-    {
+    if (fDstToIndexClass != kPerspective_MatrixClass) {
         dstProc(fDstToIndex, SkIntToScalar(x), SkIntToScalar(y), &srcPt);
         SkFixed dx, fx = SkScalarToFixed(srcPt.fX);
+        // preround fx by half the amount we throw away
+        fx += 1 << 7;
 
-        if (fDstToIndexClass == kFixedStepInX_MatrixClass)
-        {
+        if (fDstToIndexClass == kFixedStepInX_MatrixClass) {
             SkFixed dxStorage[1];
             (void)fDstToIndex.fixedStepInX(SkIntToScalar(y), dxStorage, NULL);
             dx = dxStorage[0];
-        }
-        else
-        {
+        } else {
             SkASSERT(fDstToIndexClass == kLinear_MatrixClass);
             dx = SkScalarToFixed(fDstToIndex.getScaleX());
         }
 
-        if (SkFixedNearlyZero(dx))  // we're a vertical gradient, so no change in a span
-        {
+        if (SkFixedNearlyZero(dx)) {
+            // we're a vertical gradient, so no change in a span
             unsigned fi = proc(fx);
             SkASSERT(fi <= 0xFFFF);
             sk_memset32(dstC, cache[fi >> (16 - kCache32Bits)], count);
-        }
-        else if (proc == clamp_tileproc)
-        {
+        } else if (proc == clamp_tileproc) {
 #if 0
             if (no_need_for_clamp(fx, dx, count))
             {
@@ -716,18 +712,14 @@
                     fx += dx;
                     *dstC++ = cache[fi];
                 } while (--count != 0);
-        }
-        else if (proc == mirror_tileproc)
-        {
+        } else if (proc == mirror_tileproc) {
             do {
                 unsigned fi = mirror_8bits(fx >> 8);
                 SkASSERT(fi <= 0xFF);
                 fx += dx;
                 *dstC++ = cache[fi];
             } while (--count != 0);
-        }
-        else
-        {
+        } else {
             SkASSERT(proc == repeat_tileproc);
             do {
                 unsigned fi = repeat_8bits(fx >> 8);
@@ -736,9 +728,7 @@
                 *dstC++ = cache[fi];
             } while (--count != 0);
         }
-    }
-    else
-    {
+    } else {
         SkScalar    dstX = SkIntToScalar(x);
         SkScalar    dstY = SkIntToScalar(y);
         do {