blob: cdf5675b4944fafef9959522e62b287bf5973049 [file] [log] [blame]
package com.airbnb.lottie;
import android.graphics.PointF;
import org.json.JSONObject;
class PolystarShape {
enum Type {
Star(1),
Polygon(2);
private final int value;
Type(int value) {
this.value = value;
}
static Type forValue(int value) {
for (Type type : Type.values()) {
if (type.value == value) {
return type;
}
}
return null;
}
}
private final Type type;
private final AnimatableFloatValue points;
private final AnimatableValue<PointF> position;
private final AnimatableFloatValue rotation;
private final AnimatableFloatValue innerRadius;
private final AnimatableFloatValue outerRadius;
private final AnimatableFloatValue innerRoundedness;
private final AnimatableFloatValue outerRoundedness;
private PolystarShape(Type type, AnimatableFloatValue points, AnimatableValue<PointF> position,
AnimatableFloatValue rotation, AnimatableFloatValue innerRadius,
AnimatableFloatValue outerRadius, AnimatableFloatValue innerRoundedness,
AnimatableFloatValue outerRoundedness) {
this.type = type;
this.points = points;
this.position = position;
this.rotation = rotation;
this.innerRadius = innerRadius;
this.outerRadius = outerRadius;
this.innerRoundedness = innerRoundedness;
this.outerRoundedness = outerRoundedness;
}
static class Factory {
private Factory() {
}
static PolystarShape newInstance(JSONObject json, LottieComposition composition) {
Type type = Type.forValue(json.optInt("sy"));
AnimatableFloatValue points =
AnimatableFloatValue.Factory.newInstance(json.optJSONObject("pt"), composition, false);
AnimatableValue<PointF> position = AnimatablePathValue.createAnimatablePathOrSplitDimensionPath(
json.optJSONObject("p"), composition);
AnimatableFloatValue rotation =
AnimatableFloatValue.Factory.newInstance(json.optJSONObject("r"), composition, false);
AnimatableFloatValue outerRadius =
AnimatableFloatValue.Factory.newInstance(json.optJSONObject("or"), composition);
AnimatableFloatValue outerRoundedness =
AnimatableFloatValue.Factory.newInstance(json.optJSONObject("os"), composition, false);
AnimatableFloatValue innerRadius;
AnimatableFloatValue innerRoundedness;
if (type == Type.Star) {
innerRadius =
AnimatableFloatValue.Factory.newInstance(json.optJSONObject("ir"), composition);
innerRoundedness =
AnimatableFloatValue.Factory.newInstance(json.optJSONObject("is"), composition, false);
} else {
innerRadius = null;
innerRoundedness = null;
}
return new PolystarShape(type, points, position, rotation, innerRadius, outerRadius,
innerRoundedness, outerRoundedness);
}
}
Type getType() {
return type;
}
AnimatableFloatValue getPoints() {
return points;
}
AnimatableValue<PointF> getPosition() {
return position;
}
AnimatableFloatValue getRotation() {
return rotation;
}
AnimatableFloatValue getInnerRadius() {
return innerRadius;
}
AnimatableFloatValue getOuterRadius() {
return outerRadius;
}
AnimatableFloatValue getInnerRoundedness() {
return innerRoundedness;
}
AnimatableFloatValue getOuterRoundedness() {
return outerRoundedness;
}
}