mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
186 lines
6.8 KiB
Java
186 lines
6.8 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.ColorStateListDrawable;
|
||
|
import android.graphics.drawable.Drawable;
|
||
|
import android.graphics.drawable.LayerDrawable;
|
||
|
import android.graphics.drawable.RippleDrawable;
|
||
|
import android.text.TextUtils;
|
||
|
import android.util.AttributeSet;
|
||
|
import android.util.Xml;
|
||
|
import androidx.core.graphics.drawable.DrawableCompat;
|
||
|
import java.io.IOException;
|
||
|
import java.util.Arrays;
|
||
|
import org.xmlpull.v1.XmlPullParserException;
|
||
|
|
||
|
/* loaded from: classes2.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) {
|
||
|
if (i != 0) {
|
||
|
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) {
|
||
|
rippleDrawable.setRadius(i);
|
||
|
}
|
||
|
|
||
|
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, false);
|
||
|
}
|
||
|
|
||
|
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) {
|
||
|
if (drawable == null) {
|
||
|
return drawable2;
|
||
|
}
|
||
|
if (drawable2 == null) {
|
||
|
return drawable;
|
||
|
}
|
||
|
if (i == -1) {
|
||
|
i = getTopLayerIntrinsicWidth(drawable, drawable2);
|
||
|
}
|
||
|
if (i2 == -1) {
|
||
|
i2 = getTopLayerIntrinsicHeight(drawable, drawable2);
|
||
|
}
|
||
|
if (i > drawable.getIntrinsicWidth() || i2 > drawable.getIntrinsicHeight()) {
|
||
|
float f = i / i2;
|
||
|
if (f >= drawable.getIntrinsicWidth() / drawable.getIntrinsicHeight()) {
|
||
|
int intrinsicWidth = drawable.getIntrinsicWidth();
|
||
|
i2 = (int) (intrinsicWidth / f);
|
||
|
i = intrinsicWidth;
|
||
|
} else {
|
||
|
i2 = drawable.getIntrinsicHeight();
|
||
|
i = (int) (f * i2);
|
||
|
}
|
||
|
}
|
||
|
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{drawable, drawable2});
|
||
|
layerDrawable.setLayerSize(1, i, i2);
|
||
|
layerDrawable.setLayerGravity(1, 17);
|
||
|
return layerDrawable;
|
||
|
}
|
||
|
|
||
|
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) {
|
||
|
outline.setPath(path);
|
||
|
}
|
||
|
|
||
|
public static ColorStateList getColorStateListOrNull(Drawable drawable) {
|
||
|
if (drawable instanceof ColorDrawable) {
|
||
|
return ColorStateList.valueOf(((ColorDrawable) drawable).getColor());
|
||
|
}
|
||
|
if (drawable instanceof ColorStateListDrawable) {
|
||
|
return ((ColorStateListDrawable) drawable).getColorStateList();
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
}
|