ReactFontManager.smali
.class public Lcom/facebook/react/views/text/ReactFontManager;
.super Ljava/lang/Object;
.source "ReactFontManager.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/facebook/react/views/text/ReactFontManager$FontFamily;
}
.end annotation
# static fields
.field public static final EXTENSIONS:[Ljava/lang/String;
.field public static final FILE_EXTENSIONS:[Ljava/lang/String;
.field public static final FONTS_ASSET_PATH:Ljava/lang/String; = "fonts/"
.field public static sReactFontManagerInstance:Lcom/facebook/react/views/text/ReactFontManager;
# instance fields
.field public final mCustomTypefaceCache:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/String;",
"Landroid/graphics/Typeface;",
">;"
}
.end annotation
.end field
.field public final mFontCache:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/String;",
"Lcom/facebook/react/views/text/ReactFontManager$FontFamily;",
">;"
}
.end annotation
.end field
# direct methods
.method public static constructor <clinit>()V
.registers 4
const-string v0, ""
const-string v1, "_bold"
const-string v2, "_italic"
const-string v3, "_bold_italic"
filled-new-array {v0, v1, v2, v3}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/facebook/react/views/text/ReactFontManager;->EXTENSIONS:[Ljava/lang/String;
const-string v0, ".ttf"
const-string v1, ".otf"
filled-new-array {v0, v1}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Lcom/facebook/react/views/text/ReactFontManager;->FILE_EXTENSIONS:[Ljava/lang/String;
return-void
.end method
.method public constructor <init>()V
.registers 2
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/facebook/react/views/text/ReactFontManager;->mFontCache:Ljava/util/Map;
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/facebook/react/views/text/ReactFontManager;->mCustomTypefaceCache:Ljava/util/Map;
return-void
.end method
.method public static createTypeface(Ljava/lang/String;ILandroid/content/res/AssetManager;)Landroid/graphics/Typeface;
.registers 10
.annotation build Landroidx/annotation/Nullable;
.end annotation
sget-object v0, Lcom/facebook/react/views/text/ReactFontManager;->EXTENSIONS:[Ljava/lang/String;
aget-object v0, v0, p1
sget-object v1, Lcom/facebook/react/views/text/ReactFontManager;->FILE_EXTENSIONS:[Ljava/lang/String;
array-length v2, v1
const/4 v3, 0x0
:goto_8
if-ge v3, v2, :cond_2b
aget-object v4, v1, v3
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
const-string v6, "fonts/"
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
:try_start_23
invoke-static {p2, v4}, Landroid/graphics/Typeface;->createFromAsset(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;
move-result-object p0
:try_end_27
.catch Ljava/lang/RuntimeException; {:try_start_23 .. :try_end_27} :catch_28
return-object p0
:catch_28
add-int/lit8 v3, v3, 0x1
goto :goto_8
:cond_2b
invoke-static {p0, p1}, Landroid/graphics/Typeface;->create(Ljava/lang/String;I)Landroid/graphics/Typeface;
move-result-object p0
return-object p0
.end method
.method public static getInstance()Lcom/facebook/react/views/text/ReactFontManager;
.registers 1
sget-object v0, Lcom/facebook/react/views/text/ReactFontManager;->sReactFontManagerInstance:Lcom/facebook/react/views/text/ReactFontManager;
if-nez v0, :cond_b
new-instance v0, Lcom/facebook/react/views/text/ReactFontManager;
invoke-direct {v0}, Lcom/facebook/react/views/text/ReactFontManager;-><init>()V
sput-object v0, Lcom/facebook/react/views/text/ReactFontManager;->sReactFontManagerInstance:Lcom/facebook/react/views/text/ReactFontManager;
:cond_b
sget-object v0, Lcom/facebook/react/views/text/ReactFontManager;->sReactFontManagerInstance:Lcom/facebook/react/views/text/ReactFontManager;
return-object v0
.end method
# virtual methods
.method public addCustomFont(Landroid/content/Context;Ljava/lang/String;I)V
.registers 4
.param p1 # Landroid/content/Context;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
.param p2 # Ljava/lang/String;
.annotation build Landroidx/annotation/NonNull;
.end annotation
.end param
invoke-static {p1, p3}, Landroidx/core/content/res/ResourcesCompat;->getFont(Landroid/content/Context;I)Landroid/graphics/Typeface;
move-result-object p1
if-eqz p1, :cond_b
iget-object p3, p0, Lcom/facebook/react/views/text/ReactFontManager;->mCustomTypefaceCache:Ljava/util/Map;
invoke-interface {p3, p2, p1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:cond_b
return-void
.end method
.method public getTypeface(Ljava/lang/String;IILandroid/content/res/AssetManager;)Landroid/graphics/Typeface;
.registers 6
.annotation build Landroidx/annotation/Nullable;
.end annotation
iget-object v0, p0, Lcom/facebook/react/views/text/ReactFontManager;->mCustomTypefaceCache:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_2f
iget-object p4, p0, Lcom/facebook/react/views/text/ReactFontManager;->mCustomTypefaceCache:Ljava/util/Map;
invoke-interface {p4, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Landroid/graphics/Typeface;
sget p4, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v0, 0x1c
if-lt p4, v0, :cond_2a
const/16 p4, 0x64
if-lt p3, p4, :cond_2a
const/16 p4, 0x3e8
if-gt p3, p4, :cond_2a
and-int/lit8 p2, p2, 0x2
if-eqz p2, :cond_24
const/4 p2, 0x1
goto :goto_25
:cond_24
const/4 p2, 0x0
:goto_25
invoke-static {p1, p3, p2}, Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface;
move-result-object p1
return-object p1
:cond_2a
invoke-static {p1, p2}, Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;
move-result-object p1
return-object p1
:cond_2f
iget-object p3, p0, Lcom/facebook/react/views/text/ReactFontManager;->mFontCache:Ljava/util/Map;
invoke-interface {p3, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p3
check-cast p3, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;
if-nez p3, :cond_44
new-instance p3, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;
const/4 v0, 0x0
invoke-direct {p3, v0}, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;-><init>(Lcom/facebook/react/views/text/ReactFontManager$1;)V
iget-object v0, p0, Lcom/facebook/react/views/text/ReactFontManager;->mFontCache:Ljava/util/Map;
invoke-interface {v0, p1, p3}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:cond_44
invoke-virtual {p3, p2}, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;->getTypeface(I)Landroid/graphics/Typeface;
move-result-object v0
if-nez v0, :cond_53
invoke-static {p1, p2, p4}, Lcom/facebook/react/views/text/ReactFontManager;->createTypeface(Ljava/lang/String;ILandroid/content/res/AssetManager;)Landroid/graphics/Typeface;
move-result-object v0
if-eqz v0, :cond_53
invoke-virtual {p3, p2, v0}, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;->setTypeface(ILandroid/graphics/Typeface;)V
:cond_53
return-object v0
.end method
.method public getTypeface(Ljava/lang/String;ILandroid/content/res/AssetManager;)Landroid/graphics/Typeface;
.registers 5
.annotation build Landroidx/annotation/Nullable;
.end annotation
const/4 v0, 0x0
invoke-virtual {p0, p1, p2, v0, p3}, Lcom/facebook/react/views/text/ReactFontManager;->getTypeface(Ljava/lang/String;IILandroid/content/res/AssetManager;)Landroid/graphics/Typeface;
move-result-object p1
return-object p1
.end method
.method public setTypeface(Ljava/lang/String;ILandroid/graphics/Typeface;)V
.registers 6
if-eqz p3, :cond_1a
iget-object v0, p0, Lcom/facebook/react/views/text/ReactFontManager;->mFontCache:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;
if-nez v0, :cond_17
new-instance v0, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;
const/4 v1, 0x0
invoke-direct {v0, v1}, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;-><init>(Lcom/facebook/react/views/text/ReactFontManager$1;)V
iget-object v1, p0, Lcom/facebook/react/views/text/ReactFontManager;->mFontCache:Ljava/util/Map;
invoke-interface {v1, p1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:cond_17
invoke-virtual {v0, p2, p3}, Lcom/facebook/react/views/text/ReactFontManager$FontFamily;->setTypeface(ILandroid/graphics/Typeface;)V
:cond_1a
return-void
.end method