1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package org.robolectric.nativeruntime; 18 19 import android.graphics.RectF; 20 21 /** 22 * Native methods for Matrix JNI registration. 23 * 24 * <p>Native method signatures are derived from 25 * https://cs.android.com/android/platform/superproject/+/android-12.0.0_r1:frameworks/base/graphics/java/android/graphics/Matrix.java 26 */ 27 public class MatrixNatives { 28 nCreate(long nSrcOrZero)29 public static native long nCreate(long nSrcOrZero); 30 nGetNativeFinalizer()31 public static native long nGetNativeFinalizer(); 32 nSetRectToRect(long nObject, RectF src, RectF dst, int stf)33 public static native boolean nSetRectToRect(long nObject, RectF src, RectF dst, int stf); 34 nSetPolyToPoly( long nObject, float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount)35 public static native boolean nSetPolyToPoly( 36 long nObject, float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount); 37 nMapPoints( long nObject, float[] dst, int dstIndex, float[] src, int srcIndex, int ptCount, boolean isPts)38 public static native void nMapPoints( 39 long nObject, 40 float[] dst, 41 int dstIndex, 42 float[] src, 43 int srcIndex, 44 int ptCount, 45 boolean isPts); 46 nMapRect(long nObject, RectF dst, RectF src)47 public static native boolean nMapRect(long nObject, RectF dst, RectF src); 48 nGetValues(long nObject, float[] values)49 public static native void nGetValues(long nObject, float[] values); 50 nSetValues(long nObject, float[] values)51 public static native void nSetValues(long nObject, float[] values); 52 53 // ------------------ Critical JNI ------------------------ 54 nIsIdentity(long nObject)55 public static native boolean nIsIdentity(long nObject); 56 nIsAffine(long nObject)57 public static native boolean nIsAffine(long nObject); 58 nRectStaysRect(long nObject)59 public static native boolean nRectStaysRect(long nObject); 60 nReset(long nObject)61 public static native void nReset(long nObject); 62 nSet(long nObject, long nOther)63 public static native void nSet(long nObject, long nOther); 64 nSetTranslate(long nObject, float dx, float dy)65 public static native void nSetTranslate(long nObject, float dx, float dy); 66 nSetScale(long nObject, float sx, float sy, float px, float py)67 public static native void nSetScale(long nObject, float sx, float sy, float px, float py); 68 nSetScale(long nObject, float sx, float sy)69 public static native void nSetScale(long nObject, float sx, float sy); 70 nSetRotate(long nObject, float degrees, float px, float py)71 public static native void nSetRotate(long nObject, float degrees, float px, float py); 72 nSetRotate(long nObject, float degrees)73 public static native void nSetRotate(long nObject, float degrees); 74 nSetSinCos( long nObject, float sinValue, float cosValue, float px, float py)75 public static native void nSetSinCos( 76 long nObject, float sinValue, float cosValue, float px, float py); 77 nSetSinCos(long nObject, float sinValue, float cosValue)78 public static native void nSetSinCos(long nObject, float sinValue, float cosValue); 79 nSetSkew(long nObject, float kx, float ky, float px, float py)80 public static native void nSetSkew(long nObject, float kx, float ky, float px, float py); 81 nSetSkew(long nObject, float kx, float ky)82 public static native void nSetSkew(long nObject, float kx, float ky); 83 nSetConcat(long nObject, long nA, long nB)84 public static native void nSetConcat(long nObject, long nA, long nB); 85 nPreTranslate(long nObject, float dx, float dy)86 public static native void nPreTranslate(long nObject, float dx, float dy); 87 nPreScale(long nObject, float sx, float sy, float px, float py)88 public static native void nPreScale(long nObject, float sx, float sy, float px, float py); 89 nPreScale(long nObject, float sx, float sy)90 public static native void nPreScale(long nObject, float sx, float sy); 91 nPreRotate(long nObject, float degrees, float px, float py)92 public static native void nPreRotate(long nObject, float degrees, float px, float py); 93 nPreRotate(long nObject, float degrees)94 public static native void nPreRotate(long nObject, float degrees); 95 nPreSkew(long nObject, float kx, float ky, float px, float py)96 public static native void nPreSkew(long nObject, float kx, float ky, float px, float py); 97 nPreSkew(long nObject, float kx, float ky)98 public static native void nPreSkew(long nObject, float kx, float ky); 99 nPreConcat(long nObject, long nOtherMatrix)100 public static native void nPreConcat(long nObject, long nOtherMatrix); 101 nPostTranslate(long nObject, float dx, float dy)102 public static native void nPostTranslate(long nObject, float dx, float dy); 103 nPostScale(long nObject, float sx, float sy, float px, float py)104 public static native void nPostScale(long nObject, float sx, float sy, float px, float py); 105 nPostScale(long nObject, float sx, float sy)106 public static native void nPostScale(long nObject, float sx, float sy); 107 nPostRotate(long nObject, float degrees, float px, float py)108 public static native void nPostRotate(long nObject, float degrees, float px, float py); 109 nPostRotate(long nObject, float degrees)110 public static native void nPostRotate(long nObject, float degrees); 111 nPostSkew(long nObject, float kx, float ky, float px, float py)112 public static native void nPostSkew(long nObject, float kx, float ky, float px, float py); 113 nPostSkew(long nObject, float kx, float ky)114 public static native void nPostSkew(long nObject, float kx, float ky); 115 nPostConcat(long nObject, long nOtherMatrix)116 public static native void nPostConcat(long nObject, long nOtherMatrix); 117 nInvert(long nObject, long nInverse)118 public static native boolean nInvert(long nObject, long nInverse); 119 nMapRadius(long nObject, float radius)120 public static native float nMapRadius(long nObject, float radius); 121 nEquals(long nA, long nB)122 public static native boolean nEquals(long nA, long nB); 123 } 124