diff options
Diffstat (limited to 'shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java')
-rw-r--r-- | shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java new file mode 100644 index 000000000..11e5ba867 --- /dev/null +++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowNativeNinePatch.java @@ -0,0 +1,50 @@ +package org.robolectric.shadows; + +import static android.os.Build.VERSION_CODES.O; +import static android.os.Build.VERSION_CODES.Q; + +import android.graphics.NinePatch; +import android.graphics.Rect; +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; +import org.robolectric.nativeruntime.DefaultNativeRuntimeLoader; +import org.robolectric.nativeruntime.NinePatchNatives; +import org.robolectric.shadows.ShadowNativeNinePatch.Picker; + +/** Shadow for {@link NinePatch} that is backed by native code */ +@Implements( + value = NinePatch.class, + minSdk = O, + shadowPicker = Picker.class, + isInAndroidSdk = false) +public class ShadowNativeNinePatch { + + @Implementation + protected static boolean isNinePatchChunk(byte[] chunk) { + DefaultNativeRuntimeLoader.injectAndLoad(); + return NinePatchNatives.isNinePatchChunk(chunk); + } + + @Implementation + protected static long validateNinePatchChunk(byte[] chunk) { + DefaultNativeRuntimeLoader.injectAndLoad(); + return NinePatchNatives.validateNinePatchChunk(chunk); + } + + @Implementation + protected static void nativeFinalize(long chunk) { + NinePatchNatives.nativeFinalize(chunk); + } + + @Implementation(minSdk = Q) + protected static long nativeGetTransparentRegion(long bitmapHandle, long chunk, Rect location) { + return NinePatchNatives.nativeGetTransparentRegion(bitmapHandle, chunk, location); + } + + /** Shadow picker for {@link NinePatch}. */ + public static final class Picker extends GraphicsShadowPicker<Object> { + public Picker() { + super(ShadowNinePatch.class, ShadowNativeNinePatch.class); + } + } +} |