content: package androidx.transition;
  
  import android.graphics.Path;
  import android.graphics.PathMeasure;
  import android.graphics.PointF;
  import android.util.Property;
  
  class PathProperty<T> extends Property<T, Float> {
      private float mCurrentFraction;
      private final float mPathLength;
      private final PathMeasure mPathMeasure;
      private final PointF mPointF = new PointF();
      private final float[] mPosition = new float[2];
      private final Property<T, PointF> mProperty;
  
      PathProperty(Property<T, PointF> property, Path path) {
          super(Float.class, property.getName());
          this.mProperty = property;
          PathMeasure pathMeasure = new PathMeasure(path, false);
          this.mPathMeasure = pathMeasure;
          this.mPathLength = pathMeasure.getLength();
      }
  
      public Float get(T t) {
          return Float.valueOf(this.mCurrentFraction);
      }
  
      public void set(T t, Float fraction) {
          this.mCurrentFraction = fraction.floatValue();
          this.mPathMeasure.getPosTan(this.mPathLength * fraction.floatValue(), this.mPosition, (float[]) null);
          this.mPointF.x = this.mPosition[0];
          this.mPointF.y = this.mPosition[1];
          this.mProperty.set(t, this.mPointF);
      }
  }
  