blob: f4b9eaa82ce0e00cc67ca7358779ef402f078439 [file] [log] [blame]
package com.airbnb.lottie.parser;
import com.airbnb.lottie.LottieComposition;
import com.airbnb.lottie.model.animatable.AnimatableColorValue;
import com.airbnb.lottie.model.animatable.AnimatableFloatValue;
import com.airbnb.lottie.model.animatable.AnimatableGradientColorValue;
import com.airbnb.lottie.model.animatable.AnimatableIntegerValue;
import com.airbnb.lottie.model.animatable.AnimatablePointValue;
import com.airbnb.lottie.model.animatable.AnimatableScaleValue;
import com.airbnb.lottie.model.animatable.AnimatableShapeValue;
import com.airbnb.lottie.model.animatable.AnimatableTextFrame;
import com.airbnb.lottie.parser.moshi.JsonReader;
import com.airbnb.lottie.utils.Utils;
import com.airbnb.lottie.value.Keyframe;
import java.io.IOException;
import java.util.List;
public class AnimatableValueParser {
private AnimatableValueParser() {
}
public static AnimatableFloatValue parseFloat(
JsonReader reader, LottieComposition composition) throws IOException {
return parseFloat(reader, composition, true);
}
public static AnimatableFloatValue parseFloat(
JsonReader reader, LottieComposition composition, boolean isDp) throws IOException {
return new AnimatableFloatValue(
parse(reader, isDp ? Utils.dpScale() : 1f, composition, FloatParser.INSTANCE));
}
static AnimatableIntegerValue parseInteger(
JsonReader reader, LottieComposition composition) throws IOException {
return new AnimatableIntegerValue(parse(reader, composition, IntegerParser.INSTANCE));
}
static AnimatablePointValue parsePoint(
JsonReader reader, LottieComposition composition) throws IOException {
return new AnimatablePointValue(KeyframesParser.parse(reader, composition, Utils.dpScale(), PointFParser.INSTANCE, true));
}
static AnimatableScaleValue parseScale(
JsonReader reader, LottieComposition composition) throws IOException {
return new AnimatableScaleValue(parse(reader, composition, ScaleXYParser.INSTANCE));
}
static AnimatableShapeValue parseShapeData(
JsonReader reader, LottieComposition composition) throws IOException {
return new AnimatableShapeValue(
parse(reader, Utils.dpScale(), composition, ShapeDataParser.INSTANCE));
}
static AnimatableTextFrame parseDocumentData(
JsonReader reader, LottieComposition composition) throws IOException {
return new AnimatableTextFrame(parse(reader, Utils.dpScale(), composition, DocumentDataParser.INSTANCE));
}
static AnimatableColorValue parseColor(
JsonReader reader, LottieComposition composition) throws IOException {
return new AnimatableColorValue(parse(reader, composition, ColorParser.INSTANCE));
}
static AnimatableGradientColorValue parseGradientColor(
JsonReader reader, LottieComposition composition, int points) throws IOException {
AnimatableGradientColorValue animatableGradientColorValue = new AnimatableGradientColorValue(
parse(reader, composition, new GradientColorParser(points)));
return animatableGradientColorValue;
}
/**
* Will return null if the animation can't be played such as if it has expressions.
*/
private static <T> List<Keyframe<T>> parse(JsonReader reader,
LottieComposition composition, ValueParser<T> valueParser) throws IOException {
return KeyframesParser.parse(reader, composition, 1, valueParser, false);
}
/**
* Will return null if the animation can't be played such as if it has expressions.
*/
private static <T> List<Keyframe<T>> parse(
JsonReader reader, float scale, LottieComposition composition, ValueParser<T> valueParser) throws IOException {
return KeyframesParser.parse(reader, composition, scale, valueParser, false);
}
}