2025-03-31 16:33:42 +02:00

233 lines
8.7 KiB
Java

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