Modernize calls to drawImage

1. drawBitmap --> drawImage
2. drawImage now always requires sampling parameter

Bug:178700363

Test: make

Change-Id: I96f610a180b3774ba955cc334949fd62b1cf4d69
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 1a8d9eb..8fddf71 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -565,7 +565,8 @@
 void SkiaCanvas::drawBitmap(Bitmap& bitmap, float left, float top, const Paint* paint) {
     auto image = bitmap.makeImage();
     apply_looper(paint, [&](const SkPaint& p) {
-        mCanvas->drawImage(image, left, top, &p);
+        auto sampling = SkSamplingOptions(p.getFilterQuality());
+        mCanvas->drawImage(image, left, top, sampling, &p);
     });
 }
 
@@ -574,7 +575,8 @@
     SkAutoCanvasRestore acr(mCanvas, true);
     mCanvas->concat(matrix);
     apply_looper(paint, [&](const SkPaint& p) {
-        mCanvas->drawImage(image, 0, 0, &p);
+        auto sampling = SkSamplingOptions(p.getFilterQuality());
+        mCanvas->drawImage(image, 0, 0, sampling, &p);
     });
 }
 
@@ -586,10 +588,17 @@
     SkRect dstRect = SkRect::MakeLTRB(dstLeft, dstTop, dstRight, dstBottom);
 
     apply_looper(paint, [&](const SkPaint& p) {
-        mCanvas->drawImageRect(image, srcRect, dstRect, &p, SkCanvas::kFast_SrcRectConstraint);
+        auto sampling = SkSamplingOptions(p.getFilterQuality());
+        mCanvas->drawImageRect(image, srcRect, dstRect, sampling, &p,
+                               SkCanvas::kFast_SrcRectConstraint);
     });
 }
 
+static SkFilterMode paintToFilter(const Paint* paint) {
+    return paint && paint->isFilterBitmap() ? SkFilterMode::kLinear
+                                            : SkFilterMode::kNearest;
+}
+
 void SkiaCanvas::drawBitmapMesh(Bitmap& bitmap, int meshWidth, int meshHeight,
                                 const float* vertices, const int* colors, const Paint* paint) {
     const int ptCount = (meshWidth + 1) * (meshHeight + 1);
@@ -664,18 +673,25 @@
     }
 #endif
 
+    auto image = bitmap.makeImage();
+
     // cons-up a shader for the bitmap
     Paint pnt;
     if (paint) {
         pnt = *paint;
     }
-    SkSamplingOptions sampling(pnt.isFilterBitmap() ? SkFilterMode::kLinear
-                                                    : SkFilterMode::kNearest,
-                               SkMipmapMode::kNone);
-    pnt.setShader(bitmap.makeImage()->makeShader(sampling));
+    SkSamplingOptions sampling(paintToFilter(&pnt));
+    pnt.setShader(image->makeShader(sampling));
+
     auto v = builder.detach();
     apply_looper(&pnt, [&](const SkPaint& p) {
-        mCanvas->drawVertices(v, SkBlendMode::kModulate, p);
+        SkPaint copy(p);
+        auto s = SkSamplingOptions(p.getFilterQuality());
+        if (s != sampling) {
+            // apply_looper changed the quality?
+            copy.setShader(image->makeShader(s));
+        }
+        mCanvas->drawVertices(v, SkBlendMode::kModulate, copy);
     });
 }
 
@@ -700,13 +716,11 @@
         NinePatchUtils::SetLatticeFlags(&lattice, flags.get(), numFlags, chunk, colors.get());
     }
 
-    SkFilterMode filter = paint && paint->isFilterBitmap() ? SkFilterMode::kLinear
-                                                           : SkFilterMode::kNearest;
-
     lattice.fBounds = nullptr;
     SkRect dst = SkRect::MakeLTRB(dstLeft, dstTop, dstRight, dstBottom);
     auto image = bitmap.makeImage();
     apply_looper(paint, [&](const SkPaint& p) {
+        auto filter = SkSamplingOptions(p.getFilterQuality()).filter;
         mCanvas->drawImageLattice(image.get(), lattice, dst, filter, &p);
     });
 }