TextLayoutAlgorithm$1TextLengthResolver.smali
.class public Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;
.super Ljava/lang/Object;
.source "TextLayoutAlgorithm.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/horcrux/svg/TextLayoutAlgorithm;->layoutText(Lcom/horcrux/svg/TextLayoutAlgorithm$LayoutInput;)[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1
name = "TextLengthResolver"
.end annotation
# instance fields
.field public global:I
.field public final synthetic this$0:Lcom/horcrux/svg/TextLayoutAlgorithm;
.field public final synthetic val$result:[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lcom/horcrux/svg/TextLayoutAlgorithm;[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()V"
}
.end annotation
iput-object p1, p0, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->this$0:Lcom/horcrux/svg/TextLayoutAlgorithm;
iput-object p2, p0, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->val$result:[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static synthetic access$000(Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;Lcom/horcrux/svg/TextView;)V
.registers 2
invoke-direct {p0, p1}, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->resolveTextLength(Lcom/horcrux/svg/TextView;)V
return-void
.end method
.method private resolveTextLength(Lcom/horcrux/svg/TextView;)V
.registers 19
move-object/from16 v0, p0
move-object/from16 v1, p1
invoke-virtual/range {p1 .. p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v2
iget-object v3, v1, Lcom/horcrux/svg/TextView;->mTextLength:Lcom/horcrux/svg/SVGLength;
if-eqz v3, :cond_e
const/4 v3, 0x1
goto :goto_f
:cond_e
const/4 v3, 0x0
:goto_f
const-class v6, Lcom/horcrux/svg/TSpanView;
if-ne v2, v6, :cond_cf
if-eqz v3, :cond_cf
const-wide/high16 v2, -0x10000000000000L # Double.NEGATIVE_INFINITY
move-object v6, v1
check-cast v6, Lcom/horcrux/svg/TSpanView;
iget-object v7, v6, Lcom/horcrux/svg/TSpanView;->mContent:Ljava/lang/String;
iget v8, v0, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->global:I
if-nez v7, :cond_22
const/4 v7, 0x0
goto :goto_26
:cond_22
invoke-virtual {v7}, Ljava/lang/String;->length()I
move-result v7
:goto_26
add-int/2addr v7, v8
move v11, v8
const-wide/high16 v12, 0x7ff0000000000000L # Double.POSITIVE_INFINITY
:goto_2a
if-gt v11, v7, :cond_64
iget-object v14, v0, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->val$result:[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;
aget-object v15, v14, v8
iget-boolean v15, v15, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->addressable:Z
if-nez v15, :cond_37
move-object/from16 v16, v6
goto :goto_5e
:cond_37
aget-object v15, v14, v8
iget-char v15, v15, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->character:C
const/16 v4, 0xa
if-eq v15, v4, :cond_63
const/16 v4, 0xd
if-eq v15, v4, :cond_63
aget-object v4, v14, v11
move-object/from16 v16, v6
iget-wide v5, v4, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D
aget-object v4, v14, v11
iget-wide v9, v4, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->advance:D
add-double/2addr v9, v5
invoke-static {v5, v6, v9, v10}, Ljava/lang/Math;->min(DD)D
move-result-wide v14
invoke-static {v12, v13, v14, v15}, Ljava/lang/Math;->min(DD)D
move-result-wide v12
invoke-static {v5, v6, v9, v10}, Ljava/lang/Math;->max(DD)D
move-result-wide v5
invoke-static {v2, v3, v5, v6}, Ljava/lang/Math;->max(DD)D
move-result-wide v2
:goto_5e
add-int/lit8 v11, v11, 0x1
move-object/from16 v6, v16
goto :goto_2a
:cond_63
return-void
:cond_64
move-object/from16 v16, v6
const-wide/high16 v5, 0x7ff0000000000000L # Double.POSITIVE_INFINITY
cmpl-double v9, v12, v5
if-eqz v9, :cond_cf
iget-object v5, v1, Lcom/horcrux/svg/TextView;->mTextLength:Lcom/horcrux/svg/SVGLength;
iget-wide v5, v5, Lcom/horcrux/svg/SVGLength;->value:D
sub-double/2addr v2, v12
sub-double/2addr v5, v2
const/4 v2, 0x0
const/4 v3, 0x0
const/4 v9, 0x0
:goto_75
invoke-virtual/range {p1 .. p1}, Landroid/view/ViewGroup;->getChildCount()I
move-result v10
if-ge v2, v10, :cond_a4
invoke-virtual {v1, v2}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;
move-result-object v10
check-cast v10, Lcom/horcrux/svg/TextPathView;
iget-object v10, v10, Lcom/horcrux/svg/TextView;->mTextLength:Lcom/horcrux/svg/SVGLength;
if-nez v10, :cond_94
move-object/from16 v10, v16
iget-object v11, v10, Lcom/horcrux/svg/TSpanView;->mContent:Ljava/lang/String;
if-nez v11, :cond_8d
const/4 v11, 0x0
goto :goto_91
:cond_8d
invoke-virtual {v11}, Ljava/lang/String;->length()I
move-result v11
:goto_91
add-int/2addr v3, v11
const/4 v4, 0x1
goto :goto_9f
:cond_94
move-object/from16 v10, v16
iget-object v11, v0, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->val$result:[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;
aget-object v11, v11, v3
const/4 v4, 0x1
iput-boolean v4, v11, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->firstCharacterInResolvedDescendant:Z
add-int/lit8 v9, v9, 0x1
:goto_9f
add-int/lit8 v2, v2, 0x1
move-object/from16 v16, v10
goto :goto_75
:cond_a4
const/4 v4, 0x1
sub-int/2addr v9, v4
add-int/2addr v3, v9
int-to-double v1, v3
invoke-static {v1, v2}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v5, v1
const-wide/16 v1, 0x0
:goto_ae
if-gt v8, v7, :cond_cf
iget-object v3, v0, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->val$result:[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;
aget-object v4, v3, v8
iget-wide v9, v4, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D
add-double/2addr v9, v1
iput-wide v9, v4, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D
aget-object v4, v3, v8
iget-boolean v4, v4, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->middle:Z
if-nez v4, :cond_cc
aget-object v4, v3, v8
iget-boolean v4, v4, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->resolved:Z
if-eqz v4, :cond_cb
aget-object v3, v3, v8
iget-boolean v3, v3, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->firstCharacterInResolvedDescendant:Z
if-eqz v3, :cond_cc
:cond_cb
add-double/2addr v1, v5
:cond_cc
add-int/lit8 v8, v8, 0x1
goto :goto_ae
:cond_cf
return-void
.end method