what-the-bank/sources/com/airbnb/lottie/animation/content/PolystarContent.java

382 lines
16 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package com.airbnb.lottie.animation.content;
import android.graphics.Path;
import android.graphics.PointF;
import com.airbnb.lottie.LottieDrawable;
import com.airbnb.lottie.LottieProperty;
import com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation;
import com.airbnb.lottie.model.KeyPath;
import com.airbnb.lottie.model.content.PolystarShape;
import com.airbnb.lottie.model.content.ShapeTrimPath;
import com.airbnb.lottie.model.layer.BaseLayer;
import com.airbnb.lottie.utils.MiscUtils;
import com.airbnb.lottie.value.LottieValueCallback;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import java.util.List;
/* loaded from: classes.dex */
public class PolystarContent implements PathContent, BaseKeyframeAnimation.AnimationListener, KeyPathElementContent {
private static final float POLYGON_MAGIC_NUMBER = 0.25f;
private static final float POLYSTAR_MAGIC_NUMBER = 0.47829f;
private final boolean hidden;
private final BaseKeyframeAnimation<?, Float> innerRadiusAnimation;
private final BaseKeyframeAnimation<?, Float> innerRoundednessAnimation;
private boolean isPathValid;
private final boolean isReversed;
private final LottieDrawable lottieDrawable;
private final String name;
private final BaseKeyframeAnimation<?, Float> outerRadiusAnimation;
private final BaseKeyframeAnimation<?, Float> outerRoundednessAnimation;
private final BaseKeyframeAnimation<?, Float> pointsAnimation;
private final BaseKeyframeAnimation<?, PointF> positionAnimation;
private final BaseKeyframeAnimation<?, Float> rotationAnimation;
private final PolystarShape.Type type;
private final Path path = new Path();
private final CompoundTrimPathContent trimPaths = new CompoundTrimPathContent();
public PolystarContent(LottieDrawable lottieDrawable, BaseLayer baseLayer, PolystarShape polystarShape) {
BaseKeyframeAnimation<Float, Float> baseKeyframeAnimation;
this.lottieDrawable = lottieDrawable;
this.name = polystarShape.getName();
PolystarShape.Type type = polystarShape.getType();
this.type = type;
this.hidden = polystarShape.isHidden();
this.isReversed = polystarShape.isReversed();
BaseKeyframeAnimation<Float, Float> createAnimation = polystarShape.getPoints().createAnimation();
this.pointsAnimation = createAnimation;
BaseKeyframeAnimation<PointF, PointF> createAnimation2 = polystarShape.getPosition().createAnimation();
this.positionAnimation = createAnimation2;
BaseKeyframeAnimation<Float, Float> createAnimation3 = polystarShape.getRotation().createAnimation();
this.rotationAnimation = createAnimation3;
BaseKeyframeAnimation<Float, Float> createAnimation4 = polystarShape.getOuterRadius().createAnimation();
this.outerRadiusAnimation = createAnimation4;
BaseKeyframeAnimation<Float, Float> createAnimation5 = polystarShape.getOuterRoundedness().createAnimation();
this.outerRoundednessAnimation = createAnimation5;
if (type == PolystarShape.Type.STAR) {
this.innerRadiusAnimation = polystarShape.getInnerRadius().createAnimation();
baseKeyframeAnimation = polystarShape.getInnerRoundedness().createAnimation();
} else {
baseKeyframeAnimation = null;
this.innerRadiusAnimation = null;
}
this.innerRoundednessAnimation = baseKeyframeAnimation;
baseLayer.addAnimation(createAnimation);
baseLayer.addAnimation(createAnimation2);
baseLayer.addAnimation(createAnimation3);
baseLayer.addAnimation(createAnimation4);
baseLayer.addAnimation(createAnimation5);
if (type == PolystarShape.Type.STAR) {
baseLayer.addAnimation(this.innerRadiusAnimation);
baseLayer.addAnimation(this.innerRoundednessAnimation);
}
createAnimation.addUpdateListener(this);
createAnimation2.addUpdateListener(this);
createAnimation3.addUpdateListener(this);
createAnimation4.addUpdateListener(this);
createAnimation5.addUpdateListener(this);
if (type == PolystarShape.Type.STAR) {
this.innerRadiusAnimation.addUpdateListener(this);
this.innerRoundednessAnimation.addUpdateListener(this);
}
}
@Override // com.airbnb.lottie.animation.keyframe.BaseKeyframeAnimation.AnimationListener
public void onValueChanged() {
invalidate();
}
private void invalidate() {
this.isPathValid = false;
this.lottieDrawable.invalidateSelf();
}
@Override // com.airbnb.lottie.animation.content.Content
public void setContents(List<Content> list, List<Content> list2) {
for (int i = 0; i < list.size(); i++) {
Content content = list.get(i);
if (content instanceof TrimPathContent) {
TrimPathContent trimPathContent = (TrimPathContent) content;
if (trimPathContent.getType() == ShapeTrimPath.Type.SIMULTANEOUSLY) {
this.trimPaths.addTrimPath(trimPathContent);
trimPathContent.addListener(this);
}
}
}
}
@Override // com.airbnb.lottie.animation.content.PathContent
public Path getPath() {
if (this.isPathValid) {
return this.path;
}
this.path.reset();
if (this.hidden) {
this.isPathValid = true;
return this.path;
}
int i = AnonymousClass1.$SwitchMap$com$airbnb$lottie$model$content$PolystarShape$Type[this.type.ordinal()];
if (i == 1) {
createStarPath();
} else if (i == 2) {
createPolygonPath();
}
this.path.close();
this.trimPaths.apply(this.path);
this.isPathValid = true;
return this.path;
}
/* renamed from: com.airbnb.lottie.animation.content.PolystarContent$1, reason: invalid class name */
/* loaded from: classes.dex */
static /* synthetic */ class AnonymousClass1 {
static final int[] $SwitchMap$com$airbnb$lottie$model$content$PolystarShape$Type;
static {
int[] iArr = new int[PolystarShape.Type.values().length];
$SwitchMap$com$airbnb$lottie$model$content$PolystarShape$Type = iArr;
try {
iArr[PolystarShape.Type.STAR.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$com$airbnb$lottie$model$content$PolystarShape$Type[PolystarShape.Type.POLYGON.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
}
}
private void createStarPath() {
int i;
float f;
float f2;
double d;
float f3;
float f4;
float f5;
float f6;
double d2;
float f7;
float f8;
float f9;
double d3;
float floatValue = this.pointsAnimation.getValue().floatValue();
double radians = Math.toRadians((this.rotationAnimation == null ? 0.0d : r2.getValue().floatValue()) - 90.0d);
double d4 = floatValue;
float f10 = (float) (6.283185307179586d / d4);
if (this.isReversed) {
f10 = -f10;
}
float f11 = f10 / 2.0f;
float f12 = floatValue - ((int) floatValue);
int i2 = (f12 > BitmapDescriptorFactory.HUE_RED ? 1 : (f12 == BitmapDescriptorFactory.HUE_RED ? 0 : -1));
if (i2 != 0) {
radians += (1.0f - f12) * f11;
}
float floatValue2 = this.outerRadiusAnimation.getValue().floatValue();
float floatValue3 = this.innerRadiusAnimation.getValue().floatValue();
BaseKeyframeAnimation<?, Float> baseKeyframeAnimation = this.innerRoundednessAnimation;
float floatValue4 = baseKeyframeAnimation != null ? baseKeyframeAnimation.getValue().floatValue() / 100.0f : 0.0f;
BaseKeyframeAnimation<?, Float> baseKeyframeAnimation2 = this.outerRoundednessAnimation;
float floatValue5 = baseKeyframeAnimation2 != null ? baseKeyframeAnimation2.getValue().floatValue() / 100.0f : 0.0f;
if (i2 != 0) {
f4 = ((floatValue2 - floatValue3) * f12) + floatValue3;
i = i2;
double d5 = f4;
float cos = (float) (d5 * Math.cos(radians));
f3 = (float) (d5 * Math.sin(radians));
this.path.moveTo(cos, f3);
d = radians + ((f10 * f12) / 2.0f);
f = cos;
f2 = f11;
} else {
i = i2;
double d6 = floatValue2;
float cos2 = (float) (Math.cos(radians) * d6);
float sin = (float) (d6 * Math.sin(radians));
this.path.moveTo(cos2, sin);
f = cos2;
f2 = f11;
d = radians + f2;
f3 = sin;
f4 = BitmapDescriptorFactory.HUE_RED;
}
double ceil = Math.ceil(d4) * 2.0d;
int i3 = 0;
float f13 = f2;
float f14 = f;
boolean z = false;
while (true) {
double d7 = i3;
if (d7 < ceil) {
float f15 = z ? floatValue2 : floatValue3;
if (f4 == BitmapDescriptorFactory.HUE_RED || d7 != ceil - 2.0d) {
f5 = f10;
f6 = f13;
} else {
f5 = f10;
f6 = (f10 * f12) / 2.0f;
}
if (f4 == BitmapDescriptorFactory.HUE_RED || d7 != ceil - 1.0d) {
d2 = d7;
f7 = f4;
f4 = f15;
} else {
d2 = d7;
f7 = f4;
}
double d8 = f4;
double d9 = ceil;
float cos3 = (float) (d8 * Math.cos(d));
float sin2 = (float) (d8 * Math.sin(d));
if (floatValue4 == BitmapDescriptorFactory.HUE_RED && floatValue5 == BitmapDescriptorFactory.HUE_RED) {
this.path.lineTo(cos3, sin2);
d3 = d;
f8 = floatValue4;
f9 = floatValue5;
} else {
f8 = floatValue4;
double atan2 = (float) (Math.atan2(f3, f14) - 1.5707963267948966d);
float cos4 = (float) Math.cos(atan2);
float sin3 = (float) Math.sin(atan2);
f9 = floatValue5;
d3 = d;
double atan22 = (float) (Math.atan2(sin2, cos3) - 1.5707963267948966d);
float cos5 = (float) Math.cos(atan22);
float sin4 = (float) Math.sin(atan22);
float f16 = z ? f8 : f9;
float f17 = z ? f9 : f8;
float f18 = z ? floatValue3 : floatValue2;
float f19 = z ? floatValue2 : floatValue3;
float f20 = f18 * f16 * POLYSTAR_MAGIC_NUMBER;
float f21 = cos4 * f20;
float f22 = f20 * sin3;
float f23 = f19 * f17 * POLYSTAR_MAGIC_NUMBER;
float f24 = cos5 * f23;
float f25 = f23 * sin4;
if (i != 0) {
if (i3 == 0) {
f21 *= f12;
f22 *= f12;
} else if (d2 == d9 - 1.0d) {
f24 *= f12;
f25 *= f12;
}
}
this.path.cubicTo(f14 - f21, f3 - f22, cos3 + f24, sin2 + f25, cos3, sin2);
}
d = d3 + f6;
z = !z;
i3++;
f14 = cos3;
f3 = sin2;
floatValue5 = f9;
floatValue4 = f8;
f4 = f7;
f10 = f5;
ceil = d9;
} else {
PointF value = this.positionAnimation.getValue();
this.path.offset(value.x, value.y);
this.path.close();
return;
}
}
}
private void createPolygonPath() {
int i;
double d;
double d2;
double d3;
int floor = (int) Math.floor(this.pointsAnimation.getValue().floatValue());
double radians = Math.toRadians((this.rotationAnimation == null ? 0.0d : r2.getValue().floatValue()) - 90.0d);
double d4 = floor;
float floatValue = this.outerRoundednessAnimation.getValue().floatValue() / 100.0f;
float floatValue2 = this.outerRadiusAnimation.getValue().floatValue();
double d5 = floatValue2;
float cos = (float) (Math.cos(radians) * d5);
float sin = (float) (Math.sin(radians) * d5);
this.path.moveTo(cos, sin);
double d6 = (float) (6.283185307179586d / d4);
double d7 = radians + d6;
double ceil = Math.ceil(d4);
int i2 = 0;
while (i2 < ceil) {
float cos2 = (float) (Math.cos(d7) * d5);
double d8 = ceil;
float sin2 = (float) (d5 * Math.sin(d7));
if (floatValue != BitmapDescriptorFactory.HUE_RED) {
d2 = d5;
i = i2;
d = d7;
double atan2 = (float) (Math.atan2(sin, cos) - 1.5707963267948966d);
float cos3 = (float) Math.cos(atan2);
float sin3 = (float) Math.sin(atan2);
d3 = d6;
double atan22 = (float) (Math.atan2(sin2, cos2) - 1.5707963267948966d);
float cos4 = (float) Math.cos(atan22);
float sin4 = (float) Math.sin(atan22);
float f = floatValue2 * floatValue * POLYGON_MAGIC_NUMBER;
this.path.cubicTo(cos - (cos3 * f), sin - (sin3 * f), cos2 + (cos4 * f), sin2 + (f * sin4), cos2, sin2);
} else {
i = i2;
d = d7;
d2 = d5;
d3 = d6;
this.path.lineTo(cos2, sin2);
}
d7 = d + d3;
i2 = i + 1;
sin = sin2;
cos = cos2;
ceil = d8;
d5 = d2;
d6 = d3;
}
PointF value = this.positionAnimation.getValue();
this.path.offset(value.x, value.y);
this.path.close();
}
@Override // com.airbnb.lottie.model.KeyPathElement
public void resolveKeyPath(KeyPath keyPath, int i, List<KeyPath> list, KeyPath keyPath2) {
MiscUtils.resolveKeyPath(keyPath, i, list, keyPath2, this);
}
@Override // com.airbnb.lottie.model.KeyPathElement
public <T> void addValueCallback(T t, LottieValueCallback<T> lottieValueCallback) {
BaseKeyframeAnimation<?, Float> baseKeyframeAnimation;
BaseKeyframeAnimation<?, Float> baseKeyframeAnimation2;
if (t == LottieProperty.POLYSTAR_POINTS) {
this.pointsAnimation.setValueCallback(lottieValueCallback);
return;
}
if (t == LottieProperty.POLYSTAR_ROTATION) {
this.rotationAnimation.setValueCallback(lottieValueCallback);
return;
}
if (t == LottieProperty.POSITION) {
this.positionAnimation.setValueCallback(lottieValueCallback);
return;
}
if (t == LottieProperty.POLYSTAR_INNER_RADIUS && (baseKeyframeAnimation2 = this.innerRadiusAnimation) != null) {
baseKeyframeAnimation2.setValueCallback(lottieValueCallback);
return;
}
if (t == LottieProperty.POLYSTAR_OUTER_RADIUS) {
this.outerRadiusAnimation.setValueCallback(lottieValueCallback);
return;
}
if (t == LottieProperty.POLYSTAR_INNER_ROUNDEDNESS && (baseKeyframeAnimation = this.innerRoundednessAnimation) != null) {
baseKeyframeAnimation.setValueCallback(lottieValueCallback);
} else if (t == LottieProperty.POLYSTAR_OUTER_ROUNDEDNESS) {
this.outerRoundednessAnimation.setValueCallback(lottieValueCallback);
}
}
@Override // com.airbnb.lottie.animation.content.Content
public String getName() {
return this.name;
}
}