ADD week 5
This commit is contained in:
		| @@ -0,0 +1,88 @@ | ||||
| package androidx.vectordrawable.graphics.drawable; | ||||
|  | ||||
| import android.R; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class AndroidResources { | ||||
|     public static final int FAST_OUT_LINEAR_IN = 17563663; | ||||
|     public static final int FAST_OUT_SLOW_IN = 17563661; | ||||
|     public static final int LINEAR_OUT_SLOW_IN = 17563662; | ||||
|     static final int STYLEABLE_ANIMATED_VECTOR_DRAWABLE_DRAWABLE = 0; | ||||
|     static final int STYLEABLE_ANIMATED_VECTOR_DRAWABLE_TARGET_ANIMATION = 1; | ||||
|     static final int STYLEABLE_ANIMATED_VECTOR_DRAWABLE_TARGET_NAME = 0; | ||||
|     public static final int STYLEABLE_ANIMATOR_DURATION = 1; | ||||
|     public static final int STYLEABLE_ANIMATOR_INTERPOLATOR = 0; | ||||
|     public static final int STYLEABLE_ANIMATOR_REPEAT_COUNT = 3; | ||||
|     public static final int STYLEABLE_ANIMATOR_REPEAT_MODE = 4; | ||||
|     public static final int STYLEABLE_ANIMATOR_SET_ORDERING = 0; | ||||
|     public static final int STYLEABLE_ANIMATOR_START_OFFSET = 2; | ||||
|     public static final int STYLEABLE_ANIMATOR_VALUE_FROM = 5; | ||||
|     public static final int STYLEABLE_ANIMATOR_VALUE_TO = 6; | ||||
|     public static final int STYLEABLE_ANIMATOR_VALUE_TYPE = 7; | ||||
|     public static final int STYLEABLE_KEYFRAME_FRACTION = 3; | ||||
|     public static final int STYLEABLE_KEYFRAME_INTERPOLATOR = 1; | ||||
|     public static final int STYLEABLE_KEYFRAME_VALUE = 0; | ||||
|     public static final int STYLEABLE_KEYFRAME_VALUE_TYPE = 2; | ||||
|     public static final int STYLEABLE_PATH_INTERPOLATOR_CONTROL_X_1 = 0; | ||||
|     public static final int STYLEABLE_PATH_INTERPOLATOR_CONTROL_X_2 = 2; | ||||
|     public static final int STYLEABLE_PATH_INTERPOLATOR_CONTROL_Y_1 = 1; | ||||
|     public static final int STYLEABLE_PATH_INTERPOLATOR_CONTROL_Y_2 = 3; | ||||
|     public static final int STYLEABLE_PATH_INTERPOLATOR_PATH_DATA = 4; | ||||
|     public static final int STYLEABLE_PROPERTY_ANIMATOR_PATH_DATA = 1; | ||||
|     public static final int STYLEABLE_PROPERTY_ANIMATOR_PROPERTY_NAME = 0; | ||||
|     public static final int STYLEABLE_PROPERTY_ANIMATOR_PROPERTY_X_NAME = 2; | ||||
|     public static final int STYLEABLE_PROPERTY_ANIMATOR_PROPERTY_Y_NAME = 3; | ||||
|     public static final int STYLEABLE_PROPERTY_VALUES_HOLDER_PROPERTY_NAME = 3; | ||||
|     public static final int STYLEABLE_PROPERTY_VALUES_HOLDER_VALUE_FROM = 0; | ||||
|     public static final int STYLEABLE_PROPERTY_VALUES_HOLDER_VALUE_TO = 1; | ||||
|     public static final int STYLEABLE_PROPERTY_VALUES_HOLDER_VALUE_TYPE = 2; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_ALPHA = 4; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_AUTO_MIRRORED = 5; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_CLIP_PATH_FILLTYPE = 2; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_CLIP_PATH_NAME = 0; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_CLIP_PATH_PATH_DATA = 1; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_GROUP_NAME = 0; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_GROUP_PIVOT_X = 1; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_GROUP_PIVOT_Y = 2; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_GROUP_ROTATION = 5; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_GROUP_SCALE_X = 3; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_GROUP_SCALE_Y = 4; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_GROUP_TRANSLATE_X = 6; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_GROUP_TRANSLATE_Y = 7; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_HEIGHT = 2; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_NAME = 0; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_FILL_ALPHA = 12; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_FILL_COLOR = 1; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_NAME = 0; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_PATH_DATA = 2; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_STROKE_ALPHA = 11; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_STROKE_COLOR = 3; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_STROKE_LINE_CAP = 8; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_STROKE_LINE_JOIN = 9; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_STROKE_MITER_LIMIT = 10; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_STROKE_WIDTH = 4; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_TRIM_PATH_END = 6; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_TRIM_PATH_FILLTYPE = 13; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_TRIM_PATH_OFFSET = 7; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_PATH_TRIM_PATH_START = 5; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_TINT = 1; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_TINT_MODE = 6; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_VIEWPORT_HEIGHT = 8; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_VIEWPORT_WIDTH = 7; | ||||
|     static final int STYLEABLE_VECTOR_DRAWABLE_WIDTH = 3; | ||||
|     static final int[] STYLEABLE_VECTOR_DRAWABLE_TYPE_ARRAY = {R.attr.name, R.attr.tint, R.attr.height, R.attr.width, R.attr.alpha, R.attr.autoMirrored, R.attr.tintMode, R.attr.viewportWidth, R.attr.viewportHeight}; | ||||
|     static final int[] STYLEABLE_VECTOR_DRAWABLE_GROUP = {R.attr.name, R.attr.pivotX, R.attr.pivotY, R.attr.scaleX, R.attr.scaleY, R.attr.rotation, R.attr.translateX, R.attr.translateY}; | ||||
|     static final int[] STYLEABLE_VECTOR_DRAWABLE_PATH = {R.attr.name, R.attr.fillColor, R.attr.pathData, R.attr.strokeColor, R.attr.strokeWidth, R.attr.trimPathStart, R.attr.trimPathEnd, R.attr.trimPathOffset, R.attr.strokeLineCap, R.attr.strokeLineJoin, R.attr.strokeMiterLimit, R.attr.strokeAlpha, R.attr.fillAlpha, R.attr.fillType}; | ||||
|     static final int[] STYLEABLE_VECTOR_DRAWABLE_CLIP_PATH = {R.attr.name, R.attr.pathData, R.attr.fillType}; | ||||
|     static final int[] STYLEABLE_ANIMATED_VECTOR_DRAWABLE = {R.attr.drawable}; | ||||
|     static final int[] STYLEABLE_ANIMATED_VECTOR_DRAWABLE_TARGET = {R.attr.name, R.attr.animation}; | ||||
|     public static final int[] STYLEABLE_ANIMATOR = {R.attr.interpolator, R.attr.duration, R.attr.startOffset, R.attr.repeatCount, R.attr.repeatMode, R.attr.valueFrom, R.attr.valueTo, R.attr.valueType}; | ||||
|     public static final int[] STYLEABLE_ANIMATOR_SET = {R.attr.ordering}; | ||||
|     public static final int[] STYLEABLE_PROPERTY_VALUES_HOLDER = {R.attr.valueFrom, R.attr.valueTo, R.attr.valueType, R.attr.propertyName}; | ||||
|     public static final int[] STYLEABLE_KEYFRAME = {R.attr.value, R.attr.interpolator, R.attr.valueType, R.attr.fraction}; | ||||
|     public static final int[] STYLEABLE_PROPERTY_ANIMATOR = {R.attr.propertyName, R.attr.pathData, R.attr.propertyXName, R.attr.propertyYName}; | ||||
|     public static final int[] STYLEABLE_PATH_INTERPOLATOR = {R.attr.controlX1, R.attr.controlY1, R.attr.controlX2, R.attr.controlY2, R.attr.pathData}; | ||||
|  | ||||
|     private AndroidResources() { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,41 @@ | ||||
| package androidx.vectordrawable.graphics.drawable; | ||||
|  | ||||
| import android.graphics.drawable.Animatable; | ||||
| import android.graphics.drawable.Animatable2; | ||||
| import android.graphics.drawable.Drawable; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public interface Animatable2Compat extends Animatable { | ||||
|     void clearAnimationCallbacks(); | ||||
|  | ||||
|     void registerAnimationCallback(AnimationCallback animationCallback); | ||||
|  | ||||
|     boolean unregisterAnimationCallback(AnimationCallback animationCallback); | ||||
|  | ||||
|     public static abstract class AnimationCallback { | ||||
|         Animatable2.AnimationCallback mPlatformCallback; | ||||
|  | ||||
|         public void onAnimationEnd(Drawable drawable) { | ||||
|         } | ||||
|  | ||||
|         public void onAnimationStart(Drawable drawable) { | ||||
|         } | ||||
|  | ||||
|         Animatable2.AnimationCallback getPlatformCallback() { | ||||
|             if (this.mPlatformCallback == null) { | ||||
|                 this.mPlatformCallback = new Animatable2.AnimationCallback() { // from class: androidx.vectordrawable.graphics.drawable.Animatable2Compat.AnimationCallback.1 | ||||
|                     @Override // android.graphics.drawable.Animatable2.AnimationCallback | ||||
|                     public void onAnimationStart(Drawable drawable) { | ||||
|                         AnimationCallback.this.onAnimationStart(drawable); | ||||
|                     } | ||||
|  | ||||
|                     @Override // android.graphics.drawable.Animatable2.AnimationCallback | ||||
|                     public void onAnimationEnd(Drawable drawable) { | ||||
|                         AnimationCallback.this.onAnimationEnd(drawable); | ||||
|                     } | ||||
|                 }; | ||||
|             } | ||||
|             return this.mPlatformCallback; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,722 @@ | ||||
| package androidx.vectordrawable.graphics.drawable; | ||||
|  | ||||
| import android.animation.Animator; | ||||
| import android.animation.AnimatorListenerAdapter; | ||||
| import android.animation.AnimatorSet; | ||||
| import android.animation.ObjectAnimator; | ||||
| import android.content.Context; | ||||
| import android.content.res.ColorStateList; | ||||
| import android.content.res.Resources; | ||||
| import android.content.res.TypedArray; | ||||
| import android.content.res.XmlResourceParser; | ||||
| import android.graphics.Canvas; | ||||
| import android.graphics.ColorFilter; | ||||
| import android.graphics.PorterDuff; | ||||
| import android.graphics.Rect; | ||||
| import android.graphics.Region; | ||||
| import android.graphics.drawable.Animatable; | ||||
| import android.graphics.drawable.AnimatedVectorDrawable; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.os.Build; | ||||
| import android.util.AttributeSet; | ||||
| import android.util.Log; | ||||
| import android.util.Xml; | ||||
| import androidx.collection.ArrayMap; | ||||
| import androidx.core.content.res.ResourcesCompat; | ||||
| import androidx.core.content.res.TypedArrayUtils; | ||||
| import androidx.core.graphics.drawable.DrawableCompat; | ||||
| import androidx.vectordrawable.graphics.drawable.Animatable2Compat; | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
| import org.xmlpull.v1.XmlPullParser; | ||||
| import org.xmlpull.v1.XmlPullParserException; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class AnimatedVectorDrawableCompat extends VectorDrawableCommon implements Animatable2Compat { | ||||
|     private static final String ANIMATED_VECTOR = "animated-vector"; | ||||
|     private static final boolean DBG_ANIMATION_VECTOR_DRAWABLE = false; | ||||
|     private static final String LOGTAG = "AnimatedVDCompat"; | ||||
|     private static final String TARGET = "target"; | ||||
|     private AnimatedVectorDrawableCompatState mAnimatedVectorState; | ||||
|     ArrayList<Animatable2Compat.AnimationCallback> mAnimationCallbacks; | ||||
|     private Animator.AnimatorListener mAnimatorListener; | ||||
|     private android.animation.ArgbEvaluator mArgbEvaluator; | ||||
|     AnimatedVectorDrawableDelegateState mCachedConstantStateDelegate; | ||||
|     final Drawable.Callback mCallback; | ||||
|     private Context mContext; | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ void clearColorFilter() { | ||||
|         super.clearColorFilter(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ Drawable getCurrent() { | ||||
|         return super.getCurrent(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ int getMinimumHeight() { | ||||
|         return super.getMinimumHeight(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ int getMinimumWidth() { | ||||
|         return super.getMinimumWidth(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ boolean getPadding(Rect rect) { | ||||
|         return super.getPadding(rect); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ int[] getState() { | ||||
|         return super.getState(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ Region getTransparentRegion() { | ||||
|         return super.getTransparentRegion(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ void jumpToCurrentState() { | ||||
|         super.jumpToCurrentState(); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ void setChangingConfigurations(int i) { | ||||
|         super.setChangingConfigurations(i); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ void setColorFilter(int i, PorterDuff.Mode mode) { | ||||
|         super.setColorFilter(i, mode); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ void setFilterBitmap(boolean z) { | ||||
|         super.setFilterBitmap(z); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ void setHotspot(float f, float f2) { | ||||
|         super.setHotspot(f, f2); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ void setHotspotBounds(int i, int i2, int i3, int i4) { | ||||
|         super.setHotspotBounds(i, i2, i3, i4); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public /* bridge */ /* synthetic */ boolean setState(int[] iArr) { | ||||
|         return super.setState(iArr); | ||||
|     } | ||||
|  | ||||
|     AnimatedVectorDrawableCompat() { | ||||
|         this(null, null, null); | ||||
|     } | ||||
|  | ||||
|     private AnimatedVectorDrawableCompat(Context context) { | ||||
|         this(context, null, null); | ||||
|     } | ||||
|  | ||||
|     private AnimatedVectorDrawableCompat(Context context, AnimatedVectorDrawableCompatState animatedVectorDrawableCompatState, Resources resources) { | ||||
|         this.mArgbEvaluator = null; | ||||
|         this.mAnimatorListener = null; | ||||
|         this.mAnimationCallbacks = null; | ||||
|         Drawable.Callback callback = new Drawable.Callback() { // from class: androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat.1 | ||||
|             @Override // android.graphics.drawable.Drawable.Callback | ||||
|             public void invalidateDrawable(Drawable drawable) { | ||||
|                 AnimatedVectorDrawableCompat.this.invalidateSelf(); | ||||
|             } | ||||
|  | ||||
|             @Override // android.graphics.drawable.Drawable.Callback | ||||
|             public void scheduleDrawable(Drawable drawable, Runnable runnable, long j) { | ||||
|                 AnimatedVectorDrawableCompat.this.scheduleSelf(runnable, j); | ||||
|             } | ||||
|  | ||||
|             @Override // android.graphics.drawable.Drawable.Callback | ||||
|             public void unscheduleDrawable(Drawable drawable, Runnable runnable) { | ||||
|                 AnimatedVectorDrawableCompat.this.unscheduleSelf(runnable); | ||||
|             } | ||||
|         }; | ||||
|         this.mCallback = callback; | ||||
|         this.mContext = context; | ||||
|         if (animatedVectorDrawableCompatState != null) { | ||||
|             this.mAnimatedVectorState = animatedVectorDrawableCompatState; | ||||
|         } else { | ||||
|             this.mAnimatedVectorState = new AnimatedVectorDrawableCompatState(context, animatedVectorDrawableCompatState, callback, resources); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public Drawable mutate() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             this.mDelegateDrawable.mutate(); | ||||
|         } | ||||
|         return this; | ||||
|     } | ||||
|  | ||||
|     public static AnimatedVectorDrawableCompat create(Context context, int i) { | ||||
|         int next; | ||||
|         if (Build.VERSION.SDK_INT >= 24) { | ||||
|             AnimatedVectorDrawableCompat animatedVectorDrawableCompat = new AnimatedVectorDrawableCompat(context); | ||||
|             animatedVectorDrawableCompat.mDelegateDrawable = ResourcesCompat.getDrawable(context.getResources(), i, context.getTheme()); | ||||
|             animatedVectorDrawableCompat.mDelegateDrawable.setCallback(animatedVectorDrawableCompat.mCallback); | ||||
|             animatedVectorDrawableCompat.mCachedConstantStateDelegate = new AnimatedVectorDrawableDelegateState(animatedVectorDrawableCompat.mDelegateDrawable.getConstantState()); | ||||
|             return animatedVectorDrawableCompat; | ||||
|         } | ||||
|         try { | ||||
|             XmlResourceParser xml = context.getResources().getXml(i); | ||||
|             AttributeSet asAttributeSet = Xml.asAttributeSet(xml); | ||||
|             do { | ||||
|                 next = xml.next(); | ||||
|                 if (next == 2) { | ||||
|                     break; | ||||
|                 } | ||||
|             } while (next != 1); | ||||
|             if (next != 2) { | ||||
|                 throw new XmlPullParserException("No start tag found"); | ||||
|             } | ||||
|             return createFromXmlInner(context, context.getResources(), xml, asAttributeSet, context.getTheme()); | ||||
|         } catch (IOException e) { | ||||
|             Log.e(LOGTAG, "parser error", e); | ||||
|             return null; | ||||
|         } catch (XmlPullParserException e2) { | ||||
|             Log.e(LOGTAG, "parser error", e2); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static AnimatedVectorDrawableCompat createFromXmlInner(Context context, Resources resources, XmlPullParser xmlPullParser, AttributeSet attributeSet, Resources.Theme theme) throws XmlPullParserException, IOException { | ||||
|         AnimatedVectorDrawableCompat animatedVectorDrawableCompat = new AnimatedVectorDrawableCompat(context); | ||||
|         animatedVectorDrawableCompat.inflate(resources, xmlPullParser, attributeSet, theme); | ||||
|         return animatedVectorDrawableCompat; | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public Drawable.ConstantState getConstantState() { | ||||
|         if (this.mDelegateDrawable == null || Build.VERSION.SDK_INT < 24) { | ||||
|             return null; | ||||
|         } | ||||
|         return new AnimatedVectorDrawableDelegateState(this.mDelegateDrawable.getConstantState()); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public int getChangingConfigurations() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return this.mDelegateDrawable.getChangingConfigurations(); | ||||
|         } | ||||
|         return super.getChangingConfigurations() | this.mAnimatedVectorState.mChangingConfigurations; | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void draw(Canvas canvas) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             this.mDelegateDrawable.draw(canvas); | ||||
|             return; | ||||
|         } | ||||
|         this.mAnimatedVectorState.mVectorDrawable.draw(canvas); | ||||
|         if (this.mAnimatedVectorState.mAnimatorSet.isStarted()) { | ||||
|             invalidateSelf(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     protected void onBoundsChange(Rect rect) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             this.mDelegateDrawable.setBounds(rect); | ||||
|         } else { | ||||
|             this.mAnimatedVectorState.mVectorDrawable.setBounds(rect); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     protected boolean onStateChange(int[] iArr) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return this.mDelegateDrawable.setState(iArr); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.setState(iArr); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     protected boolean onLevelChange(int i) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return this.mDelegateDrawable.setLevel(i); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.setLevel(i); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public int getAlpha() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return DrawableCompat.getAlpha(this.mDelegateDrawable); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.getAlpha(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void setAlpha(int i) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             this.mDelegateDrawable.setAlpha(i); | ||||
|         } else { | ||||
|             this.mAnimatedVectorState.mVectorDrawable.setAlpha(i); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void setColorFilter(ColorFilter colorFilter) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             this.mDelegateDrawable.setColorFilter(colorFilter); | ||||
|         } else { | ||||
|             this.mAnimatedVectorState.mVectorDrawable.setColorFilter(colorFilter); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public ColorFilter getColorFilter() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return DrawableCompat.getColorFilter(this.mDelegateDrawable); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.getColorFilter(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable, androidx.core.graphics.drawable.TintAwareDrawable | ||||
|     public void setTint(int i) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             DrawableCompat.setTint(this.mDelegateDrawable, i); | ||||
|         } else { | ||||
|             this.mAnimatedVectorState.mVectorDrawable.setTint(i); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable, androidx.core.graphics.drawable.TintAwareDrawable | ||||
|     public void setTintList(ColorStateList colorStateList) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             DrawableCompat.setTintList(this.mDelegateDrawable, colorStateList); | ||||
|         } else { | ||||
|             this.mAnimatedVectorState.mVectorDrawable.setTintList(colorStateList); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable, androidx.core.graphics.drawable.TintAwareDrawable | ||||
|     public void setTintMode(PorterDuff.Mode mode) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             DrawableCompat.setTintMode(this.mDelegateDrawable, mode); | ||||
|         } else { | ||||
|             this.mAnimatedVectorState.mVectorDrawable.setTintMode(mode); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public boolean setVisible(boolean z, boolean z2) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return this.mDelegateDrawable.setVisible(z, z2); | ||||
|         } | ||||
|         this.mAnimatedVectorState.mVectorDrawable.setVisible(z, z2); | ||||
|         return super.setVisible(z, z2); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public boolean isStateful() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return this.mDelegateDrawable.isStateful(); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.isStateful(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public int getOpacity() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return this.mDelegateDrawable.getOpacity(); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.getOpacity(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public int getIntrinsicWidth() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return this.mDelegateDrawable.getIntrinsicWidth(); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.getIntrinsicWidth(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public int getIntrinsicHeight() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return this.mDelegateDrawable.getIntrinsicHeight(); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.getIntrinsicHeight(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public boolean isAutoMirrored() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return DrawableCompat.isAutoMirrored(this.mDelegateDrawable); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mVectorDrawable.isAutoMirrored(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void setAutoMirrored(boolean z) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             DrawableCompat.setAutoMirrored(this.mDelegateDrawable, z); | ||||
|         } else { | ||||
|             this.mAnimatedVectorState.mVectorDrawable.setAutoMirrored(z); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void inflate(Resources resources, XmlPullParser xmlPullParser, AttributeSet attributeSet, Resources.Theme theme) throws XmlPullParserException, IOException { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             DrawableCompat.inflate(this.mDelegateDrawable, resources, xmlPullParser, attributeSet, theme); | ||||
|             return; | ||||
|         } | ||||
|         int eventType = xmlPullParser.getEventType(); | ||||
|         int depth = xmlPullParser.getDepth() + 1; | ||||
|         while (eventType != 1 && (xmlPullParser.getDepth() >= depth || eventType != 3)) { | ||||
|             if (eventType == 2) { | ||||
|                 String name = xmlPullParser.getName(); | ||||
|                 if (ANIMATED_VECTOR.equals(name)) { | ||||
|                     TypedArray obtainAttributes = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, AndroidResources.STYLEABLE_ANIMATED_VECTOR_DRAWABLE); | ||||
|                     int resourceId = obtainAttributes.getResourceId(0, 0); | ||||
|                     if (resourceId != 0) { | ||||
|                         VectorDrawableCompat create = VectorDrawableCompat.create(resources, resourceId, theme); | ||||
|                         create.setAllowCaching(false); | ||||
|                         create.setCallback(this.mCallback); | ||||
|                         if (this.mAnimatedVectorState.mVectorDrawable != null) { | ||||
|                             this.mAnimatedVectorState.mVectorDrawable.setCallback(null); | ||||
|                         } | ||||
|                         this.mAnimatedVectorState.mVectorDrawable = create; | ||||
|                     } | ||||
|                     obtainAttributes.recycle(); | ||||
|                 } else if ("target".equals(name)) { | ||||
|                     TypedArray obtainAttributes2 = resources.obtainAttributes(attributeSet, AndroidResources.STYLEABLE_ANIMATED_VECTOR_DRAWABLE_TARGET); | ||||
|                     String string = obtainAttributes2.getString(0); | ||||
|                     int resourceId2 = obtainAttributes2.getResourceId(1, 0); | ||||
|                     if (resourceId2 != 0) { | ||||
|                         Context context = this.mContext; | ||||
|                         if (context != null) { | ||||
|                             setupAnimatorsForTarget(string, AnimatorInflaterCompat.loadAnimator(context, resourceId2)); | ||||
|                         } else { | ||||
|                             obtainAttributes2.recycle(); | ||||
|                             throw new IllegalStateException("Context can't be null when inflating animators"); | ||||
|                         } | ||||
|                     } | ||||
|                     obtainAttributes2.recycle(); | ||||
|                 } else { | ||||
|                     continue; | ||||
|                 } | ||||
|             } | ||||
|             eventType = xmlPullParser.next(); | ||||
|         } | ||||
|         this.mAnimatedVectorState.setupAnimatorSet(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void inflate(Resources resources, XmlPullParser xmlPullParser, AttributeSet attributeSet) throws XmlPullParserException, IOException { | ||||
|         inflate(resources, xmlPullParser, attributeSet, null); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.VectorDrawableCommon, android.graphics.drawable.Drawable | ||||
|     public void applyTheme(Resources.Theme theme) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             DrawableCompat.applyTheme(this.mDelegateDrawable, theme); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public boolean canApplyTheme() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return DrawableCompat.canApplyTheme(this.mDelegateDrawable); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     private static class AnimatedVectorDrawableDelegateState extends Drawable.ConstantState { | ||||
|         private final Drawable.ConstantState mDelegateState; | ||||
|  | ||||
|         public AnimatedVectorDrawableDelegateState(Drawable.ConstantState constantState) { | ||||
|             this.mDelegateState = constantState; | ||||
|         } | ||||
|  | ||||
|         @Override // android.graphics.drawable.Drawable.ConstantState | ||||
|         public Drawable newDrawable() { | ||||
|             AnimatedVectorDrawableCompat animatedVectorDrawableCompat = new AnimatedVectorDrawableCompat(); | ||||
|             animatedVectorDrawableCompat.mDelegateDrawable = this.mDelegateState.newDrawable(); | ||||
|             animatedVectorDrawableCompat.mDelegateDrawable.setCallback(animatedVectorDrawableCompat.mCallback); | ||||
|             return animatedVectorDrawableCompat; | ||||
|         } | ||||
|  | ||||
|         @Override // android.graphics.drawable.Drawable.ConstantState | ||||
|         public Drawable newDrawable(Resources resources) { | ||||
|             AnimatedVectorDrawableCompat animatedVectorDrawableCompat = new AnimatedVectorDrawableCompat(); | ||||
|             animatedVectorDrawableCompat.mDelegateDrawable = this.mDelegateState.newDrawable(resources); | ||||
|             animatedVectorDrawableCompat.mDelegateDrawable.setCallback(animatedVectorDrawableCompat.mCallback); | ||||
|             return animatedVectorDrawableCompat; | ||||
|         } | ||||
|  | ||||
|         @Override // android.graphics.drawable.Drawable.ConstantState | ||||
|         public Drawable newDrawable(Resources resources, Resources.Theme theme) { | ||||
|             AnimatedVectorDrawableCompat animatedVectorDrawableCompat = new AnimatedVectorDrawableCompat(); | ||||
|             animatedVectorDrawableCompat.mDelegateDrawable = this.mDelegateState.newDrawable(resources, theme); | ||||
|             animatedVectorDrawableCompat.mDelegateDrawable.setCallback(animatedVectorDrawableCompat.mCallback); | ||||
|             return animatedVectorDrawableCompat; | ||||
|         } | ||||
|  | ||||
|         @Override // android.graphics.drawable.Drawable.ConstantState | ||||
|         public boolean canApplyTheme() { | ||||
|             return this.mDelegateState.canApplyTheme(); | ||||
|         } | ||||
|  | ||||
|         @Override // android.graphics.drawable.Drawable.ConstantState | ||||
|         public int getChangingConfigurations() { | ||||
|             return this.mDelegateState.getChangingConfigurations(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static class AnimatedVectorDrawableCompatState extends Drawable.ConstantState { | ||||
|         AnimatorSet mAnimatorSet; | ||||
|         ArrayList<Animator> mAnimators; | ||||
|         int mChangingConfigurations; | ||||
|         ArrayMap<Animator, String> mTargetNameMap; | ||||
|         VectorDrawableCompat mVectorDrawable; | ||||
|  | ||||
|         @Override // android.graphics.drawable.Drawable.ConstantState | ||||
|         public int getChangingConfigurations() { | ||||
|             return this.mChangingConfigurations; | ||||
|         } | ||||
|  | ||||
|         public AnimatedVectorDrawableCompatState(Context context, AnimatedVectorDrawableCompatState animatedVectorDrawableCompatState, Drawable.Callback callback, Resources resources) { | ||||
|             if (animatedVectorDrawableCompatState != null) { | ||||
|                 this.mChangingConfigurations = animatedVectorDrawableCompatState.mChangingConfigurations; | ||||
|                 VectorDrawableCompat vectorDrawableCompat = animatedVectorDrawableCompatState.mVectorDrawable; | ||||
|                 if (vectorDrawableCompat != null) { | ||||
|                     Drawable.ConstantState constantState = vectorDrawableCompat.getConstantState(); | ||||
|                     if (resources != null) { | ||||
|                         this.mVectorDrawable = (VectorDrawableCompat) constantState.newDrawable(resources); | ||||
|                     } else { | ||||
|                         this.mVectorDrawable = (VectorDrawableCompat) constantState.newDrawable(); | ||||
|                     } | ||||
|                     VectorDrawableCompat vectorDrawableCompat2 = (VectorDrawableCompat) this.mVectorDrawable.mutate(); | ||||
|                     this.mVectorDrawable = vectorDrawableCompat2; | ||||
|                     vectorDrawableCompat2.setCallback(callback); | ||||
|                     this.mVectorDrawable.setBounds(animatedVectorDrawableCompatState.mVectorDrawable.getBounds()); | ||||
|                     this.mVectorDrawable.setAllowCaching(false); | ||||
|                 } | ||||
|                 ArrayList<Animator> arrayList = animatedVectorDrawableCompatState.mAnimators; | ||||
|                 if (arrayList != null) { | ||||
|                     int size = arrayList.size(); | ||||
|                     this.mAnimators = new ArrayList<>(size); | ||||
|                     this.mTargetNameMap = new ArrayMap<>(size); | ||||
|                     for (int i = 0; i < size; i++) { | ||||
|                         Animator animator = animatedVectorDrawableCompatState.mAnimators.get(i); | ||||
|                         Animator clone = animator.clone(); | ||||
|                         String str = animatedVectorDrawableCompatState.mTargetNameMap.get(animator); | ||||
|                         clone.setTarget(this.mVectorDrawable.getTargetByName(str)); | ||||
|                         this.mAnimators.add(clone); | ||||
|                         this.mTargetNameMap.put(clone, str); | ||||
|                     } | ||||
|                     setupAnimatorSet(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         @Override // android.graphics.drawable.Drawable.ConstantState | ||||
|         public Drawable newDrawable() { | ||||
|             throw new IllegalStateException("No constant state support for SDK < 24."); | ||||
|         } | ||||
|  | ||||
|         @Override // android.graphics.drawable.Drawable.ConstantState | ||||
|         public Drawable newDrawable(Resources resources) { | ||||
|             throw new IllegalStateException("No constant state support for SDK < 24."); | ||||
|         } | ||||
|  | ||||
|         public void setupAnimatorSet() { | ||||
|             if (this.mAnimatorSet == null) { | ||||
|                 this.mAnimatorSet = new AnimatorSet(); | ||||
|             } | ||||
|             this.mAnimatorSet.playTogether(this.mAnimators); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void setupColorAnimator(Animator animator) { | ||||
|         ArrayList<Animator> childAnimations; | ||||
|         if ((animator instanceof AnimatorSet) && (childAnimations = ((AnimatorSet) animator).getChildAnimations()) != null) { | ||||
|             for (int i = 0; i < childAnimations.size(); i++) { | ||||
|                 setupColorAnimator(childAnimations.get(i)); | ||||
|             } | ||||
|         } | ||||
|         if (animator instanceof ObjectAnimator) { | ||||
|             ObjectAnimator objectAnimator = (ObjectAnimator) animator; | ||||
|             String propertyName = objectAnimator.getPropertyName(); | ||||
|             if ("fillColor".equals(propertyName) || "strokeColor".equals(propertyName)) { | ||||
|                 if (this.mArgbEvaluator == null) { | ||||
|                     this.mArgbEvaluator = new android.animation.ArgbEvaluator(); | ||||
|                 } | ||||
|                 objectAnimator.setEvaluator(this.mArgbEvaluator); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void setupAnimatorsForTarget(String str, Animator animator) { | ||||
|         animator.setTarget(this.mAnimatedVectorState.mVectorDrawable.getTargetByName(str)); | ||||
|         if (this.mAnimatedVectorState.mAnimators == null) { | ||||
|             this.mAnimatedVectorState.mAnimators = new ArrayList<>(); | ||||
|             this.mAnimatedVectorState.mTargetNameMap = new ArrayMap<>(); | ||||
|         } | ||||
|         this.mAnimatedVectorState.mAnimators.add(animator); | ||||
|         this.mAnimatedVectorState.mTargetNameMap.put(animator, str); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Animatable | ||||
|     public boolean isRunning() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             return ((AnimatedVectorDrawable) this.mDelegateDrawable).isRunning(); | ||||
|         } | ||||
|         return this.mAnimatedVectorState.mAnimatorSet.isRunning(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Animatable | ||||
|     public void start() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             ((AnimatedVectorDrawable) this.mDelegateDrawable).start(); | ||||
|         } else { | ||||
|             if (this.mAnimatedVectorState.mAnimatorSet.isStarted()) { | ||||
|                 return; | ||||
|             } | ||||
|             this.mAnimatedVectorState.mAnimatorSet.start(); | ||||
|             invalidateSelf(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Animatable | ||||
|     public void stop() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             ((AnimatedVectorDrawable) this.mDelegateDrawable).stop(); | ||||
|         } else { | ||||
|             this.mAnimatedVectorState.mAnimatorSet.end(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static boolean unregisterPlatformCallback(AnimatedVectorDrawable animatedVectorDrawable, Animatable2Compat.AnimationCallback animationCallback) { | ||||
|         boolean unregisterAnimationCallback; | ||||
|         unregisterAnimationCallback = animatedVectorDrawable.unregisterAnimationCallback(animationCallback.getPlatformCallback()); | ||||
|         return unregisterAnimationCallback; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.Animatable2Compat | ||||
|     public void registerAnimationCallback(Animatable2Compat.AnimationCallback animationCallback) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             registerPlatformCallback((AnimatedVectorDrawable) this.mDelegateDrawable, animationCallback); | ||||
|             return; | ||||
|         } | ||||
|         if (animationCallback == null) { | ||||
|             return; | ||||
|         } | ||||
|         if (this.mAnimationCallbacks == null) { | ||||
|             this.mAnimationCallbacks = new ArrayList<>(); | ||||
|         } | ||||
|         if (this.mAnimationCallbacks.contains(animationCallback)) { | ||||
|             return; | ||||
|         } | ||||
|         this.mAnimationCallbacks.add(animationCallback); | ||||
|         if (this.mAnimatorListener == null) { | ||||
|             this.mAnimatorListener = new AnimatorListenerAdapter() { // from class: androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat.2 | ||||
|                 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|                 public void onAnimationStart(Animator animator) { | ||||
|                     ArrayList arrayList = new ArrayList(AnimatedVectorDrawableCompat.this.mAnimationCallbacks); | ||||
|                     int size = arrayList.size(); | ||||
|                     for (int i = 0; i < size; i++) { | ||||
|                         ((Animatable2Compat.AnimationCallback) arrayList.get(i)).onAnimationStart(AnimatedVectorDrawableCompat.this); | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 @Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener | ||||
|                 public void onAnimationEnd(Animator animator) { | ||||
|                     ArrayList arrayList = new ArrayList(AnimatedVectorDrawableCompat.this.mAnimationCallbacks); | ||||
|                     int size = arrayList.size(); | ||||
|                     for (int i = 0; i < size; i++) { | ||||
|                         ((Animatable2Compat.AnimationCallback) arrayList.get(i)).onAnimationEnd(AnimatedVectorDrawableCompat.this); | ||||
|                     } | ||||
|                 } | ||||
|             }; | ||||
|         } | ||||
|         this.mAnimatedVectorState.mAnimatorSet.addListener(this.mAnimatorListener); | ||||
|     } | ||||
|  | ||||
|     private static void registerPlatformCallback(AnimatedVectorDrawable animatedVectorDrawable, Animatable2Compat.AnimationCallback animationCallback) { | ||||
|         animatedVectorDrawable.registerAnimationCallback(animationCallback.getPlatformCallback()); | ||||
|     } | ||||
|  | ||||
|     private void removeAnimatorSetListener() { | ||||
|         if (this.mAnimatorListener != null) { | ||||
|             this.mAnimatedVectorState.mAnimatorSet.removeListener(this.mAnimatorListener); | ||||
|             this.mAnimatorListener = null; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.Animatable2Compat | ||||
|     public boolean unregisterAnimationCallback(Animatable2Compat.AnimationCallback animationCallback) { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             unregisterPlatformCallback((AnimatedVectorDrawable) this.mDelegateDrawable, animationCallback); | ||||
|         } | ||||
|         ArrayList<Animatable2Compat.AnimationCallback> arrayList = this.mAnimationCallbacks; | ||||
|         if (arrayList == null || animationCallback == null) { | ||||
|             return false; | ||||
|         } | ||||
|         boolean remove = arrayList.remove(animationCallback); | ||||
|         if (this.mAnimationCallbacks.size() == 0) { | ||||
|             removeAnimatorSetListener(); | ||||
|         } | ||||
|         return remove; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.vectordrawable.graphics.drawable.Animatable2Compat | ||||
|     public void clearAnimationCallbacks() { | ||||
|         if (this.mDelegateDrawable != null) { | ||||
|             ((AnimatedVectorDrawable) this.mDelegateDrawable).clearAnimationCallbacks(); | ||||
|             return; | ||||
|         } | ||||
|         removeAnimatorSetListener(); | ||||
|         ArrayList<Animatable2Compat.AnimationCallback> arrayList = this.mAnimationCallbacks; | ||||
|         if (arrayList == null) { | ||||
|             return; | ||||
|         } | ||||
|         arrayList.clear(); | ||||
|     } | ||||
|  | ||||
|     public static void registerAnimationCallback(Drawable drawable, Animatable2Compat.AnimationCallback animationCallback) { | ||||
|         if (drawable == null || animationCallback == null || !(drawable instanceof Animatable)) { | ||||
|             return; | ||||
|         } | ||||
|         if (Build.VERSION.SDK_INT >= 24) { | ||||
|             registerPlatformCallback((AnimatedVectorDrawable) drawable, animationCallback); | ||||
|         } else { | ||||
|             ((AnimatedVectorDrawableCompat) drawable).registerAnimationCallback(animationCallback); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static boolean unregisterAnimationCallback(Drawable drawable, Animatable2Compat.AnimationCallback animationCallback) { | ||||
|         if (drawable == null || animationCallback == null || !(drawable instanceof Animatable)) { | ||||
|             return false; | ||||
|         } | ||||
|         if (Build.VERSION.SDK_INT >= 24) { | ||||
|             return unregisterPlatformCallback((AnimatedVectorDrawable) drawable, animationCallback); | ||||
|         } | ||||
|         return ((AnimatedVectorDrawableCompat) drawable).unregisterAnimationCallback(animationCallback); | ||||
|     } | ||||
|  | ||||
|     public static void clearAnimationCallbacks(Drawable drawable) { | ||||
|         if (drawable instanceof Animatable) { | ||||
|             if (Build.VERSION.SDK_INT >= 24) { | ||||
|                 ((AnimatedVectorDrawable) drawable).clearAnimationCallbacks(); | ||||
|             } else { | ||||
|                 ((AnimatedVectorDrawableCompat) drawable).clearAnimationCallbacks(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,130 @@ | ||||
| package androidx.vectordrawable.graphics.drawable; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.content.res.Resources; | ||||
| import android.view.animation.AnimationUtils; | ||||
| import android.view.animation.Interpolator; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class AnimationUtilsCompat { | ||||
|     public static Interpolator loadInterpolator(Context context, int i) throws Resources.NotFoundException { | ||||
|         return AnimationUtils.loadInterpolator(context, i); | ||||
|     } | ||||
|  | ||||
|     /* JADX WARN: Code restructure failed: missing block: B:7:0x00c7, code lost: | ||||
|      | ||||
|         return r4; | ||||
|      */ | ||||
|     /* | ||||
|         Code decompiled incorrectly, please refer to instructions dump. | ||||
|         To view partially-correct add '--show-bad-code' argument | ||||
|     */ | ||||
|     private static android.view.animation.Interpolator createInterpolatorFromXml(android.content.Context r2, android.content.res.Resources r3, android.content.res.Resources.Theme r4, org.xmlpull.v1.XmlPullParser r5) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException { | ||||
|         /* | ||||
|             int r3 = r5.getDepth() | ||||
|             r4 = 0 | ||||
|         L5: | ||||
|             int r0 = r5.next() | ||||
|             r1 = 3 | ||||
|             if (r0 != r1) goto L12 | ||||
|             int r1 = r5.getDepth() | ||||
|             if (r1 <= r3) goto Lc7 | ||||
|         L12: | ||||
|             r1 = 1 | ||||
|             if (r0 == r1) goto Lc7 | ||||
|             r1 = 2 | ||||
|             if (r0 == r1) goto L19 | ||||
|             goto L5 | ||||
|         L19: | ||||
|             android.util.AttributeSet r4 = android.util.Xml.asAttributeSet(r5) | ||||
|             java.lang.String r0 = r5.getName() | ||||
|             java.lang.String r1 = "linearInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto L2f | ||||
|             android.view.animation.LinearInterpolator r4 = new android.view.animation.LinearInterpolator | ||||
|             r4.<init>() | ||||
|             goto L5 | ||||
|         L2f: | ||||
|             java.lang.String r1 = "accelerateInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto L3e | ||||
|             android.view.animation.AccelerateInterpolator r0 = new android.view.animation.AccelerateInterpolator | ||||
|             r0.<init>(r2, r4) | ||||
|         L3c: | ||||
|             r4 = r0 | ||||
|             goto L5 | ||||
|         L3e: | ||||
|             java.lang.String r1 = "decelerateInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto L4c | ||||
|             android.view.animation.DecelerateInterpolator r0 = new android.view.animation.DecelerateInterpolator | ||||
|             r0.<init>(r2, r4) | ||||
|             goto L3c | ||||
|         L4c: | ||||
|             java.lang.String r1 = "accelerateDecelerateInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto L5a | ||||
|             android.view.animation.AccelerateDecelerateInterpolator r4 = new android.view.animation.AccelerateDecelerateInterpolator | ||||
|             r4.<init>() | ||||
|             goto L5 | ||||
|         L5a: | ||||
|             java.lang.String r1 = "cycleInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto L68 | ||||
|             android.view.animation.CycleInterpolator r0 = new android.view.animation.CycleInterpolator | ||||
|             r0.<init>(r2, r4) | ||||
|             goto L3c | ||||
|         L68: | ||||
|             java.lang.String r1 = "anticipateInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto L76 | ||||
|             android.view.animation.AnticipateInterpolator r0 = new android.view.animation.AnticipateInterpolator | ||||
|             r0.<init>(r2, r4) | ||||
|             goto L3c | ||||
|         L76: | ||||
|             java.lang.String r1 = "overshootInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto L84 | ||||
|             android.view.animation.OvershootInterpolator r0 = new android.view.animation.OvershootInterpolator | ||||
|             r0.<init>(r2, r4) | ||||
|             goto L3c | ||||
|         L84: | ||||
|             java.lang.String r1 = "anticipateOvershootInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto L92 | ||||
|             android.view.animation.AnticipateOvershootInterpolator r0 = new android.view.animation.AnticipateOvershootInterpolator | ||||
|             r0.<init>(r2, r4) | ||||
|             goto L3c | ||||
|         L92: | ||||
|             java.lang.String r1 = "bounceInterpolator" | ||||
|             boolean r1 = r0.equals(r1) | ||||
|             if (r1 == 0) goto La1 | ||||
|             android.view.animation.BounceInterpolator r4 = new android.view.animation.BounceInterpolator | ||||
|             r4.<init>() | ||||
|             goto L5 | ||||
|         La1: | ||||
|             java.lang.String r1 = "pathInterpolator" | ||||
|             boolean r0 = r0.equals(r1) | ||||
|             if (r0 == 0) goto Laf | ||||
|             androidx.vectordrawable.graphics.drawable.PathInterpolatorCompat r0 = new androidx.vectordrawable.graphics.drawable.PathInterpolatorCompat | ||||
|             r0.<init>(r2, r4, r5) | ||||
|             goto L3c | ||||
|         Laf: | ||||
|             java.lang.RuntimeException r2 = new java.lang.RuntimeException | ||||
|             java.lang.StringBuilder r3 = new java.lang.StringBuilder | ||||
|             java.lang.String r4 = "Unknown interpolator name: " | ||||
|             r3.<init>(r4) | ||||
|             java.lang.String r4 = r5.getName() | ||||
|             r3.append(r4) | ||||
|             java.lang.String r3 = r3.toString() | ||||
|             r2.<init>(r3) | ||||
|             throw r2 | ||||
|         Lc7: | ||||
|             return r4 | ||||
|         */ | ||||
|         throw new UnsupportedOperationException("Method not decompiled: androidx.vectordrawable.graphics.drawable.AnimationUtilsCompat.createInterpolatorFromXml(android.content.Context, android.content.res.Resources, android.content.res.Resources$Theme, org.xmlpull.v1.XmlPullParser):android.view.animation.Interpolator"); | ||||
|     } | ||||
|  | ||||
|     private AnimationUtilsCompat() { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,545 @@ | ||||
| package androidx.vectordrawable.graphics.drawable; | ||||
|  | ||||
| import android.animation.Animator; | ||||
| import android.animation.AnimatorInflater; | ||||
| import android.animation.Keyframe; | ||||
| import android.animation.ObjectAnimator; | ||||
| import android.animation.PropertyValuesHolder; | ||||
| import android.animation.TypeEvaluator; | ||||
| import android.animation.ValueAnimator; | ||||
| import android.content.Context; | ||||
| import android.content.res.Resources; | ||||
| import android.content.res.TypedArray; | ||||
| import android.content.res.XmlResourceParser; | ||||
| import android.graphics.Path; | ||||
| import android.graphics.PathMeasure; | ||||
| import android.os.Build; | ||||
| import android.util.AttributeSet; | ||||
| import android.util.Log; | ||||
| import android.util.TypedValue; | ||||
| import android.util.Xml; | ||||
| import android.view.InflateException; | ||||
| import androidx.constraintlayout.core.motion.utils.TypedValues; | ||||
| import androidx.core.content.res.TypedArrayUtils; | ||||
| import androidx.core.graphics.PathParser; | ||||
| import com.google.android.material.card.MaterialCardViewHelper; | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
| import org.xmlpull.v1.XmlPullParser; | ||||
| import org.xmlpull.v1.XmlPullParserException; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class AnimatorInflaterCompat { | ||||
|     private static final boolean DBG_ANIMATOR_INFLATER = false; | ||||
|     private static final int MAX_NUM_POINTS = 100; | ||||
|     private static final String TAG = "AnimatorInflater"; | ||||
|     private static final int TOGETHER = 0; | ||||
|     private static final int VALUE_TYPE_COLOR = 3; | ||||
|     private static final int VALUE_TYPE_FLOAT = 0; | ||||
|     private static final int VALUE_TYPE_INT = 1; | ||||
|     private static final int VALUE_TYPE_PATH = 2; | ||||
|     private static final int VALUE_TYPE_UNDEFINED = 4; | ||||
|  | ||||
|     private static boolean isColorType(int i) { | ||||
|         return i >= 28 && i <= 31; | ||||
|     } | ||||
|  | ||||
|     public static Animator loadAnimator(Context context, int i) throws Resources.NotFoundException { | ||||
|         if (Build.VERSION.SDK_INT >= 24) { | ||||
|             return AnimatorInflater.loadAnimator(context, i); | ||||
|         } | ||||
|         return loadAnimator(context, context.getResources(), context.getTheme(), i); | ||||
|     } | ||||
|  | ||||
|     public static Animator loadAnimator(Context context, Resources resources, Resources.Theme theme, int i) throws Resources.NotFoundException { | ||||
|         return loadAnimator(context, resources, theme, i, 1.0f); | ||||
|     } | ||||
|  | ||||
|     public static Animator loadAnimator(Context context, Resources resources, Resources.Theme theme, int i, float f) throws Resources.NotFoundException { | ||||
|         XmlResourceParser xmlResourceParser = null; | ||||
|         try { | ||||
|             try { | ||||
|                 try { | ||||
|                     xmlResourceParser = resources.getAnimation(i); | ||||
|                     return createAnimatorFromXml(context, resources, theme, xmlResourceParser, f); | ||||
|                 } catch (XmlPullParserException e) { | ||||
|                     Resources.NotFoundException notFoundException = new Resources.NotFoundException("Can't load animation resource ID #0x" + Integer.toHexString(i)); | ||||
|                     notFoundException.initCause(e); | ||||
|                     throw notFoundException; | ||||
|                 } | ||||
|             } catch (IOException e2) { | ||||
|                 Resources.NotFoundException notFoundException2 = new Resources.NotFoundException("Can't load animation resource ID #0x" + Integer.toHexString(i)); | ||||
|                 notFoundException2.initCause(e2); | ||||
|                 throw notFoundException2; | ||||
|             } | ||||
|         } finally { | ||||
|             if (xmlResourceParser != null) { | ||||
|                 xmlResourceParser.close(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static class PathDataEvaluator implements TypeEvaluator<PathParser.PathDataNode[]> { | ||||
|         private PathParser.PathDataNode[] mNodeArray; | ||||
|  | ||||
|         PathDataEvaluator() { | ||||
|         } | ||||
|  | ||||
|         PathDataEvaluator(PathParser.PathDataNode[] pathDataNodeArr) { | ||||
|             this.mNodeArray = pathDataNodeArr; | ||||
|         } | ||||
|  | ||||
|         @Override // android.animation.TypeEvaluator | ||||
|         public PathParser.PathDataNode[] evaluate(float f, PathParser.PathDataNode[] pathDataNodeArr, PathParser.PathDataNode[] pathDataNodeArr2) { | ||||
|             if (!PathParser.canMorph(pathDataNodeArr, pathDataNodeArr2)) { | ||||
|                 throw new IllegalArgumentException("Can't interpolate between two incompatible pathData"); | ||||
|             } | ||||
|             if (!PathParser.canMorph(this.mNodeArray, pathDataNodeArr)) { | ||||
|                 this.mNodeArray = PathParser.deepCopyNodes(pathDataNodeArr); | ||||
|             } | ||||
|             for (int i = 0; i < pathDataNodeArr.length; i++) { | ||||
|                 this.mNodeArray[i].interpolatePathDataNode(pathDataNodeArr[i], pathDataNodeArr2[i], f); | ||||
|             } | ||||
|             return this.mNodeArray; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static PropertyValuesHolder getPVH(TypedArray typedArray, int i, int i2, int i3, String str) { | ||||
|         int i4; | ||||
|         int i5; | ||||
|         int i6; | ||||
|         float f; | ||||
|         PropertyValuesHolder ofFloat; | ||||
|         float f2; | ||||
|         float f3; | ||||
|         PropertyValuesHolder ofObject; | ||||
|         TypedValue peekValue = typedArray.peekValue(i2); | ||||
|         boolean z = peekValue != null; | ||||
|         int i7 = z ? peekValue.type : 0; | ||||
|         TypedValue peekValue2 = typedArray.peekValue(i3); | ||||
|         boolean z2 = peekValue2 != null; | ||||
|         int i8 = z2 ? peekValue2.type : 0; | ||||
|         if (i == 4) { | ||||
|             i = ((z && isColorType(i7)) || (z2 && isColorType(i8))) ? 3 : 0; | ||||
|         } | ||||
|         boolean z3 = i == 0; | ||||
|         PropertyValuesHolder propertyValuesHolder = null; | ||||
|         if (i == 2) { | ||||
|             String string = typedArray.getString(i2); | ||||
|             String string2 = typedArray.getString(i3); | ||||
|             PathParser.PathDataNode[] createNodesFromPathData = PathParser.createNodesFromPathData(string); | ||||
|             PathParser.PathDataNode[] createNodesFromPathData2 = PathParser.createNodesFromPathData(string2); | ||||
|             if (createNodesFromPathData == null && createNodesFromPathData2 == null) { | ||||
|                 return null; | ||||
|             } | ||||
|             if (createNodesFromPathData == null) { | ||||
|                 if (createNodesFromPathData2 != null) { | ||||
|                     return PropertyValuesHolder.ofObject(str, new PathDataEvaluator(), createNodesFromPathData2); | ||||
|                 } | ||||
|                 return null; | ||||
|             } | ||||
|             PathDataEvaluator pathDataEvaluator = new PathDataEvaluator(); | ||||
|             if (createNodesFromPathData2 != null) { | ||||
|                 if (!PathParser.canMorph(createNodesFromPathData, createNodesFromPathData2)) { | ||||
|                     throw new InflateException(" Can't morph from " + string + " to " + string2); | ||||
|                 } | ||||
|                 ofObject = PropertyValuesHolder.ofObject(str, pathDataEvaluator, createNodesFromPathData, createNodesFromPathData2); | ||||
|             } else { | ||||
|                 ofObject = PropertyValuesHolder.ofObject(str, pathDataEvaluator, createNodesFromPathData); | ||||
|             } | ||||
|             return ofObject; | ||||
|         } | ||||
|         ArgbEvaluator argbEvaluator = i == 3 ? ArgbEvaluator.getInstance() : null; | ||||
|         if (z3) { | ||||
|             if (z) { | ||||
|                 if (i7 == 5) { | ||||
|                     f2 = typedArray.getDimension(i2, 0.0f); | ||||
|                 } else { | ||||
|                     f2 = typedArray.getFloat(i2, 0.0f); | ||||
|                 } | ||||
|                 if (z2) { | ||||
|                     if (i8 == 5) { | ||||
|                         f3 = typedArray.getDimension(i3, 0.0f); | ||||
|                     } else { | ||||
|                         f3 = typedArray.getFloat(i3, 0.0f); | ||||
|                     } | ||||
|                     ofFloat = PropertyValuesHolder.ofFloat(str, f2, f3); | ||||
|                 } else { | ||||
|                     ofFloat = PropertyValuesHolder.ofFloat(str, f2); | ||||
|                 } | ||||
|             } else { | ||||
|                 if (i8 == 5) { | ||||
|                     f = typedArray.getDimension(i3, 0.0f); | ||||
|                 } else { | ||||
|                     f = typedArray.getFloat(i3, 0.0f); | ||||
|                 } | ||||
|                 ofFloat = PropertyValuesHolder.ofFloat(str, f); | ||||
|             } | ||||
|             propertyValuesHolder = ofFloat; | ||||
|         } else if (z) { | ||||
|             if (i7 == 5) { | ||||
|                 i5 = (int) typedArray.getDimension(i2, 0.0f); | ||||
|             } else if (isColorType(i7)) { | ||||
|                 i5 = typedArray.getColor(i2, 0); | ||||
|             } else { | ||||
|                 i5 = typedArray.getInt(i2, 0); | ||||
|             } | ||||
|             if (z2) { | ||||
|                 if (i8 == 5) { | ||||
|                     i6 = (int) typedArray.getDimension(i3, 0.0f); | ||||
|                 } else if (isColorType(i8)) { | ||||
|                     i6 = typedArray.getColor(i3, 0); | ||||
|                 } else { | ||||
|                     i6 = typedArray.getInt(i3, 0); | ||||
|                 } | ||||
|                 propertyValuesHolder = PropertyValuesHolder.ofInt(str, i5, i6); | ||||
|             } else { | ||||
|                 propertyValuesHolder = PropertyValuesHolder.ofInt(str, i5); | ||||
|             } | ||||
|         } else if (z2) { | ||||
|             if (i8 == 5) { | ||||
|                 i4 = (int) typedArray.getDimension(i3, 0.0f); | ||||
|             } else if (isColorType(i8)) { | ||||
|                 i4 = typedArray.getColor(i3, 0); | ||||
|             } else { | ||||
|                 i4 = typedArray.getInt(i3, 0); | ||||
|             } | ||||
|             propertyValuesHolder = PropertyValuesHolder.ofInt(str, i4); | ||||
|         } | ||||
|         if (propertyValuesHolder == null || argbEvaluator == null) { | ||||
|             return propertyValuesHolder; | ||||
|         } | ||||
|         propertyValuesHolder.setEvaluator(argbEvaluator); | ||||
|         return propertyValuesHolder; | ||||
|     } | ||||
|  | ||||
|     private static void parseAnimatorFromTypeArray(ValueAnimator valueAnimator, TypedArray typedArray, TypedArray typedArray2, float f, XmlPullParser xmlPullParser) { | ||||
|         long namedInt = TypedArrayUtils.getNamedInt(typedArray, xmlPullParser, TypedValues.TransitionType.S_DURATION, 1, MaterialCardViewHelper.DEFAULT_FADE_ANIM_DURATION); | ||||
|         long namedInt2 = TypedArrayUtils.getNamedInt(typedArray, xmlPullParser, "startOffset", 2, 0); | ||||
|         int namedInt3 = TypedArrayUtils.getNamedInt(typedArray, xmlPullParser, "valueType", 7, 4); | ||||
|         if (TypedArrayUtils.hasAttribute(xmlPullParser, "valueFrom") && TypedArrayUtils.hasAttribute(xmlPullParser, "valueTo")) { | ||||
|             if (namedInt3 == 4) { | ||||
|                 namedInt3 = inferValueTypeFromValues(typedArray, 5, 6); | ||||
|             } | ||||
|             PropertyValuesHolder pvh = getPVH(typedArray, namedInt3, 5, 6, ""); | ||||
|             if (pvh != null) { | ||||
|                 valueAnimator.setValues(pvh); | ||||
|             } | ||||
|         } | ||||
|         valueAnimator.setDuration(namedInt); | ||||
|         valueAnimator.setStartDelay(namedInt2); | ||||
|         valueAnimator.setRepeatCount(TypedArrayUtils.getNamedInt(typedArray, xmlPullParser, "repeatCount", 3, 0)); | ||||
|         valueAnimator.setRepeatMode(TypedArrayUtils.getNamedInt(typedArray, xmlPullParser, "repeatMode", 4, 1)); | ||||
|         if (typedArray2 != null) { | ||||
|             setupObjectAnimator(valueAnimator, typedArray2, namedInt3, f, xmlPullParser); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static void setupObjectAnimator(ValueAnimator valueAnimator, TypedArray typedArray, int i, float f, XmlPullParser xmlPullParser) { | ||||
|         ObjectAnimator objectAnimator = (ObjectAnimator) valueAnimator; | ||||
|         String namedString = TypedArrayUtils.getNamedString(typedArray, xmlPullParser, "pathData", 1); | ||||
|         if (namedString != null) { | ||||
|             String namedString2 = TypedArrayUtils.getNamedString(typedArray, xmlPullParser, "propertyXName", 2); | ||||
|             String namedString3 = TypedArrayUtils.getNamedString(typedArray, xmlPullParser, "propertyYName", 3); | ||||
|             if (i != 2) { | ||||
|             } | ||||
|             if (namedString2 == null && namedString3 == null) { | ||||
|                 throw new InflateException(typedArray.getPositionDescription() + " propertyXName or propertyYName is needed for PathData"); | ||||
|             } | ||||
|             setupPathMotion(PathParser.createPathFromPathData(namedString), objectAnimator, f * 0.5f, namedString2, namedString3); | ||||
|             return; | ||||
|         } | ||||
|         objectAnimator.setPropertyName(TypedArrayUtils.getNamedString(typedArray, xmlPullParser, "propertyName", 0)); | ||||
|     } | ||||
|  | ||||
|     private static void setupPathMotion(Path path, ObjectAnimator objectAnimator, float f, String str, String str2) { | ||||
|         PathMeasure pathMeasure = new PathMeasure(path, false); | ||||
|         ArrayList arrayList = new ArrayList(); | ||||
|         float f2 = 0.0f; | ||||
|         arrayList.add(Float.valueOf(0.0f)); | ||||
|         float f3 = 0.0f; | ||||
|         do { | ||||
|             f3 += pathMeasure.getLength(); | ||||
|             arrayList.add(Float.valueOf(f3)); | ||||
|         } while (pathMeasure.nextContour()); | ||||
|         PathMeasure pathMeasure2 = new PathMeasure(path, false); | ||||
|         int min = Math.min(100, ((int) (f3 / f)) + 1); | ||||
|         float[] fArr = new float[min]; | ||||
|         float[] fArr2 = new float[min]; | ||||
|         float[] fArr3 = new float[2]; | ||||
|         float f4 = f3 / (min - 1); | ||||
|         int i = 0; | ||||
|         int i2 = 0; | ||||
|         while (true) { | ||||
|             if (i >= min) { | ||||
|                 break; | ||||
|             } | ||||
|             pathMeasure2.getPosTan(f2 - ((Float) arrayList.get(i2)).floatValue(), fArr3, null); | ||||
|             fArr[i] = fArr3[0]; | ||||
|             fArr2[i] = fArr3[1]; | ||||
|             f2 += f4; | ||||
|             int i3 = i2 + 1; | ||||
|             if (i3 < arrayList.size() && f2 > ((Float) arrayList.get(i3)).floatValue()) { | ||||
|                 pathMeasure2.nextContour(); | ||||
|                 i2 = i3; | ||||
|             } | ||||
|             i++; | ||||
|         } | ||||
|         PropertyValuesHolder ofFloat = str != null ? PropertyValuesHolder.ofFloat(str, fArr) : null; | ||||
|         PropertyValuesHolder ofFloat2 = str2 != null ? PropertyValuesHolder.ofFloat(str2, fArr2) : null; | ||||
|         if (ofFloat == null) { | ||||
|             objectAnimator.setValues(ofFloat2); | ||||
|         } else if (ofFloat2 == null) { | ||||
|             objectAnimator.setValues(ofFloat); | ||||
|         } else { | ||||
|             objectAnimator.setValues(ofFloat, ofFloat2); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static Animator createAnimatorFromXml(Context context, Resources resources, Resources.Theme theme, XmlPullParser xmlPullParser, float f) throws XmlPullParserException, IOException { | ||||
|         return createAnimatorFromXml(context, resources, theme, xmlPullParser, Xml.asAttributeSet(xmlPullParser), null, 0, f); | ||||
|     } | ||||
|  | ||||
|     /* JADX WARN: Multi-variable type inference failed */ | ||||
|     /* JADX WARN: Removed duplicated region for block: B:33:0x00bb  */ | ||||
|     /* | ||||
|         Code decompiled incorrectly, please refer to instructions dump. | ||||
|         To view partially-correct add '--show-bad-code' argument | ||||
|     */ | ||||
|     private static android.animation.Animator createAnimatorFromXml(android.content.Context r18, android.content.res.Resources r19, android.content.res.Resources.Theme r20, org.xmlpull.v1.XmlPullParser r21, android.util.AttributeSet r22, android.animation.AnimatorSet r23, int r24, float r25) throws org.xmlpull.v1.XmlPullParserException, java.io.IOException { | ||||
|         /* | ||||
|             Method dump skipped, instructions count: 263 | ||||
|             To view this dump add '--comments-level debug' option | ||||
|         */ | ||||
|         throw new UnsupportedOperationException("Method not decompiled: androidx.vectordrawable.graphics.drawable.AnimatorInflaterCompat.createAnimatorFromXml(android.content.Context, android.content.res.Resources, android.content.res.Resources$Theme, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.animation.AnimatorSet, int, float):android.animation.Animator"); | ||||
|     } | ||||
|  | ||||
|     private static PropertyValuesHolder[] loadValues(Context context, Resources resources, Resources.Theme theme, XmlPullParser xmlPullParser, AttributeSet attributeSet) throws XmlPullParserException, IOException { | ||||
|         int i; | ||||
|         PropertyValuesHolder[] propertyValuesHolderArr = null; | ||||
|         ArrayList arrayList = null; | ||||
|         while (true) { | ||||
|             int eventType = xmlPullParser.getEventType(); | ||||
|             if (eventType == 3 || eventType == 1) { | ||||
|                 break; | ||||
|             } | ||||
|             if (eventType != 2) { | ||||
|                 xmlPullParser.next(); | ||||
|             } else { | ||||
|                 if (xmlPullParser.getName().equals("propertyValuesHolder")) { | ||||
|                     TypedArray obtainAttributes = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, AndroidResources.STYLEABLE_PROPERTY_VALUES_HOLDER); | ||||
|                     String namedString = TypedArrayUtils.getNamedString(obtainAttributes, xmlPullParser, "propertyName", 3); | ||||
|                     int namedInt = TypedArrayUtils.getNamedInt(obtainAttributes, xmlPullParser, "valueType", 2, 4); | ||||
|                     PropertyValuesHolder loadPvh = loadPvh(context, resources, theme, xmlPullParser, namedString, namedInt); | ||||
|                     if (loadPvh == null) { | ||||
|                         loadPvh = getPVH(obtainAttributes, namedInt, 0, 1, namedString); | ||||
|                     } | ||||
|                     if (loadPvh != null) { | ||||
|                         if (arrayList == null) { | ||||
|                             arrayList = new ArrayList(); | ||||
|                         } | ||||
|                         arrayList.add(loadPvh); | ||||
|                     } | ||||
|                     obtainAttributes.recycle(); | ||||
|                 } | ||||
|                 xmlPullParser.next(); | ||||
|             } | ||||
|         } | ||||
|         if (arrayList != null) { | ||||
|             int size = arrayList.size(); | ||||
|             propertyValuesHolderArr = new PropertyValuesHolder[size]; | ||||
|             for (i = 0; i < size; i++) { | ||||
|                 propertyValuesHolderArr[i] = (PropertyValuesHolder) arrayList.get(i); | ||||
|             } | ||||
|         } | ||||
|         return propertyValuesHolderArr; | ||||
|     } | ||||
|  | ||||
|     private static int inferValueTypeOfKeyframe(Resources resources, Resources.Theme theme, AttributeSet attributeSet, XmlPullParser xmlPullParser) { | ||||
|         TypedArray obtainAttributes = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, AndroidResources.STYLEABLE_KEYFRAME); | ||||
|         int i = 0; | ||||
|         TypedValue peekNamedValue = TypedArrayUtils.peekNamedValue(obtainAttributes, xmlPullParser, "value", 0); | ||||
|         if (peekNamedValue != null && isColorType(peekNamedValue.type)) { | ||||
|             i = 3; | ||||
|         } | ||||
|         obtainAttributes.recycle(); | ||||
|         return i; | ||||
|     } | ||||
|  | ||||
|     private static int inferValueTypeFromValues(TypedArray typedArray, int i, int i2) { | ||||
|         TypedValue peekValue = typedArray.peekValue(i); | ||||
|         boolean z = peekValue != null; | ||||
|         int i3 = z ? peekValue.type : 0; | ||||
|         TypedValue peekValue2 = typedArray.peekValue(i2); | ||||
|         boolean z2 = peekValue2 != null; | ||||
|         return ((z && isColorType(i3)) || (z2 && isColorType(z2 ? peekValue2.type : 0))) ? 3 : 0; | ||||
|     } | ||||
|  | ||||
|     private static void dumpKeyframes(Object[] objArr, String str) { | ||||
|         if (objArr == null || objArr.length == 0) { | ||||
|             return; | ||||
|         } | ||||
|         Log.d(TAG, str); | ||||
|         int length = objArr.length; | ||||
|         for (int i = 0; i < length; i++) { | ||||
|             Keyframe keyframe = (Keyframe) objArr[i]; | ||||
|             StringBuilder sb = new StringBuilder("Keyframe "); | ||||
|             sb.append(i); | ||||
|             sb.append(": fraction "); | ||||
|             Object obj = "null"; | ||||
|             sb.append(keyframe.getFraction() < 0.0f ? "null" : Float.valueOf(keyframe.getFraction())); | ||||
|             sb.append(", , value : "); | ||||
|             if (keyframe.hasValue()) { | ||||
|                 obj = keyframe.getValue(); | ||||
|             } | ||||
|             sb.append(obj); | ||||
|             Log.d(TAG, sb.toString()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static PropertyValuesHolder loadPvh(Context context, Resources resources, Resources.Theme theme, XmlPullParser xmlPullParser, String str, int i) throws XmlPullParserException, IOException { | ||||
|         int size; | ||||
|         PropertyValuesHolder propertyValuesHolder = null; | ||||
|         ArrayList arrayList = null; | ||||
|         while (true) { | ||||
|             int next = xmlPullParser.next(); | ||||
|             if (next == 3 || next == 1) { | ||||
|                 break; | ||||
|             } | ||||
|             if (xmlPullParser.getName().equals("keyframe")) { | ||||
|                 if (i == 4) { | ||||
|                     i = inferValueTypeOfKeyframe(resources, theme, Xml.asAttributeSet(xmlPullParser), xmlPullParser); | ||||
|                 } | ||||
|                 Keyframe loadKeyframe = loadKeyframe(context, resources, theme, Xml.asAttributeSet(xmlPullParser), i, xmlPullParser); | ||||
|                 if (loadKeyframe != null) { | ||||
|                     if (arrayList == null) { | ||||
|                         arrayList = new ArrayList(); | ||||
|                     } | ||||
|                     arrayList.add(loadKeyframe); | ||||
|                 } | ||||
|                 xmlPullParser.next(); | ||||
|             } | ||||
|         } | ||||
|         if (arrayList != null && (size = arrayList.size()) > 0) { | ||||
|             Keyframe keyframe = (Keyframe) arrayList.get(0); | ||||
|             Keyframe keyframe2 = (Keyframe) arrayList.get(size - 1); | ||||
|             float fraction = keyframe2.getFraction(); | ||||
|             if (fraction < 1.0f) { | ||||
|                 if (fraction < 0.0f) { | ||||
|                     keyframe2.setFraction(1.0f); | ||||
|                 } else { | ||||
|                     arrayList.add(arrayList.size(), createNewKeyframe(keyframe2, 1.0f)); | ||||
|                     size++; | ||||
|                 } | ||||
|             } | ||||
|             float fraction2 = keyframe.getFraction(); | ||||
|             if (fraction2 != 0.0f) { | ||||
|                 if (fraction2 < 0.0f) { | ||||
|                     keyframe.setFraction(0.0f); | ||||
|                 } else { | ||||
|                     arrayList.add(0, createNewKeyframe(keyframe, 0.0f)); | ||||
|                     size++; | ||||
|                 } | ||||
|             } | ||||
|             Keyframe[] keyframeArr = new Keyframe[size]; | ||||
|             arrayList.toArray(keyframeArr); | ||||
|             for (int i2 = 0; i2 < size; i2++) { | ||||
|                 Keyframe keyframe3 = keyframeArr[i2]; | ||||
|                 if (keyframe3.getFraction() < 0.0f) { | ||||
|                     if (i2 == 0) { | ||||
|                         keyframe3.setFraction(0.0f); | ||||
|                     } else { | ||||
|                         int i3 = size - 1; | ||||
|                         if (i2 == i3) { | ||||
|                             keyframe3.setFraction(1.0f); | ||||
|                         } else { | ||||
|                             int i4 = i2; | ||||
|                             for (int i5 = i2 + 1; i5 < i3 && keyframeArr[i5].getFraction() < 0.0f; i5++) { | ||||
|                                 i4 = i5; | ||||
|                             } | ||||
|                             distributeKeyframes(keyframeArr, keyframeArr[i4 + 1].getFraction() - keyframeArr[i2 - 1].getFraction(), i2, i4); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             propertyValuesHolder = PropertyValuesHolder.ofKeyframe(str, keyframeArr); | ||||
|             if (i == 3) { | ||||
|                 propertyValuesHolder.setEvaluator(ArgbEvaluator.getInstance()); | ||||
|             } | ||||
|         } | ||||
|         return propertyValuesHolder; | ||||
|     } | ||||
|  | ||||
|     private static Keyframe createNewKeyframe(Keyframe keyframe, float f) { | ||||
|         if (keyframe.getType() == Float.TYPE) { | ||||
|             return Keyframe.ofFloat(f); | ||||
|         } | ||||
|         if (keyframe.getType() == Integer.TYPE) { | ||||
|             return Keyframe.ofInt(f); | ||||
|         } | ||||
|         return Keyframe.ofObject(f); | ||||
|     } | ||||
|  | ||||
|     private static void distributeKeyframes(Keyframe[] keyframeArr, float f, int i, int i2) { | ||||
|         float f2 = f / ((i2 - i) + 2); | ||||
|         while (i <= i2) { | ||||
|             keyframeArr[i].setFraction(keyframeArr[i - 1].getFraction() + f2); | ||||
|             i++; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static Keyframe loadKeyframe(Context context, Resources resources, Resources.Theme theme, AttributeSet attributeSet, int i, XmlPullParser xmlPullParser) throws XmlPullParserException, IOException { | ||||
|         Keyframe ofInt; | ||||
|         TypedArray obtainAttributes = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, AndroidResources.STYLEABLE_KEYFRAME); | ||||
|         float namedFloat = TypedArrayUtils.getNamedFloat(obtainAttributes, xmlPullParser, "fraction", 3, -1.0f); | ||||
|         TypedValue peekNamedValue = TypedArrayUtils.peekNamedValue(obtainAttributes, xmlPullParser, "value", 0); | ||||
|         boolean z = peekNamedValue != null; | ||||
|         if (i == 4) { | ||||
|             i = (z && isColorType(peekNamedValue.type)) ? 3 : 0; | ||||
|         } | ||||
|         if (z) { | ||||
|             if (i == 0) { | ||||
|                 ofInt = Keyframe.ofFloat(namedFloat, TypedArrayUtils.getNamedFloat(obtainAttributes, xmlPullParser, "value", 0, 0.0f)); | ||||
|             } else { | ||||
|                 ofInt = (i == 1 || i == 3) ? Keyframe.ofInt(namedFloat, TypedArrayUtils.getNamedInt(obtainAttributes, xmlPullParser, "value", 0, 0)) : null; | ||||
|             } | ||||
|         } else if (i == 0) { | ||||
|             ofInt = Keyframe.ofFloat(namedFloat); | ||||
|         } else { | ||||
|             ofInt = Keyframe.ofInt(namedFloat); | ||||
|         } | ||||
|         int namedResourceId = TypedArrayUtils.getNamedResourceId(obtainAttributes, xmlPullParser, "interpolator", 1, 0); | ||||
|         if (namedResourceId > 0) { | ||||
|             ofInt.setInterpolator(AnimationUtilsCompat.loadInterpolator(context, namedResourceId)); | ||||
|         } | ||||
|         obtainAttributes.recycle(); | ||||
|         return ofInt; | ||||
|     } | ||||
|  | ||||
|     private static ObjectAnimator loadObjectAnimator(Context context, Resources resources, Resources.Theme theme, AttributeSet attributeSet, float f, XmlPullParser xmlPullParser) throws Resources.NotFoundException { | ||||
|         ObjectAnimator objectAnimator = new ObjectAnimator(); | ||||
|         loadAnimator(context, resources, theme, attributeSet, objectAnimator, f, xmlPullParser); | ||||
|         return objectAnimator; | ||||
|     } | ||||
|  | ||||
|     private static ValueAnimator loadAnimator(Context context, Resources resources, Resources.Theme theme, AttributeSet attributeSet, ValueAnimator valueAnimator, float f, XmlPullParser xmlPullParser) throws Resources.NotFoundException { | ||||
|         TypedArray obtainAttributes = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, AndroidResources.STYLEABLE_ANIMATOR); | ||||
|         TypedArray obtainAttributes2 = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, AndroidResources.STYLEABLE_PROPERTY_ANIMATOR); | ||||
|         if (valueAnimator == null) { | ||||
|             valueAnimator = new ValueAnimator(); | ||||
|         } | ||||
|         parseAnimatorFromTypeArray(valueAnimator, obtainAttributes, obtainAttributes2, f, xmlPullParser); | ||||
|         int namedResourceId = TypedArrayUtils.getNamedResourceId(obtainAttributes, xmlPullParser, "interpolator", 0, 0); | ||||
|         if (namedResourceId > 0) { | ||||
|             valueAnimator.setInterpolator(AnimationUtilsCompat.loadInterpolator(context, namedResourceId)); | ||||
|         } | ||||
|         obtainAttributes.recycle(); | ||||
|         if (obtainAttributes2 != null) { | ||||
|             obtainAttributes2.recycle(); | ||||
|         } | ||||
|         return valueAnimator; | ||||
|     } | ||||
|  | ||||
|     private AnimatorInflaterCompat() { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,27 @@ | ||||
| package androidx.vectordrawable.graphics.drawable; | ||||
|  | ||||
| import android.animation.TypeEvaluator; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ArgbEvaluator implements TypeEvaluator { | ||||
|     private static final ArgbEvaluator sInstance = new ArgbEvaluator(); | ||||
|  | ||||
|     public static ArgbEvaluator getInstance() { | ||||
|         return sInstance; | ||||
|     } | ||||
|  | ||||
|     @Override // android.animation.TypeEvaluator | ||||
|     public Object evaluate(float f, Object obj, Object obj2) { | ||||
|         int intValue = ((Integer) obj).intValue(); | ||||
|         float f2 = ((intValue >> 24) & 255) / 255.0f; | ||||
|         int intValue2 = ((Integer) obj2).intValue(); | ||||
|         float pow = (float) Math.pow(((intValue >> 16) & 255) / 255.0f, 2.2d); | ||||
|         float pow2 = (float) Math.pow(((intValue >> 8) & 255) / 255.0f, 2.2d); | ||||
|         float pow3 = (float) Math.pow((intValue & 255) / 255.0f, 2.2d); | ||||
|         float pow4 = (float) Math.pow(((intValue2 >> 16) & 255) / 255.0f, 2.2d); | ||||
|         float f3 = f2 + (((((intValue2 >> 24) & 255) / 255.0f) - f2) * f); | ||||
|         float pow5 = pow2 + ((((float) Math.pow(((intValue2 >> 8) & 255) / 255.0f, 2.2d)) - pow2) * f); | ||||
|         float pow6 = pow3 + (f * (((float) Math.pow((intValue2 & 255) / 255.0f, 2.2d)) - pow3)); | ||||
|         return Integer.valueOf((Math.round(((float) Math.pow(pow + ((pow4 - pow) * f), 0.45454545454545453d)) * 255.0f) << 16) | (Math.round(f3 * 255.0f) << 24) | (Math.round(((float) Math.pow(pow5, 0.45454545454545453d)) * 255.0f) << 8) | Math.round(((float) Math.pow(pow6, 0.45454545454545453d)) * 255.0f)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,157 @@ | ||||
| package androidx.vectordrawable.graphics.drawable; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.content.res.Resources; | ||||
| import android.content.res.TypedArray; | ||||
| import android.graphics.Path; | ||||
| import android.graphics.PathMeasure; | ||||
| import android.util.AttributeSet; | ||||
| import android.view.InflateException; | ||||
| import android.view.animation.Interpolator; | ||||
| import androidx.core.content.res.TypedArrayUtils; | ||||
| import androidx.core.graphics.PathParser; | ||||
| import org.xmlpull.v1.XmlPullParser; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class PathInterpolatorCompat implements Interpolator { | ||||
|     public static final double EPSILON = 1.0E-5d; | ||||
|     public static final int MAX_NUM_POINTS = 3000; | ||||
|     private static final float PRECISION = 0.002f; | ||||
|     private float[] mX; | ||||
|     private float[] mY; | ||||
|  | ||||
|     public PathInterpolatorCompat(Context context, AttributeSet attributeSet, XmlPullParser xmlPullParser) { | ||||
|         this(context.getResources(), context.getTheme(), attributeSet, xmlPullParser); | ||||
|     } | ||||
|  | ||||
|     public PathInterpolatorCompat(Resources resources, Resources.Theme theme, AttributeSet attributeSet, XmlPullParser xmlPullParser) { | ||||
|         TypedArray obtainAttributes = TypedArrayUtils.obtainAttributes(resources, theme, attributeSet, AndroidResources.STYLEABLE_PATH_INTERPOLATOR); | ||||
|         parseInterpolatorFromTypeArray(obtainAttributes, xmlPullParser); | ||||
|         obtainAttributes.recycle(); | ||||
|     } | ||||
|  | ||||
|     private void parseInterpolatorFromTypeArray(TypedArray typedArray, XmlPullParser xmlPullParser) { | ||||
|         if (TypedArrayUtils.hasAttribute(xmlPullParser, "pathData")) { | ||||
|             String namedString = TypedArrayUtils.getNamedString(typedArray, xmlPullParser, "pathData", 4); | ||||
|             Path createPathFromPathData = PathParser.createPathFromPathData(namedString); | ||||
|             if (createPathFromPathData == null) { | ||||
|                 throw new InflateException("The path is null, which is created from " + namedString); | ||||
|             } | ||||
|             initPath(createPathFromPathData); | ||||
|             return; | ||||
|         } | ||||
|         if (!TypedArrayUtils.hasAttribute(xmlPullParser, "controlX1")) { | ||||
|             throw new InflateException("pathInterpolator requires the controlX1 attribute"); | ||||
|         } | ||||
|         if (!TypedArrayUtils.hasAttribute(xmlPullParser, "controlY1")) { | ||||
|             throw new InflateException("pathInterpolator requires the controlY1 attribute"); | ||||
|         } | ||||
|         float namedFloat = TypedArrayUtils.getNamedFloat(typedArray, xmlPullParser, "controlX1", 0, 0.0f); | ||||
|         float namedFloat2 = TypedArrayUtils.getNamedFloat(typedArray, xmlPullParser, "controlY1", 1, 0.0f); | ||||
|         boolean hasAttribute = TypedArrayUtils.hasAttribute(xmlPullParser, "controlX2"); | ||||
|         if (hasAttribute != TypedArrayUtils.hasAttribute(xmlPullParser, "controlY2")) { | ||||
|             throw new InflateException("pathInterpolator requires both controlX2 and controlY2 for cubic Beziers."); | ||||
|         } | ||||
|         if (!hasAttribute) { | ||||
|             initQuad(namedFloat, namedFloat2); | ||||
|         } else { | ||||
|             initCubic(namedFloat, namedFloat2, TypedArrayUtils.getNamedFloat(typedArray, xmlPullParser, "controlX2", 2, 0.0f), TypedArrayUtils.getNamedFloat(typedArray, xmlPullParser, "controlY2", 3, 0.0f)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void initQuad(float f, float f2) { | ||||
|         Path path = new Path(); | ||||
|         path.moveTo(0.0f, 0.0f); | ||||
|         path.quadTo(f, f2, 1.0f, 1.0f); | ||||
|         initPath(path); | ||||
|     } | ||||
|  | ||||
|     private void initCubic(float f, float f2, float f3, float f4) { | ||||
|         Path path = new Path(); | ||||
|         path.moveTo(0.0f, 0.0f); | ||||
|         path.cubicTo(f, f2, f3, f4, 1.0f, 1.0f); | ||||
|         initPath(path); | ||||
|     } | ||||
|  | ||||
|     private void initPath(Path path) { | ||||
|         int i = 0; | ||||
|         PathMeasure pathMeasure = new PathMeasure(path, false); | ||||
|         float length = pathMeasure.getLength(); | ||||
|         int min = Math.min(MAX_NUM_POINTS, ((int) (length / 0.002f)) + 1); | ||||
|         if (min <= 0) { | ||||
|             throw new IllegalArgumentException("The Path has a invalid length " + length); | ||||
|         } | ||||
|         this.mX = new float[min]; | ||||
|         this.mY = new float[min]; | ||||
|         float[] fArr = new float[2]; | ||||
|         for (int i2 = 0; i2 < min; i2++) { | ||||
|             pathMeasure.getPosTan((i2 * length) / (min - 1), fArr, null); | ||||
|             this.mX[i2] = fArr[0]; | ||||
|             this.mY[i2] = fArr[1]; | ||||
|         } | ||||
|         if (Math.abs(this.mX[0]) <= 1.0E-5d && Math.abs(this.mY[0]) <= 1.0E-5d) { | ||||
|             int i3 = min - 1; | ||||
|             if (Math.abs(this.mX[i3] - 1.0f) <= 1.0E-5d && Math.abs(this.mY[i3] - 1.0f) <= 1.0E-5d) { | ||||
|                 float f = 0.0f; | ||||
|                 int i4 = 0; | ||||
|                 while (i < min) { | ||||
|                     float[] fArr2 = this.mX; | ||||
|                     int i5 = i4 + 1; | ||||
|                     float f2 = fArr2[i4]; | ||||
|                     if (f2 < f) { | ||||
|                         throw new IllegalArgumentException("The Path cannot loop back on itself, x :" + f2); | ||||
|                     } | ||||
|                     fArr2[i] = f2; | ||||
|                     i++; | ||||
|                     f = f2; | ||||
|                     i4 = i5; | ||||
|                 } | ||||
|                 if (pathMeasure.nextContour()) { | ||||
|                     throw new IllegalArgumentException("The Path should be continuous, can't have 2+ contours"); | ||||
|                 } | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|         StringBuilder sb = new StringBuilder("The Path must start at (0,0) and end at (1,1) start: "); | ||||
|         sb.append(this.mX[0]); | ||||
|         sb.append(","); | ||||
|         sb.append(this.mY[0]); | ||||
|         sb.append(" end:"); | ||||
|         int i6 = min - 1; | ||||
|         sb.append(this.mX[i6]); | ||||
|         sb.append(","); | ||||
|         sb.append(this.mY[i6]); | ||||
|         throw new IllegalArgumentException(sb.toString()); | ||||
|     } | ||||
|  | ||||
|     @Override // android.animation.TimeInterpolator | ||||
|     public float getInterpolation(float f) { | ||||
|         if (f <= 0.0f) { | ||||
|             return 0.0f; | ||||
|         } | ||||
|         if (f >= 1.0f) { | ||||
|             return 1.0f; | ||||
|         } | ||||
|         int length = this.mX.length - 1; | ||||
|         int i = 0; | ||||
|         while (length - i > 1) { | ||||
|             int i2 = (i + length) / 2; | ||||
|             if (f < this.mX[i2]) { | ||||
|                 length = i2; | ||||
|             } else { | ||||
|                 i = i2; | ||||
|             } | ||||
|         } | ||||
|         float[] fArr = this.mX; | ||||
|         float f2 = fArr[length]; | ||||
|         float f3 = fArr[i]; | ||||
|         float f4 = f2 - f3; | ||||
|         if (f4 == 0.0f) { | ||||
|             return this.mY[i]; | ||||
|         } | ||||
|         float f5 = (f - f3) / f4; | ||||
|         float[] fArr2 = this.mY; | ||||
|         float f6 = fArr2[i]; | ||||
|         return f6 + (f5 * (fArr2[length] - f6)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,169 @@ | ||||
| package androidx.vectordrawable.graphics.drawable; | ||||
|  | ||||
| import android.content.res.Resources; | ||||
| import android.graphics.PorterDuff; | ||||
| import android.graphics.Rect; | ||||
| import android.graphics.Region; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import androidx.core.graphics.drawable.DrawableCompat; | ||||
| import androidx.core.graphics.drawable.TintAwareDrawable; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| abstract class VectorDrawableCommon extends Drawable implements TintAwareDrawable { | ||||
|     Drawable mDelegateDrawable; | ||||
|  | ||||
|     VectorDrawableCommon() { | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void setColorFilter(int i, PorterDuff.Mode mode) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             drawable.setColorFilter(i, mode); | ||||
|         } else { | ||||
|             super.setColorFilter(i, mode); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     protected boolean onLevelChange(int i) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             return drawable.setLevel(i); | ||||
|         } | ||||
|         return super.onLevelChange(i); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     protected void onBoundsChange(Rect rect) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             drawable.setBounds(rect); | ||||
|         } else { | ||||
|             super.onBoundsChange(rect); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void setHotspot(float f, float f2) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             DrawableCompat.setHotspot(drawable, f, f2); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void setHotspotBounds(int i, int i2, int i3, int i4) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             DrawableCompat.setHotspotBounds(drawable, i, i2, i3, i4); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void setFilterBitmap(boolean z) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             drawable.setFilterBitmap(z); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void jumpToCurrentState() { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             DrawableCompat.jumpToCurrentState(drawable); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void applyTheme(Resources.Theme theme) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             DrawableCompat.applyTheme(drawable, theme); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void clearColorFilter() { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             drawable.clearColorFilter(); | ||||
|         } else { | ||||
|             super.clearColorFilter(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public Drawable getCurrent() { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             return drawable.getCurrent(); | ||||
|         } | ||||
|         return super.getCurrent(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public int getMinimumWidth() { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             return drawable.getMinimumWidth(); | ||||
|         } | ||||
|         return super.getMinimumWidth(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public int getMinimumHeight() { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             return drawable.getMinimumHeight(); | ||||
|         } | ||||
|         return super.getMinimumHeight(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public boolean getPadding(Rect rect) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             return drawable.getPadding(rect); | ||||
|         } | ||||
|         return super.getPadding(rect); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public int[] getState() { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             return drawable.getState(); | ||||
|         } | ||||
|         return super.getState(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public Region getTransparentRegion() { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             return drawable.getTransparentRegion(); | ||||
|         } | ||||
|         return super.getTransparentRegion(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public void setChangingConfigurations(int i) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             drawable.setChangingConfigurations(i); | ||||
|         } else { | ||||
|             super.setChangingConfigurations(i); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override // android.graphics.drawable.Drawable | ||||
|     public boolean setState(int[] iArr) { | ||||
|         Drawable drawable = this.mDelegateDrawable; | ||||
|         if (drawable != null) { | ||||
|             return drawable.setState(iArr); | ||||
|         } | ||||
|         return super.setState(iArr); | ||||
|     } | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user