ADD week 5
This commit is contained in:
		| @@ -0,0 +1,232 @@ | ||||
| package com.google.android.material.drawable; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.content.res.ColorStateList; | ||||
| import android.content.res.Resources; | ||||
| import android.content.res.XmlResourceParser; | ||||
| import android.graphics.Outline; | ||||
| import android.graphics.Path; | ||||
| import android.graphics.PorterDuff; | ||||
| import android.graphics.PorterDuffColorFilter; | ||||
| import android.graphics.drawable.ColorDrawable; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.graphics.drawable.LayerDrawable; | ||||
| import android.graphics.drawable.RippleDrawable; | ||||
| import android.os.Build; | ||||
| import android.text.TextUtils; | ||||
| import android.util.AttributeSet; | ||||
| import android.util.Xml; | ||||
| import androidx.core.graphics.drawable.DrawableCompat; | ||||
| import java.io.IOException; | ||||
| import java.lang.reflect.InvocationTargetException; | ||||
| import java.util.Arrays; | ||||
| import kotlin.io.path.PathTreeWalk$$ExternalSyntheticApiModelOutline0; | ||||
| import org.xmlpull.v1.XmlPullParserException; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public final class DrawableUtils { | ||||
|     public static final int INTRINSIC_SIZE = -1; | ||||
|     private static final int UNSPECIFIED_HEIGHT = -1; | ||||
|     private static final int UNSPECIFIED_WIDTH = -1; | ||||
|  | ||||
|     private DrawableUtils() { | ||||
|     } | ||||
|  | ||||
|     public static void setTint(Drawable drawable, int i) { | ||||
|         boolean z = i != 0; | ||||
|         if (Build.VERSION.SDK_INT == 21) { | ||||
|             if (z) { | ||||
|                 drawable.setColorFilter(i, PorterDuff.Mode.SRC_IN); | ||||
|                 return; | ||||
|             } else { | ||||
|                 drawable.setColorFilter(null); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|         if (z) { | ||||
|             DrawableCompat.setTint(drawable, i); | ||||
|         } else { | ||||
|             DrawableCompat.setTintList(drawable, null); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static PorterDuffColorFilter updateTintFilter(Drawable drawable, ColorStateList colorStateList, PorterDuff.Mode mode) { | ||||
|         if (colorStateList == null || mode == null) { | ||||
|             return null; | ||||
|         } | ||||
|         return new PorterDuffColorFilter(colorStateList.getColorForState(drawable.getState(), 0), mode); | ||||
|     } | ||||
|  | ||||
|     public static AttributeSet parseDrawableXml(Context context, int i, CharSequence charSequence) { | ||||
|         int next; | ||||
|         try { | ||||
|             XmlResourceParser xml = context.getResources().getXml(i); | ||||
|             do { | ||||
|                 next = xml.next(); | ||||
|                 if (next == 2) { | ||||
|                     break; | ||||
|                 } | ||||
|             } while (next != 1); | ||||
|             if (next != 2) { | ||||
|                 throw new XmlPullParserException("No start tag found"); | ||||
|             } | ||||
|             if (!TextUtils.equals(xml.getName(), charSequence)) { | ||||
|                 throw new XmlPullParserException("Must have a <" + ((Object) charSequence) + "> start tag"); | ||||
|             } | ||||
|             return Xml.asAttributeSet(xml); | ||||
|         } catch (IOException | XmlPullParserException e) { | ||||
|             Resources.NotFoundException notFoundException = new Resources.NotFoundException("Can't load badge resource ID #0x" + Integer.toHexString(i)); | ||||
|             notFoundException.initCause(e); | ||||
|             throw notFoundException; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static void setRippleDrawableRadius(RippleDrawable rippleDrawable, int i) { | ||||
|         if (Build.VERSION.SDK_INT >= 23) { | ||||
|             rippleDrawable.setRadius(i); | ||||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             RippleDrawable.class.getDeclaredMethod("setMaxRadius", Integer.TYPE).invoke(rippleDrawable, Integer.valueOf(i)); | ||||
|         } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { | ||||
|             throw new IllegalStateException("Couldn't set RippleDrawable radius", e); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static Drawable createTintableDrawableIfNeeded(Drawable drawable, ColorStateList colorStateList, PorterDuff.Mode mode) { | ||||
|         return createTintableMutatedDrawableIfNeeded(drawable, colorStateList, mode, false); | ||||
|     } | ||||
|  | ||||
|     public static Drawable createTintableMutatedDrawableIfNeeded(Drawable drawable, ColorStateList colorStateList, PorterDuff.Mode mode) { | ||||
|         return createTintableMutatedDrawableIfNeeded(drawable, colorStateList, mode, Build.VERSION.SDK_INT < 23); | ||||
|     } | ||||
|  | ||||
|     private static Drawable createTintableMutatedDrawableIfNeeded(Drawable drawable, ColorStateList colorStateList, PorterDuff.Mode mode, boolean z) { | ||||
|         if (drawable == null) { | ||||
|             return null; | ||||
|         } | ||||
|         if (colorStateList != null) { | ||||
|             drawable = DrawableCompat.wrap(drawable).mutate(); | ||||
|             if (mode != null) { | ||||
|                 DrawableCompat.setTintMode(drawable, mode); | ||||
|             } | ||||
|         } else if (z) { | ||||
|             drawable.mutate(); | ||||
|         } | ||||
|         return drawable; | ||||
|     } | ||||
|  | ||||
|     public static Drawable compositeTwoLayeredDrawable(Drawable drawable, Drawable drawable2) { | ||||
|         return compositeTwoLayeredDrawable(drawable, drawable2, -1, -1); | ||||
|     } | ||||
|  | ||||
|     public static Drawable compositeTwoLayeredDrawable(Drawable drawable, Drawable drawable2, int i, int i2) { | ||||
|         Drawable drawable3 = drawable2; | ||||
|         int i3 = i; | ||||
|         int i4 = i2; | ||||
|         if (drawable == null) { | ||||
|             return drawable3; | ||||
|         } | ||||
|         if (drawable3 == null) { | ||||
|             return drawable; | ||||
|         } | ||||
|         boolean z = (i3 == -1 || i4 == -1) ? false : true; | ||||
|         if (i3 == -1) { | ||||
|             i3 = getTopLayerIntrinsicWidth(drawable, drawable2); | ||||
|         } | ||||
|         if (i4 == -1) { | ||||
|             i4 = getTopLayerIntrinsicHeight(drawable, drawable2); | ||||
|         } | ||||
|         if (i3 > drawable.getIntrinsicWidth() || i4 > drawable.getIntrinsicHeight()) { | ||||
|             float f = i3 / i4; | ||||
|             if (f >= drawable.getIntrinsicWidth() / drawable.getIntrinsicHeight()) { | ||||
|                 int intrinsicWidth = drawable.getIntrinsicWidth(); | ||||
|                 i4 = (int) (intrinsicWidth / f); | ||||
|                 i3 = intrinsicWidth; | ||||
|             } else { | ||||
|                 i4 = drawable.getIntrinsicHeight(); | ||||
|                 i3 = (int) (f * i4); | ||||
|             } | ||||
|         } | ||||
|         if (Build.VERSION.SDK_INT >= 23) { | ||||
|             LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{drawable, drawable3}); | ||||
|             layerDrawable.setLayerSize(1, i3, i4); | ||||
|             layerDrawable.setLayerGravity(1, 17); | ||||
|             return layerDrawable; | ||||
|         } | ||||
|         if (z) { | ||||
|             drawable3 = new ScaledDrawableWrapper(drawable3, i3, i4); | ||||
|         } | ||||
|         LayerDrawable layerDrawable2 = new LayerDrawable(new Drawable[]{drawable, drawable3}); | ||||
|         int max = Math.max((drawable.getIntrinsicWidth() - i3) / 2, 0); | ||||
|         int max2 = Math.max((drawable.getIntrinsicHeight() - i4) / 2, 0); | ||||
|         layerDrawable2.setLayerInset(1, max, max2, max, max2); | ||||
|         return layerDrawable2; | ||||
|     } | ||||
|  | ||||
|     private static int getTopLayerIntrinsicWidth(Drawable drawable, Drawable drawable2) { | ||||
|         int intrinsicWidth = drawable2.getIntrinsicWidth(); | ||||
|         return intrinsicWidth != -1 ? intrinsicWidth : drawable.getIntrinsicWidth(); | ||||
|     } | ||||
|  | ||||
|     private static int getTopLayerIntrinsicHeight(Drawable drawable, Drawable drawable2) { | ||||
|         int intrinsicHeight = drawable2.getIntrinsicHeight(); | ||||
|         return intrinsicHeight != -1 ? intrinsicHeight : drawable.getIntrinsicHeight(); | ||||
|     } | ||||
|  | ||||
|     public static int[] getCheckedState(int[] iArr) { | ||||
|         for (int i = 0; i < iArr.length; i++) { | ||||
|             int i2 = iArr[i]; | ||||
|             if (i2 == 16842912) { | ||||
|                 return iArr; | ||||
|             } | ||||
|             if (i2 == 0) { | ||||
|                 int[] iArr2 = (int[]) iArr.clone(); | ||||
|                 iArr2[i] = 16842912; | ||||
|                 return iArr2; | ||||
|             } | ||||
|         } | ||||
|         int[] copyOf = Arrays.copyOf(iArr, iArr.length + 1); | ||||
|         copyOf[iArr.length] = 16842912; | ||||
|         return copyOf; | ||||
|     } | ||||
|  | ||||
|     public static int[] getUncheckedState(int[] iArr) { | ||||
|         int[] iArr2 = new int[iArr.length]; | ||||
|         int i = 0; | ||||
|         for (int i2 : iArr) { | ||||
|             if (i2 != 16842912) { | ||||
|                 iArr2[i] = i2; | ||||
|                 i++; | ||||
|             } | ||||
|         } | ||||
|         return iArr2; | ||||
|     } | ||||
|  | ||||
|     public static void setOutlineToPath(Outline outline, Path path) { | ||||
|         if (Build.VERSION.SDK_INT >= 30) { | ||||
|             outline.setPath(path); | ||||
|             return; | ||||
|         } | ||||
|         if (Build.VERSION.SDK_INT >= 29) { | ||||
|             try { | ||||
|                 outline.setConvexPath(path); | ||||
|             } catch (IllegalArgumentException unused) { | ||||
|             } | ||||
|         } else if (path.isConvex()) { | ||||
|             outline.setConvexPath(path); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static ColorStateList getColorStateListOrNull(Drawable drawable) { | ||||
|         ColorStateList colorStateList; | ||||
|         if (drawable instanceof ColorDrawable) { | ||||
|             return ColorStateList.valueOf(((ColorDrawable) drawable).getColor()); | ||||
|         } | ||||
|         if (Build.VERSION.SDK_INT < 29 || !PathTreeWalk$$ExternalSyntheticApiModelOutline0.m1531m((Object) drawable)) { | ||||
|             return null; | ||||
|         } | ||||
|         colorStateList = PathTreeWalk$$ExternalSyntheticApiModelOutline0.m((Object) drawable).getColorStateList(); | ||||
|         return colorStateList; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,26 @@ | ||||
| package com.google.android.material.drawable; | ||||
|  | ||||
| import android.graphics.drawable.Drawable; | ||||
| import androidx.appcompat.graphics.drawable.DrawableWrapperCompat; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ScaledDrawableWrapper extends DrawableWrapperCompat { | ||||
|     private final int height; | ||||
|     private final int width; | ||||
|  | ||||
|     @Override // androidx.appcompat.graphics.drawable.DrawableWrapperCompat, android.graphics.drawable.Drawable | ||||
|     public int getIntrinsicHeight() { | ||||
|         return this.height; | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.graphics.drawable.DrawableWrapperCompat, android.graphics.drawable.Drawable | ||||
|     public int getIntrinsicWidth() { | ||||
|         return this.width; | ||||
|     } | ||||
|  | ||||
|     public ScaledDrawableWrapper(Drawable drawable, int i, int i2) { | ||||
|         super(drawable); | ||||
|         this.width = i; | ||||
|         this.height = i2; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user