92 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.transition;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.content.res.TypedArray;
 | |
| import android.graphics.Matrix;
 | |
| import android.graphics.Path;
 | |
| import android.graphics.PathMeasure;
 | |
| import android.util.AttributeSet;
 | |
| import androidx.core.content.res.TypedArrayUtils;
 | |
| import androidx.core.graphics.PathParser;
 | |
| import org.xmlpull.v1.XmlPullParser;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class PatternPathMotion extends PathMotion {
 | |
|     private Path mOriginalPatternPath;
 | |
|     private final Path mPatternPath;
 | |
|     private final Matrix mTempMatrix;
 | |
| 
 | |
|     public Path getPatternPath() {
 | |
|         return this.mOriginalPatternPath;
 | |
|     }
 | |
| 
 | |
|     public PatternPathMotion() {
 | |
|         Path path = new Path();
 | |
|         this.mPatternPath = path;
 | |
|         this.mTempMatrix = new Matrix();
 | |
|         path.lineTo(1.0f, 0.0f);
 | |
|         this.mOriginalPatternPath = path;
 | |
|     }
 | |
| 
 | |
|     public PatternPathMotion(Context context, AttributeSet attributeSet) {
 | |
|         this.mPatternPath = new Path();
 | |
|         this.mTempMatrix = new Matrix();
 | |
|         TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, Styleable.PATTERN_PATH_MOTION);
 | |
|         try {
 | |
|             String namedString = TypedArrayUtils.getNamedString(obtainStyledAttributes, (XmlPullParser) attributeSet, "patternPathData", 0);
 | |
|             if (namedString == null) {
 | |
|                 throw new RuntimeException("pathData must be supplied for patternPathMotion");
 | |
|             }
 | |
|             setPatternPath(PathParser.createPathFromPathData(namedString));
 | |
|         } finally {
 | |
|             obtainStyledAttributes.recycle();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public PatternPathMotion(Path path) {
 | |
|         this.mPatternPath = new Path();
 | |
|         this.mTempMatrix = new Matrix();
 | |
|         setPatternPath(path);
 | |
|     }
 | |
| 
 | |
|     public void setPatternPath(Path path) {
 | |
|         PathMeasure pathMeasure = new PathMeasure(path, false);
 | |
|         float[] fArr = new float[2];
 | |
|         pathMeasure.getPosTan(pathMeasure.getLength(), fArr, null);
 | |
|         float f = fArr[0];
 | |
|         float f2 = fArr[1];
 | |
|         pathMeasure.getPosTan(0.0f, fArr, null);
 | |
|         float f3 = fArr[0];
 | |
|         float f4 = fArr[1];
 | |
|         if (f3 == f && f4 == f2) {
 | |
|             throw new IllegalArgumentException("pattern must not end at the starting point");
 | |
|         }
 | |
|         this.mTempMatrix.setTranslate(-f3, -f4);
 | |
|         float f5 = f - f3;
 | |
|         float f6 = f2 - f4;
 | |
|         float distance = 1.0f / distance(f5, f6);
 | |
|         this.mTempMatrix.postScale(distance, distance);
 | |
|         this.mTempMatrix.postRotate((float) Math.toDegrees(-Math.atan2(f6, f5)));
 | |
|         path.transform(this.mTempMatrix, this.mPatternPath);
 | |
|         this.mOriginalPatternPath = path;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.transition.PathMotion
 | |
|     public Path getPath(float f, float f2, float f3, float f4) {
 | |
|         float f5 = f3 - f;
 | |
|         float f6 = f4 - f2;
 | |
|         float distance = distance(f5, f6);
 | |
|         double atan2 = Math.atan2(f6, f5);
 | |
|         this.mTempMatrix.setScale(distance, distance);
 | |
|         this.mTempMatrix.postRotate((float) Math.toDegrees(atan2));
 | |
|         this.mTempMatrix.postTranslate(f, f2);
 | |
|         Path path = new Path();
 | |
|         this.mPatternPath.transform(this.mTempMatrix, path);
 | |
|         return path;
 | |
|     }
 | |
| 
 | |
|     private static float distance(float f, float f2) {
 | |
|         return (float) Math.sqrt((f * f) + (f2 * f2));
 | |
|     }
 | |
| }
 |