PathParser.smali
.class public Lcom/horcrux/svg/PathParser;
.super Ljava/lang/Object;
.source "PathParser.java"
# static fields
.field public static elements:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"Lcom/horcrux/svg/PathElement;",
">;"
}
.end annotation
.end field
.field public static i:I
.field public static l:I
.field public static mPath:Landroid/graphics/Path;
.field public static mPenDown:Z
.field public static mPenDownX:F
.field public static mPenDownY:F
.field public static mPenX:F
.field public static mPenY:F
.field public static mPivotX:F
.field public static mPivotY:F
.field public static mScale:F
.field public static s:Ljava/lang/String;
# 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 public static arc(FFFZZFF)V
.registers 15
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
add-float v6, p5, v0
sget p5, Lcom/horcrux/svg/PathParser;->mPenY:F
add-float v7, p6, p5
move v1, p0
move v2, p1
move v3, p2
move v4, p3
move v5, p4
invoke-static/range {v1 .. v7}, Lcom/horcrux/svg/PathParser;->arcTo(FFFZZFF)V
return-void
.end method
.method public static arcTo(FFFZZFF)V
.registers 29
move/from16 v0, p3
move/from16 v6, p4
sget v1, Lcom/horcrux/svg/PathParser;->mPenX:F
sget v2, Lcom/horcrux/svg/PathParser;->mPenY:F
const/4 v3, 0x0
cmpl-float v4, p1, v3
if-nez v4, :cond_17
cmpl-float v4, p0, v3
if-nez v4, :cond_14
sub-float v4, p6, v2
goto :goto_19
:cond_14
move/from16 v4, p0
goto :goto_19
:cond_17
move/from16 v4, p1
:goto_19
invoke-static {v4}, Ljava/lang/Math;->abs(F)F
move-result v4
cmpl-float v5, p0, v3
if-nez v5, :cond_24
sub-float v5, p5, v1
goto :goto_26
:cond_24
move/from16 v5, p0
:goto_26
invoke-static {v5}, Ljava/lang/Math;->abs(F)F
move-result v5
cmpl-float v7, v5, v3
if-eqz v7, :cond_183
cmpl-float v7, v4, v3
if-eqz v7, :cond_183
cmpl-float v7, p5, v1
if-nez v7, :cond_3c
cmpl-float v7, p6, v2
if-nez v7, :cond_3c
goto/16 :goto_183
:cond_3c
move/from16 v7, p2
float-to-double v7, v7
invoke-static {v7, v8}, Ljava/lang/Math;->toRadians(D)D
move-result-wide v7
double-to-float v7, v7
float-to-double v8, v7
invoke-static {v8, v9}, Ljava/lang/Math;->cos(D)D
move-result-wide v10
double-to-float v10, v10
invoke-static {v8, v9}, Ljava/lang/Math;->sin(D)D
move-result-wide v8
double-to-float v8, v8
sub-float v9, p5, v1
sub-float v11, p6, v2
mul-float v12, v10, v9
const/high16 v13, 0x40000000 # 2.0f
div-float/2addr v12, v13
mul-float v14, v8, v11
div-float/2addr v14, v13
add-float/2addr v12, v14
neg-float v14, v8
mul-float v15, v14, v9
div-float/2addr v15, v13
mul-float v16, v10, v11
div-float v16, v16, v13
add-float v15, v15, v16
mul-float v16, v5, v5
mul-float v17, v16, v4
mul-float v17, v17, v4
mul-float v18, v4, v4
mul-float v18, v18, v12
mul-float v18, v18, v12
mul-float v16, v16, v15
mul-float v16, v16, v15
sub-float v19, v17, v16
sub-float v19, v19, v18
cmpg-float v20, v19, v3
if-gez v20, :cond_97
const/high16 v12, 0x3f800000 # 1.0f
div-float v19, v19, v17
sub-float v12, v12, v19
move/from16 v17, v14
float-to-double v13, v12
invoke-static {v13, v14}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v12
double-to-float v12, v12
mul-float v5, v5, v12
mul-float v4, v4, v12
const/high16 v12, 0x40000000 # 2.0f
div-float v13, v9, v12
div-float v12, v11, v12
goto :goto_c9
:cond_97
move/from16 v17, v14
add-float v16, v16, v18
div-float v13, v19, v16
float-to-double v13, v13
invoke-static {v13, v14}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v13
double-to-float v13, v13
if-ne v0, v6, :cond_a6
neg-float v13, v13
:cond_a6
neg-float v14, v13
mul-float v14, v14, v15
mul-float v14, v14, v5
div-float/2addr v14, v4
mul-float v13, v13, v12
mul-float v13, v13, v4
div-float/2addr v13, v5
mul-float v12, v10, v14
mul-float v15, v8, v13
sub-float/2addr v12, v15
const/high16 v15, 0x40000000 # 2.0f
div-float v16, v9, v15
add-float v12, v12, v16
mul-float v14, v14, v8
mul-float v13, v13, v10
add-float/2addr v14, v13
div-float v13, v11, v15
add-float/2addr v13, v14
move/from16 v21, v13
move v13, v12
move/from16 v12, v21
:goto_c9
div-float v14, v10, v5
div-float/2addr v8, v5
div-float v15, v17, v4
div-float/2addr v10, v4
neg-float v3, v13
mul-float v17, v15, v3
neg-float v6, v12
mul-float v18, v10, v6
add-float v0, v17, v18
move/from16 p1, v4
move/from16 p0, v5
float-to-double v4, v0
mul-float v3, v3, v14
mul-float v6, v6, v8
add-float/2addr v3, v6
move/from16 v17, v7
float-to-double v6, v3
invoke-static {v4, v5, v6, v7}, Ljava/lang/Math;->atan2(DD)D
move-result-wide v3
double-to-float v4, v3
sub-float v0, v9, v13
mul-float v15, v15, v0
sub-float v3, v11, v12
mul-float v10, v10, v3
add-float/2addr v15, v10
float-to-double v5, v15
mul-float v14, v14, v0
mul-float v8, v8, v3
add-float/2addr v14, v8
float-to-double v7, v14
invoke-static {v5, v6, v7, v8}, Ljava/lang/Math;->atan2(DD)D
move-result-wide v5
double-to-float v5, v5
add-float v0, v13, v1
add-float v3, v12, v2
add-float/2addr v9, v1
add-float/2addr v11, v2
invoke-static {}, Lcom/horcrux/svg/PathParser;->setPenDown()V
sput v9, Lcom/horcrux/svg/PathParser;->mPivotX:F
sput v9, Lcom/horcrux/svg/PathParser;->mPenX:F
sput v11, Lcom/horcrux/svg/PathParser;->mPivotY:F
sput v11, Lcom/horcrux/svg/PathParser;->mPenY:F
cmpl-float v1, p0, p1
if-nez v1, :cond_176
const/4 v1, 0x0
cmpl-float v1, v17, v1
if-eqz v1, :cond_119
goto :goto_176
:cond_119
float-to-double v1, v4
invoke-static {v1, v2}, Ljava/lang/Math;->toDegrees(D)D
move-result-wide v1
double-to-float v1, v1
float-to-double v4, v5
invoke-static {v4, v5}, Ljava/lang/Math;->toDegrees(D)D
move-result-wide v4
double-to-float v2, v4
sub-float v2, v1, v2
const/high16 v4, 0x43b40000 # 360.0f
rem-float/2addr v2, v4
invoke-static {v2}, Ljava/lang/Math;->abs(F)F
move-result v2
const/high16 v5, 0x43340000 # 180.0f
if-eqz p3, :cond_137
cmpg-float v5, v2, v5
if-gez v5, :cond_13d
goto :goto_13b
:cond_137
cmpl-float v5, v2, v5
if-lez v5, :cond_13d
:goto_13b
sub-float v2, v4, v2
:cond_13d
if-nez p4, :cond_140
neg-float v2, v2
:cond_140
new-instance v4, Landroid/graphics/RectF;
sub-float v5, v0, p0
sget v6, Lcom/horcrux/svg/PathParser;->mScale:F
mul-float v5, v5, v6
sub-float v7, v3, p0
mul-float v7, v7, v6
add-float v0, v0, p0
mul-float v0, v0, v6
add-float v3, v3, p0
mul-float v3, v3, v6
invoke-direct {v4, v5, v7, v0, v3}, Landroid/graphics/RectF;-><init>(FFFF)V
sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;
invoke-virtual {v0, v4, v1, v2}, Landroid/graphics/Path;->arcTo(Landroid/graphics/RectF;FF)V
sget-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;
new-instance v1, Lcom/horcrux/svg/PathElement;
sget-object v2, Lcom/horcrux/svg/ElementType;->kCGPathElementAddCurveToPoint:Lcom/horcrux/svg/ElementType;
const/4 v3, 0x1
new-array v3, v3, [Lcom/horcrux/svg/Point;
const/4 v4, 0x0
new-instance v5, Lcom/horcrux/svg/Point;
float-to-double v6, v9
float-to-double v8, v11
invoke-direct {v5, v6, v7, v8, v9}, Lcom/horcrux/svg/Point;-><init>(DD)V
aput-object v5, v3, v4
invoke-direct {v1, v2, v3}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_182
:cond_176
:goto_176
move v1, v3
move/from16 v2, p0
move/from16 v3, p1
move/from16 v6, p4
move/from16 v7, v17
invoke-static/range {v0 .. v7}, Lcom/horcrux/svg/PathParser;->arcToBezier(FFFFFFZF)V
:goto_182
return-void
:cond_183
:goto_183
invoke-static/range {p5 .. p6}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V
return-void
.end method
.method public static arcToBezier(FFFFFFZF)V
.registers 32
move/from16 v0, p4
move/from16 v1, p7
float-to-double v1, v1
invoke-static {v1, v2}, Ljava/lang/Math;->cos(D)D
move-result-wide v3
double-to-float v3, v3
invoke-static {v1, v2}, Ljava/lang/Math;->sin(D)D
move-result-wide v1
double-to-float v1, v1
mul-float v2, v3, p2
neg-float v4, v1
mul-float v4, v4, p3
mul-float v1, v1, p2
mul-float v3, v3, p3
sub-float v5, p5, v0
const-wide v6, 0x401921fb54442d18L # 6.283185307179586
const/4 v8, 0x0
cmpg-float v9, v5, v8
if-gez v9, :cond_2d
if-eqz p6, :cond_2d
float-to-double v8, v5
invoke-static {v8, v9}, Ljava/lang/Double;->isNaN(D)Z
add-double/2addr v8, v6
:goto_2b
double-to-float v5, v8
goto :goto_39
:cond_2d
cmpl-float v8, v5, v8
if-lez v8, :cond_39
if-nez p6, :cond_39
float-to-double v8, v5
invoke-static {v8, v9}, Ljava/lang/Double;->isNaN(D)Z
sub-double/2addr v8, v6
goto :goto_2b
:cond_39
:goto_39
float-to-double v6, v5
const-wide v8, 0x3ff921fb54442d18L # 1.5707963267948966
invoke-static {v6, v7}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v6, v8
invoke-static {v6, v7}, Lcom/horcrux/svg/PathParser;->round(D)D
move-result-wide v6
invoke-static {v6, v7}, Ljava/lang/Math;->abs(D)D
move-result-wide v6
invoke-static {v6, v7}, Ljava/lang/Math;->ceil(D)D
move-result-wide v6
double-to-int v6, v6
int-to-float v7, v6
div-float/2addr v5, v7
const-wide v7, 0x3ff5555555555555L # 1.3333333333333333
const/high16 v9, 0x40800000 # 4.0f
div-float v9, v5, v9
float-to-double v9, v9
invoke-static {v9, v10}, Ljava/lang/Math;->tan(D)D
move-result-wide v9
mul-double v9, v9, v7
double-to-float v7, v9
float-to-double v8, v0
invoke-static {v8, v9}, Ljava/lang/Math;->cos(D)D
move-result-wide v10
double-to-float v10, v10
invoke-static {v8, v9}, Ljava/lang/Math;->sin(D)D
move-result-wide v8
double-to-float v8, v8
const/4 v11, 0x0
:goto_6f
if-ge v11, v6, :cond_12f
mul-float v12, v7, v8
sub-float v12, v10, v12
mul-float v10, v10, v7
add-float/2addr v8, v10
add-float/2addr v0, v5
float-to-double v13, v0
invoke-static {v13, v14}, Ljava/lang/Math;->cos(D)D
move-result-wide v9
double-to-float v10, v9
invoke-static {v13, v14}, Ljava/lang/Math;->sin(D)D
move-result-wide v13
double-to-float v9, v13
mul-float v13, v7, v9
add-float/2addr v13, v10
mul-float v14, v7, v10
sub-float v14, v9, v14
mul-float v15, v2, v12
add-float v15, p0, v15
mul-float v16, v4, v8
add-float v15, v15, v16
mul-float v12, v12, v1
add-float v12, p1, v12
mul-float v8, v8, v3
add-float/2addr v12, v8
mul-float v8, v2, v13
add-float v8, p0, v8
mul-float v16, v4, v14
add-float v8, v8, v16
mul-float v13, v13, v1
add-float v13, p1, v13
mul-float v14, v14, v3
add-float/2addr v13, v14
mul-float v14, v2, v10
add-float v14, p0, v14
mul-float v16, v4, v9
add-float v14, v14, v16
mul-float v16, v1, v10
add-float v16, p1, v16
mul-float v17, v3, v9
move/from16 p3, v0
add-float v0, v16, v17
sget-object v16, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;
sget v17, Lcom/horcrux/svg/PathParser;->mScale:F
mul-float v18, v15, v17
mul-float v19, v12, v17
mul-float v20, v8, v17
mul-float v21, v13, v17
mul-float v22, v14, v17
mul-float v23, v0, v17
move/from16 v17, v18
move/from16 v18, v19
move/from16 v19, v20
move/from16 v20, v21
move/from16 v21, v22
move/from16 v22, v23
invoke-virtual/range {v16 .. v22}, Landroid/graphics/Path;->cubicTo(FFFFFF)V
move/from16 p7, v1
sget-object v1, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;
move/from16 v16, v2
new-instance v2, Lcom/horcrux/svg/PathElement;
move/from16 v17, v3
sget-object v3, Lcom/horcrux/svg/ElementType;->kCGPathElementAddCurveToPoint:Lcom/horcrux/svg/ElementType;
move/from16 v18, v4
const/4 v4, 0x3
new-array v4, v4, [Lcom/horcrux/svg/Point;
move/from16 p5, v5
new-instance v5, Lcom/horcrux/svg/Point;
move/from16 v19, v6
move/from16 v20, v7
float-to-double v6, v15
move/from16 v21, v9
move v15, v10
float-to-double v9, v12
invoke-direct {v5, v6, v7, v9, v10}, Lcom/horcrux/svg/Point;-><init>(DD)V
const/4 v6, 0x0
aput-object v5, v4, v6
new-instance v5, Lcom/horcrux/svg/Point;
float-to-double v7, v8
float-to-double v9, v13
invoke-direct {v5, v7, v8, v9, v10}, Lcom/horcrux/svg/Point;-><init>(DD)V
const/4 v7, 0x1
aput-object v5, v4, v7
const/4 v5, 0x2
new-instance v7, Lcom/horcrux/svg/Point;
float-to-double v8, v14
float-to-double v12, v0
invoke-direct {v7, v8, v9, v12, v13}, Lcom/horcrux/svg/Point;-><init>(DD)V
aput-object v7, v4, v5
invoke-direct {v2, v3, v4}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V
invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
add-int/lit8 v11, v11, 0x1
move/from16 v0, p3
move/from16 v5, p5
move/from16 v1, p7
move v10, v15
move/from16 v2, v16
move/from16 v3, v17
move/from16 v4, v18
move/from16 v6, v19
move/from16 v7, v20
move/from16 v8, v21
goto/16 :goto_6f
:cond_12f
return-void
.end method
.method public static close()V
.registers 10
sget-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z
if-eqz v0, :cond_30
sget v0, Lcom/horcrux/svg/PathParser;->mPenDownX:F
sput v0, Lcom/horcrux/svg/PathParser;->mPenX:F
sget v0, Lcom/horcrux/svg/PathParser;->mPenDownY:F
sput v0, Lcom/horcrux/svg/PathParser;->mPenY:F
const/4 v0, 0x0
sput-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z
sget-object v1, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;
invoke-virtual {v1}, Landroid/graphics/Path;->close()V
sget-object v1, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;
new-instance v2, Lcom/horcrux/svg/PathElement;
sget-object v3, Lcom/horcrux/svg/ElementType;->kCGPathElementCloseSubpath:Lcom/horcrux/svg/ElementType;
const/4 v4, 0x1
new-array v4, v4, [Lcom/horcrux/svg/Point;
new-instance v5, Lcom/horcrux/svg/Point;
sget v6, Lcom/horcrux/svg/PathParser;->mPenX:F
float-to-double v6, v6
sget v8, Lcom/horcrux/svg/PathParser;->mPenY:F
float-to-double v8, v8
invoke-direct {v5, v6, v7, v8, v9}, Lcom/horcrux/svg/Point;-><init>(DD)V
aput-object v5, v4, v0
invoke-direct {v2, v3, v4}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V
invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:cond_30
return-void
.end method
.method public static cubicTo(FFFFFF)V
.registers 14
invoke-static {}, Lcom/horcrux/svg/PathParser;->setPenDown()V
sput p4, Lcom/horcrux/svg/PathParser;->mPenX:F
sput p5, Lcom/horcrux/svg/PathParser;->mPenY:F
sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;
sget v1, Lcom/horcrux/svg/PathParser;->mScale:F
mul-float v2, p0, v1
mul-float v3, p1, v1
mul-float v4, p2, v1
mul-float v5, p3, v1
mul-float v6, p4, v1
mul-float v7, p5, v1
move v1, v2
move v2, v3
move v3, v4
move v4, v5
move v5, v6
move v6, v7
invoke-virtual/range {v0 .. v6}, Landroid/graphics/Path;->cubicTo(FFFFFF)V
sget-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;
new-instance v1, Lcom/horcrux/svg/PathElement;
sget-object v2, Lcom/horcrux/svg/ElementType;->kCGPathElementAddCurveToPoint:Lcom/horcrux/svg/ElementType;
const/4 v3, 0x3
new-array v3, v3, [Lcom/horcrux/svg/Point;
new-instance v4, Lcom/horcrux/svg/Point;
float-to-double v5, p0
float-to-double p0, p1
invoke-direct {v4, v5, v6, p0, p1}, Lcom/horcrux/svg/Point;-><init>(DD)V
const/4 p0, 0x0
aput-object v4, v3, p0
new-instance p0, Lcom/horcrux/svg/Point;
float-to-double p1, p2
float-to-double v4, p3
invoke-direct {p0, p1, p2, v4, v5}, Lcom/horcrux/svg/Point;-><init>(DD)V
const/4 p1, 0x1
aput-object p0, v3, p1
new-instance p0, Lcom/horcrux/svg/Point;
float-to-double p1, p4
float-to-double p3, p5
invoke-direct {p0, p1, p2, p3, p4}, Lcom/horcrux/svg/Point;-><init>(DD)V
const/4 p1, 0x2
aput-object p0, v3, p1
invoke-direct {v1, v2, v3}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
return-void
.end method
.method public static curve(FFFFFF)V
.registers 8
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
add-float/2addr p0, v0
sget v1, Lcom/horcrux/svg/PathParser;->mPenY:F
add-float/2addr p1, v1
add-float/2addr p2, v0
add-float/2addr p3, v1
add-float/2addr p4, v0
add-float/2addr p5, v1
invoke-static/range {p0 .. p5}, Lcom/horcrux/svg/PathParser;->curveTo(FFFFFF)V
return-void
.end method
.method public static curveTo(FFFFFF)V
.registers 6
sput p2, Lcom/horcrux/svg/PathParser;->mPivotX:F
sput p3, Lcom/horcrux/svg/PathParser;->mPivotY:F
invoke-static/range {p0 .. p5}, Lcom/horcrux/svg/PathParser;->cubicTo(FFFFFF)V
return-void
.end method
.method public static is_absolute(C)Z
.registers 1
invoke-static {p0}, Ljava/lang/Character;->isUpperCase(C)Z
move-result p0
return p0
.end method
.method public static is_cmd(C)Z
.registers 1
sparse-switch p0, :sswitch_data_8
const/4 p0, 0x0
return p0
:sswitch_5
const/4 p0, 0x1
return p0
nop
:sswitch_data_8
.sparse-switch
0x41 -> :sswitch_5
0x43 -> :sswitch_5
0x48 -> :sswitch_5
0x4c -> :sswitch_5
0x4d -> :sswitch_5
0x51 -> :sswitch_5
0x53 -> :sswitch_5
0x54 -> :sswitch_5
0x56 -> :sswitch_5
0x5a -> :sswitch_5
0x61 -> :sswitch_5
0x63 -> :sswitch_5
0x68 -> :sswitch_5
0x6c -> :sswitch_5
0x6d -> :sswitch_5
0x71 -> :sswitch_5
0x73 -> :sswitch_5
0x74 -> :sswitch_5
0x76 -> :sswitch_5
0x7a -> :sswitch_5
.end sparse-switch
.end method
.method public static is_number_start(C)Z
.registers 2
const/16 v0, 0x30
if-lt p0, v0, :cond_8
const/16 v0, 0x39
if-le p0, v0, :cond_17
:cond_8
const/16 v0, 0x2e
if-eq p0, v0, :cond_17
const/16 v0, 0x2d
if-eq p0, v0, :cond_17
const/16 v0, 0x2b
if-ne p0, v0, :cond_15
goto :goto_17
:cond_15
const/4 p0, 0x0
goto :goto_18
:cond_17
:goto_17
const/4 p0, 0x1
:goto_18
return p0
.end method
.method public static line(FF)V
.registers 3
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
add-float/2addr p0, v0
sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F
add-float/2addr p1, v0
invoke-static {p0, p1}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V
return-void
.end method
.method public static lineTo(FF)V
.registers 9
invoke-static {}, Lcom/horcrux/svg/PathParser;->setPenDown()V
sput p0, Lcom/horcrux/svg/PathParser;->mPenX:F
sput p0, Lcom/horcrux/svg/PathParser;->mPivotX:F
sput p1, Lcom/horcrux/svg/PathParser;->mPenY:F
sput p1, Lcom/horcrux/svg/PathParser;->mPivotY:F
sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;
sget v1, Lcom/horcrux/svg/PathParser;->mScale:F
mul-float v2, p0, v1
mul-float v1, v1, p1
invoke-virtual {v0, v2, v1}, Landroid/graphics/Path;->lineTo(FF)V
sget-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;
new-instance v1, Lcom/horcrux/svg/PathElement;
sget-object v2, Lcom/horcrux/svg/ElementType;->kCGPathElementAddLineToPoint:Lcom/horcrux/svg/ElementType;
const/4 v3, 0x1
new-array v3, v3, [Lcom/horcrux/svg/Point;
new-instance v4, Lcom/horcrux/svg/Point;
float-to-double v5, p0
float-to-double p0, p1
invoke-direct {v4, v5, v6, p0, p1}, Lcom/horcrux/svg/Point;-><init>(DD)V
const/4 p0, 0x0
aput-object v4, v3, p0
invoke-direct {v1, v2, v3}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
return-void
.end method
.method public static move(FF)V
.registers 3
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
add-float/2addr p0, v0
sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F
add-float/2addr p1, v0
invoke-static {p0, p1}, Lcom/horcrux/svg/PathParser;->moveTo(FF)V
return-void
.end method
.method public static moveTo(FF)V
.registers 9
sput p0, Lcom/horcrux/svg/PathParser;->mPenX:F
sput p0, Lcom/horcrux/svg/PathParser;->mPivotX:F
sput p0, Lcom/horcrux/svg/PathParser;->mPenDownX:F
sput p1, Lcom/horcrux/svg/PathParser;->mPenY:F
sput p1, Lcom/horcrux/svg/PathParser;->mPivotY:F
sput p1, Lcom/horcrux/svg/PathParser;->mPenDownY:F
sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;
sget v1, Lcom/horcrux/svg/PathParser;->mScale:F
mul-float v2, p0, v1
mul-float v1, v1, p1
invoke-virtual {v0, v2, v1}, Landroid/graphics/Path;->moveTo(FF)V
sget-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;
new-instance v1, Lcom/horcrux/svg/PathElement;
sget-object v2, Lcom/horcrux/svg/ElementType;->kCGPathElementMoveToPoint:Lcom/horcrux/svg/ElementType;
const/4 v3, 0x1
new-array v3, v3, [Lcom/horcrux/svg/Point;
new-instance v4, Lcom/horcrux/svg/Point;
float-to-double v5, p0
float-to-double p0, p1
invoke-direct {v4, v5, v6, p0, p1}, Lcom/horcrux/svg/Point;-><init>(DD)V
const/4 p0, 0x0
aput-object v4, v3, p0
invoke-direct {v1, v2, v3}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
return-void
.end method
.method public static parse(Ljava/lang/String;)Landroid/graphics/Path;
.registers 24
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
sput-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;
new-instance v0, Landroid/graphics/Path;
invoke-direct {v0}, Landroid/graphics/Path;-><init>()V
sput-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;
invoke-virtual/range {p0 .. p0}, Ljava/lang/String;->length()I
move-result v0
sput v0, Lcom/horcrux/svg/PathParser;->l:I
sput-object p0, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
const/4 v0, 0x0
sput v0, Lcom/horcrux/svg/PathParser;->i:I
const/4 v1, 0x0
sput v1, Lcom/horcrux/svg/PathParser;->mPenX:F
sput v1, Lcom/horcrux/svg/PathParser;->mPenY:F
sput v1, Lcom/horcrux/svg/PathParser;->mPivotX:F
sput v1, Lcom/horcrux/svg/PathParser;->mPivotY:F
sput v1, Lcom/horcrux/svg/PathParser;->mPenDownX:F
sput v1, Lcom/horcrux/svg/PathParser;->mPenDownY:F
sput-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z
const/16 v2, 0x20
const/16 v3, 0x20
:cond_2c
:goto_2c
sget v4, Lcom/horcrux/svg/PathParser;->i:I
sget v5, Lcom/horcrux/svg/PathParser;->l:I
if-ge v4, v5, :cond_1f3
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V
sget v4, Lcom/horcrux/svg/PathParser;->i:I
sget v5, Lcom/horcrux/svg/PathParser;->l:I
if-lt v4, v5, :cond_3d
goto/16 :goto_1f3
:cond_3d
const/4 v4, 0x1
if-eq v3, v2, :cond_42
const/4 v5, 0x1
goto :goto_43
:cond_42
const/4 v5, 0x0
:goto_43
sget-object v6, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
sget v7, Lcom/horcrux/svg/PathParser;->i:I
invoke-virtual {v6, v7}, Ljava/lang/String;->charAt(I)C
move-result v6
const/16 v7, 0x6d
const/16 v8, 0x4d
const-string v9, "UnexpectedData"
if-nez v5, :cond_5e
if-eq v6, v8, :cond_5e
if-ne v6, v7, :cond_58
goto :goto_5e
:cond_58
new-instance v0, Ljava/lang/Error;
invoke-direct {v0, v9}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
:cond_5e
:goto_5e
invoke-static {v6}, Lcom/horcrux/svg/PathParser;->is_cmd(C)Z
move-result v10
if-eqz v10, :cond_6c
sget v3, Lcom/horcrux/svg/PathParser;->i:I
add-int/2addr v3, v4
sput v3, Lcom/horcrux/svg/PathParser;->i:I
move v3, v6
:cond_6a
const/4 v4, 0x0
goto :goto_8b
:cond_6c
invoke-static {v6}, Lcom/horcrux/svg/PathParser;->is_number_start(C)Z
move-result v6
if-eqz v6, :cond_1ed
if-eqz v5, :cond_1ed
const/16 v5, 0x5a
if-eq v3, v5, :cond_1e7
const/16 v5, 0x7a
if-eq v3, v5, :cond_1e7
if-eq v3, v8, :cond_80
if-ne v3, v7, :cond_6a
:cond_80
invoke-static {v3}, Lcom/horcrux/svg/PathParser;->is_absolute(C)Z
move-result v3
if-eqz v3, :cond_89
const/16 v3, 0x4c
goto :goto_8b
:cond_89
const/16 v3, 0x6c
:goto_8b
invoke-static {v3}, Lcom/horcrux/svg/PathParser;->is_absolute(C)Z
move-result v5
sparse-switch v3, :sswitch_data_1f6
new-instance v0, Ljava/lang/Error;
invoke-direct {v0, v9}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
:sswitch_98
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {v1, v6}, Lcom/horcrux/svg/PathParser;->line(FF)V
goto/16 :goto_1db
:sswitch_a1
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->smoothQuadraticBezierCurve(FF)V
goto/16 :goto_1db
:sswitch_ae
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v10
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v11
invoke-static {v6, v9, v10, v11}, Lcom/horcrux/svg/PathParser;->smoothCurve(FFFF)V
goto/16 :goto_1db
:sswitch_c3
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v10
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v11
invoke-static {v6, v9, v10, v11}, Lcom/horcrux/svg/PathParser;->quadraticBezierCurve(FFFF)V
goto/16 :goto_1db
:sswitch_d8
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->move(FF)V
goto/16 :goto_1db
:sswitch_e5
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->line(FF)V
goto/16 :goto_1db
:sswitch_f2
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {v6, v1}, Lcom/horcrux/svg/PathParser;->line(FF)V
goto/16 :goto_1db
:sswitch_fb
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v10
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v11
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v12
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v13
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v14
invoke-static/range {v9 .. v14}, Lcom/horcrux/svg/PathParser;->curve(FFFFFF)V
goto/16 :goto_1db
:sswitch_118
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v15
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v16
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v17
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_flag()Z
move-result v18
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_flag()Z
move-result v19
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v20
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v21
invoke-static/range {v15 .. v21}, Lcom/horcrux/svg/PathParser;->arc(FFFZZFF)V
goto/16 :goto_1db
:sswitch_139
invoke-static {}, Lcom/horcrux/svg/PathParser;->close()V
goto/16 :goto_1db
:sswitch_13e
sget v6, Lcom/horcrux/svg/PathParser;->mPenX:F
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V
goto/16 :goto_1db
:sswitch_149
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->smoothQuadraticBezierCurveTo(FF)V
goto/16 :goto_1db
:sswitch_156
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v10
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v11
invoke-static {v6, v9, v10, v11}, Lcom/horcrux/svg/PathParser;->smoothCurveTo(FFFF)V
goto :goto_1db
:sswitch_16a
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v10
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v11
invoke-static {v6, v9, v10, v11}, Lcom/horcrux/svg/PathParser;->quadraticBezierCurveTo(FFFF)V
goto :goto_1db
:sswitch_17e
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->moveTo(FF)V
goto :goto_1db
:sswitch_18a
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v9
invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V
goto :goto_1db
:sswitch_196
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v6
sget v9, Lcom/horcrux/svg/PathParser;->mPenY:F
invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V
goto :goto_1db
:sswitch_1a0
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v10
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v11
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v12
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v13
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v14
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v15
invoke-static/range {v10 .. v15}, Lcom/horcrux/svg/PathParser;->curveTo(FFFFFF)V
goto :goto_1db
:sswitch_1bc
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v16
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v17
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v18
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_flag()Z
move-result v19
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_flag()Z
move-result v20
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v21
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F
move-result v22
invoke-static/range {v16 .. v22}, Lcom/horcrux/svg/PathParser;->arcTo(FFFZZFF)V
:goto_1db
if-eqz v4, :cond_2c
if-eqz v5, :cond_1e3
const/16 v3, 0x4d
goto/16 :goto_2c
:cond_1e3
const/16 v3, 0x6d
goto/16 :goto_2c
:cond_1e7
new-instance v0, Ljava/lang/Error;
invoke-direct {v0, v9}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
:cond_1ed
new-instance v0, Ljava/lang/Error;
invoke-direct {v0, v9}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
:cond_1f3
:goto_1f3
sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;
return-object v0
:sswitch_data_1f6
.sparse-switch
0x41 -> :sswitch_1bc
0x43 -> :sswitch_1a0
0x48 -> :sswitch_196
0x4c -> :sswitch_18a
0x4d -> :sswitch_17e
0x51 -> :sswitch_16a
0x53 -> :sswitch_156
0x54 -> :sswitch_149
0x56 -> :sswitch_13e
0x5a -> :sswitch_139
0x61 -> :sswitch_118
0x63 -> :sswitch_fb
0x68 -> :sswitch_f2
0x6c -> :sswitch_e5
0x6d -> :sswitch_d8
0x71 -> :sswitch_c3
0x73 -> :sswitch_ae
0x74 -> :sswitch_a1
0x76 -> :sswitch_98
0x7a -> :sswitch_139
.end sparse-switch
.end method
.method public static parse_flag()Z
.registers 5
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V
sget-object v0, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
sget v1, Lcom/horcrux/svg/PathParser;->i:I
invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
move-result v0
const/16 v1, 0x30
const/16 v2, 0x31
if-eq v0, v1, :cond_1c
if-ne v0, v2, :cond_14
goto :goto_1c
:cond_14
new-instance v0, Ljava/lang/Error;
const-string v1, "UnexpectedData"
invoke-direct {v0, v1}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
:cond_1c
:goto_1c
sget v1, Lcom/horcrux/svg/PathParser;->i:I
const/4 v3, 0x1
add-int/2addr v1, v3
sput v1, Lcom/horcrux/svg/PathParser;->i:I
sget v4, Lcom/horcrux/svg/PathParser;->l:I
if-ge v1, v4, :cond_35
sget-object v4, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v4, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v4, 0x2c
if-ne v1, v4, :cond_35
sget v1, Lcom/horcrux/svg/PathParser;->i:I
add-int/2addr v1, v3
sput v1, Lcom/horcrux/svg/PathParser;->i:I
:cond_35
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V
if-ne v0, v2, :cond_3b
goto :goto_3c
:cond_3b
const/4 v3, 0x0
:goto_3c
return v3
.end method
.method public static parse_list_number()F
.registers 2
sget v0, Lcom/horcrux/svg/PathParser;->i:I
sget v1, Lcom/horcrux/svg/PathParser;->l:I
if-eq v0, v1, :cond_11
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_number()F
move-result v0
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V
invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_separator()V
return v0
:cond_11
new-instance v0, Ljava/lang/Error;
const-string v1, "UnexpectedEnd"
invoke-direct {v0, v1}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static parse_list_separator()V
.registers 2
sget v0, Lcom/horcrux/svg/PathParser;->i:I
sget v1, Lcom/horcrux/svg/PathParser;->l:I
if-ge v0, v1, :cond_16
sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v0
const/16 v1, 0x2c
if-ne v0, v1, :cond_16
sget v0, Lcom/horcrux/svg/PathParser;->i:I
add-int/lit8 v0, v0, 0x1
sput v0, Lcom/horcrux/svg/PathParser;->i:I
:cond_16
return-void
.end method
.method public static parse_number()F
.registers 10
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V
sget v0, Lcom/horcrux/svg/PathParser;->i:I
sget v1, Lcom/horcrux/svg/PathParser;->l:I
const-string v2, "InvalidNumber"
if-eq v0, v1, :cond_c5
sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v3, 0x2b
const/16 v4, 0x2d
if-eq v1, v4, :cond_19
if-ne v1, v3, :cond_25
:cond_19
sget v1, Lcom/horcrux/svg/PathParser;->i:I
add-int/lit8 v1, v1, 0x1
sput v1, Lcom/horcrux/svg/PathParser;->i:I
sget-object v5, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v5, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
:cond_25
const/16 v5, 0x39
const/16 v6, 0x2e
const/16 v7, 0x30
if-lt v1, v7, :cond_3f
if-gt v1, v5, :cond_3f
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_digits()V
sget v8, Lcom/horcrux/svg/PathParser;->i:I
sget v9, Lcom/horcrux/svg/PathParser;->l:I
if-ge v8, v9, :cond_41
sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v1, v8}, Ljava/lang/String;->charAt(I)C
move-result v1
goto :goto_41
:cond_3f
if-ne v1, v6, :cond_bf
:cond_41
:goto_41
if-ne v1, v6, :cond_58
sget v6, Lcom/horcrux/svg/PathParser;->i:I
add-int/lit8 v6, v6, 0x1
sput v6, Lcom/horcrux/svg/PathParser;->i:I
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_digits()V
sget v6, Lcom/horcrux/svg/PathParser;->i:I
sget v8, Lcom/horcrux/svg/PathParser;->l:I
if-ge v6, v8, :cond_58
sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v1, v6}, Ljava/lang/String;->charAt(I)C
move-result v1
:cond_58
const/16 v6, 0x65
if-eq v1, v6, :cond_60
const/16 v6, 0x45
if-ne v1, v6, :cond_a0
:cond_60
sget v1, Lcom/horcrux/svg/PathParser;->i:I
add-int/lit8 v6, v1, 0x1
sget v8, Lcom/horcrux/svg/PathParser;->l:I
if-ge v6, v8, :cond_a0
sget-object v6, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
add-int/lit8 v1, v1, 0x1
invoke-virtual {v6, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
const/16 v6, 0x6d
if-eq v1, v6, :cond_a0
const/16 v6, 0x78
if-eq v1, v6, :cond_a0
sget v1, Lcom/horcrux/svg/PathParser;->i:I
add-int/lit8 v1, v1, 0x1
sput v1, Lcom/horcrux/svg/PathParser;->i:I
sget-object v6, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v6, v1}, Ljava/lang/String;->charAt(I)C
move-result v1
if-eq v1, v3, :cond_97
if-ne v1, v4, :cond_89
goto :goto_97
:cond_89
if-lt v1, v7, :cond_91
if-gt v1, v5, :cond_91
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_digits()V
goto :goto_a0
:cond_91
new-instance v0, Ljava/lang/Error;
invoke-direct {v0, v2}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
:cond_97
:goto_97
sget v1, Lcom/horcrux/svg/PathParser;->i:I
add-int/lit8 v1, v1, 0x1
sput v1, Lcom/horcrux/svg/PathParser;->i:I
invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_digits()V
:cond_a0
:goto_a0
sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
sget v3, Lcom/horcrux/svg/PathParser;->i:I
invoke-virtual {v1, v0, v3}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F
move-result v0
invoke-static {v0}, Ljava/lang/Float;->isInfinite(F)Z
move-result v1
if-nez v1, :cond_b9
invoke-static {v0}, Ljava/lang/Float;->isNaN(F)Z
move-result v1
if-nez v1, :cond_b9
return v0
:cond_b9
new-instance v0, Ljava/lang/Error;
invoke-direct {v0, v2}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
:cond_bf
new-instance v0, Ljava/lang/Error;
invoke-direct {v0, v2}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
:cond_c5
new-instance v0, Ljava/lang/Error;
invoke-direct {v0, v2}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static quadraticBezierCurve(FFFF)V
.registers 6
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
add-float/2addr p0, v0
sget v1, Lcom/horcrux/svg/PathParser;->mPenY:F
add-float/2addr p1, v1
add-float/2addr p2, v0
add-float/2addr p3, v1
invoke-static {p0, p1, p2, p3}, Lcom/horcrux/svg/PathParser;->quadraticBezierCurveTo(FFFF)V
return-void
.end method
.method public static quadraticBezierCurveTo(FFFF)V
.registers 13
sput p0, Lcom/horcrux/svg/PathParser;->mPivotX:F
sput p1, Lcom/horcrux/svg/PathParser;->mPivotY:F
const/high16 v0, 0x40000000 # 2.0f
mul-float p0, p0, v0
add-float v1, p2, p0
const/high16 v2, 0x40400000 # 3.0f
div-float v5, v1, v2
mul-float p1, p1, v0
add-float v0, p3, p1
div-float v6, v0, v2
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
add-float/2addr v0, p0
div-float v3, v0, v2
sget p0, Lcom/horcrux/svg/PathParser;->mPenY:F
add-float/2addr p0, p1
div-float v4, p0, v2
move v7, p2
move v8, p3
invoke-static/range {v3 .. v8}, Lcom/horcrux/svg/PathParser;->cubicTo(FFFFFF)V
return-void
.end method
.method public static round(D)D
.registers 6
const-wide/high16 v0, 0x4024000000000000L # 10.0
const-wide/high16 v2, 0x4010000000000000L # 4.0
invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->pow(DD)D
move-result-wide v0
mul-double p0, p0, v0
invoke-static {p0, p1}, Ljava/lang/Math;->round(D)J
move-result-wide p0
long-to-double p0, p0
invoke-static {p0, p1}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr p0, v0
return-wide p0
.end method
.method public static setPenDown()V
.registers 1
sget-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z
if-nez v0, :cond_f
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
sput v0, Lcom/horcrux/svg/PathParser;->mPenDownX:F
sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F
sput v0, Lcom/horcrux/svg/PathParser;->mPenDownY:F
const/4 v0, 0x1
sput-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z
:cond_f
return-void
.end method
.method public static skip_digits()V
.registers 2
:goto_0
sget v0, Lcom/horcrux/svg/PathParser;->i:I
sget v1, Lcom/horcrux/svg/PathParser;->l:I
if-ge v0, v1, :cond_19
sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v0
invoke-static {v0}, Ljava/lang/Character;->isDigit(C)Z
move-result v0
if-eqz v0, :cond_19
sget v0, Lcom/horcrux/svg/PathParser;->i:I
add-int/lit8 v0, v0, 0x1
sput v0, Lcom/horcrux/svg/PathParser;->i:I
goto :goto_0
:cond_19
return-void
.end method
.method public static skip_spaces()V
.registers 2
:goto_0
sget v0, Lcom/horcrux/svg/PathParser;->i:I
sget v1, Lcom/horcrux/svg/PathParser;->l:I
if-ge v0, v1, :cond_19
sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;
invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C
move-result v0
invoke-static {v0}, Ljava/lang/Character;->isWhitespace(C)Z
move-result v0
if-eqz v0, :cond_19
sget v0, Lcom/horcrux/svg/PathParser;->i:I
add-int/lit8 v0, v0, 0x1
sput v0, Lcom/horcrux/svg/PathParser;->i:I
goto :goto_0
:cond_19
return-void
.end method
.method public static smoothCurve(FFFF)V
.registers 6
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
add-float/2addr p0, v0
sget v1, Lcom/horcrux/svg/PathParser;->mPenY:F
add-float/2addr p1, v1
add-float/2addr p2, v0
add-float/2addr p3, v1
invoke-static {p0, p1, p2, p3}, Lcom/horcrux/svg/PathParser;->smoothCurveTo(FFFF)V
return-void
.end method
.method public static smoothCurveTo(FFFF)V
.registers 13
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
const/high16 v1, 0x40000000 # 2.0f
mul-float v0, v0, v1
sget v2, Lcom/horcrux/svg/PathParser;->mPivotX:F
sub-float v3, v0, v2
sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F
mul-float v0, v0, v1
sget v1, Lcom/horcrux/svg/PathParser;->mPivotY:F
sub-float v4, v0, v1
sput p0, Lcom/horcrux/svg/PathParser;->mPivotX:F
sput p1, Lcom/horcrux/svg/PathParser;->mPivotY:F
move v5, p0
move v6, p1
move v7, p2
move v8, p3
invoke-static/range {v3 .. v8}, Lcom/horcrux/svg/PathParser;->cubicTo(FFFFFF)V
return-void
.end method
.method public static smoothQuadraticBezierCurve(FF)V
.registers 3
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
add-float/2addr p0, v0
sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F
add-float/2addr p1, v0
invoke-static {p0, p1}, Lcom/horcrux/svg/PathParser;->smoothQuadraticBezierCurveTo(FF)V
return-void
.end method
.method public static smoothQuadraticBezierCurveTo(FF)V
.registers 5
sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F
const/high16 v1, 0x40000000 # 2.0f
mul-float v0, v0, v1
sget v2, Lcom/horcrux/svg/PathParser;->mPivotX:F
sub-float/2addr v0, v2
sget v2, Lcom/horcrux/svg/PathParser;->mPenY:F
mul-float v2, v2, v1
sget v1, Lcom/horcrux/svg/PathParser;->mPivotY:F
sub-float/2addr v2, v1
invoke-static {v0, v2, p0, p1}, Lcom/horcrux/svg/PathParser;->quadraticBezierCurveTo(FFFF)V
return-void
.end method