All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robolectric.shadows.ShadowNativeVectorDrawable Maven / Gradle / Ivy

The newest version!
package org.robolectric.shadows;

import static android.os.Build.VERSION_CODES.O;
import static android.os.Build.VERSION_CODES.Q;

import android.graphics.Rect;
import android.graphics.drawable.VectorDrawable;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.nativeruntime.DefaultNativeRuntimeLoader;
import org.robolectric.nativeruntime.VectorDrawableNatives;
import org.robolectric.shadows.ShadowNativeVectorDrawable.Picker;
import org.robolectric.versioning.AndroidVersions.U;

/** Shadow for {@link VectorDrawable} that is backed by native code */
@Implements(
    value = VectorDrawable.class,
    minSdk = O,
    shadowPicker = Picker.class,
    isInAndroidSdk = false,
    callNativeMethodsByDefault = true)
public class ShadowNativeVectorDrawable extends ShadowDrawable {

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static int nDraw(
      long rendererPtr,
      long canvasWrapperPtr,
      long colorFilterPtr,
      Rect bounds,
      boolean needsMirroring,
      boolean canReuseCache) {
    return VectorDrawableNatives.nDraw(
        rendererPtr, canvasWrapperPtr, colorFilterPtr, bounds, needsMirroring, canReuseCache);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static boolean nGetFullPathProperties(long pathPtr, byte[] properties, int length) {
    return VectorDrawableNatives.nGetFullPathProperties(pathPtr, properties, length);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetName(long nodePtr, String name) {
    VectorDrawableNatives.nSetName(nodePtr, name);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static boolean nGetGroupProperties(long groupPtr, float[] properties, int length) {
    return VectorDrawableNatives.nGetGroupProperties(groupPtr, properties, length);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetPathString(long pathPtr, String pathString, int length) {
    VectorDrawableNatives.nSetPathString(pathPtr, pathString, length);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static long nCreateTree(long rootGroupPtr) {
    return VectorDrawableNatives.nCreateTree(rootGroupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static long nCreateTreeFromCopy(long treeToCopy, long rootGroupPtr) {
    return VectorDrawableNatives.nCreateTreeFromCopy(treeToCopy, rootGroupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetRendererViewportSize(
      long rendererPtr, float viewportWidth, float viewportHeight) {
    VectorDrawableNatives.nSetRendererViewportSize(rendererPtr, viewportWidth, viewportHeight);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static boolean nSetRootAlpha(long rendererPtr, float alpha) {
    return VectorDrawableNatives.nSetRootAlpha(rendererPtr, alpha);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetRootAlpha(long rendererPtr) {
    return VectorDrawableNatives.nGetRootAlpha(rendererPtr);
  }

  @Implementation(minSdk = Q, maxSdk = U.SDK_INT)
  protected static void nSetAntiAlias(long rendererPtr, boolean aa) {
    VectorDrawableNatives.nSetAntiAlias(rendererPtr, aa);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetAllowCaching(long rendererPtr, boolean allowCaching) {
    VectorDrawableNatives.nSetAllowCaching(rendererPtr, allowCaching);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static long nCreateFullPath() {
    return VectorDrawableNatives.nCreateFullPath();
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static long nCreateFullPath(long nativeFullPathPtr) {
    return VectorDrawableNatives.nCreateFullPath(nativeFullPathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nUpdateFullPathProperties(
      long pathPtr,
      float strokeWidth,
      int strokeColor,
      float strokeAlpha,
      int fillColor,
      float fillAlpha,
      float trimPathStart,
      float trimPathEnd,
      float trimPathOffset,
      float strokeMiterLimit,
      int strokeLineCap,
      int strokeLineJoin,
      int fillType) {
    VectorDrawableNatives.nUpdateFullPathProperties(
        pathPtr,
        strokeWidth,
        strokeColor,
        strokeAlpha,
        fillColor,
        fillAlpha,
        trimPathStart,
        trimPathEnd,
        trimPathOffset,
        strokeMiterLimit,
        strokeLineCap,
        strokeLineJoin,
        fillType);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nUpdateFullPathFillGradient(long pathPtr, long fillGradientPtr) {
    VectorDrawableNatives.nUpdateFullPathFillGradient(pathPtr, fillGradientPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nUpdateFullPathStrokeGradient(long pathPtr, long strokeGradientPtr) {
    VectorDrawableNatives.nUpdateFullPathStrokeGradient(pathPtr, strokeGradientPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static long nCreateClipPath() {
    return VectorDrawableNatives.nCreateClipPath();
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static long nCreateClipPath(long clipPathPtr) {
    return VectorDrawableNatives.nCreateClipPath(clipPathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static long nCreateGroup() {
    DefaultNativeRuntimeLoader.injectAndLoad();
    return VectorDrawableNatives.nCreateGroup();
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static long nCreateGroup(long groupPtr) {
    DefaultNativeRuntimeLoader.injectAndLoad();
    return VectorDrawableNatives.nCreateGroup(groupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nUpdateGroupProperties(
      long groupPtr,
      float rotate,
      float pivotX,
      float pivotY,
      float scaleX,
      float scaleY,
      float translateX,
      float translateY) {
    VectorDrawableNatives.nUpdateGroupProperties(
        groupPtr, rotate, pivotX, pivotY, scaleX, scaleY, translateX, translateY);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nAddChild(long groupPtr, long nodePtr) {
    VectorDrawableNatives.nAddChild(groupPtr, nodePtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetRotation(long groupPtr) {
    return VectorDrawableNatives.nGetRotation(groupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetRotation(long groupPtr, float rotation) {
    VectorDrawableNatives.nSetRotation(groupPtr, rotation);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetPivotX(long groupPtr) {
    return VectorDrawableNatives.nGetPivotX(groupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetPivotX(long groupPtr, float pivotX) {
    VectorDrawableNatives.nSetPivotX(groupPtr, pivotX);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetPivotY(long groupPtr) {
    return VectorDrawableNatives.nGetPivotY(groupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetPivotY(long groupPtr, float pivotY) {
    VectorDrawableNatives.nSetPivotY(groupPtr, pivotY);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetScaleX(long groupPtr) {
    return VectorDrawableNatives.nGetScaleX(groupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetScaleX(long groupPtr, float scaleX) {
    VectorDrawableNatives.nSetScaleX(groupPtr, scaleX);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetScaleY(long groupPtr) {
    return VectorDrawableNatives.nGetScaleY(groupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetScaleY(long groupPtr, float scaleY) {
    VectorDrawableNatives.nSetScaleY(groupPtr, scaleY);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetTranslateX(long groupPtr) {
    return VectorDrawableNatives.nGetTranslateX(groupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetTranslateX(long groupPtr, float translateX) {
    VectorDrawableNatives.nSetTranslateX(groupPtr, translateX);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetTranslateY(long groupPtr) {
    return VectorDrawableNatives.nGetTranslateY(groupPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetTranslateY(long groupPtr, float translateY) {
    VectorDrawableNatives.nSetTranslateY(groupPtr, translateY);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetPathData(long pathPtr, long pathDataPtr) {
    VectorDrawableNatives.nSetPathData(pathPtr, pathDataPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetStrokeWidth(long pathPtr) {
    return VectorDrawableNatives.nGetStrokeWidth(pathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetStrokeWidth(long pathPtr, float width) {
    VectorDrawableNatives.nSetStrokeWidth(pathPtr, width);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static int nGetStrokeColor(long pathPtr) {
    return VectorDrawableNatives.nGetStrokeColor(pathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetStrokeColor(long pathPtr, int strokeColor) {
    VectorDrawableNatives.nSetStrokeColor(pathPtr, strokeColor);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetStrokeAlpha(long pathPtr) {
    return VectorDrawableNatives.nGetStrokeAlpha(pathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetStrokeAlpha(long pathPtr, float alpha) {
    VectorDrawableNatives.nSetStrokeAlpha(pathPtr, alpha);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static int nGetFillColor(long pathPtr) {
    return VectorDrawableNatives.nGetFillColor(pathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetFillColor(long pathPtr, int fillColor) {
    VectorDrawableNatives.nSetFillColor(pathPtr, fillColor);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetFillAlpha(long pathPtr) {
    return VectorDrawableNatives.nGetFillAlpha(pathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetFillAlpha(long pathPtr, float fillAlpha) {
    VectorDrawableNatives.nSetFillAlpha(pathPtr, fillAlpha);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetTrimPathStart(long pathPtr) {
    return VectorDrawableNatives.nGetTrimPathStart(pathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetTrimPathStart(long pathPtr, float trimPathStart) {
    VectorDrawableNatives.nSetTrimPathStart(pathPtr, trimPathStart);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetTrimPathEnd(long pathPtr) {
    return VectorDrawableNatives.nGetTrimPathEnd(pathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetTrimPathEnd(long pathPtr, float trimPathEnd) {
    VectorDrawableNatives.nSetTrimPathEnd(pathPtr, trimPathEnd);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static float nGetTrimPathOffset(long pathPtr) {
    return VectorDrawableNatives.nGetTrimPathOffset(pathPtr);
  }

  @Implementation(minSdk = O, maxSdk = U.SDK_INT)
  protected static void nSetTrimPathOffset(long pathPtr, float trimPathOffset) {
    VectorDrawableNatives.nSetTrimPathOffset(pathPtr, trimPathOffset);
  }

  /** Shadow picker for {@link VectorDrawable}. */
  public static final class Picker extends GraphicsShadowPicker {
    public Picker() {
      super(ShadowVectorDrawable.class, ShadowNativeVectorDrawable.class);
    }
  }
}