Move dither toggle logic into common helper functions, to make it easier to
change their behavior later. No functional change.
Review URL: https://codereview.appspot.com/7241063

git-svn-id: http://skia.googlecode.com/svn/trunk@7525 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp
index b194d50..0d3cc7e 100644
--- a/src/effects/gradients/SkLinearGradient.cpp
+++ b/src/effects/gradients/SkLinearGradient.cpp
@@ -111,7 +111,7 @@
     SkASSERT(fi <= 0xFF);           \
     fx += dx;                       \
     *dstC++ = cache[toggle + fi];   \
-    toggle ^= SkGradientShaderBase::kDitherStride32; \
+    toggle = next_dither_toggle(toggle); \
     } while (0)
 
 namespace {
@@ -156,7 +156,7 @@
     if ((count = range.fCount0) > 0) {
         sk_memset32_dither(dstC,
             cache[toggle + range.fV0],
-            cache[(toggle ^ SkGradientShaderBase::kDitherStride32) + range.fV0],
+            cache[next_dither_toggle(toggle) + range.fV0],
             count);
         dstC += count;
     }
@@ -178,7 +178,7 @@
     if ((count = range.fCount2) > 0) {
         sk_memset32_dither(dstC,
             cache[toggle + range.fV1],
-            cache[(toggle ^ SkGradientShaderBase::kDitherStride32) + range.fV1],
+            cache[next_dither_toggle(toggle) + range.fV1],
             count);
     }
 }
@@ -192,7 +192,7 @@
         SkASSERT(fi <= 0xFF);
         fx += dx;
         *dstC++ = cache[toggle + fi];
-        toggle ^= SkGradientShaderBase::kDitherStride32;
+        toggle = next_dither_toggle(toggle);
     } while (--count != 0);
 }
 
@@ -205,7 +205,7 @@
         SkASSERT(fi <= 0xFF);
         fx += dx;
         *dstC++ = cache[toggle + fi];
-        toggle ^= SkGradientShaderBase::kDitherStride32;
+        toggle = next_dither_toggle(toggle);
     } while (--count != 0);
 }
 
@@ -220,7 +220,7 @@
     TileProc            proc = fTileProc;
     const SkPMColor* SK_RESTRICT cache = this->getCache32();
 #ifdef USE_DITHER_32BIT_GRADIENT
-    int                 toggle = ((x ^ y) & 1) * kDitherStride32;
+    int                 toggle = init_dither_toggle(x, y);
 #else
     int toggle = 0;
 #endif
@@ -258,7 +258,7 @@
             unsigned fi = proc(SkScalarToFixed(srcPt.fX));
             SkASSERT(fi <= 0xFFFF);
             *dstC++ = cache[toggle + (fi >> kCache32Shift)];
-            toggle ^= SkGradientShaderBase::kDitherStride32;
+            toggle = next_dither_toggle(toggle);
             dstX += SK_Scalar1;
         } while (--count != 0);
     }
@@ -310,7 +310,7 @@
     SkASSERT(fi < SkGradientShaderBase::kCache16Count);       \
     fx += dx;                           \
     *dstC++ = cache[toggle + fi];       \
-    toggle ^= SkGradientShaderBase::kDitherStride16;            \
+    toggle = next_dither_toggle16(toggle);            \
     } while (0)
 
 namespace {
@@ -327,7 +327,7 @@
     unsigned fi = proc(fx) >> SkGradientShaderBase::kCache16Shift;
     SkASSERT(fi < SkGradientShaderBase::kCache16Count);
     dither_memset16(dstC, cache[toggle + fi],
-        cache[(toggle ^ SkGradientShaderBase::kDitherStride16) + fi], count);
+        cache[next_dither_toggle16(toggle) + fi], count);
 
 }
 
@@ -341,7 +341,7 @@
     if ((count = range.fCount0) > 0) {
         dither_memset16(dstC,
             cache[toggle + range.fV0],
-            cache[(toggle ^ SkGradientShaderBase::kDitherStride16) + range.fV0],
+            cache[next_dither_toggle16(toggle) + range.fV0],
             count);
         dstC += count;
     }
@@ -363,7 +363,7 @@
     if ((count = range.fCount2) > 0) {
         dither_memset16(dstC,
             cache[toggle + range.fV1],
-            cache[(toggle ^ SkGradientShaderBase::kDitherStride16) + range.fV1],
+            cache[next_dither_toggle16(toggle) + range.fV1],
             count);
     }
 }
@@ -378,7 +378,7 @@
         SkASSERT(fi < SkGradientShaderBase::kCache16Count);
         fx += dx;
         *dstC++ = cache[toggle + fi];
-        toggle ^= SkGradientShaderBase::kDitherStride16;
+        toggle = next_dither_toggle16(toggle);
     } while (--count != 0);
 }
 
@@ -392,7 +392,7 @@
         SkASSERT(fi < SkGradientShaderBase::kCache16Count);
         fx += dx;
         *dstC++ = cache[toggle + fi];
-        toggle ^= SkGradientShaderBase::kDitherStride16;
+        toggle = next_dither_toggle16(toggle);
     } while (--count != 0);
 }
 }
@@ -405,7 +405,7 @@
     SkMatrix::MapXYProc dstProc = fDstToIndexProc;
     TileProc            proc = fTileProc;
     const uint16_t* SK_RESTRICT cache = this->getCache16();
-    int                 toggle = ((x ^ y) & 1) * kDitherStride16;
+    int                 toggle = init_dither_toggle16(x, y);
 
     if (fDstToIndexClass != kPerspective_MatrixClass) {
         dstProc(fDstToIndex, SkIntToScalar(x) + SK_ScalarHalf,
@@ -442,7 +442,7 @@
 
             int index = fi >> kCache16Shift;
             *dstC++ = cache[toggle + index];
-            toggle ^= SkGradientShaderBase::kDitherStride16;
+            toggle = next_dither_toggle16(toggle);
 
             dstX += SK_Scalar1;
         } while (--count != 0);