diff options
Diffstat (limited to 'libs/hwui/jni/RenderEffect.cpp')
-rw-r--r-- | libs/hwui/jni/RenderEffect.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/libs/hwui/jni/RenderEffect.cpp b/libs/hwui/jni/RenderEffect.cpp index 97c40d695f97..a48d7f734e29 100644 --- a/libs/hwui/jni/RenderEffect.cpp +++ b/libs/hwui/jni/RenderEffect.cpp @@ -64,8 +64,8 @@ static jlong createBitmapEffect( sk_sp<SkImage> image = android::bitmap::toBitmap(bitmapHandle).makeImage(); SkRect srcRect = SkRect::MakeLTRB(srcLeft, srcTop, srcRight, srcBottom); SkRect dstRect = SkRect::MakeLTRB(dstLeft, dstTop, dstRight, dstBottom); - sk_sp<SkImageFilter> bitmapFilter = - SkImageFilters::Image(image, srcRect, dstRect, kLow_SkFilterQuality); + sk_sp<SkImageFilter> bitmapFilter = SkImageFilters::Image( + image, srcRect, dstRect, SkSamplingOptions(SkFilterMode::kLinear)); return reinterpret_cast<jlong>(bitmapFilter.release()); } @@ -115,6 +115,18 @@ static jlong createChainEffect( return reinterpret_cast<jlong>(composeFilter.release()); } +static jlong createShaderEffect( + JNIEnv* env, + jobject, + jlong shaderHandle +) { + auto* shader = reinterpret_cast<const SkShader*>(shaderHandle); + sk_sp<SkImageFilter> shaderFilter = SkImageFilters::Shader( + sk_ref_sp(shader), nullptr + ); + return reinterpret_cast<jlong>(shaderFilter.release()); +} + static void RenderEffect_safeUnref(SkImageFilter* filter) { SkSafeUnref(filter); } @@ -130,11 +142,12 @@ static const JNINativeMethod gRenderEffectMethods[] = { {"nativeCreateBitmapEffect", "(JFFFFFFFF)J", (void*)createBitmapEffect}, {"nativeCreateColorFilterEffect", "(JJ)J", (void*)createColorFilterEffect}, {"nativeCreateBlendModeEffect", "(JJI)J", (void*)createBlendModeEffect}, - {"nativeCreateChainEffect", "(JJ)J", (void*)createChainEffect} + {"nativeCreateChainEffect", "(JJ)J", (void*)createChainEffect}, + {"nativeCreateShaderEffect", "(J)J", (void*)createShaderEffect} }; int register_android_graphics_RenderEffect(JNIEnv* env) { android::RegisterMethodsOrDie(env, "android/graphics/RenderEffect", gRenderEffectMethods, NELEM(gRenderEffectMethods)); return 0; -}
\ No newline at end of file +} |