blob: cd53da32400fbf8140aa2af9dccbcb4432def9f9 [file] [log] [blame]
package com.airbnb.lottie;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
class AnimatableIntegerValue extends BaseAnimatableValue<Integer, Integer> {
AnimatableIntegerValue(LottieComposition composition, Integer initialValue) {
super(composition);
this.initialValue = initialValue;
}
AnimatableIntegerValue(JSONObject json, int frameRate, LottieComposition composition,
boolean isDp, boolean remap100To255) {
super(json, frameRate, composition, isDp);
if (remap100To255) {
initialValue = initialValue * 255 / 100;
for (int i = 0; i < keyValues.size(); i++) {
keyValues.set(i, keyValues.get(i) * 255 / 100);
}
}
}
@Override protected Integer valueFromObject(Object object, float scale) throws JSONException {
if (object instanceof Float) {
return Math.round((Float) object * scale);
} else if (object instanceof Double) {
return (int) Math.round((Double) object * scale);
} else if (object instanceof Integer) {
return Math.round((Integer) object * scale);
} else if (object instanceof JSONArray && ((JSONArray) object).get(0) instanceof Integer) {
return Math.round(((JSONArray) object).getInt(0) * scale);
} else if (object instanceof JSONArray && ((JSONArray) object).get(0) instanceof Double) {
return (int) Math.round(((JSONArray) object).getDouble(0) * scale);
}
return null;
}
@Override public KeyframeAnimation<Integer> createAnimation() {
if (!hasAnimation()) {
return new StaticKeyframeAnimation<>(initialValue);
}
KeyframeAnimation<Integer> animation =
new NumberKeyframeAnimation<>(duration, composition, keyTimes, Integer.class, keyValues,
interpolators);
animation.setStartDelay(delay);
return animation;
}
public Integer getInitialValue() {
return initialValue;
}
}