Loading core/jni/android/graphics/Shader.cpp +10 −6 Original line number Diff line number Diff line #include "GraphicsJNI.h" #include "SkGradientShader.h" #include "SkImagePriv.h" #include "SkShader.h" #include "SkXfermode.h" #include "core_jni_helpers.h" Loading Loading @@ -94,12 +95,15 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jobject jbitmap, // we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility. GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); } SkShader* s = SkShader::CreateBitmapShader(bitmap, sk_sp<SkShader> s = SkMakeBitmapShader(bitmap, (SkShader::TileMode)tileModeX, (SkShader::TileMode)tileModeY); (SkShader::TileMode)tileModeY, nullptr, kNever_SkCopyPixelsMode, nullptr); ThrowIAE_IfNull(env, s); return reinterpret_cast<jlong>(s); ThrowIAE_IfNull(env, s.get()); return reinterpret_cast<jlong>(s.release()); } /////////////////////////////////////////////////////////////////////////////////////////////// Loading libs/hwui/SkiaCanvas.cpp +8 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <SkDrawFilter.h> #include <SkGraphics.h> #include <SkImage.h> #include <SkImagePriv.h> #include <SkRSXform.h> #include <SkShader.h> #include <SkTemplates.h> Loading Loading @@ -594,10 +595,13 @@ void SkiaCanvas::drawBitmapMesh(const SkBitmap& bitmap, int meshWidth, int meshH if (paint) { tmpPaint = *paint; } SkShader* shader = SkShader::CreateBitmapShader(bitmap, sk_sp<SkShader> shader = SkMakeBitmapShader(bitmap, SkShader::kClamp_TileMode, SkShader::kClamp_TileMode); SkSafeUnref(tmpPaint.setShader(shader)); SkShader::kClamp_TileMode, nullptr, kNever_SkCopyPixelsMode, nullptr); tmpPaint.setShader(std::move(shader)); mCanvas->drawVertices(SkCanvas::kTriangles_VertexMode, ptCount, (SkPoint*)vertices, texs, (const SkColor*)colors, NULL, indices, Loading libs/hwui/tests/unit/RecordingCanvasTests.cpp +16 −10 Original line number Diff line number Diff line Loading @@ -740,10 +740,13 @@ TEST(RecordingCanvas, refBitmapInShader_bitmapShader) { SkBitmap bitmap = TestUtils::createSkBitmap(100, 100); auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 100, [&bitmap](RecordingCanvas& canvas) { SkPaint paint; SkAutoTUnref<SkShader> shader(SkShader::CreateBitmapShader(bitmap, sk_sp<SkShader> shader = SkMakeBitmapShader(bitmap, SkShader::TileMode::kClamp_TileMode, SkShader::TileMode::kClamp_TileMode)); paint.setShader(shader); SkShader::TileMode::kClamp_TileMode, nullptr, kNever_SkCopyPixelsMode, nullptr); paint.setShader(std::move(shader)); canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint); }); auto& bitmaps = dl->getBitmapResources(); Loading @@ -754,21 +757,24 @@ TEST(RecordingCanvas, refBitmapInShader_composeShader) { SkBitmap bitmap = TestUtils::createSkBitmap(100, 100); auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 100, [&bitmap](RecordingCanvas& canvas) { SkPaint paint; SkAutoTUnref<SkShader> shader1(SkShader::CreateBitmapShader(bitmap, sk_sp<SkShader> shader1 = SkMakeBitmapShader(bitmap, SkShader::TileMode::kClamp_TileMode, SkShader::TileMode::kClamp_TileMode, SkShader::TileMode::kClamp_TileMode)); nullptr, kNever_SkCopyPixelsMode, nullptr); SkPoint center; center.set(50, 50); SkColor colors[2]; colors[0] = Color::Black; colors[1] = Color::White; SkAutoTUnref<SkShader> shader2(SkGradientShader::CreateRadial(center, 50, colors, nullptr, 2, SkShader::TileMode::kRepeat_TileMode)); sk_sp<SkShader> shader2 = SkGradientShader::MakeRadial(center, 50, colors, nullptr, 2, SkShader::TileMode::kRepeat_TileMode); SkAutoTUnref<SkShader> composeShader(SkShader::CreateComposeShader(shader1, shader2, SkXfermode::Mode::kMultiply_Mode)); paint.setShader(composeShader); sk_sp<SkShader> composeShader = SkShader::MakeComposeShader(std::move(shader1), std::move(shader2), SkXfermode::Mode::kMultiply_Mode); paint.setShader(std::move(composeShader)); canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint); }); auto& bitmaps = dl->getBitmapResources(); Loading libs/hwui/tests/unit/SkiaBehaviorTests.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -17,8 +17,9 @@ #include "tests/common/TestUtils.h" #include <gtest/gtest.h> #include <SkShader.h> #include <SkColorMatrixFilter.h> #include <SkImagePriv.h> #include <SkShader.h> using namespace android; using namespace android::uirenderer; Loading @@ -29,10 +30,13 @@ using namespace android::uirenderer; */ TEST(SkiaBehavior, CreateBitmapShader1x1) { SkBitmap origBitmap = TestUtils::createSkBitmap(1, 1); SkAutoTUnref<SkShader> s(SkShader::CreateBitmapShader( sk_sp<SkShader> s = SkMakeBitmapShader( origBitmap, SkShader::kClamp_TileMode, SkShader::kRepeat_TileMode)); SkShader::kRepeat_TileMode, nullptr, kNever_SkCopyPixelsMode, nullptr); SkBitmap bitmap; SkShader::TileMode xy[2]; Loading Loading
core/jni/android/graphics/Shader.cpp +10 −6 Original line number Diff line number Diff line #include "GraphicsJNI.h" #include "SkGradientShader.h" #include "SkImagePriv.h" #include "SkShader.h" #include "SkXfermode.h" #include "core_jni_helpers.h" Loading Loading @@ -94,12 +95,15 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jobject jbitmap, // we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility. GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); } SkShader* s = SkShader::CreateBitmapShader(bitmap, sk_sp<SkShader> s = SkMakeBitmapShader(bitmap, (SkShader::TileMode)tileModeX, (SkShader::TileMode)tileModeY); (SkShader::TileMode)tileModeY, nullptr, kNever_SkCopyPixelsMode, nullptr); ThrowIAE_IfNull(env, s); return reinterpret_cast<jlong>(s); ThrowIAE_IfNull(env, s.get()); return reinterpret_cast<jlong>(s.release()); } /////////////////////////////////////////////////////////////////////////////////////////////// Loading
libs/hwui/SkiaCanvas.cpp +8 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include <SkDrawFilter.h> #include <SkGraphics.h> #include <SkImage.h> #include <SkImagePriv.h> #include <SkRSXform.h> #include <SkShader.h> #include <SkTemplates.h> Loading Loading @@ -594,10 +595,13 @@ void SkiaCanvas::drawBitmapMesh(const SkBitmap& bitmap, int meshWidth, int meshH if (paint) { tmpPaint = *paint; } SkShader* shader = SkShader::CreateBitmapShader(bitmap, sk_sp<SkShader> shader = SkMakeBitmapShader(bitmap, SkShader::kClamp_TileMode, SkShader::kClamp_TileMode); SkSafeUnref(tmpPaint.setShader(shader)); SkShader::kClamp_TileMode, nullptr, kNever_SkCopyPixelsMode, nullptr); tmpPaint.setShader(std::move(shader)); mCanvas->drawVertices(SkCanvas::kTriangles_VertexMode, ptCount, (SkPoint*)vertices, texs, (const SkColor*)colors, NULL, indices, Loading
libs/hwui/tests/unit/RecordingCanvasTests.cpp +16 −10 Original line number Diff line number Diff line Loading @@ -740,10 +740,13 @@ TEST(RecordingCanvas, refBitmapInShader_bitmapShader) { SkBitmap bitmap = TestUtils::createSkBitmap(100, 100); auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 100, [&bitmap](RecordingCanvas& canvas) { SkPaint paint; SkAutoTUnref<SkShader> shader(SkShader::CreateBitmapShader(bitmap, sk_sp<SkShader> shader = SkMakeBitmapShader(bitmap, SkShader::TileMode::kClamp_TileMode, SkShader::TileMode::kClamp_TileMode)); paint.setShader(shader); SkShader::TileMode::kClamp_TileMode, nullptr, kNever_SkCopyPixelsMode, nullptr); paint.setShader(std::move(shader)); canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint); }); auto& bitmaps = dl->getBitmapResources(); Loading @@ -754,21 +757,24 @@ TEST(RecordingCanvas, refBitmapInShader_composeShader) { SkBitmap bitmap = TestUtils::createSkBitmap(100, 100); auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 100, [&bitmap](RecordingCanvas& canvas) { SkPaint paint; SkAutoTUnref<SkShader> shader1(SkShader::CreateBitmapShader(bitmap, sk_sp<SkShader> shader1 = SkMakeBitmapShader(bitmap, SkShader::TileMode::kClamp_TileMode, SkShader::TileMode::kClamp_TileMode, SkShader::TileMode::kClamp_TileMode)); nullptr, kNever_SkCopyPixelsMode, nullptr); SkPoint center; center.set(50, 50); SkColor colors[2]; colors[0] = Color::Black; colors[1] = Color::White; SkAutoTUnref<SkShader> shader2(SkGradientShader::CreateRadial(center, 50, colors, nullptr, 2, SkShader::TileMode::kRepeat_TileMode)); sk_sp<SkShader> shader2 = SkGradientShader::MakeRadial(center, 50, colors, nullptr, 2, SkShader::TileMode::kRepeat_TileMode); SkAutoTUnref<SkShader> composeShader(SkShader::CreateComposeShader(shader1, shader2, SkXfermode::Mode::kMultiply_Mode)); paint.setShader(composeShader); sk_sp<SkShader> composeShader = SkShader::MakeComposeShader(std::move(shader1), std::move(shader2), SkXfermode::Mode::kMultiply_Mode); paint.setShader(std::move(composeShader)); canvas.drawRoundRect(0, 0, 100, 100, 20.0f, 20.0f, paint); }); auto& bitmaps = dl->getBitmapResources(); Loading
libs/hwui/tests/unit/SkiaBehaviorTests.cpp +7 −3 Original line number Diff line number Diff line Loading @@ -17,8 +17,9 @@ #include "tests/common/TestUtils.h" #include <gtest/gtest.h> #include <SkShader.h> #include <SkColorMatrixFilter.h> #include <SkImagePriv.h> #include <SkShader.h> using namespace android; using namespace android::uirenderer; Loading @@ -29,10 +30,13 @@ using namespace android::uirenderer; */ TEST(SkiaBehavior, CreateBitmapShader1x1) { SkBitmap origBitmap = TestUtils::createSkBitmap(1, 1); SkAutoTUnref<SkShader> s(SkShader::CreateBitmapShader( sk_sp<SkShader> s = SkMakeBitmapShader( origBitmap, SkShader::kClamp_TileMode, SkShader::kRepeat_TileMode)); SkShader::kRepeat_TileMode, nullptr, kNever_SkCopyPixelsMode, nullptr); SkBitmap bitmap; SkShader::TileMode xy[2]; Loading