From fc42a99ea5712883c9872d34a523d972c26c9d6f Mon Sep 17 00:00:00 2001 From: Nader Jawad Date: Wed, 29 Jul 2020 22:48:59 -0700 Subject: Create wrapper around Shader native implementation Created Shader classes to wrap existing shader classes in the framework in order to handle creation of either an SkShader or SkImageFilter. Updated native Paint implementation to optionally configure the currently configured SkShader or SkImageFilter Bug: 143468037 Test: re-ran CtsGraphicsTestCases and CtsUiRenderingTestCases Change-Id: I7663b92766c912ab3866cf4e39b268f6dcf5d8e2 --- libs/hwui/SkiaCanvas.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libs/hwui/SkiaCanvas.cpp') diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 242b8b0d139e..cfba5d4f6aa2 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -42,6 +42,8 @@ #include #include +#include + #include #include #include @@ -49,6 +51,7 @@ namespace android { using uirenderer::PaintUtils; +using uirenderer::BitmapShader; Canvas* Canvas::create_canvas(const SkBitmap& bitmap) { return new SkiaCanvas(bitmap); @@ -681,7 +684,9 @@ void SkiaCanvas::drawBitmapMesh(Bitmap& bitmap, int meshWidth, int meshHeight, if (paint) { pnt = *paint; } - pnt.setShader(bitmap.makeImage()->makeShader()); + + pnt.setShader(sk_ref_sp(new BitmapShader( + bitmap.makeImage(), SkTileMode::kClamp, SkTileMode::kClamp, nullptr))); auto v = builder.detach(); apply_looper(&pnt, [&](const SkPaint& p) { mCanvas->drawVertices(v, SkBlendMode::kModulate, p); -- cgit v1.2.3-59-g8ed1b