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