discord-jadx/app/src/main/java/androidx/transition/PatternPathMotion.java

93 lines
3.4 KiB
Java

package androidx.transition;
import android.annotation.SuppressLint;
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;
public class PatternPathMotion extends PathMotion {
private Path mOriginalPatternPath;
private final Path mPatternPath;
private final Matrix mTempMatrix;
public PatternPathMotion() {
Path path = new Path();
this.mPatternPath = path;
this.mTempMatrix = new Matrix();
path.lineTo(1.0f, 0.0f);
this.mOriginalPatternPath = path;
}
@SuppressLint({"RestrictedApi"})
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) {
setPatternPath(PathParser.createPathFromPathData(namedString));
return;
}
throw new RuntimeException("pathData must be supplied for patternPathMotion");
} finally {
obtainStyledAttributes.recycle();
}
}
public PatternPathMotion(Path path) {
this.mPatternPath = new Path();
this.mTempMatrix = new Matrix();
setPatternPath(path);
}
private static float distance(float f, float f2) {
return (float) Math.sqrt((double) ((f2 * f2) + (f * f)));
}
@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((double) f6, (double) 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;
}
public Path getPatternPath() {
return this.mOriginalPatternPath;
}
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((double) f6, (double) f5)));
path.transform(this.mTempMatrix, this.mPatternPath);
this.mOriginalPatternPath = path;
}
}