content: 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;
    }
  }
  