drawBitmap is deprecated

Bug: skia:11216
Change-Id: I4affb8e00ff7e7b3e8d873ddfd653f397ca8d928
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/360979
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/docs/examples/ImageInfo_computeByteSize.cpp b/docs/examples/ImageInfo_computeByteSize.cpp
index 13986e1..47f4f43 100644
--- a/docs/examples/ImageInfo_computeByteSize.cpp
+++ b/docs/examples/ImageInfo_computeByteSize.cpp
@@ -14,6 +14,6 @@
     bitmap.eraseColor(SK_ColorRED);
     canvas->scale(50, 50);
     canvas->rotate(8);
-    canvas->drawBitmap(bitmap, 2, 0);
+    canvas->drawImage(bitmap.asImage(), 2, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/ImageInfo_computeMinByteSize.cpp b/docs/examples/ImageInfo_computeMinByteSize.cpp
index deb326f..43a2f41 100644
--- a/docs/examples/ImageInfo_computeMinByteSize.cpp
+++ b/docs/examples/ImageInfo_computeMinByteSize.cpp
@@ -14,6 +14,6 @@
     bitmap.eraseColor(SK_ColorRED);
     canvas->scale(50, 50);
     canvas->rotate(8);
-    canvas->drawBitmap(bitmap, 2, 0);
+    canvas->drawImage(bitmap.asImage(), 2, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/ImageInfo_computeOffset.cpp b/docs/examples/ImageInfo_computeOffset.cpp
index ad7e1d6..efa2bbe 100644
--- a/docs/examples/ImageInfo_computeOffset.cpp
+++ b/docs/examples/ImageInfo_computeOffset.cpp
@@ -17,12 +17,14 @@
     bitmap.installPixels(imageInfo, (void*) pixels, sizeof(pixels[0]));
     SkPaint paint;
     paint.setColor(SK_ColorRED);
-    canvas->drawBitmapRect(bitmap, SkRect::MakeWH(8, 8), SkRect::MakeWH(32, 32), &paint);
+    canvas->drawImageRect(bitmap.asImage(), SkRect::MakeWH(8, 8), SkRect::MakeWH(32, 32),
+                          SkSamplingOptions(), &paint, SkCanvas::kStrict_SrcRectConstraint);
     size_t offset = imageInfo.computeOffset(2, 3, sizeof(pixels[0]));
     pixels[0][offset] = 0x7F;
     offset = imageInfo.computeOffset(5, 3, sizeof(pixels[0]));
     pixels[0][offset] = 0x7F;
     bitmap.installPixels(imageInfo, (void*) pixels, sizeof(pixels[0]));
-    canvas->drawBitmapRect(bitmap, SkRect::MakeWH(8, 8), SkRect::MakeWH(128, 128), &paint);
+    canvas->drawImageRect(bitmap.asImage(), SkRect::MakeWH(8, 8), SkRect::MakeWH(128, 128),
+                          SkSamplingOptions(), &paint, SkCanvas::kStrict_SrcRectConstraint);
 }
 }  // END FIDDLE
diff --git a/docs/examples/ImageInfo_makeAlphaType.cpp b/docs/examples/ImageInfo_makeAlphaType.cpp
deleted file mode 100644
index f6b408f..0000000
--- a/docs/examples/ImageInfo_makeAlphaType.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2019 Google LLC.
-// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
-#include "tools/fiddle/examples.h"
-// HASH=e72db006f1bea26feceaef8727ff9818
-REG_FIDDLE(ImageInfo_makeAlphaType, 256, 256, false, 3) {
-void draw(SkCanvas* canvas) {
-    const int width = 256;
-    const int height = 128;
-    SkColor pixels[height][width];
-    for (int y = 0; y < height; ++y) {
-        for (int x = 0; x < width; ++x) {
-            int red = SkScalarRoundToInt(255 * SkScalarAbs(SkScalarSin((x * 4 + y) * 0.03f)));
-            int blue = SkScalarRoundToInt(255 * SkScalarAbs(SkScalarCos((x * 3 + y) * 0.04f)));
-            int green = SkScalarRoundToInt(255 * SkScalarAbs(SkScalarSin((x * 2 + y) * 0.05f)));
-            int alpha = SkScalarRoundToInt(255 * SkScalarAbs(SkScalarCos((x * 1 + y) * 0.006f)));
-            pixels[y][x] =
-                SkColorSetARGB(alpha, red * alpha / 255, green * alpha / 255, blue * alpha / 255);
-        }
-    }
-    SkBitmap bitmap;
-    SkImageInfo info = SkImageInfo::Make(width, height, kBGRA_8888_SkColorType, kPremul_SkAlphaType);
-    bitmap.installPixels(info, (void*) pixels, sizeof(SkColor) * width);
-    canvas->drawBitmap(source, 0, 0);
-    canvas->drawBitmap(bitmap, 0, 0);
-    SkImageInfo unpremulInfo = info.makeAlphaType(kUnpremul_SkAlphaType);
-    bitmap.installPixels(unpremulInfo, (void*) pixels, sizeof(SkColor) * width);
-    canvas->drawBitmap(bitmap, 0, 128);
-}
-}  // END FIDDLE
diff --git a/docs/examples/ImageInfo_makeColorType.cpp b/docs/examples/ImageInfo_makeColorType.cpp
deleted file mode 100644
index 019c483..0000000
--- a/docs/examples/ImageInfo_makeColorType.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2019 Google LLC.
-// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
-#include "tools/fiddle/examples.h"
-// HASH=3ac267b08b12dc83c95f91d8dd5d70ee
-REG_FIDDLE(ImageInfo_makeColorType, 256, 256, false, 0) {
-void draw(SkCanvas* canvas) {
-    const int width = 256;
-    const int height = 128;
-    SkColor pixels[height][width];
-    for (int y = 0; y < height; ++y) {
-        for (int x = 0; x < width; ++x) {
-            int red = SkScalarRoundToInt(255 * SkScalarAbs(SkScalarSin((x * 4 + y) * 0.03f)));
-            int blue = SkScalarRoundToInt(255 * SkScalarAbs(SkScalarCos((x * 3 + y) * 0.04f)));
-            int green = SkScalarRoundToInt(255 * SkScalarAbs(SkScalarSin((x * 2 + y) * 0.05f)));
-            int alpha = SkScalarRoundToInt(255 * SkScalarAbs(SkScalarCos((x * 1 + y) * 0.006f)));
-            pixels[y][x] =
-                SkColorSetARGB(alpha, red * alpha / 255, green * alpha / 255, blue * alpha / 255);
-        }
-    }
-    SkBitmap bitmap;
-    SkImageInfo info = SkImageInfo::Make(width, height, kBGRA_8888_SkColorType, kPremul_SkAlphaType);
-    bitmap.installPixels(info, (void*) pixels, sizeof(SkColor) * width);
-    canvas->drawBitmap(source, 0, 0);
-    canvas->drawBitmap(bitmap, 0, 0);
-    SkImageInfo rgbaInfo = info.makeColorType(kRGBA_8888_SkColorType);
-    bitmap.installPixels(rgbaInfo, (void*) pixels, sizeof(SkColor) * width);
-    canvas->drawBitmap(bitmap, 0, 128);
-}
-}  // END FIDDLE
diff --git a/docs/examples/ImageInfo_makeWH.cpp b/docs/examples/ImageInfo_makeWH.cpp
index dd58053..aadc940 100644
--- a/docs/examples/ImageInfo_makeWH.cpp
+++ b/docs/examples/ImageInfo_makeWH.cpp
@@ -6,13 +6,15 @@
 void draw(SkCanvas* canvas) {
     SkImageInfo canvasImageInfo = canvas->imageInfo();
     SkRect canvasBounds = SkRect::Make(canvasImageInfo.bounds());
-    canvas->drawBitmapRect(source, source.bounds(), canvasBounds, nullptr);
+    canvas->drawImageRect(image, SkRect::Make(source.bounds()), canvasBounds, SkSamplingOptions(),
+                          nullptr, SkCanvas::kStrict_SrcRectConstraint);
     SkImageInfo insetImageInfo =
               canvasImageInfo.makeWH(canvasBounds.width() / 2, canvasBounds.height() / 2);
     SkBitmap inset;
     inset.allocPixels(insetImageInfo);
     SkCanvas offscreen(inset);
-    offscreen.drawBitmapRect(source, source.bounds(), SkRect::Make(inset.bounds()), nullptr);
-    canvas->drawBitmap(inset, canvasBounds.width() / 4, canvasBounds.height() / 4);
+    offscreen.drawImageRect(image, SkRect::Make(source.bounds()), SkRect::Make(inset.bounds()),
+                            SkSamplingOptions(), nullptr, SkCanvas::kStrict_SrcRectConstraint);
+    canvas->drawImage(inset.asImage(), canvasBounds.width() / 4, canvasBounds.height() / 4);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Image_MakeRasterCopy.cpp b/docs/examples/Image_MakeRasterCopy.cpp
index 4be49e8..210f1ca 100644
--- a/docs/examples/Image_MakeRasterCopy.cpp
+++ b/docs/examples/Image_MakeRasterCopy.cpp
@@ -16,7 +16,7 @@
     sk_sp<SkImage> image = SkImage::MakeRasterCopy(pixmap);
     *pixmap.writable_addr8(2, 2) = 0x00;
     canvas->scale(10, 10);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
     canvas->drawImage(image, 10, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Image_readPixels.cpp b/docs/examples/Image_readPixels.cpp
index e3d31c0..d0818c3 100644
--- a/docs/examples/Image_readPixels.cpp
+++ b/docs/examples/Image_readPixels.cpp
@@ -16,7 +16,7 @@
                 SkPixmap dstPixmap(info, &dstPixels.front(), width * 4);
                 SkBitmap bitmap;
                 bitmap.installPixels(dstPixmap);
-                canvas->drawBitmap(bitmap, 0, 0);
+                canvas->drawImage(bitmap.asImage(), 0, 0);
             }
             canvas->translate(48, 0);
         }
diff --git a/docs/examples/Image_readPixels_2.cpp b/docs/examples/Image_readPixels_2.cpp
index 018710e..2bb7a3e 100644
--- a/docs/examples/Image_readPixels_2.cpp
+++ b/docs/examples/Image_readPixels_2.cpp
@@ -21,6 +21,6 @@
     SkBitmap bitmap;
     bitmap.installPixels(SkImageInfo::MakeN32Premul(image->width(), image->height()),
                              &srcPixels.front(), rowBytes);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_063.cpp b/docs/examples/Matrix_063.cpp
index 14a7d48..0be25b5 100644
--- a/docs/examples/Matrix_063.cpp
+++ b/docs/examples/Matrix_063.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.postScale(1, 0.5f);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_Concat.cpp b/docs/examples/Matrix_Concat.cpp
index 5b49b6e..ce34ff9 100644
--- a/docs/examples/Matrix_Concat.cpp
+++ b/docs/examples/Matrix_Concat.cpp
@@ -6,11 +6,11 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix, matrix2;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix2.setPolyToPoly(perspect, bitmapBounds, 4);
     SkMatrix concat = SkMatrix::Concat(matrix, matrix2);
     canvas->concat(concat);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_MakeScale.cpp b/docs/examples/Matrix_MakeScale.cpp
index 166b8de..626950f 100644
--- a/docs/examples/Matrix_MakeScale.cpp
+++ b/docs/examples/Matrix_MakeScale.cpp
@@ -5,6 +5,6 @@
 REG_FIDDLE(Matrix_MakeScale, 256, 256, false, 4) {
 void draw(SkCanvas* canvas) {
     canvas->concat(SkMatrix::Scale(4, 3));
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_MakeScale_2.cpp b/docs/examples/Matrix_MakeScale_2.cpp
deleted file mode 100644
index 8fbdcd1..0000000
--- a/docs/examples/Matrix_MakeScale_2.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2019 Google LLC.
-// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
-#include "tools/fiddle/examples.h"
-// HASH=2956aeb50fa862cdb13995e1e56a4bc8
-REG_FIDDLE(Matrix_MakeScale_2, 256, 256, false, 4) {
-void draw(SkCanvas* canvas) {
-    canvas->concat(SkMatrix::Scale(4, 4));
-    canvas->drawBitmap(source, 0, 0);
-}
-}  // END FIDDLE
diff --git a/docs/examples/Matrix_MakeTrans.cpp b/docs/examples/Matrix_MakeTrans.cpp
index 93896da..eef712e 100644
--- a/docs/examples/Matrix_MakeTrans.cpp
+++ b/docs/examples/Matrix_MakeTrans.cpp
@@ -6,7 +6,7 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix = SkMatrix::Translate(64, 48);
     for (int i = 0; i < 4; ++i) {
-        canvas->drawBitmap(source, 0, 0);
+        canvas->drawImage(image, 0, 0);
         canvas->concat(matrix);
     }
 }
diff --git a/docs/examples/Matrix_mapXY_2.cpp b/docs/examples/Matrix_mapXY_2.cpp
index 62d0385..770b7e5 100644
--- a/docs/examples/Matrix_mapXY_2.cpp
+++ b/docs/examples/Matrix_mapXY_2.cpp
@@ -17,6 +17,6 @@
         }
     }
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_postConcat.cpp b/docs/examples/Matrix_postConcat.cpp
index 790149e..92ea196 100644
--- a/docs/examples/Matrix_postConcat.cpp
+++ b/docs/examples/Matrix_postConcat.cpp
@@ -10,6 +10,6 @@
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.postConcat(matrix);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_postRotate.cpp b/docs/examples/Matrix_postRotate.cpp
index 734e144..2e8f955 100644
--- a/docs/examples/Matrix_postRotate.cpp
+++ b/docs/examples/Matrix_postRotate.cpp
@@ -10,6 +10,6 @@
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.postRotate(45, source.width() / 2, source.height() / 2);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_postRotate_2.cpp b/docs/examples/Matrix_postRotate_2.cpp
index 2da4c92..ff45690 100644
--- a/docs/examples/Matrix_postRotate_2.cpp
+++ b/docs/examples/Matrix_postRotate_2.cpp
@@ -10,6 +10,6 @@
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.postRotate(45);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_postScale.cpp b/docs/examples/Matrix_postScale.cpp
index f77efaa..0d8e18c 100644
--- a/docs/examples/Matrix_postScale.cpp
+++ b/docs/examples/Matrix_postScale.cpp
@@ -10,6 +10,6 @@
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.postScale(.75f, 1.5f, source.width() / 2, source.height() / 2);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_postScale_2.cpp b/docs/examples/Matrix_postScale_2.cpp
index 7d3024e..1beca7e 100644
--- a/docs/examples/Matrix_postScale_2.cpp
+++ b/docs/examples/Matrix_postScale_2.cpp
@@ -10,6 +10,6 @@
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.postScale(.75f, 1.5f);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_postSkew.cpp b/docs/examples/Matrix_postSkew.cpp
index a1b5756..5bb78b6 100644
--- a/docs/examples/Matrix_postSkew.cpp
+++ b/docs/examples/Matrix_postSkew.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
-    matrix.postSkew(.5f, 0, source.width() / 2, source.height() / 2);
+    matrix.postSkew(.5f, 0, image->width() / 2, image->height() / 2);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_postSkew_2.cpp b/docs/examples/Matrix_postSkew_2.cpp
index 233405c..5657958 100644
--- a/docs/examples/Matrix_postSkew_2.cpp
+++ b/docs/examples/Matrix_postSkew_2.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.postSkew(.5f, 0);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_preConcat.cpp b/docs/examples/Matrix_preConcat.cpp
index 09e8e24..d92413d 100644
--- a/docs/examples/Matrix_preConcat.cpp
+++ b/docs/examples/Matrix_preConcat.cpp
@@ -11,6 +11,6 @@
     matrix2.setPolyToPoly(perspect, bitmapBounds, 4);
     matrix.preConcat(matrix2);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_preRotate.cpp b/docs/examples/Matrix_preRotate.cpp
index e5d4b48..49e84c1 100644
--- a/docs/examples/Matrix_preRotate.cpp
+++ b/docs/examples/Matrix_preRotate.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
-    matrix.preRotate(45, source.width() / 2, source.height() / 2);
+    matrix.preRotate(45, image->width() / 2, image->height() / 2);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_preRotate_2.cpp b/docs/examples/Matrix_preRotate_2.cpp
index 8105415..6b10a3c 100644
--- a/docs/examples/Matrix_preRotate_2.cpp
+++ b/docs/examples/Matrix_preRotate_2.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.preRotate(45);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_preScale.cpp b/docs/examples/Matrix_preScale.cpp
index 0c67cb4..df20b64 100644
--- a/docs/examples/Matrix_preScale.cpp
+++ b/docs/examples/Matrix_preScale.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
-    matrix.preScale(.75f, 1.5f, source.width() / 2, source.height() / 2);
+    matrix.preScale(.75f, 1.5f, image->width() / 2, image->height() / 2);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_preScale_2.cpp b/docs/examples/Matrix_preScale_2.cpp
index a69885e..7ee5dfc 100644
--- a/docs/examples/Matrix_preScale_2.cpp
+++ b/docs/examples/Matrix_preScale_2.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.preScale(.75f, 1.5f);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_preSkew.cpp b/docs/examples/Matrix_preSkew.cpp
index 6548412..f4eab2f 100644
--- a/docs/examples/Matrix_preSkew.cpp
+++ b/docs/examples/Matrix_preSkew.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
-    matrix.preSkew(.5f, 0, source.width() / 2, source.height() / 2);
+    matrix.preSkew(.5f, 0, image->width() / 2, image->height() / 2);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_preSkew_2.cpp b/docs/examples/Matrix_preSkew_2.cpp
index 1819caf..c3882df 100644
--- a/docs/examples/Matrix_preSkew_2.cpp
+++ b/docs/examples/Matrix_preSkew_2.cpp
@@ -6,10 +6,10 @@
 void draw(SkCanvas* canvas) {
     SkMatrix matrix;
     SkPoint bitmapBounds[4], perspect[4] = {{50, 10}, {180, 40}, {236, 176}, {10, 206}};
-    SkRect::Make(source.bounds()).toQuad(bitmapBounds);
+    SkRect::Make(image->bounds()).toQuad(bitmapBounds);
     matrix.setPolyToPoly(bitmapBounds, perspect, 4);
     matrix.preSkew(.5f, 0);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_set9.cpp b/docs/examples/Matrix_set9.cpp
index 8d117d0..f726698 100644
--- a/docs/examples/Matrix_set9.cpp
+++ b/docs/examples/Matrix_set9.cpp
@@ -8,6 +8,6 @@
     SkScalar buffer[9] = {4, 0, 3,    0, 5, 4,     0, 0, 1};
     m.set9(buffer);
     canvas->concat(m);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_setConcat.cpp b/docs/examples/Matrix_setConcat.cpp
index c877d3d..2c15ee4 100644
--- a/docs/examples/Matrix_setConcat.cpp
+++ b/docs/examples/Matrix_setConcat.cpp
@@ -11,6 +11,6 @@
     matrix2.setPolyToPoly(perspect, bitmapBounds, 4);
     matrix.setConcat(matrix, matrix2);
     canvas->concat(matrix);
-    canvas->drawBitmap(source, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Matrix_setPerspX.cpp b/docs/examples/Matrix_setPerspX.cpp
index d9b6b9a..5a86f8a 100644
--- a/docs/examples/Matrix_setPerspX.cpp
+++ b/docs/examples/Matrix_setPerspX.cpp
@@ -10,7 +10,7 @@
         matrix.setPerspX(perspX);
         canvas->save();
         canvas->concat(matrix);
-        canvas->drawBitmap(source, 0, 0);
+        canvas->drawImage(image, 0, 0);
         canvas->restore();
         canvas->translate(64, 64);
     }
diff --git a/docs/examples/Matrix_setPerspY.cpp b/docs/examples/Matrix_setPerspY.cpp
index 0542e4a..fb75faa 100644
--- a/docs/examples/Matrix_setPerspY.cpp
+++ b/docs/examples/Matrix_setPerspY.cpp
@@ -10,7 +10,7 @@
         matrix.setPerspY(perspX);
         canvas->save();
         canvas->concat(matrix);
-        canvas->drawBitmap(source, 0, 0);
+        canvas->drawImage(image, 0, 0);
         canvas->restore();
         canvas->translate(64, 64);
     }
diff --git a/docs/examples/Paint_setStyle.cpp b/docs/examples/Paint_setStyle.cpp
index 0f8dba4..64ffab3 100644
--- a/docs/examples/Paint_setStyle.cpp
+++ b/docs/examples/Paint_setStyle.cpp
@@ -25,7 +25,7 @@
         canvas->drawLine(10, 10, 60, 60, paint);
         canvas->drawRect({80, 10, 130, 60}, paint);
         canvas->drawRegion(region, paint);
-        canvas->drawBitmap(bitmap, 200, 10, &paint);
+        canvas->drawImage(bitmap.asImage(), 200, 10, &paint);
         canvas->translate(0, 80);
     }
 }
diff --git a/docs/examples/Pixmap_erase.cpp b/docs/examples/Pixmap_erase.cpp
index 876ef3c..498bb24 100644
--- a/docs/examples/Pixmap_erase.cpp
+++ b/docs/examples/Pixmap_erase.cpp
@@ -12,6 +12,6 @@
     SkBitmap bitmap;
     canvas->scale(20, 20);
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_erase_2.cpp b/docs/examples/Pixmap_erase_2.cpp
index 4e029ae..54b2779 100644
--- a/docs/examples/Pixmap_erase_2.cpp
+++ b/docs/examples/Pixmap_erase_2.cpp
@@ -11,6 +11,6 @@
     SkBitmap bitmap;
     canvas->scale(20, 20);
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_erase_3.cpp b/docs/examples/Pixmap_erase_3.cpp
index ec2d8e0..6b2b939 100644
--- a/docs/examples/Pixmap_erase_3.cpp
+++ b/docs/examples/Pixmap_erase_3.cpp
@@ -14,6 +14,6 @@
     SkBitmap bitmap;
     canvas->scale(20, 20);
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(image, 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_extractSubset.cpp b/docs/examples/Pixmap_extractSubset.cpp
index 51e6ed4..9489824 100644
--- a/docs/examples/Pixmap_extractSubset.cpp
+++ b/docs/examples/Pixmap_extractSubset.cpp
@@ -13,7 +13,7 @@
     if (pixmap.extractSubset(&inset, {128, 128, 512, 512})) {
         SkBitmap bitmap;
         bitmap.installPixels(inset);
-        canvas->drawBitmap(bitmap, 0, 0);
+        canvas->drawImage(bitmap.asImage(), 0, 0);
     }
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_readPixels.cpp b/docs/examples/Pixmap_readPixels.cpp
index fdbbdc5..f8446c8 100644
--- a/docs/examples/Pixmap_readPixels.cpp
+++ b/docs/examples/Pixmap_readPixels.cpp
@@ -19,13 +19,13 @@
     bitmap.installPixels(srcPixmap);
     SkCanvas srcCanvas(bitmap);
     srcCanvas.drawRect(SkRect::MakeWH(width, height), paint);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
     std::vector<int32_t> dstPixels;
     dstPixels.resize(height * width * 2);
     SkImageInfo dstInfo = srcInfo.makeColorType(kARGB_4444_SkColorType);
     srcPixmap.readPixels(dstInfo, &dstPixels.front(), width * 2);
     SkPixmap dstPixmap(dstInfo, &dstPixels.front(), width * 2);
     bitmap.installPixels(dstPixmap);
-    canvas->drawBitmap(bitmap, 0, 128);
+    canvas->drawImage(bitmap.asImage(), 0, 128);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_readPixels_2.cpp b/docs/examples/Pixmap_readPixels_2.cpp
index f08d8f0..24dcf75 100644
--- a/docs/examples/Pixmap_readPixels_2.cpp
+++ b/docs/examples/Pixmap_readPixels_2.cpp
@@ -18,7 +18,7 @@
         SkPixmap dstmap(info, &dstPixels.front(), rowBytes);
         bitmap.installPixels(dstmap);
         canvas->translate(32, 32);
-        canvas->drawBitmap(bitmap, 0, 0);
+        canvas->drawImage(bitmap.asImage(), 0, 0);
     }
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_readPixels_3.cpp b/docs/examples/Pixmap_readPixels_3.cpp
index 45779e6..f17439c 100644
--- a/docs/examples/Pixmap_readPixels_3.cpp
+++ b/docs/examples/Pixmap_readPixels_3.cpp
@@ -18,7 +18,7 @@
         SkBitmap bitmap;
         bitmap.installPixels(dstmap);
         canvas->translate(32, 32);
-        canvas->drawBitmap(bitmap, 0, 0);
+        canvas->drawImage(bitmap.asImage(), 0, 0);
     }
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_readPixels_4.cpp b/docs/examples/Pixmap_readPixels_4.cpp
index 7645ef4..3d7fd85 100644
--- a/docs/examples/Pixmap_readPixels_4.cpp
+++ b/docs/examples/Pixmap_readPixels_4.cpp
@@ -18,7 +18,7 @@
         SkBitmap bitmap;
         bitmap.installPixels(dstmap);
         canvas->translate(32, 32);
-        canvas->drawBitmap(bitmap, 0, 0);
+        canvas->drawImage(bitmap.asImage(), 0, 0);
     }
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_reset_2.cpp b/docs/examples/Pixmap_reset_2.cpp
index b143485..8249faa 100644
--- a/docs/examples/Pixmap_reset_2.cpp
+++ b/docs/examples/Pixmap_reset_2.cpp
@@ -15,7 +15,7 @@
                 image->alphaType()), (const void*) &pixels.front(), image->width() * 4);
         SkBitmap bitmap;
         bitmap.installPixels(pixmap);
-        canvas->drawBitmap(bitmap, x, 0);
+        canvas->drawImage(bitmap.asImage(), x, 0);
         x += 128;
     }
 }
diff --git a/docs/examples/Pixmap_scalePixels.cpp b/docs/examples/Pixmap_scalePixels.cpp
index fa7ccf3..861498c 100644
--- a/docs/examples/Pixmap_scalePixels.cpp
+++ b/docs/examples/Pixmap_scalePixels.cpp
@@ -21,7 +21,7 @@
         SkBitmap bitmap;
         bitmap.installPixels(dstmap);
         canvas->translate(32, 32);
-        canvas->drawBitmap(bitmap, 0, 0);
+        canvas->drawImage(bitmap.asImage(), 0, 0);
     }
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_writable_addr16.cpp b/docs/examples/Pixmap_writable_addr16.cpp
index 29d9dcf..b3c50d3e 100644
--- a/docs/examples/Pixmap_writable_addr16.cpp
+++ b/docs/examples/Pixmap_writable_addr16.cpp
@@ -14,9 +14,9 @@
     SkBitmap bitmap;
     bitmap.installPixels(pixmap);
     canvas->scale(10, 10);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
     *pixmap.writable_addr16(2, 2) = 0x000F;
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 10, 0);
+    canvas->drawImage(bitmap.asImage(), 10, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_writable_addr32.cpp b/docs/examples/Pixmap_writable_addr32.cpp
index 41886de..81d51df 100644
--- a/docs/examples/Pixmap_writable_addr32.cpp
+++ b/docs/examples/Pixmap_writable_addr32.cpp
@@ -19,6 +19,6 @@
     }
     SkBitmap bitmap;
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_writable_addr64.cpp b/docs/examples/Pixmap_writable_addr64.cpp
index 779da21..e532496 100644
--- a/docs/examples/Pixmap_writable_addr64.cpp
+++ b/docs/examples/Pixmap_writable_addr64.cpp
@@ -12,9 +12,9 @@
     SkBitmap bitmap;
     canvas->scale(10, 10);
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
     *pixmap.writable_addr64(1, 1) |= 0x00ff000000000000LL;
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 10, 0);
+    canvas->drawImage(bitmap.asImage(), 10, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_writable_addr8.cpp b/docs/examples/Pixmap_writable_addr8.cpp
index 8c7aa38..5b5ce85 100644
--- a/docs/examples/Pixmap_writable_addr8.cpp
+++ b/docs/examples/Pixmap_writable_addr8.cpp
@@ -14,9 +14,9 @@
     SkBitmap bitmap;
     bitmap.installPixels(pixmap);
     canvas->scale(10, 10);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
     *pixmap.writable_addr8(2, 2) = 0;
 //  bitmap.installPixels(pixmap);      // uncomment to fix on GPU
-    canvas->drawBitmap(bitmap, 10, 0);
+    canvas->drawImage(bitmap.asImage(), 10, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Pixmap_writable_addrF16.cpp b/docs/examples/Pixmap_writable_addrF16.cpp
index 7962f30..c1c5d27 100644
--- a/docs/examples/Pixmap_writable_addrF16.cpp
+++ b/docs/examples/Pixmap_writable_addrF16.cpp
@@ -14,12 +14,12 @@
     SkBitmap bitmap;
     canvas->scale(20, 20);
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
     uint16_t* pixel2 = pixmap.writable_addrF16(0, 1);
     for (int i = 0; i < 4; ++i) {
         pixel2[i] = storage[0][i];
     }
     bitmap.installPixels(pixmap);
-    canvas->drawBitmap(bitmap, 4, 0);
+    canvas->drawImage(bitmap.asImage(), 4, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/Surface_draw.cpp b/docs/examples/Surface_draw.cpp
index 4808836..da89e96 100644
--- a/docs/examples/Surface_draw.cpp
+++ b/docs/examples/Surface_draw.cpp
@@ -13,7 +13,7 @@
     if (big->peekPixels(&pixmap)) {
         SkBitmap bigBits;
         bigBits.installPixels(pixmap);
-        canvas->drawBitmap(bigBits, 0, 0);
+        canvas->drawImage(bigBits.asImage(), 0, 0);
     }
 }
 }  // END FIDDLE
diff --git a/docs/examples/Surface_makeSurface.cpp b/docs/examples/Surface_makeSurface.cpp
index 8b994b6..293f691 100644
--- a/docs/examples/Surface_makeSurface.cpp
+++ b/docs/examples/Surface_makeSurface.cpp
@@ -12,12 +12,12 @@
     if (big->peekPixels(&pixmap)) {
         SkBitmap bigBits;
         bigBits.installPixels(pixmap);
-        canvas->drawBitmap(bigBits, 0, 0);
+        canvas->drawImage(bigBits.asImage(), 0, 0);
     }
     if (lil->peekPixels(&pixmap)) {
         SkBitmap lilBits;
         lilBits.installPixels(pixmap);
-        canvas->drawBitmap(lilBits, 64, 64);
+        canvas->drawImage(lilBits.asImage(), 64, 64);
     }
 }
 }  // END FIDDLE
diff --git a/docs/examples/Surface_readPixels_3.cpp b/docs/examples/Surface_readPixels_3.cpp
index 5876978..ce43994 100644
--- a/docs/examples/Surface_readPixels_3.cpp
+++ b/docs/examples/Surface_readPixels_3.cpp
@@ -18,6 +18,6 @@
             surf->readPixels(bitmap, x, y);
         }
     }
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
 }
 }  // END FIDDLE
diff --git a/docs/examples/blurbug.cpp b/docs/examples/blurbug.cpp
index 4babf82..6d26f09 100644
--- a/docs/examples/blurbug.cpp
+++ b/docs/examples/blurbug.cpp
@@ -17,7 +17,9 @@
     paint.setMaskFilter(SkMaskFilter::MakeBlur(kSolid_SkBlurStyle, 3));
     for (auto color : {SK_ColorRED, SK_ColorBLUE, 0xFF007F00}) {
         paint.setColor(color);
-        canvas->drawBitmapRect(bitmap, SkRect::MakeWH(8, 8), SkRect::MakeWH(32, 32), &paint);
+        canvas->drawImageRect(bitmap.asImage(), SkRect::MakeWH(8, 8), SkRect::MakeWH(32, 32),
+                              SkSamplingOptions(), &paint,
+                              SkCanvas::kStrict_SrcRectConstraint);
         canvas->translate(48, 0);
     }
 }
diff --git a/docs/examples/dither1.cpp b/docs/examples/dither1.cpp
index 6745aec..bfd55f4 100644
--- a/docs/examples/dither1.cpp
+++ b/docs/examples/dither1.cpp
@@ -19,7 +19,7 @@
         }
     }
     canvas->scale(8, 8);
-    canvas->drawBitmap(bm16, 0, 0);
+    canvas->drawImage(bm16.asImage(), 0, 0);
 }
 
 }  // END FIDDLE
diff --git a/docs/examples/draw_a8_bitmap.cpp b/docs/examples/draw_a8_bitmap.cpp
index 6a45ca1..56b11d2 100644
--- a/docs/examples/draw_a8_bitmap.cpp
+++ b/docs/examples/draw_a8_bitmap.cpp
@@ -13,6 +13,6 @@
     SkPaint paint;
     paint.setColor(0xFF00FF00);
     canvas->clear(0xFF000000);
-    canvas->drawBitmap(bitmap, 0, 0, &paint);
+    canvas->drawImage(bitmap.asImage(), 0, 0, SkSamplingOptions(), &paint);
 }
 }  // END FIDDLE
diff --git a/docs/examples/gpu8888diff.cpp b/docs/examples/gpu8888diff.cpp
index 1854da5..73bacce 100644
--- a/docs/examples/gpu8888diff.cpp
+++ b/docs/examples/gpu8888diff.cpp
@@ -10,9 +10,9 @@
     bitmap.allocPixels(imageInfo);
     SkCanvas offscreen(bitmap);
     offscreen.clear(SK_ColorGREEN);
-    canvas->drawBitmap(bitmap, 0, 0);
+    canvas->drawImage(bitmap.asImage(), 0, 0);
     offscreen.clear(SK_ColorGRAY);
-    canvas->drawBitmap(bitmap, 2, 2);
+    canvas->drawImage(bitmap.asImage(), 2, 2);
     auto pack8888 = [](unsigned a, unsigned r, unsigned g, unsigned b) -> uint32_t {
         return (a << 24) | (b << 16) | (g << 8) | (r << 0);
     };
@@ -22,11 +22,11 @@
                            pack8888(0xFF, 0x0, 0x0, 0x099), pack8888(0xFF, 0x0, 0x0, 0x055)};
     SkPixmap redPixmap(imageInfo, &red8888, 8);
     if (bitmap.writePixels(redPixmap, 0, 0)) {
-        canvas->drawBitmap(bitmap, 4, 4);
+        canvas->drawImage(bitmap.asImage(), 4, 4);
     }
     SkPixmap bluePixmap(imageInfo, &blue8888, 8);
     if (bitmap.writePixels(bluePixmap, 0, 0)) {
-        canvas->drawBitmap(bitmap, 6, 6);
+        canvas->drawImage(bitmap.asImage(), 6, 6);
     }
 }
 }  // END FIDDLE
diff --git a/docs/examples/kLow_SkFilterQuality.cpp b/docs/examples/kLow_SkFilterQuality.cpp
deleted file mode 100644
index 119c54e..0000000
--- a/docs/examples/kLow_SkFilterQuality.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2020 Google LLC.
-// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
-#include "tools/fiddle/examples.h"
-REG_FIDDLE(kLow_SkFilterQuality, 192, 192, false, 0) {
-void draw(SkCanvas* canvas) {
-    static const uint32_t pixels[9] = {
-            0xFFFF0000, 0xFFFFFFFF, 0xFF00FF00, 0xFFFFFFFF, 0xFF000000,
-            0xFFFFFFFF, 0xFF808080, 0xFFFFFFFF, 0xFF0000FF,
-    };
-    SkBitmap bm;
-    bm.installPixels(SkImageInfo::MakeN32Premul(3, 3), (void*)pixels, 12);
-    bm.setImmutable();
-    SkPaint paint;
-    paint.setFilterQuality(kLow_SkFilterQuality);
-    // paint.setMaskFilter(SkBlurMaskFilter::Make(
-    //            kNormal_SkBlurStyle, 3.375, SkBlurMaskFilter::kHighQuality_BlurFlag));
-    canvas->drawBitmapRect(bm, {64, 64, 128, 128}, &paint);
-}
-}  // END FIDDLE
diff --git a/docs/examples/no_gpu_blur.cpp b/docs/examples/no_gpu_blur.cpp
index b7d60df..21aa6bc 100644
--- a/docs/examples/no_gpu_blur.cpp
+++ b/docs/examples/no_gpu_blur.cpp
@@ -18,7 +18,7 @@
     SkIPoint offset;
     bitmap.extractAlpha(&alpha, &paint, nullptr, &offset);
     paint.setColor(SK_ColorRED);
-    canvas->drawBitmap(bitmap, 0, -offset.fY, &paint);
-    canvas->drawBitmap(alpha, 100 + offset.fX, 0, &paint);
+    canvas->drawImage(bitmap.asImage(), 0, -offset.fY, SkSamplingOptions(), &paint);
+    canvas->drawImage(alpha.asImage(), 100 + offset.fX, 0, SkSamplingOptions(), &paint);
 }
 }  // END FIDDLE
diff --git a/docs/examples/setimagefilter.cpp b/docs/examples/setimagefilter.cpp
index f3638f5..589a0ed 100644
--- a/docs/examples/setimagefilter.cpp
+++ b/docs/examples/setimagefilter.cpp
@@ -14,7 +14,7 @@
     offscreen.drawString("e", 20, 70, font, paint);
     paint.setImageFilter(SkImageFilters::PointLitDiffuse(
             SkPoint3::Make(80, 100, 10), SK_ColorWHITE, 1, 2, nullptr, nullptr));
-    canvas->drawBitmap(bitmap, 0, 0, &paint);
+    canvas->drawImage(bitmap.asImage(), 0, 0, SkSamplingOptions(), &paint);
 }
 
 }  // END FIDDLE
diff --git a/docs/examples/subset_example.cpp b/docs/examples/subset_example.cpp
index 52cc43c..96fbda0 100644
--- a/docs/examples/subset_example.cpp
+++ b/docs/examples/subset_example.cpp
@@ -21,7 +21,7 @@
             int y = shuffle[(N * i) + j] / N;
             SkBitmap subset;
             source.extractSubset(&subset, SkIRect::MakeXYWH(w * x, h * y, w, h));
-            canvas->drawBitmap(subset, w * i, h * j);
+            canvas->drawImage(subset.asImage(), w * i, h * j);
         }
     }
 }