mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-28 01:52:26 -06:00
91 lines
3.3 KiB
Java
91 lines
3.3 KiB
Java
package androidx.transition;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.TypedArray;
|
|
import android.graphics.Matrix;
|
|
import android.graphics.Path;
|
|
import android.graphics.PathMeasure;
|
|
import android.util.AttributeSet;
|
|
import androidx.core.content.res.TypedArrayUtils;
|
|
import androidx.core.graphics.PathParser;
|
|
import org.xmlpull.v1.XmlPullParser;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class PatternPathMotion extends PathMotion {
|
|
private Path mOriginalPatternPath;
|
|
private final Path mPatternPath;
|
|
private final Matrix mTempMatrix;
|
|
|
|
public Path getPatternPath() {
|
|
return this.mOriginalPatternPath;
|
|
}
|
|
|
|
public PatternPathMotion() {
|
|
Path path = new Path();
|
|
this.mPatternPath = path;
|
|
this.mTempMatrix = new Matrix();
|
|
path.lineTo(1.0f, 0.0f);
|
|
this.mOriginalPatternPath = path;
|
|
}
|
|
|
|
public PatternPathMotion(Context context, AttributeSet attributeSet) {
|
|
this.mPatternPath = new Path();
|
|
this.mTempMatrix = new Matrix();
|
|
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, Styleable.PATTERN_PATH_MOTION);
|
|
try {
|
|
String namedString = TypedArrayUtils.getNamedString(obtainStyledAttributes, (XmlPullParser) attributeSet, "patternPathData", 0);
|
|
if (namedString == null) {
|
|
throw new RuntimeException("pathData must be supplied for patternPathMotion");
|
|
}
|
|
setPatternPath(PathParser.createPathFromPathData(namedString));
|
|
} finally {
|
|
obtainStyledAttributes.recycle();
|
|
}
|
|
}
|
|
|
|
public PatternPathMotion(Path path) {
|
|
this.mPatternPath = new Path();
|
|
this.mTempMatrix = new Matrix();
|
|
setPatternPath(path);
|
|
}
|
|
|
|
public void setPatternPath(Path path) {
|
|
PathMeasure pathMeasure = new PathMeasure(path, false);
|
|
float[] fArr = new float[2];
|
|
pathMeasure.getPosTan(pathMeasure.getLength(), fArr, null);
|
|
float f = fArr[0];
|
|
float f2 = fArr[1];
|
|
pathMeasure.getPosTan(0.0f, fArr, null);
|
|
float f3 = fArr[0];
|
|
float f4 = fArr[1];
|
|
if (f3 == f && f4 == f2) {
|
|
throw new IllegalArgumentException("pattern must not end at the starting point");
|
|
}
|
|
this.mTempMatrix.setTranslate(-f3, -f4);
|
|
float f5 = f - f3;
|
|
float f6 = f2 - f4;
|
|
float distance = 1.0f / distance(f5, f6);
|
|
this.mTempMatrix.postScale(distance, distance);
|
|
this.mTempMatrix.postRotate((float) Math.toDegrees(-Math.atan2(f6, f5)));
|
|
path.transform(this.mTempMatrix, this.mPatternPath);
|
|
this.mOriginalPatternPath = path;
|
|
}
|
|
|
|
@Override // androidx.transition.PathMotion
|
|
public Path getPath(float f, float f2, float f3, float f4) {
|
|
float f5 = f3 - f;
|
|
float f6 = f4 - f2;
|
|
float distance = distance(f5, f6);
|
|
double atan2 = Math.atan2(f6, f5);
|
|
this.mTempMatrix.setScale(distance, distance);
|
|
this.mTempMatrix.postRotate((float) Math.toDegrees(atan2));
|
|
this.mTempMatrix.postTranslate(f, f2);
|
|
Path path = new Path();
|
|
this.mPatternPath.transform(this.mTempMatrix, path);
|
|
return path;
|
|
}
|
|
|
|
private static float distance(float f, float f2) {
|
|
return (float) Math.sqrt((f * f) + (f2 * f2));
|
|
}
|
|
}
|