summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mike Reed <reed@google.com> 2021-01-26 20:31:20 -0500
committer Mike Reed <reed@google.com> 2021-01-28 16:27:11 +0000
commit1b3dcfc103389c3f2426556ec729e47a8ff77403 (patch)
treec30167130dee6a2acf05510ee9a71bdeb09bf0aa
parentd4c000581a2e39a0c0afed04b15945befb887f7b (diff)
Pass filtering to drawLattice
Test: make Bug:178700363 Merged-In: I14541a21abb885c5291ca839d72ed6434c9accd1 Change-Id: I14541a21abb885c5291ca839d72ed6434c9accd1
-rw-r--r--libs/hwui/SkiaCanvas.cpp5
-rw-r--r--libs/hwui/canvas/CanvasOps.h5
-rw-r--r--libs/hwui/tests/unit/CanvasOpTests.cpp1
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{}
}
);