Rabbit-R1/original r1/java/sources/androidx/transition/PatternPathMotion.java
2024-05-21 17:08:36 -04:00

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));
}
}