blob: 4444ecf012e9b2b5420af7754f9a1b84951595cf [file] [log] [blame]
package com.airbnb.lottie.value;
import com.airbnb.lottie.utils.MiscUtils;
/**
* {@link LottieValueCallback} that provides a value offset from the original animation
* rather than an absolute value.
*/
@SuppressWarnings({"WeakerAccess", "unused"})
public class LottieRelativeIntegerValueCallback extends LottieValueCallback<Integer> {
@Override
public Integer getValue(LottieFrameInfo<Integer> frameInfo) {
int originalValue = MiscUtils.lerp(
frameInfo.getStartValue(),
frameInfo.getEndValue(),
frameInfo.getInterpolatedKeyframeProgress()
);
int newValue = getOffset(frameInfo);
return originalValue + newValue;
}
/**
* Override this to provide your own offset on every frame.
*/
public Integer getOffset(LottieFrameInfo<Integer> frameInfo) {
if (value == null) {
throw new IllegalArgumentException("You must provide a static value in the constructor " +
", call setValue, or override getValue.");
}
return value;
}
}