blob: aea1529844f40e2006d81673ae74ad9bcc6aa79e [file] [log] [blame]
package com.airbnb.lottie.animation.keyframe;
import android.graphics.Path;
import android.graphics.PointF;
import androidx.annotation.Nullable;
import com.airbnb.lottie.LottieComposition;
import com.airbnb.lottie.utils.Utils;
import com.airbnb.lottie.value.Keyframe;
public class PathKeyframe extends Keyframe<PointF> {
@Nullable private Path path;
private final Keyframe<PointF> pointKeyFrame;
public PathKeyframe(LottieComposition composition, Keyframe<PointF> keyframe) {
super(composition, keyframe.startValue, keyframe.endValue, keyframe.interpolator, keyframe.xInterpolator, keyframe.yInterpolator,
keyframe.startFrame, keyframe.endFrame);
this.pointKeyFrame = keyframe;
createPath();
}
public void createPath() {
// This must use equals(float, float) because PointF didn't have an equals(PathF) method
// until KitKat...
boolean equals = endValue != null && startValue != null &&
startValue.equals(endValue.x, endValue.y);
if (startValue != null && endValue != null && !equals) {
path = Utils.createPath(startValue, endValue, pointKeyFrame.pathCp1, pointKeyFrame.pathCp2);
}
}
/**
* This will be null if the startValue and endValue are the same.
*/
@Nullable Path getPath() {
return path;
}
}