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

123 lines
4.3 KiB
Java

package androidx.transition;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Path;
import android.util.AttributeSet;
import androidx.core.content.res.TypedArrayUtils;
import b.d.b.a.a;
import org.xmlpull.v1.XmlPullParser;
public class ArcMotion extends PathMotion {
private static final float DEFAULT_MAX_ANGLE_DEGREES = 70.0f;
private static final float DEFAULT_MAX_TANGENT = ((float) Math.tan(Math.toRadians(35.0d)));
private static final float DEFAULT_MIN_ANGLE_DEGREES = 0.0f;
private float mMaximumAngle = DEFAULT_MAX_ANGLE_DEGREES;
private float mMaximumTangent = DEFAULT_MAX_TANGENT;
private float mMinimumHorizontalAngle = 0.0f;
private float mMinimumHorizontalTangent = 0.0f;
private float mMinimumVerticalAngle = 0.0f;
private float mMinimumVerticalTangent = 0.0f;
public ArcMotion() {
}
@SuppressLint({"RestrictedApi"})
public ArcMotion(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, Styleable.ARC_MOTION);
XmlPullParser xmlPullParser = (XmlPullParser) attributeSet;
setMinimumVerticalAngle(TypedArrayUtils.getNamedFloat(obtainStyledAttributes, xmlPullParser, "minimumVerticalAngle", 1, 0.0f));
setMinimumHorizontalAngle(TypedArrayUtils.getNamedFloat(obtainStyledAttributes, xmlPullParser, "minimumHorizontalAngle", 0, 0.0f));
setMaximumAngle(TypedArrayUtils.getNamedFloat(obtainStyledAttributes, xmlPullParser, "maximumAngle", 2, DEFAULT_MAX_ANGLE_DEGREES));
obtainStyledAttributes.recycle();
}
private static float toTangent(float f) {
if (f >= 0.0f && f <= 90.0f) {
return (float) Math.tan(Math.toRadians((double) (f / 2.0f)));
}
throw new IllegalArgumentException("Arc must be between 0 and 90 degrees");
}
public float getMaximumAngle() {
return this.mMaximumAngle;
}
public float getMinimumHorizontalAngle() {
return this.mMinimumHorizontalAngle;
}
public float getMinimumVerticalAngle() {
return this.mMinimumVerticalAngle;
}
@Override // androidx.transition.PathMotion
public Path getPath(float f, float f2, float f3, float f4) {
float f5;
float f6;
float f7;
Path path = new Path();
path.moveTo(f, f2);
float f8 = f3 - f;
float f9 = f4 - f2;
float f10 = (f9 * f9) + (f8 * f8);
float f11 = (f + f3) / 2.0f;
float f12 = (f2 + f4) / 2.0f;
float f13 = 0.25f * f10;
boolean z2 = f2 > f4;
if (Math.abs(f8) < Math.abs(f9)) {
float abs = Math.abs(f10 / (f9 * 2.0f));
if (z2) {
f7 = abs + f4;
f6 = f3;
} else {
f7 = abs + f2;
f6 = f;
}
f5 = this.mMinimumVerticalTangent;
} else {
float f14 = f10 / (f8 * 2.0f);
if (z2) {
f7 = f2;
f6 = f14 + f;
} else {
f6 = f3 - f14;
f7 = f4;
}
f5 = this.mMinimumHorizontalTangent;
}
float f15 = f13 * f5 * f5;
float f16 = f11 - f6;
float f17 = f12 - f7;
float f18 = (f17 * f17) + (f16 * f16);
float f19 = this.mMaximumTangent;
float f20 = f13 * f19 * f19;
if (f18 >= f15) {
f15 = f18 > f20 ? f20 : 0.0f;
}
if (f15 != 0.0f) {
float sqrt = (float) Math.sqrt((double) (f15 / f18));
f6 = a.a(f6, f11, sqrt, f11);
f7 = a.a(f7, f12, sqrt, f12);
}
path.cubicTo((f + f6) / 2.0f, (f2 + f7) / 2.0f, (f6 + f3) / 2.0f, (f7 + f4) / 2.0f, f3, f4);
return path;
}
public void setMaximumAngle(float f) {
this.mMaximumAngle = f;
this.mMaximumTangent = toTangent(f);
}
public void setMinimumHorizontalAngle(float f) {
this.mMinimumHorizontalAngle = f;
this.mMinimumHorizontalTangent = toTangent(f);
}
public void setMinimumVerticalAngle(float f) {
this.mMinimumVerticalAngle = f;
this.mMinimumVerticalTangent = toTangent(f);
}
}