Factor out checkerboard function in gm and sampleapp into tools.

Review URL: https://codereview.chromium.org/834303005
diff --git a/samplecode/SampleColorFilter.cpp b/samplecode/SampleColorFilter.cpp
index fb5d427..175f724 100644
--- a/samplecode/SampleColorFilter.cpp
+++ b/samplecode/SampleColorFilter.cpp
@@ -5,6 +5,7 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
+#include "Checkerboard.h"
 #include "SampleCode.h"
 #include "SkView.h"
 #include "SkCanvas.h"
@@ -84,20 +85,6 @@
     SkDebugf("--- trunc: %d %d  round: %d %d new: %d %d\n", e0, ae0, e1, ae1, e2, ae2);
 }
 
-// No longer marked static, since it is externed in SampleUnpremul.
-SkShader* createChecker();
-SkShader* createChecker() {
-    SkBitmap bm;
-    bm.allocN32Pixels(2, 2);
-    bm.lockPixels();
-    *bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = SkPreMultiplyColor(0xFFFFFFFF);
-    *bm.getAddr32(0, 1) = *bm.getAddr32(1, 0) = SkPreMultiplyColor(0xFFCCCCCC);
-    SkMatrix m;
-    m.setScale(12, 12);
-    return SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode,
-                                        SkShader::kRepeat_TileMode, &m);
-}
-
 static SkBitmap createBitmap(int n) {
     SkBitmap bitmap;
     bitmap.allocN32Pixels(n, n);
@@ -131,7 +118,8 @@
 public:
     ColorFilterView() {
         fBitmap = createBitmap(N);
-        fShader = createChecker();
+        fShader = sk_tools::CreateCheckerboardShader(
+                0xFFCCCCCC, 0xFFFFFFFF, 12);
 
         if (false) { // avoid bit rot, suppress warning
             test_5bits();
diff --git a/samplecode/SampleFatBits.cpp b/samplecode/SampleFatBits.cpp
index 9b9af3e..9da3513 100644
--- a/samplecode/SampleFatBits.cpp
+++ b/samplecode/SampleFatBits.cpp
@@ -5,6 +5,7 @@
  * found in the LICENSE file.
  */
 
+#include "Checkerboard.h"
 #include "SampleCode.h"
 #include "SkView.h"
 #include "SkCanvas.h"
@@ -35,18 +36,6 @@
     surface->getCanvas()->clear(SK_ColorTRANSPARENT);
 }
 
-static SkShader* createChecker(const SkMatrix& localMatrix) {
-//    SkColor colors[] = { 0xFFFDFDFD, 0xFFF4F4F4 };
-    SkColor colors[] = { 0xFFFFFFFF, 0xFFFFFFFF };
-    SkBitmap bm;
-    bm.allocN32Pixels(2, 2);
-    bm.lockPixels();
-    *bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = SkPreMultiplyColor(colors[0]);
-    *bm.getAddr32(0, 1) = *bm.getAddr32(1, 0) = SkPreMultiplyColor(colors[1]);
-    return SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode,
-                                        SkShader::kRepeat_TileMode, &localMatrix);
-}
-
 class FatBits {
 public:
     FatBits() {
@@ -98,7 +87,8 @@
         fBounds.set(0, 0, SkIntToScalar(width * zoom), SkIntToScalar(height * zoom));
         fMatrix.setScale(SkIntToScalar(zoom), SkIntToScalar(zoom));
         fInverse.setScale(SK_Scalar1 / zoom, SK_Scalar1 / zoom);
-        fShader.reset(createChecker(fMatrix));
+        fShader.reset(sk_tools::CreateCheckerboardShader(
+                              0xFFCCCCCC, 0xFFFFFFFF, zoom));
 
         SkImageInfo info = SkImageInfo::MakeN32Premul(width, height);
         fMinSurface.reset(SkSurface::NewRaster(info));
diff --git a/samplecode/SampleUnpremul.cpp b/samplecode/SampleUnpremul.cpp
index 9591fec..889d067 100644
--- a/samplecode/SampleUnpremul.cpp
+++ b/samplecode/SampleUnpremul.cpp
@@ -7,6 +7,7 @@
 
 #include "gm.h"
 
+#include "Checkerboard.h"
 #include "Resources.h"
 #include "SampleCode.h"
 #include "SkBlurMask.h"
@@ -25,9 +26,6 @@
 
 __SK_FORCE_IMAGE_DECODER_LINKING;
 
-// Defined in SampleColorFilter.cpp
-extern SkShader* createChecker();
-
 /**
  *  Interprets c as an unpremultiplied color, and returns the
  *  premultiplied equivalent.
@@ -78,10 +76,7 @@
     }
 
     void onDrawBackground(SkCanvas* canvas) SK_OVERRIDE {
-        SkPaint paint;
-        SkAutoTUnref<SkShader> shader(createChecker());
-        paint.setShader(shader.get());
-        canvas->drawPaint(paint);
+        sk_tools::DrawCheckerboard(canvas, 0xFFCCCCCC, 0xFFFFFFFF, 12);
     }
 
     void onDrawContent(SkCanvas* canvas) SK_OVERRIDE {