TextLayoutAlgorithm.smali

.class public Lcom/horcrux/svg/TextLayoutAlgorithm;
.super Ljava/lang/Object;
.source "TextLayoutAlgorithm.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/horcrux/svg/TextLayoutAlgorithm$LayoutInput;,
        Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;
    }
.end annotation


# direct methods
.method static constructor <clinit>()V
    .registers 1

    return-void
.end method

.method public constructor <init>()V
    .registers 1

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method private getSubTreeTypographicCharacterPositions(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/StringBuilder;Landroid/view/View;Lcom/horcrux/svg/TextPathView;)V
    .registers 14
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/ArrayList<",
            "Lcom/horcrux/svg/TextPathView;",
            ">;",
            "Ljava/util/ArrayList<",
            "Lcom/horcrux/svg/TextView;",
            ">;",
            "Ljava/lang/StringBuilder;",
            "Landroid/view/View;",
            "Lcom/horcrux/svg/TextPathView;",
            ")V"
        }
    .end annotation

    instance-of v0, p4, Lcom/horcrux/svg/TSpanView;

    const/4 v1, 0x0

    if-eqz v0, :cond_33

    check-cast p4, Lcom/horcrux/svg/TSpanView;

    iget-object v0, p4, Lcom/horcrux/svg/TSpanView;->mContent:Ljava/lang/String;

    if-nez v0, :cond_20

    :goto_b
    invoke-virtual {p4}, Landroid/view/ViewGroup;->getChildCount()I

    move-result v0

    if-ge v1, v0, :cond_4f

    invoke-virtual {p4, v1}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;

    move-result-object v6

    move-object v2, p0

    move-object v3, p1

    move-object v4, p2

    move-object v5, p3

    move-object v7, p5

    invoke-direct/range {v2 .. v7}, Lcom/horcrux/svg/TextLayoutAlgorithm;->getSubTreeTypographicCharacterPositions(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/StringBuilder;Landroid/view/View;Lcom/horcrux/svg/TextPathView;)V

    add-int/lit8 v1, v1, 0x1

    goto :goto_b

    :cond_20
    :goto_20
    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v2

    if-ge v1, v2, :cond_2f

    invoke-virtual {p2, p4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    invoke-virtual {p1, p5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    add-int/lit8 v1, v1, 0x1

    goto :goto_20

    :cond_2f
    invoke-virtual {p3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    goto :goto_4f

    :cond_33
    instance-of v0, p4, Lcom/horcrux/svg/TextPathView;

    if-eqz v0, :cond_3a

    move-object p5, p4

    check-cast p5, Lcom/horcrux/svg/TextPathView;

    :cond_3a
    :goto_3a
    invoke-virtual {p5}, Landroid/view/ViewGroup;->getChildCount()I

    move-result p4

    if-ge v1, p4, :cond_4f

    invoke-virtual {p5, v1}, Landroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;

    move-result-object v6

    move-object v2, p0

    move-object v3, p1

    move-object v4, p2

    move-object v5, p3

    move-object v7, p5

    invoke-direct/range {v2 .. v7}, Lcom/horcrux/svg/TextLayoutAlgorithm;->getSubTreeTypographicCharacterPositions(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/StringBuilder;Landroid/view/View;Lcom/horcrux/svg/TextPathView;)V

    add-int/lit8 v1, v1, 0x1

    goto :goto_3a

    :cond_4f
    :goto_4f
    return-void
.end method


# virtual methods
.method public layoutText(Lcom/horcrux/svg/TextLayoutAlgorithm$LayoutInput;)[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;
    .registers 28

    move-object/from16 v7, p0

    move-object/from16 v0, p1

    iget-object v8, v0, Lcom/horcrux/svg/TextLayoutAlgorithm$LayoutInput;->text:Lcom/horcrux/svg/TextView;

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    new-instance v2, Ljava/util/ArrayList;

    invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V

    new-instance v9, Ljava/util/ArrayList;

    invoke-direct {v9}, Ljava/util/ArrayList;-><init>()V

    const/4 v5, 0x0

    move-object/from16 v0, p0

    move-object v1, v9

    move-object v3, v6

    move-object v4, v8

    invoke-direct/range {v0 .. v5}, Lcom/horcrux/svg/TextLayoutAlgorithm;->getSubTreeTypographicCharacterPositions(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/StringBuilder;Landroid/view/View;Lcom/horcrux/svg/TextPathView;)V

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/String;->toCharArray()[C

    move-result-object v0

    array-length v10, v0

    new-array v11, v10, [Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;

    const/4 v12, 0x0

    const/4 v1, 0x0

    :goto_2b
    if-ge v1, v10, :cond_39

    new-instance v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;

    aget-char v3, v0, v1

    invoke-direct {v2, v7, v1, v3}, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;-><init>(Lcom/horcrux/svg/TextLayoutAlgorithm;IC)V

    aput-object v2, v11, v1

    add-int/lit8 v1, v1, 0x1

    goto :goto_2b

    :cond_39
    if-nez v10, :cond_3c

    return-object v11

    :cond_3c
    new-array v13, v10, [Landroid/graphics/PointF;

    const/4 v0, 0x0

    :goto_3f
    const/4 v14, 0x0

    if-ge v0, v10, :cond_4c

    new-instance v1, Landroid/graphics/PointF;

    invoke-direct {v1, v14, v14}, Landroid/graphics/PointF;-><init>(FF)V

    aput-object v1, v13, v0

    add-int/lit8 v0, v0, 0x1

    goto :goto_3f

    :cond_4c
    const/4 v0, 0x0

    :goto_4d
    const/4 v15, 0x1

    if-ge v0, v10, :cond_80

    aget-object v1, v11, v0

    iput-boolean v15, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->addressable:Z

    aget-object v1, v11, v0

    iput-boolean v12, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->middle:Z

    aget-object v1, v11, v0

    if-nez v0, :cond_5d

    goto :goto_5e

    :cond_5d
    const/4 v15, 0x0

    :goto_5e
    iput-boolean v15, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->anchoredChunk:Z

    aget-object v1, v11, v0

    iget-boolean v1, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->addressable:Z

    if-eqz v1, :cond_72

    aget-object v1, v11, v0

    iget-boolean v1, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->middle:Z

    if-nez v1, :cond_72

    aget-object v1, v13, v0

    invoke-virtual {v1, v14, v14}, Landroid/graphics/PointF;->set(FF)V

    goto :goto_7d

    :cond_72
    if-lez v0, :cond_7d

    aget-object v1, v13, v0

    add-int/lit8 v2, v0, -0x1

    aget-object v2, v13, v2

    invoke-virtual {v1, v2}, Landroid/graphics/PointF;->set(Landroid/graphics/PointF;)V

    :cond_7d
    :goto_7d
    add-int/lit8 v0, v0, 0x1

    goto :goto_4d

    :cond_80
    new-array v6, v10, [Ljava/lang/String;

    new-array v5, v10, [Ljava/lang/String;

    new-array v4, v10, [Ljava/lang/String;

    new-array v3, v10, [Ljava/lang/String;

    new-instance v0, Lcom/horcrux/svg/TextLayoutAlgorithm$1CharacterPositioningResolver;

    move-object/from16 v1, p0

    move-object v2, v11

    move-object/from16 v16, v3

    move-object v3, v6

    move-object/from16 v17, v4

    move-object v4, v5

    move-object/from16 v18, v5

    move-object/from16 v5, v17

    move-object/from16 v17, v6

    move-object/from16 v6, v16

    invoke-direct/range {v0 .. v6}, Lcom/horcrux/svg/TextLayoutAlgorithm$1CharacterPositioningResolver;-><init>(Lcom/horcrux/svg/TextLayoutAlgorithm;[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V

    new-instance v0, Landroid/graphics/PointF;

    invoke-direct {v0, v14, v14}, Landroid/graphics/PointF;-><init>(FF)V

    const/4 v1, 0x0

    :goto_a4
    if-ge v1, v10, :cond_ed

    aget-object v2, v17, v1

    const-string v3, ""

    invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v2

    const-string v4, "0"

    if-eqz v2, :cond_b4

    aput-object v4, v17, v1

    :cond_b4
    aget-object v2, v18, v1

    invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v2

    if-eqz v2, :cond_be

    aput-object v4, v18, v1

    :cond_be
    iget v2, v0, Landroid/graphics/PointF;->x:F

    aget-object v3, v17, v1

    invoke-static {v3}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v3

    add-float/2addr v2, v3

    iput v2, v0, Landroid/graphics/PointF;->x:F

    iget v2, v0, Landroid/graphics/PointF;->y:F

    aget-object v3, v18, v1

    invoke-static {v3}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v3

    add-float/2addr v2, v3

    iput v2, v0, Landroid/graphics/PointF;->y:F

    aget-object v3, v11, v1

    aget-object v4, v13, v1

    iget v4, v4, Landroid/graphics/PointF;->x:F

    iget v5, v0, Landroid/graphics/PointF;->x:F

    add-float/2addr v4, v5

    float-to-double v4, v4

    iput-wide v4, v3, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    aget-object v3, v11, v1

    aget-object v4, v13, v1

    iget v4, v4, Landroid/graphics/PointF;->y:F

    add-float/2addr v4, v2

    float-to-double v4, v4

    iput-wide v4, v3, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    add-int/lit8 v1, v1, 0x1

    goto :goto_a4

    :cond_ed
    new-instance v1, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;

    invoke-direct {v1, v7, v11}, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;-><init>(Lcom/horcrux/svg/TextLayoutAlgorithm;[Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;)V

    # invokes: Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->resolveTextLength(Lcom/horcrux/svg/TextView;)V
    invoke-static {v1, v8}, Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;->access$000(Lcom/horcrux/svg/TextLayoutAlgorithm$1TextLengthResolver;Lcom/horcrux/svg/TextView;)V

    invoke-virtual {v0, v14, v14}, Landroid/graphics/PointF;->set(FF)V

    const/4 v1, 0x1

    :cond_f9
    :goto_f9
    if-ge v1, v10, :cond_152

    aget-object v2, v17, v1

    if-eqz v2, :cond_10d

    aget-object v2, v17, v1

    invoke-static {v2}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D

    move-result-wide v2

    aget-object v4, v11, v1

    iget-wide v4, v4, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    sub-double/2addr v2, v4

    double-to-float v2, v2

    iput v2, v0, Landroid/graphics/PointF;->x:F

    :cond_10d
    aget-object v2, v18, v1

    if-eqz v2, :cond_11f

    aget-object v2, v18, v1

    invoke-static {v2}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D

    move-result-wide v2

    aget-object v4, v11, v1

    iget-wide v4, v4, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    sub-double/2addr v2, v4

    double-to-float v2, v2

    iput v2, v0, Landroid/graphics/PointF;->y:F

    :cond_11f
    aget-object v2, v11, v1

    iget-wide v3, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    iget v5, v0, Landroid/graphics/PointF;->x:F

    float-to-double v5, v5

    invoke-static {v5, v6}, Ljava/lang/Double;->isNaN(D)Z

    add-double/2addr v3, v5

    iput-wide v3, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    aget-object v2, v11, v1

    iget-wide v3, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    iget v5, v0, Landroid/graphics/PointF;->y:F

    float-to-double v5, v5

    invoke-static {v5, v6}, Ljava/lang/Double;->isNaN(D)Z

    add-double/2addr v3, v5

    iput-wide v3, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    aget-object v2, v11, v1

    iget-boolean v2, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->middle:Z

    if-eqz v2, :cond_149

    aget-object v2, v11, v1

    iget-boolean v2, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->anchoredChunk:Z

    if-eqz v2, :cond_149

    aget-object v2, v11, v1

    iput-boolean v12, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->anchoredChunk:Z

    :cond_149
    add-int/lit8 v1, v1, 0x1

    if-ge v1, v10, :cond_f9

    aget-object v2, v11, v1

    iput-boolean v15, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->anchoredChunk:Z

    goto :goto_f9

    :cond_152
    const/4 v4, 0x0

    const-wide/high16 v5, 0x7ff0000000000000L    # Double.POSITIVE_INFINITY

    const/4 v8, 0x0

    const-wide/high16 v16, -0x10000000000000L    # Double.NEGATIVE_INFINITY

    const-wide/high16 v18, 0x7ff0000000000000L    # Double.POSITIVE_INFINITY

    const-wide/high16 v20, -0x10000000000000L    # Double.NEGATIVE_INFINITY

    :goto_15c
    const-wide/high16 v22, 0x4000000000000000L    # 2.0

    if-ge v4, v10, :cond_1fd

    aget-object v1, v11, v4

    iget-boolean v1, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->addressable:Z

    if-nez v1, :cond_168

    goto/16 :goto_1f6

    :cond_168
    aget-object v1, v11, v4

    iget-boolean v1, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->anchoredChunk:Z

    if-eqz v1, :cond_175

    move-wide/from16 v18, v5

    const-wide/high16 v5, 0x7ff0000000000000L    # Double.POSITIVE_INFINITY

    const-wide/high16 v12, -0x10000000000000L    # Double.NEGATIVE_INFINITY

    goto :goto_179

    :cond_175
    move-wide/from16 v12, v16

    move-wide/from16 v16, v20

    :goto_179
    aget-object v1, v11, v4

    iget-wide v0, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    aget-object v14, v11, v4

    iget-wide v2, v14, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->advance:D

    add-double/2addr v2, v0

    invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->min(DD)D

    move-result-wide v14

    invoke-static {v5, v6, v14, v15}, Ljava/lang/Math;->min(DD)D

    move-result-wide v5

    invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->max(DD)D

    move-result-wide v0

    invoke-static {v12, v13, v0, v1}, Ljava/lang/Math;->max(DD)D

    move-result-wide v0

    if-lez v4, :cond_1a1

    aget-object v2, v11, v4

    iget-boolean v2, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->anchoredChunk:Z

    if-eqz v2, :cond_1a1

    const-wide/high16 v2, 0x7ff0000000000000L    # Double.POSITIVE_INFINITY

    cmpl-double v12, v18, v2

    if-nez v12, :cond_1a7

    goto :goto_1a3

    :cond_1a1
    const-wide/high16 v2, 0x7ff0000000000000L    # Double.POSITIVE_INFINITY

    :goto_1a3
    add-int/lit8 v12, v10, -0x1

    if-ne v4, v12, :cond_1f2

    :cond_1a7
    sget-object v12, Lcom/horcrux/svg/TextProperties$TextAnchor;->start:Lcom/horcrux/svg/TextProperties$TextAnchor;

    sget-object v13, Lcom/horcrux/svg/TextProperties$Direction;->ltr:Lcom/horcrux/svg/TextProperties$Direction;

    add-int/lit8 v14, v10, -0x1

    if-ne v4, v14, :cond_1b3

    move-wide/from16 v16, v0

    move-wide/from16 v18, v5

    :cond_1b3
    aget-object v15, v11, v8

    iget-wide v2, v15, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    sget-object v15, Lcom/horcrux/svg/TextLayoutAlgorithm$1;->$SwitchMap$com$horcrux$svg$TextProperties$TextAnchor:[I

    invoke-virtual {v12}, Ljava/lang/Enum;->ordinal()I

    move-result v12

    aget v12, v15, v12

    const/4 v15, 0x1

    if-eq v12, v15, :cond_1d6

    const/4 v15, 0x2

    if-eq v12, v15, :cond_1ce

    const/4 v15, 0x3

    if-eq v12, v15, :cond_1c9

    goto :goto_1df

    :cond_1c9
    sget-object v12, Lcom/horcrux/svg/TextProperties$Direction;->ltr:Lcom/horcrux/svg/TextProperties$Direction;

    if-ne v13, v12, :cond_1da

    goto :goto_1dd

    :cond_1ce
    sget-object v12, Lcom/horcrux/svg/TextProperties$Direction;->ltr:Lcom/horcrux/svg/TextProperties$Direction;

    add-double v12, v18, v16

    div-double v12, v12, v22

    sub-double/2addr v2, v12

    goto :goto_1df

    :cond_1d6
    sget-object v12, Lcom/horcrux/svg/TextProperties$Direction;->ltr:Lcom/horcrux/svg/TextProperties$Direction;

    if-ne v13, v12, :cond_1dd

    :cond_1da
    sub-double v2, v2, v18

    goto :goto_1df

    :cond_1dd
    :goto_1dd
    sub-double v2, v2, v16

    :goto_1df
    if-ne v4, v14, :cond_1e3

    move v12, v4

    goto :goto_1e5

    :cond_1e3
    add-int/lit8 v12, v4, -0x1

    :goto_1e5
    if-gt v8, v12, :cond_1f1

    aget-object v13, v11, v8

    iget-wide v14, v13, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    add-double/2addr v14, v2

    iput-wide v14, v13, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    add-int/lit8 v8, v8, 0x1

    goto :goto_1e5

    :cond_1f1
    move v8, v4

    :cond_1f2
    move-wide/from16 v20, v16

    move-wide/from16 v16, v0

    :goto_1f6
    add-int/lit8 v4, v4, 0x1

    const/4 v12, 0x0

    const/4 v14, 0x0

    const/4 v15, 0x1

    goto/16 :goto_15c

    :cond_1fd
    new-instance v0, Landroid/graphics/PointF;

    const/4 v2, 0x0

    invoke-direct {v0, v2, v2}, Landroid/graphics/PointF;-><init>(FF)V

    new-instance v2, Landroid/graphics/PathMeasure;

    invoke-direct {v2}, Landroid/graphics/PathMeasure;-><init>()V

    const/4 v3, 0x0

    move-object v6, v3

    const/4 v4, 0x0

    const/4 v5, 0x0

    const/4 v15, 0x0

    :goto_20d
    if-ge v5, v10, :cond_3c5

    invoke-virtual {v9, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v12

    check-cast v12, Lcom/horcrux/svg/TextPathView;

    if-eqz v12, :cond_354

    aget-object v13, v11, v5

    iget-boolean v13, v13, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->addressable:Z

    if-eqz v13, :cond_354

    invoke-virtual {v12, v3, v3}, Lcom/horcrux/svg/TextPathView;->getTextPath(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Landroid/graphics/Path;

    move-result-object v6

    aget-object v13, v11, v5

    iget-boolean v13, v13, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->middle:Z

    if-nez v13, :cond_32d

    invoke-virtual {v12}, Lcom/horcrux/svg/TextPathView;->getSide()Lcom/horcrux/svg/TextProperties$TextPathSide;

    sget-object v13, Lcom/horcrux/svg/TextProperties$TextPathSide;->right:Lcom/horcrux/svg/TextProperties$TextPathSide;

    const/4 v13, 0x0

    invoke-virtual {v2, v6, v13}, Landroid/graphics/PathMeasure;->setPath(Landroid/graphics/Path;Z)V

    invoke-virtual {v2}, Landroid/graphics/PathMeasure;->getLength()F

    move-result v13

    float-to-double v13, v13

    invoke-virtual {v12}, Lcom/horcrux/svg/TextPathView;->getStartOffset()Lcom/horcrux/svg/SVGLength;

    move-result-object v15

    move/from16 v17, v4

    iget-wide v3, v15, Lcom/horcrux/svg/SVGLength;->value:D

    aget-object v15, v11, v5

    move-object/from16 v18, v2

    iget-wide v1, v15, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->advance:D

    aget-object v15, v11, v5

    move-object/from16 v19, v6

    iget-wide v6, v15, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    aget-object v15, v11, v5

    move-object/from16 v24, v9

    move/from16 v25, v10

    iget-wide v9, v15, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    aget-object v9, v11, v5

    iget-wide v9, v9, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->rotate:D

    div-double v1, v1, v22

    add-double/2addr v6, v1

    add-double/2addr v6, v3

    invoke-virtual/range {v18 .. v18}, Landroid/graphics/PathMeasure;->isClosed()Z

    move-result v1

    const-wide/16 v2, 0x0

    if-nez v1, :cond_26e

    cmpg-double v1, v6, v2

    if-ltz v1, :cond_269

    cmpl-double v1, v6, v13

    if-lez v1, :cond_26e

    :cond_269
    aget-object v1, v11, v5

    const/4 v4, 0x1

    iput-boolean v4, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->hidden:Z

    :cond_26e
    invoke-virtual/range {v18 .. v18}, Landroid/graphics/PathMeasure;->isClosed()Z

    move-result v1

    if-eqz v1, :cond_2ee

    sget-object v1, Lcom/horcrux/svg/TextProperties$TextAnchor;->start:Lcom/horcrux/svg/TextProperties$TextAnchor;

    sget-object v4, Lcom/horcrux/svg/TextProperties$Direction;->ltr:Lcom/horcrux/svg/TextProperties$Direction;

    aget-object v9, v11, v8

    iget-wide v9, v9, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    sget-object v9, Lcom/horcrux/svg/TextLayoutAlgorithm$1;->$SwitchMap$com$horcrux$svg$TextProperties$TextAnchor:[I

    invoke-virtual {v1}, Ljava/lang/Enum;->ordinal()I

    move-result v1

    aget v1, v9, v1

    const/4 v9, 0x1

    if-eq v1, v9, :cond_2cb

    const/4 v9, 0x2

    if-eq v1, v9, :cond_2b2

    const/4 v9, 0x3

    if-eq v1, v9, :cond_28e

    goto :goto_2ee

    :cond_28e
    sget-object v1, Lcom/horcrux/svg/TextProperties$Direction;->ltr:Lcom/horcrux/svg/TextProperties$Direction;

    if-ne v4, v1, :cond_2a4

    invoke-static {v13, v14}, Ljava/lang/Double;->isNaN(D)Z

    neg-double v9, v13

    cmpg-double v1, v6, v9

    if-ltz v1, :cond_29e

    cmpl-double v1, v6, v2

    if-lez v1, :cond_2ee

    :cond_29e
    aget-object v1, v11, v5

    const/4 v4, 0x1

    iput-boolean v4, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->hidden:Z

    goto :goto_2ee

    :cond_2a4
    const/4 v4, 0x1

    cmpg-double v1, v6, v2

    if-ltz v1, :cond_2ad

    cmpl-double v1, v6, v13

    if-lez v1, :cond_2ee

    :cond_2ad
    aget-object v1, v11, v5

    iput-boolean v4, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->hidden:Z

    goto :goto_2ee

    :cond_2b2
    invoke-static {v13, v14}, Ljava/lang/Double;->isNaN(D)Z

    neg-double v1, v13

    div-double v1, v1, v22

    cmpg-double v3, v6, v1

    if-ltz v3, :cond_2c5

    invoke-static {v13, v14}, Ljava/lang/Double;->isNaN(D)Z

    div-double v1, v13, v22

    cmpl-double v3, v6, v1

    if-lez v3, :cond_2ee

    :cond_2c5
    aget-object v1, v11, v5

    const/4 v2, 0x1

    iput-boolean v2, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->hidden:Z

    goto :goto_2ee

    :cond_2cb
    sget-object v1, Lcom/horcrux/svg/TextProperties$Direction;->ltr:Lcom/horcrux/svg/TextProperties$Direction;

    if-ne v4, v1, :cond_2dd

    cmpg-double v1, v6, v2

    if-ltz v1, :cond_2d7

    cmpl-double v1, v6, v13

    if-lez v1, :cond_2ee

    :cond_2d7
    aget-object v1, v11, v5

    const/4 v2, 0x1

    iput-boolean v2, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->hidden:Z

    goto :goto_2ee

    :cond_2dd
    invoke-static {v13, v14}, Ljava/lang/Double;->isNaN(D)Z

    neg-double v9, v13

    cmpg-double v1, v6, v9

    if-ltz v1, :cond_2e9

    cmpl-double v1, v6, v2

    if-lez v1, :cond_2ee

    :cond_2e9
    aget-object v1, v11, v5

    const/4 v2, 0x1

    iput-boolean v2, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->hidden:Z

    :cond_2ee
    :goto_2ee
    invoke-static {v13, v14}, Ljava/lang/Double;->isNaN(D)Z

    rem-double/2addr v6, v13

    aget-object v1, v11, v5

    iget-boolean v1, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->hidden:Z

    if-nez v1, :cond_32a

    const/4 v1, 0x2

    new-array v2, v1, [F

    new-array v3, v1, [F

    double-to-float v1, v6

    move-object/from16 v4, v18

    invoke-virtual {v4, v1, v2, v3}, Landroid/graphics/PathMeasure;->getPosTan(F[F[F)Z

    const/4 v1, 0x1

    aget v2, v3, v1

    float-to-double v1, v2

    const/4 v6, 0x0

    aget v3, v3, v6

    float-to-double v6, v3

    invoke-static {v1, v2, v6, v7}, Ljava/lang/Math;->atan2(DD)D

    move-result-wide v1

    const-wide v6, 0x404ca5dc1a63c1f8L    # 57.29577951308232

    mul-double v1, v1, v6

    const-wide v6, 0x4056800000000000L    # 90.0

    add-double/2addr v6, v1

    invoke-static {v6, v7}, Ljava/lang/Math;->cos(D)D

    invoke-static {v6, v7}, Ljava/lang/Math;->sin(D)D

    aget-object v3, v11, v5

    iget-wide v6, v3, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->rotate:D

    add-double/2addr v6, v1

    iput-wide v6, v3, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->rotate:D

    goto :goto_350

    :cond_32a
    move-object/from16 v4, v18

    goto :goto_350

    :cond_32d
    move/from16 v17, v4

    move-object/from16 v19, v6

    move-object/from16 v24, v9

    move/from16 v25, v10

    move-object v4, v2

    aget-object v1, v11, v5

    add-int/lit8 v2, v5, -0x1

    aget-object v3, v11, v2

    iget-wide v6, v3, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    iput-wide v6, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    aget-object v1, v11, v5

    aget-object v3, v11, v2

    iget-wide v6, v3, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    iput-wide v6, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    aget-object v1, v11, v5

    aget-object v2, v11, v2

    iget-wide v2, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->rotate:D

    iput-wide v2, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->rotate:D

    :goto_350
    move-object/from16 v6, v19

    const/4 v15, 0x1

    goto :goto_35b

    :cond_354
    move/from16 v17, v4

    move-object/from16 v24, v9

    move/from16 v25, v10

    move-object v4, v2

    :goto_35b
    if-nez v12, :cond_3b1

    aget-object v1, v11, v5

    iget-boolean v1, v1, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->addressable:Z

    if-eqz v1, :cond_3b1

    if-eqz v15, :cond_380

    const/4 v13, 0x0

    invoke-virtual {v4, v6, v13}, Landroid/graphics/PathMeasure;->setPath(Landroid/graphics/Path;Z)V

    const/4 v1, 0x2

    new-array v2, v1, [F

    invoke-virtual {v4}, Landroid/graphics/PathMeasure;->getLength()F

    move-result v3

    const/4 v7, 0x0

    invoke-virtual {v4, v3, v2, v7}, Landroid/graphics/PathMeasure;->getPosTan(F[F[F)Z

    aget v3, v2, v13

    const/4 v9, 0x1

    aget v2, v2, v9

    invoke-virtual {v0, v3, v2}, Landroid/graphics/PointF;->set(FF)V

    const/4 v15, 0x0

    const/16 v17, 0x1

    goto :goto_384

    :cond_380
    const/4 v1, 0x2

    const/4 v7, 0x0

    const/4 v9, 0x1

    const/4 v13, 0x0

    :goto_384
    if-eqz v17, :cond_3ae

    aget-object v2, v11, v5

    iget-boolean v2, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->anchoredChunk:Z

    if-eqz v2, :cond_391

    move/from16 p1, v8

    const/16 v17, 0x0

    goto :goto_3b5

    :cond_391
    aget-object v2, v11, v5

    move/from16 p1, v8

    iget-wide v7, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    iget v3, v0, Landroid/graphics/PointF;->x:F

    float-to-double v9, v3

    invoke-static {v9, v10}, Ljava/lang/Double;->isNaN(D)Z

    add-double/2addr v7, v9

    iput-wide v7, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->x:D

    aget-object v2, v11, v5

    iget-wide v7, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    iget v3, v0, Landroid/graphics/PointF;->y:F

    float-to-double v9, v3

    invoke-static {v9, v10}, Ljava/lang/Double;->isNaN(D)Z

    add-double/2addr v7, v9

    iput-wide v7, v2, Lcom/horcrux/svg/TextLayoutAlgorithm$CharacterInformation;->y:D

    goto :goto_3b5

    :cond_3ae
    move/from16 p1, v8

    goto :goto_3b5

    :cond_3b1
    move/from16 p1, v8

    const/4 v1, 0x2

    const/4 v13, 0x0

    :goto_3b5
    add-int/lit8 v5, v5, 0x1

    move-object/from16 v7, p0

    move/from16 v8, p1

    move-object v2, v4

    move/from16 v4, v17

    move-object/from16 v9, v24

    move/from16 v10, v25

    const/4 v3, 0x0

    goto/16 :goto_20d

    :cond_3c5
    return-object v11
.end method