diff options
author | 2021-01-26 20:31:20 -0500 | |
---|---|---|
committer | 2021-01-28 16:27:11 +0000 | |
commit | 1b3dcfc103389c3f2426556ec729e47a8ff77403 (patch) | |
tree | c30167130dee6a2acf05510ee9a71bdeb09bf0aa | |
parent | d4c000581a2e39a0c0afed04b15945befb887f7b (diff) |
Pass filtering to drawLattice
Test: make
Bug:178700363
Merged-In: I14541a21abb885c5291ca839d72ed6434c9accd1
Change-Id: I14541a21abb885c5291ca839d72ed6434c9accd1
-rw-r--r-- | libs/hwui/SkiaCanvas.cpp | 5 | ||||
-rw-r--r-- | libs/hwui/canvas/CanvasOps.h | 5 | ||||
-rw-r--r-- | libs/hwui/tests/unit/CanvasOpTests.cpp | 1 |
3 files changed, 9 insertions, 2 deletions
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 1ebc48900349..1a8d9eb1f74f 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -700,11 +700,14 @@ void SkiaCanvas::drawNinePatch(Bitmap& bitmap, const Res_png_9patch& chunk, floa 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) { - mCanvas->drawImageLattice(image.get(), lattice, dst, &p); + mCanvas->drawImageLattice(image.get(), lattice, dst, filter, &p); }); } diff --git a/libs/hwui/canvas/CanvasOps.h b/libs/hwui/canvas/CanvasOps.h index fa0c45b5221c..cceba59cc639 100644 --- a/libs/hwui/canvas/CanvasOps.h +++ b/libs/hwui/canvas/CanvasOps.h @@ -408,21 +408,24 @@ struct CanvasOp<CanvasOpType::DrawImageLattice> { const sk_sp<Bitmap>& bitmap, SkRect dst, SkCanvas::Lattice lattice, + SkFilterMode filter, SkPaint paint ): dst(dst), lattice(lattice), + filter(filter), bitmap(bitmap), image(bitmap->makeImage()), paint(std::move(paint)) {} SkRect dst; SkCanvas::Lattice lattice; + SkFilterMode filter; const sk_sp<Bitmap> bitmap; const sk_sp<SkImage> image; SkPaint paint; void draw(SkCanvas* canvas) const { - canvas->drawImageLattice(image.get(), lattice, dst, &paint); + canvas->drawImageLattice(image.get(), lattice, dst, filter, &paint); } ASSERT_DRAWABLE() }; diff --git a/libs/hwui/tests/unit/CanvasOpTests.cpp b/libs/hwui/tests/unit/CanvasOpTests.cpp index a09e7429b4be..c9e8d808f995 100644 --- a/libs/hwui/tests/unit/CanvasOpTests.cpp +++ b/libs/hwui/tests/unit/CanvasOpTests.cpp @@ -528,6 +528,7 @@ TEST(CanvasOp, simpleDrawImageLattice) { bitmap, SkRect::MakeWH(5, 1), lattice, + SkFilterMode::kNearest, SkPaint{} } ); |