Merge "Pass filtering to drawLattice" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-01-28 16:36:25 +00:00
committed by Android (Google) Code Review
3 changed files with 9 additions and 2 deletions

View File

@@ -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);
});
}

View File

@@ -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()
};

View File

@@ -528,6 +528,7 @@ TEST(CanvasOp, simpleDrawImageLattice) {
bitmap,
SkRect::MakeWH(5, 1),
lattice,
SkFilterMode::kNearest,
SkPaint{}
}
);