Minor code cleanup (left over from prior CL)

This was requested in https://codereview.chromium.org/1309543012/ (Add new GM to directly exercise perspective bitmap drawing)

Review URL: https://codereview.chromium.org/1320673011
diff --git a/gm/bitmapsource.cpp b/gm/bitmapsource.cpp
index a0a3eca..155785b 100644
--- a/gm/bitmapsource.cpp
+++ b/gm/bitmapsource.cpp
@@ -21,26 +21,13 @@
         return SkString("bitmapsource");
     }
 
-    void makeBitmap() {
-        fBitmap.allocN32Pixels(100, 100);
-        SkCanvas canvas(fBitmap);
-        canvas.clear(0x00000000);
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        sk_tool_utils::set_portable_typeface(&paint);
-        paint.setColor(0xFFFFFFFF);
-        paint.setTextSize(SkIntToScalar(96));
-        const char* str = "e";
-        canvas.drawText(str, strlen(str), SkIntToScalar(20), SkIntToScalar(70), paint);
-    }
-
     SkISize onISize() override { return SkISize::Make(500, 150); }
 
     void onOnceBeforeDraw() override {
-        this->makeBitmap();
+        fBitmap = sk_tool_utils::create_string_bitmap(100, 100, 0xFFFFFFFF, 20, 70, 96, "e");
     }
 
-    static void fillRectFiltered(SkCanvas* canvas, const SkRect& clipRect, SkImageFilter* filter) {
+    static void FillRectFiltered(SkCanvas* canvas, const SkRect& clipRect, SkImageFilter* filter) {
         SkPaint paint;
         paint.setImageFilter(filter);
         canvas->save();
@@ -63,19 +50,19 @@
             SkAutoTUnref<SkImageFilter> bitmapSourceDstRectOnly(SkBitmapSource::Create(fBitmap, bounds, dstRect));
 
             // Draw an unscaled bitmap.
-            fillRectFiltered(canvas, clipRect, bitmapSource);
+            FillRectFiltered(canvas, clipRect, bitmapSource);
             canvas->translate(SkIntToScalar(100), 0);
 
             // Draw an unscaled subset of the source bitmap (srcRect -> srcRect).
-            fillRectFiltered(canvas, clipRect, bitmapSourceSrcRect);
+            FillRectFiltered(canvas, clipRect, bitmapSourceSrcRect);
             canvas->translate(SkIntToScalar(100), 0);
 
             // Draw a subset of the bitmap scaled to a destination rect (srcRect -> dstRect).
-            fillRectFiltered(canvas, clipRect, bitmapSourceSrcRectDstRect);
+            FillRectFiltered(canvas, clipRect, bitmapSourceSrcRectDstRect);
             canvas->translate(SkIntToScalar(100), 0);
 
             // Draw the entire bitmap scaled to a destination rect (bounds -> dstRect).
-            fillRectFiltered(canvas, clipRect, bitmapSourceDstRectOnly);
+            FillRectFiltered(canvas, clipRect, bitmapSourceDstRectOnly);
             canvas->translate(SkIntToScalar(100), 0);
         }
     }
diff --git a/gm/displacement.cpp b/gm/displacement.cpp
index 353d14e..4746ef7 100644
--- a/gm/displacement.cpp
+++ b/gm/displacement.cpp
@@ -14,49 +14,33 @@
 
 class DisplacementMapGM : public GM {
 public:
-    DisplacementMapGM() : fInitialized(false) {
+    DisplacementMapGM() {
         this->setBGColor(0xFF000000);
     }
 
 protected:
-    virtual SkString onShortName() {
+    SkString onShortName() override {
         return SkString("displacement");
     }
 
-    void make_bitmaps() {
-        make_bitmap();
-        make_checkerboard(&fCheckerboard, 80, 80);
-        make_checkerboard(&fSmall,        64, 64);
-        make_checkerboard(&fLarge,        96, 96);
-        make_checkerboard(&fLargeW,       96, 64);
-        make_checkerboard(&fLargeH,       64, 96);
+    void onOnceBeforeDraw() override {
+        fBitmap = sk_tool_utils::create_string_bitmap(80, 80, 0xFF884422, 15, 55, 96, "g");
+
+        SkColor c1 = sk_tool_utils::color_to_565(0xFF244484);
+        SkColor c2 = sk_tool_utils::color_to_565(0xFF804020);
+
+        fCheckerboard = sk_tool_utils::create_checkerboard_bitmap(80, 80, c1, c2, 8);
+        fSmall = sk_tool_utils::create_checkerboard_bitmap(64, 64, c1, c2, 8);
+        fLarge = sk_tool_utils::create_checkerboard_bitmap(96, 96, c1, c2, 8);
+        fLargeW = sk_tool_utils::create_checkerboard_bitmap(96, 64, c1, c2, 8);
+        fLargeH = sk_tool_utils::create_checkerboard_bitmap(64, 96, c1, c2, 8);
     }
 
-    void make_bitmap() {
-        fBitmap.allocN32Pixels(80, 80);
-        SkCanvas canvas(fBitmap);
-        canvas.clear(0x00000000);
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        sk_tool_utils::set_portable_typeface(&paint);
-        paint.setColor(sk_tool_utils::color_to_565(0xFF884422));
-        paint.setTextSize(SkIntToScalar(96));
-        const char* str = "g";
-        canvas.drawText(str, strlen(str), SkIntToScalar(15), SkIntToScalar(55), paint);
-    }
-
-    void make_checkerboard(SkBitmap* bitmap, int w, int h) {
-        bitmap->allocN32Pixels(w, h);
-        SkCanvas canvas(*bitmap);
-        sk_tool_utils::draw_checkerboard(&canvas, sk_tool_utils::color_to_565(0xFF244484),
-            sk_tool_utils::color_to_565(0xFF804020), 8);
-    }
-
-    virtual SkISize onISize() {
+    SkISize onISize() override {
         return SkISize::Make(500, 500);
     }
 
-    void drawClippedBitmap(SkCanvas* canvas, int x, int y, const SkPaint& paint) {
+    void drawClippedBitmap(SkCanvas* canvas, int x, int y, const SkPaint& paint) const {
         canvas->save();
         canvas->translate(SkIntToScalar(x), SkIntToScalar(y));
         canvas->clipRect(SkRect::MakeWH(SkIntToScalar(fBitmap.width()), SkIntToScalar(fBitmap.height())));
@@ -64,11 +48,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) {
-        if (!fInitialized) {
-            make_bitmaps();
-            fInitialized = true;
-        }
+    void onDraw(SkCanvas* canvas) override {
         canvas->clear(SK_ColorBLACK);
         SkPaint paint;
         SkAutoTUnref<SkImageFilter> displ(SkBitmapSource::Create(fCheckerboard));
@@ -204,14 +184,12 @@
     }
 
 private:
-    typedef GM INHERITED;
     SkBitmap fBitmap, fCheckerboard, fSmall, fLarge, fLargeW, fLargeH;
-    bool fInitialized;
+
+    typedef GM INHERITED;
 };
 
 //////////////////////////////////////////////////////////////////////////////
 
-static GM* MyFactory(void*) { return new DisplacementMapGM; }
-static GMRegistry reg(MyFactory);
-
+DEF_GM(return new DisplacementMapGM;)
 }
diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp
index 362d327..bf651a8 100644
--- a/gm/imagefiltersclipped.cpp
+++ b/gm/imagefiltersclipped.cpp
@@ -28,12 +28,11 @@
 
 class ImageFiltersClippedGM : public GM {
 public:
-    ImageFiltersClippedGM() : fInitialized(false) {
+    ImageFiltersClippedGM() {
         this->setBGColor(0x00000000);
     }
 
 protected:
-
     SkString onShortName() override {
         return SkString("imagefiltersclipped");
     }
@@ -42,7 +41,7 @@
         return SkISize::Make(860, 500);
     }
 
-    void make_gradient_circle(int width, int height) {
+    void makeGradientCircle(int width, int height) {
         SkScalar x = SkIntToScalar(width / 2);
         SkScalar y = SkIntToScalar(height / 2);
         SkScalar radius = SkMinScalar(x, y) * 0.8f;
@@ -80,15 +79,13 @@
         canvas->restore();
     }
 
-    void onDraw(SkCanvas* canvas) override {
-        if (!fInitialized) {
-            fCheckerboard.allocN32Pixels(64, 64);
-            SkCanvas checkerboardCanvas(fCheckerboard);
-            sk_tool_utils::draw_checkerboard(&checkerboardCanvas, 0xFFA0A0A0, 0xFF404040, 8);
+    void onOnceBeforeDraw() override {
+        fCheckerboard = sk_tool_utils::create_checkerboard_bitmap(64, 64,
+                                                                  0xFFA0A0A0, 0xFF404040, 8);
+        this->makeGradientCircle(64, 64);
+    }
 
-            this->make_gradient_circle(64, 64);
-            fInitialized = true;
-        }
+    void onDraw(SkCanvas* canvas) override {
         canvas->clear(SK_ColorBLACK);
 
         SkAutoTUnref<SkImageFilter> gradient(SkBitmapSource::Create(fGradientCircle));
@@ -150,15 +147,13 @@
     }
 
 private:
-    bool fInitialized;
     SkBitmap fCheckerboard;
     SkBitmap fGradientCircle;
+
     typedef GM INHERITED;
 };
 
 //////////////////////////////////////////////////////////////////////////////
 
-static GM* MyFactory(void*) { return new ImageFiltersClippedGM; }
-static GMRegistry reg(MyFactory);
-
+DEF_GM(return new ImageFiltersClippedGM;)
 }
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index 66b32e9..3f9fe3f 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -103,23 +103,10 @@
 
 protected:
 
-    virtual SkString onShortName() {
+    SkString onShortName() override {
         return SkString("imagefiltersgraph");
     }
 
-    void make_bitmap() {
-        fBitmap.allocN32Pixels(100, 100);
-        SkCanvas canvas(fBitmap);
-        canvas.clear(SK_ColorTRANSPARENT);
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        sk_tool_utils::set_portable_typeface(&paint);
-        paint.setColor(SK_ColorWHITE);
-        paint.setTextSize(SkIntToScalar(96));
-        const char* str = "e";
-        canvas.drawText(str, strlen(str), SkIntToScalar(20), SkIntToScalar(70), paint);
-    }
-
     void drawClippedBitmap(SkCanvas* canvas, const SkBitmap& bitmap, const SkPaint& paint) {
         canvas->save();
         canvas->clipRect(SkRect::MakeXYWH(0, 0,
@@ -128,13 +115,13 @@
         canvas->restore();
     }
 
-    virtual SkISize onISize() { return SkISize::Make(500, 150); }
+    SkISize onISize() override { return SkISize::Make(500, 150); }
 
-    virtual void onOnceBeforeDraw() {
-        this->make_bitmap();
+    void onOnceBeforeDraw() override {
+        fBitmap = sk_tool_utils::create_string_bitmap(100, 100, SK_ColorWHITE, 20, 70, 96, "e");
     }
 
-    virtual void onDraw(SkCanvas* canvas) {
+    void onDraw(SkCanvas* canvas) override {
         canvas->clear(SK_ColorBLACK);
         {
             SkAutoTUnref<SkImageFilter> bitmapSource(SkBitmapSource::Create(fBitmap));
@@ -229,5 +216,4 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-static skiagm::GM* MyFactory(void*) { return new ImageFiltersGraphGM; }
-static skiagm::GMRegistry reg(MyFactory);
+DEF_GM(return new ImageFiltersGraphGM;)
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp
index b532636..e98749e 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersscaled.cpp
@@ -27,21 +27,21 @@
 
 class ImageFiltersScaledGM : public GM {
 public:
-    ImageFiltersScaledGM() : fInitialized(false) {
+    ImageFiltersScaledGM() {
         this->setBGColor(0x00000000);
     }
 
 protected:
 
-    virtual SkString onShortName() {
+    SkString onShortName() override {
         return SkString("imagefiltersscaled");
     }
 
-    virtual SkISize onISize() {
+    SkISize onISize() override {
         return SkISize::Make(1428, 500);
     }
 
-    void make_gradient_circle(int width, int height) {
+    void makeGradientCircle(int width, int height) {
         SkScalar x = SkIntToScalar(width / 2);
         SkScalar y = SkIntToScalar(height / 2);
         SkScalar radius = SkScalarMul(SkMinScalar(x, y), SkIntToScalar(4) / SkIntToScalar(5));
@@ -60,15 +60,13 @@
         canvas.drawCircle(x, y, radius, paint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) {
-        if (!fInitialized) {
-            fCheckerboard.allocN32Pixels(64, 64);
-            SkCanvas checkerboardCanvas(fCheckerboard);
-            sk_tool_utils::draw_checkerboard(&checkerboardCanvas, 0xFFA0A0A0, 0xFF404040, 8);
+    void onOnceBeforeDraw() override {
+        fCheckerboard = sk_tool_utils::create_checkerboard_bitmap(64, 64,
+                                                                  0xFFA0A0A0, 0xFF404040, 8);
+        this->makeGradientCircle(64, 64);
+    }
 
-            this->make_gradient_circle(64, 64);
-            fInitialized = true;
-        }
+    void onDraw(SkCanvas* canvas) override {
         canvas->clear(SK_ColorBLACK);
 
         SkAutoTUnref<SkImageFilter> gradient(SkBitmapSource::Create(fGradientCircle));
@@ -152,15 +150,13 @@
     }
 
 private:
-    bool fInitialized;
     SkBitmap fCheckerboard;
     SkBitmap fGradientCircle;
+
     typedef GM INHERITED;
 };
 
 //////////////////////////////////////////////////////////////////////////////
 
-static GM* MyFactory(void*) { return new ImageFiltersScaledGM; }
-static GMRegistry reg(MyFactory);
-
+DEF_GM(return new ImageFiltersScaledGM;)
 }
diff --git a/gm/imagefilterstransformed.cpp b/gm/imagefilterstransformed.cpp
index 9259ce4..c6ff5a7 100644
--- a/gm/imagefilterstransformed.cpp
+++ b/gm/imagefilterstransformed.cpp
@@ -54,10 +54,8 @@
     }
 
     void onOnceBeforeDraw() override {
-        fCheckerboard.allocN32Pixels(64, 64);
-        SkCanvas checkerboardCanvas(fCheckerboard);
-        sk_tool_utils::draw_checkerboard(&checkerboardCanvas, 0xFFA0A0A0, 0xFF404040, 8);
-
+        fCheckerboard = sk_tool_utils::create_checkerboard_bitmap(64, 64,
+                                                                  0xFFA0A0A0, 0xFF404040, 8);
         this->makeGradientCircle(64, 64);
     }
 
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index d68e67d..af102d7 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -17,7 +17,7 @@
 
 class ImageLightingGM : public GM {
 public:
-    ImageLightingGM() : fInitialized(false) {
+    ImageLightingGM() {
         this->setBGColor(0xFF000000);
     }
 
@@ -27,19 +27,6 @@
         return SkString("lighting");
     }
 
-    void make_bitmap() {
-        fBitmap.allocN32Pixels(100, 100);
-        SkCanvas canvas(fBitmap);
-        canvas.clear(0x00000000);
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        sk_tool_utils::set_portable_typeface(&paint);
-        paint.setColor(0xFFFFFFFF);
-        paint.setTextSize(SkIntToScalar(96));
-        const char* str = "e";
-        canvas.drawText(str, strlen(str), SkIntToScalar(20), SkIntToScalar(70), paint);
-    }
-
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
     }
@@ -53,11 +40,11 @@
         canvas->restore();
     }
 
+    void onOnceBeforeDraw() override {
+        fBitmap = sk_tool_utils::create_string_bitmap(100, 100, 0xFFFFFFFF, 20, 70, 96, "e");
+    }
+
     void onDraw(SkCanvas* canvas) override {
-        if (!fInitialized) {
-            make_bitmap();
-            fInitialized = true;
-        }
         canvas->clear(sk_tool_utils::color_to_565(0xFF101010));
         SkPaint checkPaint;
         checkPaint.setColor(sk_tool_utils::color_to_565(0xFF202020));
@@ -163,9 +150,9 @@
     }
 
 private:
-    typedef GM INHERITED;
     SkBitmap fBitmap;
-    bool fInitialized;
+
+    typedef GM INHERITED;
 };
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/gm/lightingshader.cpp b/gm/lightingshader.cpp
index 8bb3595..9c45c9b 100644
--- a/gm/lightingshader.cpp
+++ b/gm/lightingshader.cpp
@@ -11,18 +11,6 @@
 #include "SkPoint3.h"
 #include "SkShader.h"
 
-static SkBitmap make_checkerboard(int texSize) {
-    SkBitmap bitmap;
-    bitmap.allocN32Pixels(texSize, texSize);
-
-    SkCanvas canvas(bitmap);
-    sk_tool_utils::draw_checkerboard(&canvas,
-                                     sk_tool_utils::color_to_565(0x0),
-                                     sk_tool_utils::color_to_565(0xFF804020),
-                                     8);
-    return bitmap;
-}
-
 // Create a hemispherical normal map
 static SkBitmap make_hemi_normalmap(int texSize) {
     SkBitmap hemi;
@@ -87,7 +75,11 @@
     }
 
     void onOnceBeforeDraw() override {
-        fDiffuse = make_checkerboard(kTexSize);
+        fDiffuse = sk_tool_utils::create_checkerboard_bitmap(
+                                                        kTexSize, kTexSize,
+                                                        sk_tool_utils::color_to_565(0x0),
+                                                        sk_tool_utils::color_to_565(0xFF804020),
+                                                        8);
 
         fNormalMaps[kHemi_NormalMap]    = make_hemi_normalmap(kTexSize);
         fNormalMaps[kFrustum_NormalMap] = make_frustum_normalmap(kTexSize);
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index 1e6a49d..6d16f8d 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -14,17 +14,17 @@
 
 class MatrixConvolutionGM : public GM {
 public:
-    MatrixConvolutionGM() : fInitialized(false) {
+    MatrixConvolutionGM() {
         this->setBGColor(0x00000000);
     }
 
 protected:
 
-    virtual SkString onShortName() {
+    SkString onShortName() override {
         return SkString("matrixconvolution");
     }
 
-    void make_bitmap() {
+    void makeBitmap() {
         fBitmap.allocN32Pixels(80, 80);
         SkCanvas canvas(fBitmap);
         canvas.clear(0x00000000);
@@ -43,7 +43,7 @@
         canvas.drawText(str, strlen(str), SkIntToScalar(-10), SkIntToScalar(80), paint);
     }
 
-    virtual SkISize onISize() {
+    SkISize onISize() override {
         return SkISize::Make(500, 300);
     }
 
@@ -79,11 +79,11 @@
 
     typedef SkMatrixConvolutionImageFilter MCIF;
 
-    virtual void onDraw(SkCanvas* canvas) {
-        if (!fInitialized) {
-            make_bitmap();
-            fInitialized = true;
-        }
+    void onOnceBeforeDraw() override {
+        this->makeBitmap();
+    }
+
+    void onDraw(SkCanvas* canvas) override {
         canvas->clear(SK_ColorBLACK);
         SkIPoint kernelOffset = SkIPoint::Make(1, 0);
         for (int x = 10; x < 310; x += 100) {
@@ -104,14 +104,13 @@
     }
 
 private:
-    typedef GM INHERITED;
     SkBitmap fBitmap;
-    bool fInitialized;
+
+    typedef GM INHERITED;
 };
 
 //////////////////////////////////////////////////////////////////////////////
 
-static GM* MyFactory(void*) { return new MatrixConvolutionGM; }
-static GMRegistry reg(MyFactory);
+DEF_GM(return new MatrixConvolutionGM;)
 
 }
diff --git a/gm/offsetimagefilter.cpp b/gm/offsetimagefilter.cpp
index fdf2aa8..fcf2b98 100644
--- a/gm/offsetimagefilter.cpp
+++ b/gm/offsetimagefilter.cpp
@@ -25,18 +25,6 @@
         return SkString("offsetimagefilter");
     }
 
-    void make_bitmap() {
-        fBitmap.allocN32Pixels(80, 80);
-        SkCanvas canvas(fBitmap);
-        canvas.clear(0);
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        sk_tool_utils::set_portable_typeface(&paint);
-        paint.setColor(sk_tool_utils::color_to_565(0xD000D000));
-        paint.setTextSize(96);
-        canvas.drawText("e", 1, 15, 65, paint);
-    }
-
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
     }
@@ -64,13 +52,13 @@
     }
 
     void onOnceBeforeDraw() override {
-        make_bitmap();
+        fBitmap = sk_tool_utils::create_string_bitmap(80, 80, 0xD000D000, 15, 65, 96, "e");
         
-        fCheckerboard.allocN32Pixels(80, 80);
-        SkCanvas checkerboardCanvas(fCheckerboard);
-        sk_tool_utils::draw_checkerboard(&checkerboardCanvas,
-                sk_tool_utils::color_to_565(0xFFA0A0A0),
-                sk_tool_utils::color_to_565(0xFF404040), 8);
+        fCheckerboard = sk_tool_utils::create_checkerboard_bitmap(
+                                                        80, 80,
+                                                        sk_tool_utils::color_to_565(0xFFA0A0A0),
+                                                        sk_tool_utils::color_to_565(0xFF404040),
+                                                        8);
     }
 
     void onDraw(SkCanvas* canvas) override {
@@ -101,8 +89,9 @@
         drawClippedBitmap(canvas, fBitmap, paint, 2, cropRect);
     }
 private:
-    typedef skiagm::GM INHERITED;
     SkBitmap fBitmap, fCheckerboard;
+
+    typedef skiagm::GM INHERITED;
 };
 DEF_GM( return new OffsetImageFilterGM; )
 
diff --git a/gm/perspshaders.cpp b/gm/perspshaders.cpp
index 07a41e9..59fab47 100644
--- a/gm/perspshaders.cpp
+++ b/gm/perspshaders.cpp
@@ -23,15 +23,6 @@
     return surface->newImageSnapshot();
 }
 
-static SkBitmap make_bitmap(int w, int h) {
-    SkBitmap bitmap;
-    bitmap.allocN32Pixels(w, h);
-    SkCanvas canvas(bitmap);
-
-    sk_tool_utils::draw_checkerboard(&canvas, SK_ColorBLUE, SK_ColorYELLOW, w/10);
-    return bitmap;
-}
-
 namespace skiagm {
 
 class PerspShadersGM : public GM {
@@ -51,7 +42,9 @@
     }
 
     void onOnceBeforeDraw() override {
-        fBitmap = make_bitmap(kCellSize, kCellSize);
+        fBitmap = sk_tool_utils::create_checkerboard_bitmap(kCellSize, kCellSize,
+                                                            SK_ColorBLUE, SK_ColorYELLOW,
+                                                            kCellSize/10);
 
         fBitmapShader.reset(SkShader::CreateBitmapShader(fBitmap,
                                                          SkShader::kClamp_TileMode,
diff --git a/gm/repeated_bitmap.cpp b/gm/repeated_bitmap.cpp
index bda368b..dc2a2aa 100644
--- a/gm/repeated_bitmap.cpp
+++ b/gm/repeated_bitmap.cpp
@@ -11,7 +11,7 @@
 
 DEF_SIMPLE_GM(repeated_bitmap, canvas, 576, 576) {
     sk_tool_utils::draw_checkerboard(canvas, sk_tool_utils::color_to_565(0xFF999999),
-            SK_ColorWHITE, 12);
+                                     SK_ColorWHITE, 12);
     SkRect rect = SkRect::MakeLTRB(-4.25f, -4.25f, 4.25f, 4.25f);
     SkPaint paint;
     paint.setColor(0xFF333333);
@@ -33,7 +33,7 @@
 
 DEF_SIMPLE_GM(repeated_bitmap_jpg, canvas, 576, 576) {
     sk_tool_utils::draw_checkerboard(canvas, sk_tool_utils::color_to_565(0xFF999999),
-            SK_ColorWHITE, 12);
+                                     SK_ColorWHITE, 12);
     SkRect rect = SkRect::MakeLTRB(-68.0f, -68.0f, 68.0f, 68.0f);
     SkPaint paint;
     paint.setColor(0xFF333333);
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp
index e47e8fa..093f12d 100644
--- a/gm/tileimagefilter.cpp
+++ b/gm/tileimagefilter.cpp
@@ -16,22 +16,6 @@
 #define HEIGHT 100
 #define MARGIN 12
 
-static SkBitmap make_bitmap() {
-    SkBitmap bitmap;
-    bitmap.allocN32Pixels(50, 50);
-    SkCanvas canvas(bitmap);
-    canvas.clear(0xFF000000);
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    sk_tool_utils::set_portable_typeface(&paint);
-    paint.setColor(0xD000D000);
-    paint.setTextSize(SkIntToScalar(50));
-    const char* str = "e";
-    canvas.drawText(str, strlen(str), SkIntToScalar(10), SkIntToScalar(45), paint);
-    return bitmap;
-}
-
-
 namespace skiagm {
 
 class TileImageFilterGM : public GM {
@@ -50,13 +34,13 @@
     }
 
     void onOnceBeforeDraw() override {
-        fBitmap = make_bitmap();
+        fBitmap = sk_tool_utils::create_string_bitmap(50, 50, 0xD000D000, 10, 45, 50, "e");
 
-        fCheckerboard.allocN32Pixels(80, 80);
-        SkCanvas checkerboardCanvas(fCheckerboard);
-        sk_tool_utils::draw_checkerboard(&checkerboardCanvas, 
-                sk_tool_utils::color_to_565(0xFFA0A0A0),
-                sk_tool_utils::color_to_565(0xFF404040), 8);
+        fCheckerboard = sk_tool_utils::create_checkerboard_bitmap(
+                                                        80, 80,
+                                                        sk_tool_utils::color_to_565(0xFFA0A0A0),
+                                                        sk_tool_utils::color_to_565(0xFF404040),
+                                                        8);
     }
 
     void onDraw(SkCanvas* canvas) override {
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index 80994a6..e09c0ab 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -29,19 +29,6 @@
         return SkString("xfermodeimagefilter");
     }
 
-    void make_bitmap() {
-        fBitmap.allocN32Pixels(80, 80);
-        SkCanvas canvas(fBitmap);
-        canvas.clear(0x00000000);
-        SkPaint paint;
-        paint.setAntiAlias(true);
-        sk_tool_utils::set_portable_typeface(&paint);
-        paint.setColor(0xD000D000);
-        paint.setTextSize(SkIntToScalar(96));
-        const char* str = "e";
-        canvas.drawText(str, strlen(str), SkIntToScalar(15), SkIntToScalar(65), paint);
-    }
-
     SkISize onISize() override {
         return SkISize::Make(WIDTH, HEIGHT);
     }
@@ -66,13 +53,13 @@
     }
 
     void onOnceBeforeDraw() override {
-        make_bitmap();
+        fBitmap = sk_tool_utils::create_string_bitmap(80, 80, 0xD000D000, 15, 65, 96, "e");
 
-        fCheckerboard.allocN32Pixels(80, 80);
-        SkCanvas checkerboardCanvas(fCheckerboard);
-        sk_tool_utils::draw_checkerboard(&checkerboardCanvas,
-                sk_tool_utils::color_to_565(0xFFA0A0A0),
-                sk_tool_utils::color_to_565(0xFF404040), 8);
+        fCheckerboard = sk_tool_utils::create_checkerboard_bitmap(
+                                                        80, 80,
+                                                        sk_tool_utils::color_to_565(0xFFA0A0A0),
+                                                        sk_tool_utils::color_to_565(0xFF404040),
+                                                        8);
     }
 
     void onDraw(SkCanvas* canvas) override {