[jetski] ask for a crop rect when using ImageFilter.blur

b/40039025

Change-Id: I5aa6bb232e7d8482200ddda48752d2d522e39113
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/743497
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
diff --git a/modules/jetski/src/ImageFilter.cpp b/modules/jetski/src/ImageFilter.cpp
index 7384a84..fdfc307 100644
--- a/modules/jetski/src/ImageFilter.cpp
+++ b/modules/jetski/src/ImageFilter.cpp
@@ -30,11 +30,12 @@
 }
 
 static long ImageFilter_Blur(JNIEnv* env, jobject, jfloat sigmaX, jfloat sigmaY,
-                                                   jint jTileMode, jlong native_input) {
+                                                   jint jTileMode, jfloat l, jfloat t, jfloat r,
+                                                   jfloat b, jlong native_input) {
     auto input = sk_ref_sp(reinterpret_cast<SkImageFilter*>(native_input));
     auto filter = SkImageFilters::Blur(sigmaX, sigmaY,
                                        jetski::utils::TileMode(jTileMode),
-                                       std::move(input));
+                                       std::move(input), SkRect::MakeLTRB(l,t,r,b));
     return reinterpret_cast<jlong>(filter.release());
 }
 
@@ -65,12 +66,12 @@
 
 int register_jetski_ImageFilter(JNIEnv* env) {
     static const JNINativeMethod methods[] = {
-        {"nRelease"          , "(J)V"        , reinterpret_cast<void*>(ImageFilter_Release)},
-        {"nDistantLitDiffuse", "(FFFFFFFFJ)J", reinterpret_cast<void*>(ImageFilter_DistantLitDiffuse)},
-        {"nBlur"             , "(FFIJ)J"     , reinterpret_cast<void*>(ImageFilter_Blur)},
-        {"nDropShadow"       , "(FFFFFFFJ)J" , reinterpret_cast<void*>(ImageFilter_DropShadow)},
-        {"nBlend"            , "(IJJ)J"      , reinterpret_cast<void*>(ImageFilter_Blend)},
-        {"nImage"            , "(J)J"        , reinterpret_cast<void*>(ImageFilter_Image)},
+        {"nRelease"          , "(J)V"            , reinterpret_cast<void*>(ImageFilter_Release)},
+        {"nDistantLitDiffuse", "(FFFFFFFFJ)J"    , reinterpret_cast<void*>(ImageFilter_DistantLitDiffuse)},
+        {"nBlur"             , "(FFIFFFFJ)J"     , reinterpret_cast<void*>(ImageFilter_Blur)},
+        {"nDropShadow"       , "(FFFFFFFJ)J"     , reinterpret_cast<void*>(ImageFilter_DropShadow)},
+        {"nBlend"            , "(IJJ)J"          , reinterpret_cast<void*>(ImageFilter_Blend)},
+        {"nImage"            , "(J)J"            , reinterpret_cast<void*>(ImageFilter_Image)},
     };
 
     const auto clazz = env->FindClass("org/skia/jetski/ImageFilter");
diff --git a/platform_tools/android/apps/jetski/src/main/java/org/skia/jetski/ImageFilter.java b/platform_tools/android/apps/jetski/src/main/java/org/skia/jetski/ImageFilter.java
index 04c5c1a..bbd08c6 100644
--- a/platform_tools/android/apps/jetski/src/main/java/org/skia/jetski/ImageFilter.java
+++ b/platform_tools/android/apps/jetski/src/main/java/org/skia/jetski/ImageFilter.java
@@ -45,14 +45,18 @@
      *  @param sigmaX   The Gaussian sigma value for blurring along the X axis.
      *  @param sigmaY   The Gaussian sigma value for blurring along the Y axis.
      *  @param tileMode The tile mode applied at edges
+     *  @param left     Left, top, right, bottom are used to make the crop rect
      *  @param input    The input filter that is blurred, uses source bitmap if this is null.
      */
-    public static ImageFilter blur(float sigmaX, float sigmaY, TileMode tileMode, @Nullable ImageFilter input) {
+    public static ImageFilter blur(float sigmaX, float sigmaY, TileMode tileMode,
+                                   float left, float top, float right, float bottom,
+                                   @Nullable ImageFilter input) {
         long nativeInput = 0;
         if (input != null) {
             nativeInput = input.getNativeInstance();
         }
-        return new ImageFilter(nBlur(sigmaX, sigmaY, tileMode.nativeInt, nativeInput));
+        return new ImageFilter(nBlur(sigmaX, sigmaY, tileMode.nativeInt,
+                                     left, top, right, bottom, nativeInput));
     }
 
     /**
@@ -112,7 +116,8 @@
                                                   float r, float g, float b,
                                                   float surfaceScale, float kd,
                                                   long native_input);
-    private static native long nBlur(float sigmaX, float sigmaY, int tileMode, long native_input);
+    private static native long nBlur(float sigmaX, float sigmaY, int tileMode,
+                                     float l, float t, float r, float b, long native_input);
     private static native long nDropShadow(float dx, float dy, float sigmaX, float sigmaY,
                                            float r, float g, float b, long native_input);
     private static native long nBlend(int blendMode, long native_background, long native_foreground);