FontData.smali
.class public Lcom/horcrux/svg/FontData;
.super Ljava/lang/Object;
.source "FontData.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/horcrux/svg/FontData$AbsoluteFontWeight;
}
.end annotation
# static fields
.field public static final DEFAULT_FONT_SIZE:D = 12.0
.field public static final DEFAULT_KERNING:D = 0.0
.field public static final DEFAULT_LETTER_SPACING:D = 0.0
.field public static final DEFAULT_WORD_SPACING:D = 0.0
.field public static final Defaults:Lcom/horcrux/svg/FontData;
.field public static final FONT_DATA:Ljava/lang/String; = "fontData"
.field public static final FONT_FEATURE_SETTINGS:Ljava/lang/String; = "fontFeatureSettings"
.field public static final FONT_VARIANT_LIGATURES:Ljava/lang/String; = "fontVariantLigatures"
.field public static final FONT_VARIATION_SETTINGS:Ljava/lang/String; = "fontVariationSettings"
.field public static final KERNING:Ljava/lang/String; = "kerning"
.field public static final LETTER_SPACING:Ljava/lang/String; = "letterSpacing"
.field public static final TEXT_ANCHOR:Ljava/lang/String; = "textAnchor"
.field public static final TEXT_DECORATION:Ljava/lang/String; = "textDecoration"
.field public static final WORD_SPACING:Ljava/lang/String; = "wordSpacing"
# instance fields
.field public absoluteFontWeight:I
.field public final fontData:Lcom/facebook/react/bridge/ReadableMap;
.field public final fontFamily:Ljava/lang/String;
.field public final fontFeatureSettings:Ljava/lang/String;
.field public final fontSize:D
.field public final fontStyle:Lcom/horcrux/svg/TextProperties$FontStyle;
.field public final fontVariantLigatures:Lcom/horcrux/svg/TextProperties$FontVariantLigatures;
.field public final fontVariationSettings:Ljava/lang/String;
.field public fontWeight:Lcom/horcrux/svg/TextProperties$FontWeight;
.field public final kerning:D
.field public final letterSpacing:D
.field public final manualKerning:Z
.field public final textAnchor:Lcom/horcrux/svg/TextProperties$TextAnchor;
.field public final textDecoration:Lcom/horcrux/svg/TextProperties$TextDecoration;
.field public final wordSpacing:D
# direct methods
.method public static constructor <clinit>()V
.registers 1
new-instance v0, Lcom/horcrux/svg/FontData;
invoke-direct {v0}, Lcom/horcrux/svg/FontData;-><init>()V
sput-object v0, Lcom/horcrux/svg/FontData;->Defaults:Lcom/horcrux/svg/FontData;
return-void
.end method
.method public constructor <init>()V
.registers 5
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x0
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontData:Lcom/facebook/react/bridge/ReadableMap;
const-string v0, ""
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontFamily:Ljava/lang/String;
sget-object v1, Lcom/horcrux/svg/TextProperties$FontStyle;->normal:Lcom/horcrux/svg/TextProperties$FontStyle;
iput-object v1, p0, Lcom/horcrux/svg/FontData;->fontStyle:Lcom/horcrux/svg/TextProperties$FontStyle;
sget-object v1, Lcom/horcrux/svg/TextProperties$FontWeight;->Normal:Lcom/horcrux/svg/TextProperties$FontWeight;
iput-object v1, p0, Lcom/horcrux/svg/FontData;->fontWeight:Lcom/horcrux/svg/TextProperties$FontWeight;
const/16 v1, 0x190
iput v1, p0, Lcom/horcrux/svg/FontData;->absoluteFontWeight:I
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontFeatureSettings:Ljava/lang/String;
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontVariationSettings:Ljava/lang/String;
sget-object v0, Lcom/horcrux/svg/TextProperties$FontVariantLigatures;->normal:Lcom/horcrux/svg/TextProperties$FontVariantLigatures;
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontVariantLigatures:Lcom/horcrux/svg/TextProperties$FontVariantLigatures;
sget-object v0, Lcom/horcrux/svg/TextProperties$TextAnchor;->start:Lcom/horcrux/svg/TextProperties$TextAnchor;
iput-object v0, p0, Lcom/horcrux/svg/FontData;->textAnchor:Lcom/horcrux/svg/TextProperties$TextAnchor;
sget-object v0, Lcom/horcrux/svg/TextProperties$TextDecoration;->None:Lcom/horcrux/svg/TextProperties$TextDecoration;
iput-object v0, p0, Lcom/horcrux/svg/FontData;->textDecoration:Lcom/horcrux/svg/TextProperties$TextDecoration;
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/horcrux/svg/FontData;->manualKerning:Z
const-wide/16 v0, 0x0
iput-wide v0, p0, Lcom/horcrux/svg/FontData;->kerning:D
const-wide/high16 v2, 0x4028000000000000L # 12.0
iput-wide v2, p0, Lcom/horcrux/svg/FontData;->fontSize:D
iput-wide v0, p0, Lcom/horcrux/svg/FontData;->wordSpacing:D
iput-wide v0, p0, Lcom/horcrux/svg/FontData;->letterSpacing:D
return-void
.end method
.method public constructor <init>(Lcom/facebook/react/bridge/ReadableMap;Lcom/horcrux/svg/FontData;D)V
.registers 16
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iget-wide v7, p2, Lcom/horcrux/svg/FontData;->fontSize:D
const-string v0, "fontSize"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_1b
const-wide/high16 v3, 0x3ff0000000000000L # 1.0
const-string v2, "fontSize"
move-object v0, p0
move-object v1, p1
move-wide v5, v7
invoke-direct/range {v0 .. v8}, Lcom/horcrux/svg/FontData;->toAbsolute(Lcom/facebook/react/bridge/ReadableMap;Ljava/lang/String;DDD)D
move-result-wide v0
iput-wide v0, p0, Lcom/horcrux/svg/FontData;->fontSize:D
goto :goto_1d
:cond_1b
iput-wide v7, p0, Lcom/horcrux/svg/FontData;->fontSize:D
:goto_1d
const-string v0, "fontWeight"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_5e
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getType(Ljava/lang/String;)Lcom/facebook/react/bridge/ReadableType;
move-result-object v1
sget-object v2, Lcom/facebook/react/bridge/ReadableType;->Number:Lcom/facebook/react/bridge/ReadableType;
if-ne v1, v2, :cond_35
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide v0
invoke-direct {p0, p2, v0, v1}, Lcom/horcrux/svg/FontData;->handleNumericWeight(Lcom/horcrux/svg/FontData;D)V
goto :goto_61
:cond_35
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/horcrux/svg/TextProperties$FontWeight;->hasEnum(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_50
invoke-static {v0}, Lcom/horcrux/svg/TextProperties$FontWeight;->get(Ljava/lang/String;)Lcom/horcrux/svg/TextProperties$FontWeight;
move-result-object v0
invoke-static {v0, p2}, Lcom/horcrux/svg/FontData$AbsoluteFontWeight;->from(Lcom/horcrux/svg/TextProperties$FontWeight;Lcom/horcrux/svg/FontData;)I
move-result v0
iput v0, p0, Lcom/horcrux/svg/FontData;->absoluteFontWeight:I
invoke-static {v0}, Lcom/horcrux/svg/FontData$AbsoluteFontWeight;->nearestFontWeight(I)Lcom/horcrux/svg/TextProperties$FontWeight;
move-result-object v0
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontWeight:Lcom/horcrux/svg/TextProperties$FontWeight;
goto :goto_61
:cond_50
if-eqz v0, :cond_5a
invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
invoke-direct {p0, p2, v0, v1}, Lcom/horcrux/svg/FontData;->handleNumericWeight(Lcom/horcrux/svg/FontData;D)V
goto :goto_61
:cond_5a
invoke-direct {p0, p2}, Lcom/horcrux/svg/FontData;->setInheritedWeight(Lcom/horcrux/svg/FontData;)V
goto :goto_61
:cond_5e
invoke-direct {p0, p2}, Lcom/horcrux/svg/FontData;->setInheritedWeight(Lcom/horcrux/svg/FontData;)V
:goto_61
const-string v0, "fontData"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_6e
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getMap(Ljava/lang/String;)Lcom/facebook/react/bridge/ReadableMap;
move-result-object v0
goto :goto_70
:cond_6e
iget-object v0, p2, Lcom/horcrux/svg/FontData;->fontData:Lcom/facebook/react/bridge/ReadableMap;
:goto_70
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontData:Lcom/facebook/react/bridge/ReadableMap;
const-string v0, "fontFamily"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_7f
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
goto :goto_81
:cond_7f
iget-object v0, p2, Lcom/horcrux/svg/FontData;->fontFamily:Ljava/lang/String;
:goto_81
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontFamily:Ljava/lang/String;
const-string v0, "fontStyle"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_94
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/horcrux/svg/TextProperties$FontStyle;->valueOf(Ljava/lang/String;)Lcom/horcrux/svg/TextProperties$FontStyle;
move-result-object v0
goto :goto_96
:cond_94
iget-object v0, p2, Lcom/horcrux/svg/FontData;->fontStyle:Lcom/horcrux/svg/TextProperties$FontStyle;
:goto_96
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontStyle:Lcom/horcrux/svg/TextProperties$FontStyle;
const-string v0, "fontFeatureSettings"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_a5
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
goto :goto_a7
:cond_a5
iget-object v0, p2, Lcom/horcrux/svg/FontData;->fontFeatureSettings:Ljava/lang/String;
:goto_a7
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontFeatureSettings:Ljava/lang/String;
const-string v0, "fontVariationSettings"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_b6
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
goto :goto_b8
:cond_b6
iget-object v0, p2, Lcom/horcrux/svg/FontData;->fontVariationSettings:Ljava/lang/String;
:goto_b8
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontVariationSettings:Ljava/lang/String;
const-string v0, "fontVariantLigatures"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_cb
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/horcrux/svg/TextProperties$FontVariantLigatures;->valueOf(Ljava/lang/String;)Lcom/horcrux/svg/TextProperties$FontVariantLigatures;
move-result-object v0
goto :goto_cd
:cond_cb
iget-object v0, p2, Lcom/horcrux/svg/FontData;->fontVariantLigatures:Lcom/horcrux/svg/TextProperties$FontVariantLigatures;
:goto_cd
iput-object v0, p0, Lcom/horcrux/svg/FontData;->fontVariantLigatures:Lcom/horcrux/svg/TextProperties$FontVariantLigatures;
const-string v0, "textAnchor"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_e0
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/horcrux/svg/TextProperties$TextAnchor;->valueOf(Ljava/lang/String;)Lcom/horcrux/svg/TextProperties$TextAnchor;
move-result-object v0
goto :goto_e2
:cond_e0
iget-object v0, p2, Lcom/horcrux/svg/FontData;->textAnchor:Lcom/horcrux/svg/TextProperties$TextAnchor;
:goto_e2
iput-object v0, p0, Lcom/horcrux/svg/FontData;->textAnchor:Lcom/horcrux/svg/TextProperties$TextAnchor;
const-string v0, "textDecoration"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_f5
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/horcrux/svg/TextProperties$TextDecoration;->getEnum(Ljava/lang/String;)Lcom/horcrux/svg/TextProperties$TextDecoration;
move-result-object v0
goto :goto_f7
:cond_f5
iget-object v0, p2, Lcom/horcrux/svg/FontData;->textDecoration:Lcom/horcrux/svg/TextProperties$TextDecoration;
:goto_f7
iput-object v0, p0, Lcom/horcrux/svg/FontData;->textDecoration:Lcom/horcrux/svg/TextProperties$TextDecoration;
const-string v0, "kerning"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_108
iget-boolean v1, p2, Lcom/horcrux/svg/FontData;->manualKerning:Z
if-eqz v1, :cond_106
goto :goto_108
:cond_106
const/4 v1, 0x0
goto :goto_109
:cond_108
:goto_108
const/4 v1, 0x1
:goto_109
iput-boolean v1, p0, Lcom/horcrux/svg/FontData;->manualKerning:Z
if-eqz v0, :cond_11b
iget-wide v7, p0, Lcom/horcrux/svg/FontData;->fontSize:D
const-wide/16 v9, 0x0
const-string v4, "kerning"
move-object v2, p0
move-object v3, p1
move-wide v5, p3
invoke-direct/range {v2 .. v10}, Lcom/horcrux/svg/FontData;->toAbsolute(Lcom/facebook/react/bridge/ReadableMap;Ljava/lang/String;DDD)D
move-result-wide v0
goto :goto_11d
:cond_11b
iget-wide v0, p2, Lcom/horcrux/svg/FontData;->kerning:D
:goto_11d
iput-wide v0, p0, Lcom/horcrux/svg/FontData;->kerning:D
const-string v0, "wordSpacing"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_135
iget-wide v6, p0, Lcom/horcrux/svg/FontData;->fontSize:D
const-wide/16 v8, 0x0
const-string v3, "wordSpacing"
move-object v1, p0
move-object v2, p1
move-wide v4, p3
invoke-direct/range {v1 .. v9}, Lcom/horcrux/svg/FontData;->toAbsolute(Lcom/facebook/react/bridge/ReadableMap;Ljava/lang/String;DDD)D
move-result-wide v0
goto :goto_137
:cond_135
iget-wide v0, p2, Lcom/horcrux/svg/FontData;->wordSpacing:D
:goto_137
iput-wide v0, p0, Lcom/horcrux/svg/FontData;->wordSpacing:D
const-string v0, "letterSpacing"
invoke-interface {p1, v0}, Lcom/facebook/react/bridge/ReadableMap;->hasKey(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_14f
iget-wide v6, p0, Lcom/horcrux/svg/FontData;->fontSize:D
const-wide/16 v8, 0x0
const-string v3, "letterSpacing"
move-object v1, p0
move-object v2, p1
move-wide v4, p3
invoke-direct/range {v1 .. v9}, Lcom/horcrux/svg/FontData;->toAbsolute(Lcom/facebook/react/bridge/ReadableMap;Ljava/lang/String;DDD)D
move-result-wide p1
goto :goto_151
:cond_14f
iget-wide p1, p2, Lcom/horcrux/svg/FontData;->letterSpacing:D
:goto_151
iput-wide p1, p0, Lcom/horcrux/svg/FontData;->letterSpacing:D
return-void
.end method
.method private handleNumericWeight(Lcom/horcrux/svg/FontData;D)V
.registers 7
invoke-static {p2, p3}, Ljava/lang/Math;->round(D)J
move-result-wide p2
const-wide/16 v0, 0x1
cmp-long v2, p2, v0
if-ltz v2, :cond_1a
const-wide/16 v0, 0x3e8
cmp-long v2, p2, v0
if-gtz v2, :cond_1a
long-to-int p1, p2
iput p1, p0, Lcom/horcrux/svg/FontData;->absoluteFontWeight:I
invoke-static {p1}, Lcom/horcrux/svg/FontData$AbsoluteFontWeight;->nearestFontWeight(I)Lcom/horcrux/svg/TextProperties$FontWeight;
move-result-object p1
iput-object p1, p0, Lcom/horcrux/svg/FontData;->fontWeight:Lcom/horcrux/svg/TextProperties$FontWeight;
goto :goto_1d
:cond_1a
invoke-direct {p0, p1}, Lcom/horcrux/svg/FontData;->setInheritedWeight(Lcom/horcrux/svg/FontData;)V
:goto_1d
return-void
.end method
.method private setInheritedWeight(Lcom/horcrux/svg/FontData;)V
.registers 3
iget v0, p1, Lcom/horcrux/svg/FontData;->absoluteFontWeight:I
iput v0, p0, Lcom/horcrux/svg/FontData;->absoluteFontWeight:I
iget-object p1, p1, Lcom/horcrux/svg/FontData;->fontWeight:Lcom/horcrux/svg/TextProperties$FontWeight;
iput-object p1, p0, Lcom/horcrux/svg/FontData;->fontWeight:Lcom/horcrux/svg/TextProperties$FontWeight;
return-void
.end method
.method private toAbsolute(Lcom/facebook/react/bridge/ReadableMap;Ljava/lang/String;DDD)D
.registers 16
invoke-interface {p1, p2}, Lcom/facebook/react/bridge/ReadableMap;->getType(Ljava/lang/String;)Lcom/facebook/react/bridge/ReadableType;
move-result-object v0
sget-object v1, Lcom/facebook/react/bridge/ReadableType;->Number:Lcom/facebook/react/bridge/ReadableType;
if-ne v0, v1, :cond_d
invoke-interface {p1, p2}, Lcom/facebook/react/bridge/ReadableMap;->getDouble(Ljava/lang/String;)D
move-result-wide p1
return-wide p1
:cond_d
invoke-interface {p1, p2}, Lcom/facebook/react/bridge/ReadableMap;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
move-wide v1, p7
move-wide v3, p3
move-wide v5, p5
invoke-static/range {v0 .. v6}, Lcom/horcrux/svg/PropHelper;->fromRelative(Ljava/lang/String;DDD)D
move-result-wide p1
return-wide p1
.end method