discord-jadx/app/src/main/java/androidx/core/graphics/TypefaceCompatBaseImpl.java

200 lines
7.7 KiB
Java

package androidx.core.graphics;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.CancellationSignal;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.core.content.res.FontResourcesParserCompat;
import androidx.core.provider.FontsContractCompat;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.concurrent.ConcurrentHashMap;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP_PREFIX})
public class TypefaceCompatBaseImpl {
private static final int INVALID_KEY = 0;
private static final String TAG = "TypefaceCompatBaseImpl";
@SuppressLint({"BanConcurrentHashMap"})
private ConcurrentHashMap<Long, FontResourcesParserCompat.FontFamilyFilesResourceEntry> mFontFamilies = new ConcurrentHashMap<>();
/* renamed from: androidx.core.graphics.TypefaceCompatBaseImpl$1 reason: invalid class name */
public class AnonymousClass1 implements StyleExtractor<FontsContractCompat.FontInfo> {
public AnonymousClass1() {
}
public int getWeight(FontsContractCompat.FontInfo fontInfo) {
return fontInfo.getWeight();
}
public boolean isItalic(FontsContractCompat.FontInfo fontInfo) {
return fontInfo.isItalic();
}
}
/* renamed from: androidx.core.graphics.TypefaceCompatBaseImpl$2 reason: invalid class name */
public class AnonymousClass2 implements StyleExtractor<FontResourcesParserCompat.FontFileResourceEntry> {
public AnonymousClass2() {
}
public int getWeight(FontResourcesParserCompat.FontFileResourceEntry fontFileResourceEntry) {
return fontFileResourceEntry.getWeight();
}
public boolean isItalic(FontResourcesParserCompat.FontFileResourceEntry fontFileResourceEntry) {
return fontFileResourceEntry.isItalic();
}
}
public interface StyleExtractor<T> {
int getWeight(T t);
boolean isItalic(T t);
}
private void addFontFamily(Typeface typeface, FontResourcesParserCompat.FontFamilyFilesResourceEntry fontFamilyFilesResourceEntry) {
long uniqueKey = getUniqueKey(typeface);
if (uniqueKey != 0) {
this.mFontFamilies.put(Long.valueOf(uniqueKey), fontFamilyFilesResourceEntry);
}
}
private FontResourcesParserCompat.FontFileResourceEntry findBestEntry(FontResourcesParserCompat.FontFamilyFilesResourceEntry fontFamilyFilesResourceEntry, int i) {
return (FontResourcesParserCompat.FontFileResourceEntry) findBestFont(fontFamilyFilesResourceEntry.getEntries(), i, new AnonymousClass2());
}
private static <T> T findBestFont(T[] tArr, int i, StyleExtractor<T> styleExtractor) {
int i2 = (i & 1) == 0 ? 400 : 700;
boolean z2 = (i & 2) != 0;
T t = null;
int i3 = Integer.MAX_VALUE;
for (T t2 : tArr) {
int abs = (Math.abs(styleExtractor.getWeight(t2) - i2) * 2) + (styleExtractor.isItalic(t2) == z2 ? 0 : 1);
if (t == null || i3 > abs) {
t = t2;
i3 = abs;
}
}
return t;
}
private static long getUniqueKey(@Nullable Typeface typeface) {
if (typeface == null) {
return 0;
}
try {
Field declaredField = Typeface.class.getDeclaredField("native_instance");
declaredField.setAccessible(true);
return ((Number) declaredField.get(typeface)).longValue();
} catch (NoSuchFieldException e) {
Log.e(TAG, "Could not retrieve font from family.", e);
return 0;
} catch (IllegalAccessException e2) {
Log.e(TAG, "Could not retrieve font from family.", e2);
return 0;
}
}
@Nullable
public Typeface createFromFontFamilyFilesResourceEntry(Context context, FontResourcesParserCompat.FontFamilyFilesResourceEntry fontFamilyFilesResourceEntry, Resources resources, int i) {
FontResourcesParserCompat.FontFileResourceEntry findBestEntry = findBestEntry(fontFamilyFilesResourceEntry, i);
if (findBestEntry == null) {
return null;
}
Typeface createFromResourcesFontFile = TypefaceCompat.createFromResourcesFontFile(context, resources, findBestEntry.getResourceId(), findBestEntry.getFileName(), i);
addFontFamily(createFromResourcesFontFile, fontFamilyFilesResourceEntry);
return createFromResourcesFontFile;
}
@Nullable
public Typeface createFromFontInfo(Context context, @Nullable CancellationSignal cancellationSignal, @NonNull FontsContractCompat.FontInfo[] fontInfoArr, int i) {
InputStream inputStream;
Throwable th;
InputStream inputStream2 = null;
if (fontInfoArr.length < 1) {
return null;
}
try {
inputStream = context.getContentResolver().openInputStream(findBestInfo(fontInfoArr, i).getUri());
try {
Typeface createFromInputStream = createFromInputStream(context, inputStream);
TypefaceCompatUtil.closeQuietly(inputStream);
return createFromInputStream;
} catch (IOException unused) {
TypefaceCompatUtil.closeQuietly(inputStream);
return null;
} catch (Throwable th2) {
th = th2;
inputStream2 = inputStream;
TypefaceCompatUtil.closeQuietly(inputStream2);
throw th;
}
} catch (IOException unused2) {
inputStream = null;
TypefaceCompatUtil.closeQuietly(inputStream);
return null;
} catch (Throwable th3) {
th = th3;
TypefaceCompatUtil.closeQuietly(inputStream2);
throw th;
}
}
public Typeface createFromInputStream(Context context, InputStream inputStream) {
File tempFile = TypefaceCompatUtil.getTempFile(context);
if (tempFile == null) {
return null;
}
try {
if (!TypefaceCompatUtil.copyToFile(tempFile, inputStream)) {
return null;
}
Typeface createFromFile = Typeface.createFromFile(tempFile.getPath());
tempFile.delete();
return createFromFile;
} catch (RuntimeException unused) {
return null;
} finally {
tempFile.delete();
}
}
@Nullable
public Typeface createFromResourcesFontFile(Context context, Resources resources, int i, String str, int i2) {
File tempFile = TypefaceCompatUtil.getTempFile(context);
if (tempFile == null) {
return null;
}
try {
if (!TypefaceCompatUtil.copyToFile(tempFile, resources, i)) {
return null;
}
Typeface createFromFile = Typeface.createFromFile(tempFile.getPath());
tempFile.delete();
return createFromFile;
} catch (RuntimeException unused) {
return null;
} finally {
tempFile.delete();
}
}
public FontsContractCompat.FontInfo findBestInfo(FontsContractCompat.FontInfo[] fontInfoArr, int i) {
return (FontsContractCompat.FontInfo) findBestFont(fontInfoArr, i, new AnonymousClass1());
}
@Nullable
public FontResourcesParserCompat.FontFamilyFilesResourceEntry getFontFamily(Typeface typeface) {
long uniqueKey = getUniqueKey(typeface);
if (uniqueKey == 0) {
return null;
}
return this.mFontFamilies.get(Long.valueOf(uniqueKey));
}
}