Changes of com.discord v1272

This commit is contained in:
root 2020-09-16 23:45:23 +00:00
parent 4244e04c36
commit 151e6a1914
14572 changed files with 1062860 additions and 910878 deletions

View file

@ -0,0 +1,791 @@
.class public Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
.super Ljava/lang/Object;
.source "ArcCurveFit.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Landroidx/constraintlayout/motion/utils/ArcCurveFit;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "Arc"
.end annotation
# static fields
.field public static final EPSILON:D = 0.001
.field public static final TAG:Ljava/lang/String; = "Arc"
.field public static ourPercent:[D
# instance fields
.field public linear:Z
.field public mArcDistance:D
.field public mArcVelocity:D
.field public mEllipseA:D
.field public mEllipseB:D
.field public mEllipseCenterX:D
.field public mEllipseCenterY:D
.field public mLut:[D
.field public mOneOverDeltaTime:D
.field public mTime1:D
.field public mTime2:D
.field public mTmpCosAngle:D
.field public mTmpSinAngle:D
.field public mVertical:Z
.field public mX1:D
.field public mX2:D
.field public mY1:D
.field public mY2:D
# direct methods
.method public static constructor <clinit>()V
.locals 1
const/16 v0, 0x5b
new-array v0, v0, [D
sput-object v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->ourPercent:[D
return-void
.end method
.method public constructor <init>(IDDDDDD)V
.locals 20
move-object/from16 v9, p0
move/from16 v0, p1
move-wide/from16 v1, p2
move-wide/from16 v3, p4
move-wide/from16 v5, p6
move-wide/from16 v7, p8
move-wide/from16 v10, p10
move-wide/from16 v12, p12
invoke-direct/range {p0 .. p0}, Ljava/lang/Object;-><init>()V
const/4 v14, 0x0
iput-boolean v14, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
const/4 v15, 0x1
if-ne v0, v15, :cond_0
const/4 v14, 0x1
:cond_0
iput-boolean v14, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mVertical:Z
iput-wide v1, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
iput-wide v3, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
const-wide/high16 v16, 0x3ff0000000000000L # 1.0
sub-double v1, v3, v1
div-double v1, v16, v1
iput-wide v1, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mOneOverDeltaTime:D
const/4 v1, 0x3
if-ne v1, v0, :cond_1
iput-boolean v15, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
:cond_1
sub-double v0, v10, v5
sub-double v2, v12, v7
iget-boolean v4, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
if-nez v4, :cond_7
invoke-static {v0, v1}, Ljava/lang/Math;->abs(D)D
move-result-wide v16
const-wide v18, 0x3f50624dd2f1a9fcL # 0.001
cmpg-double v4, v16, v18
if-ltz v4, :cond_7
invoke-static {v2, v3}, Ljava/lang/Math;->abs(D)D
move-result-wide v16
cmpg-double v4, v16, v18
if-gez v4, :cond_2
goto :goto_4
:cond_2
const/16 v4, 0x65
new-array v4, v4, [D
iput-object v4, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mLut:[D
iget-boolean v4, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mVertical:Z
if-eqz v4, :cond_3
const/4 v4, -0x1
goto :goto_0
:cond_3
const/4 v4, 0x1
:goto_0
int-to-double v14, v4
mul-double v0, v0, v14
iput-wide v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseA:D
iget-boolean v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mVertical:Z
if-eqz v0, :cond_4
const/4 v15, 0x1
goto :goto_1
:cond_4
const/4 v15, -0x1
:goto_1
int-to-double v0, v15
mul-double v2, v2, v0
iput-wide v2, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseB:D
iget-boolean v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mVertical:Z
if-eqz v0, :cond_5
move-wide v0, v10
goto :goto_2
:cond_5
move-wide v0, v5
:goto_2
iput-wide v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseCenterX:D
iget-boolean v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mVertical:Z
if-eqz v0, :cond_6
move-wide v0, v7
goto :goto_3
:cond_6
move-wide v0, v12
:goto_3
iput-wide v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseCenterY:D
move-object/from16 v0, p0
move-wide/from16 v1, p6
move-wide/from16 v3, p8
move-wide/from16 v5, p10
move-wide/from16 v7, p12
invoke-direct/range {v0 .. v8}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->buildTable(DDDD)V
iget-wide v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mArcDistance:D
iget-wide v2, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mOneOverDeltaTime:D
mul-double v0, v0, v2
iput-wide v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mArcVelocity:D
return-void
:cond_7
:goto_4
const/4 v4, 0x1
iput-boolean v4, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
iput-wide v5, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mX1:D
iput-wide v10, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mX2:D
iput-wide v7, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mY1:D
iput-wide v12, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mY2:D
invoke-static {v2, v3, v0, v1}, Ljava/lang/Math;->hypot(DD)D
move-result-wide v4
iput-wide v4, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mArcDistance:D
iget-wide v6, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mOneOverDeltaTime:D
mul-double v4, v4, v6
iput-wide v4, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mArcVelocity:D
iget-wide v4, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
iget-wide v6, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
sub-double v10, v4, v6
div-double/2addr v0, v10
iput-wide v0, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseCenterX:D
sub-double/2addr v4, v6
div-double/2addr v2, v4
iput-wide v2, v9, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseCenterY:D
return-void
.end method
.method private buildTable(DDDD)V
.locals 20
move-object/from16 v0, p0
sub-double v1, p5, p1
sub-double v3, p3, p7
const/4 v8, 0x0
const-wide/16 v9, 0x0
const-wide/16 v11, 0x0
const-wide/16 v13, 0x0
:goto_0
sget-object v15, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->ourPercent:[D
array-length v5, v15
if-ge v8, v5, :cond_1
const-wide v16, 0x4056800000000000L # 90.0
int-to-double v6, v8
mul-double v6, v6, v16
array-length v5, v15
add-int/lit8 v5, v5, -0x1
move-wide/from16 p4, v9
int-to-double v9, v5
div-double/2addr v6, v9
invoke-static {v6, v7}, Ljava/lang/Math;->toRadians(D)D
move-result-wide v5
invoke-static {v5, v6}, Ljava/lang/Math;->sin(D)D
move-result-wide v9
invoke-static {v5, v6}, Ljava/lang/Math;->cos(D)D
move-result-wide v5
mul-double v9, v9, v1
mul-double v5, v5, v3
if-lez v8, :cond_0
sub-double v11, v9, v11
sub-double v13, v5, v13
invoke-static {v11, v12, v13, v14}, Ljava/lang/Math;->hypot(DD)D
move-result-wide v11
add-double v11, v11, p4
sget-object v7, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->ourPercent:[D
aput-wide v11, v7, v8
goto :goto_1
:cond_0
move-wide/from16 v11, p4
:goto_1
add-int/lit8 v8, v8, 0x1
move-wide v13, v5
move-wide/from16 v18, v9
move-wide v9, v11
move-wide/from16 v11, v18
goto :goto_0
:cond_1
move-wide v11, v9
iput-wide v11, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mArcDistance:D
const/4 v1, 0x0
:goto_2
sget-object v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->ourPercent:[D
array-length v3, v2
if-ge v1, v3, :cond_2
aget-wide v3, v2, v1
div-double/2addr v3, v11
aput-wide v3, v2, v1
add-int/lit8 v1, v1, 0x1
goto :goto_2
:cond_2
const/4 v5, 0x0
:goto_3
iget-object v1, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mLut:[D
array-length v2, v1
if-ge v5, v2, :cond_5
int-to-double v2, v5
array-length v1, v1
add-int/lit8 v1, v1, -0x1
int-to-double v6, v1
div-double/2addr v2, v6
sget-object v1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->ourPercent:[D
invoke-static {v1, v2, v3}, Ljava/util/Arrays;->binarySearch([DD)I
move-result v1
if-ltz v1, :cond_3
iget-object v2, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mLut:[D
sget-object v3, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->ourPercent:[D
array-length v3, v3
add-int/lit8 v3, v3, -0x1
div-int/2addr v1, v3
int-to-double v3, v1
aput-wide v3, v2, v5
const-wide/16 v6, 0x0
goto :goto_4
:cond_3
const/4 v4, -0x1
if-ne v1, v4, :cond_4
iget-object v1, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mLut:[D
const-wide/16 v6, 0x0
aput-wide v6, v1, v5
goto :goto_4
:cond_4
const-wide/16 v6, 0x0
neg-int v1, v1
add-int/lit8 v4, v1, -0x2
add-int/lit8 v1, v1, -0x1
int-to-double v8, v4
sget-object v10, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->ourPercent:[D
aget-wide v11, v10, v4
sub-double/2addr v2, v11
aget-wide v11, v10, v1
aget-wide v13, v10, v4
sub-double/2addr v11, v13
div-double/2addr v2, v11
add-double/2addr v2, v8
array-length v1, v10
add-int/lit8 v1, v1, -0x1
int-to-double v8, v1
div-double/2addr v2, v8
iget-object v1, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mLut:[D
aput-wide v2, v1, v5
:goto_4
add-int/lit8 v5, v5, 0x1
goto :goto_3
:cond_5
return-void
.end method
# virtual methods
.method public getDX()D
.locals 6
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseA:D
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTmpCosAngle:D
mul-double v0, v0, v2
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseB:D
neg-double v2, v2
iget-wide v4, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTmpSinAngle:D
mul-double v2, v2, v4
iget-wide v4, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mArcVelocity:D
invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->hypot(DD)D
move-result-wide v2
div-double/2addr v4, v2
iget-boolean v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mVertical:Z
if-eqz v2, :cond_0
neg-double v0, v0
:cond_0
mul-double v0, v0, v4
return-wide v0
.end method
.method public getDY()D
.locals 6
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseA:D
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTmpCosAngle:D
mul-double v0, v0, v2
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseB:D
neg-double v2, v2
iget-wide v4, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTmpSinAngle:D
mul-double v2, v2, v4
iget-wide v4, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mArcVelocity:D
invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->hypot(DD)D
move-result-wide v0
div-double/2addr v4, v0
iget-boolean v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mVertical:Z
if-eqz v0, :cond_0
neg-double v0, v2
mul-double v0, v0, v4
goto :goto_0
:cond_0
mul-double v0, v2, v4
:goto_0
return-wide v0
.end method
.method public getLinearDX(D)D
.locals 0
iget-wide p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseCenterX:D
return-wide p1
.end method
.method public getLinearDY(D)D
.locals 0
iget-wide p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseCenterY:D
return-wide p1
.end method
.method public getLinearX(D)D
.locals 4
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
sub-double/2addr p1, v0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mOneOverDeltaTime:D
mul-double p1, p1, v0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mX1:D
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mX2:D
sub-double/2addr v2, v0
mul-double v2, v2, p1
add-double/2addr v2, v0
return-wide v2
.end method
.method public getLinearY(D)D
.locals 4
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
sub-double/2addr p1, v0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mOneOverDeltaTime:D
mul-double p1, p1, v0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mY1:D
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mY2:D
sub-double/2addr v2, v0
mul-double v2, v2, p1
add-double/2addr v2, v0
return-wide v2
.end method
.method public getX()D
.locals 6
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseCenterX:D
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseA:D
iget-wide v4, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTmpSinAngle:D
mul-double v2, v2, v4
add-double/2addr v2, v0
return-wide v2
.end method
.method public getY()D
.locals 6
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseCenterY:D
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mEllipseB:D
iget-wide v4, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTmpCosAngle:D
mul-double v2, v2, v4
add-double/2addr v2, v0
return-wide v2
.end method
.method public lookup(D)D
.locals 8
const-wide/16 v0, 0x0
cmpg-double v2, p1, v0
if-gtz v2, :cond_0
return-wide v0
:cond_0
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
cmpl-double v2, p1, v0
if-ltz v2, :cond_1
return-wide v0
:cond_1
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mLut:[D
array-length v1, v0
add-int/lit8 v1, v1, -0x1
int-to-double v1, v1
mul-double p1, p1, v1
double-to-int v1, p1
int-to-double v2, v1
sub-double/2addr p1, v2
aget-wide v2, v0, v1
add-int/lit8 v4, v1, 0x1
aget-wide v4, v0, v4
aget-wide v6, v0, v1
sub-double/2addr v4, v6
mul-double v4, v4, p1
add-double/2addr v4, v2
return-wide v4
.end method
.method public setPoint(D)V
.locals 2
iget-boolean v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mVertical:Z
if-eqz v0, :cond_0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
sub-double/2addr v0, p1
goto :goto_0
:cond_0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
sub-double v0, p1, v0
:goto_0
iget-wide p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mOneOverDeltaTime:D
mul-double v0, v0, p1
const-wide p1, 0x3ff921fb54442d18L # 1.5707963267948966
invoke-virtual {p0, v0, v1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->lookup(D)D
move-result-wide v0
mul-double v0, v0, p1
invoke-static {v0, v1}, Ljava/lang/Math;->sin(D)D
move-result-wide p1
iput-wide p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTmpSinAngle:D
invoke-static {v0, v1}, Ljava/lang/Math;->cos(D)D
move-result-wide p1
iput-wide p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTmpCosAngle:D
return-void
.end method

View file

@ -0,0 +1,810 @@
.class public Landroidx/constraintlayout/motion/utils/ArcCurveFit;
.super Landroidx/constraintlayout/motion/utils/CurveFit;
.source "ArcCurveFit.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
}
.end annotation
# static fields
.field public static final ARC_START_FLIP:I = 0x3
.field public static final ARC_START_HORIZONTAL:I = 0x2
.field public static final ARC_START_LINEAR:I = 0x0
.field public static final ARC_START_VERTICAL:I = 0x1
.field public static final START_HORIZONTAL:I = 0x2
.field public static final START_LINEAR:I = 0x3
.field public static final START_VERTICAL:I = 0x1
# instance fields
.field public mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
.field public final mTime:[D
# direct methods
.method public constructor <init>([I[D[[D)V
.locals 26
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-direct/range {p0 .. p0}, Landroidx/constraintlayout/motion/utils/CurveFit;-><init>()V
iput-object v1, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mTime:[D
array-length v2, v1
const/4 v3, 0x1
sub-int/2addr v2, v3
new-array v2, v2, [Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
iput-object v2, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
const/4 v2, 0x0
const/4 v4, 0x0
const/4 v5, 0x1
const/4 v6, 0x1
:goto_0
iget-object v7, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
array-length v7, v7
if-ge v4, v7, :cond_5
aget v7, p1, v4
const/4 v8, 0x3
const/4 v9, 0x2
if-eqz v7, :cond_4
if-eq v7, v3, :cond_3
if-eq v7, v9, :cond_2
if-eq v7, v8, :cond_0
move/from16 v20, v6
goto :goto_2
:cond_0
if-ne v5, v3, :cond_1
const/4 v5, 0x2
goto :goto_1
:cond_1
const/4 v5, 0x1
:goto_1
move/from16 v20, v5
goto :goto_2
:cond_2
const/4 v5, 0x2
const/16 v20, 0x2
goto :goto_2
:cond_3
const/4 v5, 0x1
const/16 v20, 0x1
goto :goto_2
:cond_4
const/16 v20, 0x3
:goto_2
iget-object v14, v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
new-instance v21, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-wide v8, v1, v4
add-int/lit8 v22, v4, 0x1
aget-wide v10, v1, v22
aget-object v6, p3, v4
aget-wide v12, v6, v2
aget-object v6, p3, v4
aget-wide v15, v6, v3
aget-object v6, p3, v22
aget-wide v17, v6, v2
aget-object v6, p3, v22
aget-wide v23, v6, v3
move-object/from16 v6, v21
move/from16 v7, v20
move-object/from16 v25, v14
move-wide v14, v15
move-wide/from16 v16, v17
move-wide/from16 v18, v23
invoke-direct/range {v6 .. v19}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;-><init>(IDDDDDD)V
aput-object v21, v25, v4
move/from16 v6, v20
move/from16 v4, v22
goto :goto_0
:cond_5
return-void
.end method
# virtual methods
.method public getPos(DI)D
.locals 5
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
const/4 v1, 0x0
aget-object v2, v0, v1
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
cmpg-double v4, p1, v2
if-gez v4, :cond_0
aget-object p1, v0, v1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
goto :goto_0
:cond_0
array-length v2, v0
add-int/lit8 v2, v2, -0x1
aget-object v2, v0, v2
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpl-double v4, p1, v2
if-lez v4, :cond_1
array-length p1, v0
add-int/lit8 p1, p1, -0x1
aget-object p1, v0, p1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
:cond_1
:goto_0
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
array-length v2, v0
if-ge v1, v2, :cond_6
aget-object v2, v0, v1
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpg-double v4, p1, v2
if-gtz v4, :cond_5
aget-object v2, v0, v1
iget-boolean v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
if-eqz v2, :cond_3
if-nez p3, :cond_2
aget-object p3, v0, v1
invoke-virtual {p3, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearX(D)D
move-result-wide p1
return-wide p1
:cond_2
aget-object p3, v0, v1
invoke-virtual {p3, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearY(D)D
move-result-wide p1
return-wide p1
:cond_3
aget-object v0, v0, v1
invoke-virtual {v0, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->setPoint(D)V
if-nez p3, :cond_4
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v1
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getX()D
move-result-wide p1
return-wide p1
:cond_4
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v1
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getY()D
move-result-wide p1
return-wide p1
:cond_5
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_6
const-wide/high16 p1, 0x7ff8000000000000L # Double.NaN
return-wide p1
.end method
.method public getPos(D[D)V
.locals 7
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
const/4 v1, 0x0
aget-object v2, v0, v1
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
cmpg-double v4, p1, v2
if-gez v4, :cond_0
aget-object p1, v0, v1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
:cond_0
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
array-length v2, v0
const/4 v3, 0x1
sub-int/2addr v2, v3
aget-object v2, v0, v2
iget-wide v4, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpl-double v2, p1, v4
if-lez v2, :cond_1
array-length p1, v0
sub-int/2addr p1, v3
aget-object p1, v0, p1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
:cond_1
const/4 v0, 0x0
:goto_0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
array-length v4, v2
if-ge v0, v4, :cond_4
aget-object v4, v2, v0
iget-wide v4, v4, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpg-double v6, p1, v4
if-gtz v6, :cond_3
aget-object v4, v2, v0
iget-boolean v4, v4, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
if-eqz v4, :cond_2
aget-object v2, v2, v0
invoke-virtual {v2, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearX(D)D
move-result-wide v4
aput-wide v4, p3, v1
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object v0, v1, v0
invoke-virtual {v0, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearY(D)D
move-result-wide p1
aput-wide p1, p3, v3
return-void
:cond_2
aget-object v2, v2, v0
invoke-virtual {v2, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->setPoint(D)V
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v0
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getX()D
move-result-wide p1
aput-wide p1, p3, v1
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v0
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getY()D
move-result-wide p1
aput-wide p1, p3, v3
return-void
:cond_3
add-int/lit8 v0, v0, 0x1
goto :goto_0
:cond_4
return-void
.end method
.method public getPos(D[F)V
.locals 7
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
const/4 v1, 0x0
aget-object v2, v0, v1
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
const/4 v4, 0x1
cmpg-double v5, p1, v2
if-gez v5, :cond_0
aget-object p1, v0, v1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
goto :goto_0
:cond_0
array-length v2, v0
sub-int/2addr v2, v4
aget-object v2, v0, v2
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpl-double v5, p1, v2
if-lez v5, :cond_1
array-length p1, v0
sub-int/2addr p1, v4
aget-object p1, v0, p1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
:cond_1
:goto_0
const/4 v0, 0x0
:goto_1
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
array-length v3, v2
if-ge v0, v3, :cond_4
aget-object v3, v2, v0
iget-wide v5, v3, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpg-double v3, p1, v5
if-gtz v3, :cond_3
aget-object v3, v2, v0
iget-boolean v3, v3, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
if-eqz v3, :cond_2
aget-object v2, v2, v0
invoke-virtual {v2, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearX(D)D
move-result-wide v2
double-to-float v2, v2
aput v2, p3, v1
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object v0, v1, v0
invoke-virtual {v0, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearY(D)D
move-result-wide p1
double-to-float p1, p1
aput p1, p3, v4
return-void
:cond_2
aget-object v2, v2, v0
invoke-virtual {v2, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->setPoint(D)V
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v0
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getX()D
move-result-wide p1
double-to-float p1, p1
aput p1, p3, v1
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v0
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getY()D
move-result-wide p1
double-to-float p1, p1
aput p1, p3, v4
return-void
:cond_3
add-int/lit8 v0, v0, 0x1
goto :goto_1
:cond_4
return-void
.end method
.method public getSlope(DI)D
.locals 5
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
const/4 v1, 0x0
aget-object v2, v0, v1
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
cmpg-double v4, p1, v2
if-gez v4, :cond_0
aget-object p1, v0, v1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
:cond_0
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
array-length v2, v0
add-int/lit8 v2, v2, -0x1
aget-object v2, v0, v2
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpl-double v4, p1, v2
if-lez v4, :cond_1
array-length p1, v0
add-int/lit8 p1, p1, -0x1
aget-object p1, v0, p1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
:cond_1
:goto_0
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
array-length v2, v0
if-ge v1, v2, :cond_6
aget-object v2, v0, v1
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpg-double v4, p1, v2
if-gtz v4, :cond_5
aget-object v2, v0, v1
iget-boolean v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
if-eqz v2, :cond_3
if-nez p3, :cond_2
aget-object p3, v0, v1
invoke-virtual {p3, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearDX(D)D
move-result-wide p1
return-wide p1
:cond_2
aget-object p3, v0, v1
invoke-virtual {p3, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearDY(D)D
move-result-wide p1
return-wide p1
:cond_3
aget-object v0, v0, v1
invoke-virtual {v0, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->setPoint(D)V
if-nez p3, :cond_4
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v1
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getDX()D
move-result-wide p1
return-wide p1
:cond_4
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v1
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getDY()D
move-result-wide p1
return-wide p1
:cond_5
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_6
const-wide/high16 p1, 0x7ff8000000000000L # Double.NaN
return-wide p1
.end method
.method public getSlope(D[D)V
.locals 7
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
const/4 v1, 0x0
aget-object v2, v0, v1
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
const/4 v4, 0x1
cmpg-double v5, p1, v2
if-gez v5, :cond_0
aget-object p1, v0, v1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime1:D
goto :goto_0
:cond_0
array-length v2, v0
sub-int/2addr v2, v4
aget-object v2, v0, v2
iget-wide v2, v2, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpl-double v5, p1, v2
if-lez v5, :cond_1
array-length p1, v0
sub-int/2addr p1, v4
aget-object p1, v0, p1
iget-wide p1, p1, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
:cond_1
:goto_0
const/4 v0, 0x0
:goto_1
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
array-length v3, v2
if-ge v0, v3, :cond_4
aget-object v3, v2, v0
iget-wide v5, v3, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->mTime2:D
cmpg-double v3, p1, v5
if-gtz v3, :cond_3
aget-object v3, v2, v0
iget-boolean v3, v3, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->linear:Z
if-eqz v3, :cond_2
aget-object v2, v2, v0
invoke-virtual {v2, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearDX(D)D
move-result-wide v2
aput-wide v2, p3, v1
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object v0, v1, v0
invoke-virtual {v0, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getLinearDY(D)D
move-result-wide p1
aput-wide p1, p3, v4
return-void
:cond_2
aget-object v2, v2, v0
invoke-virtual {v2, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->setPoint(D)V
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v0
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getDX()D
move-result-wide p1
aput-wide p1, p3, v1
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mArcs:[Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;
aget-object p1, p1, v0
invoke-virtual {p1}, Landroidx/constraintlayout/motion/utils/ArcCurveFit$Arc;->getDY()D
move-result-wide p1
aput-wide p1, p3, v4
return-void
:cond_3
add-int/lit8 v0, v0, 0x1
goto :goto_1
:cond_4
return-void
.end method
.method public getTimePoints()[D
.locals 1
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;->mTime:[D
return-object v0
.end method

View file

@ -0,0 +1,134 @@
.class public Landroidx/constraintlayout/motion/utils/CurveFit$Constant;
.super Landroidx/constraintlayout/motion/utils/CurveFit;
.source "CurveFit.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Landroidx/constraintlayout/motion/utils/CurveFit;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "Constant"
.end annotation
# instance fields
.field public mTime:D
.field public mValue:[D
# direct methods
.method public constructor <init>(D[D)V
.locals 0
invoke-direct {p0}, Landroidx/constraintlayout/motion/utils/CurveFit;-><init>()V
iput-wide p1, p0, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;->mTime:D
iput-object p3, p0, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;->mValue:[D
return-void
.end method
# virtual methods
.method public getPos(DI)D
.locals 0
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;->mValue:[D
aget-wide p2, p1, p3
return-wide p2
.end method
.method public getPos(D[D)V
.locals 1
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;->mValue:[D
array-length p2, p1
const/4 v0, 0x0
invoke-static {p1, v0, p3, v0, p2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
return-void
.end method
.method public getPos(D[F)V
.locals 2
const/4 p1, 0x0
:goto_0
iget-object p2, p0, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;->mValue:[D
array-length v0, p2
if-ge p1, v0, :cond_0
aget-wide v0, p2, p1
double-to-float p2, v0
aput p2, p3, p1
add-int/lit8 p1, p1, 0x1
goto :goto_0
:cond_0
return-void
.end method
.method public getSlope(DI)D
.locals 0
const-wide/16 p1, 0x0
return-wide p1
.end method
.method public getSlope(D[D)V
.locals 2
const/4 p1, 0x0
:goto_0
iget-object p2, p0, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;->mValue:[D
array-length p2, p2
if-ge p1, p2, :cond_0
const-wide/16 v0, 0x0
aput-wide v0, p3, p1
add-int/lit8 p1, p1, 0x1
goto :goto_0
:cond_0
return-void
.end method
.method public getTimePoints()[D
.locals 4
const/4 v0, 0x1
new-array v0, v0, [D
iget-wide v1, p0, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;->mTime:D
const/4 v3, 0x0
aput-wide v1, v0, v3
return-object v0
.end method

View file

@ -0,0 +1,104 @@
.class public abstract Landroidx/constraintlayout/motion/utils/CurveFit;
.super Ljava/lang/Object;
.source "CurveFit.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/constraintlayout/motion/utils/CurveFit$Constant;
}
.end annotation
# static fields
.field public static final CONSTANT:I = 0x2
.field public static final LINEAR:I = 0x1
.field public static final SPLINE:I
# direct methods
.method public constructor <init>()V
.locals 0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static get(I[D[[D)Landroidx/constraintlayout/motion/utils/CurveFit;
.locals 3
array-length v0, p1
const/4 v1, 0x2
const/4 v2, 0x1
if-ne v0, v2, :cond_0
const/4 p0, 0x2
:cond_0
if-eqz p0, :cond_2
if-eq p0, v1, :cond_1
new-instance p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;
invoke-direct {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/LinearCurveFit;-><init>([D[[D)V
return-object p0
:cond_1
new-instance p0, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;
const/4 v0, 0x0
aget-wide v1, p1, v0
aget-object p1, p2, v0
invoke-direct {p0, v1, v2, p1}, Landroidx/constraintlayout/motion/utils/CurveFit$Constant;-><init>(D[D)V
return-object p0
:cond_2
new-instance p0, Landroidx/constraintlayout/motion/utils/MonotonicCurveFit;
invoke-direct {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/MonotonicCurveFit;-><init>([D[[D)V
return-object p0
.end method
.method public static getArc([I[D[[D)Landroidx/constraintlayout/motion/utils/CurveFit;
.locals 1
new-instance v0, Landroidx/constraintlayout/motion/utils/ArcCurveFit;
invoke-direct {v0, p0, p1, p2}, Landroidx/constraintlayout/motion/utils/ArcCurveFit;-><init>([I[D[[D)V
return-object v0
.end method
# virtual methods
.method public abstract getPos(DI)D
.end method
.method public abstract getPos(D[D)V
.end method
.method public abstract getPos(D[F)V
.end method
.method public abstract getSlope(DI)D
.end method
.method public abstract getSlope(D[D)V
.end method
.method public abstract getTimePoints()[D
.end method

View file

@ -0,0 +1,476 @@
.class public Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;
.super Landroidx/constraintlayout/motion/utils/Easing;
.source "Easing.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Landroidx/constraintlayout/motion/utils/Easing;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "CubicEasing"
.end annotation
# static fields
.field public static d_error:D = 1.0E-4
.field public static error:D = 0.01
# instance fields
.field public x1:D
.field public x2:D
.field public y1:D
.field public y2:D
# direct methods
.method public constructor <init>(DDDD)V
.locals 0
invoke-direct {p0}, Landroidx/constraintlayout/motion/utils/Easing;-><init>()V
invoke-virtual/range {p0 .. p8}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->setup(DDDD)V
return-void
.end method
.method public constructor <init>(Ljava/lang/String;)V
.locals 5
invoke-direct {p0}, Landroidx/constraintlayout/motion/utils/Easing;-><init>()V
iput-object p1, p0, Landroidx/constraintlayout/motion/utils/Easing;->str:Ljava/lang/String;
const/16 v0, 0x28
invoke-virtual {p1, v0}, Ljava/lang/String;->indexOf(I)I
move-result v0
const/16 v1, 0x2c
invoke-virtual {p1, v1, v0}, Ljava/lang/String;->indexOf(II)I
move-result v2
add-int/lit8 v0, v0, 0x1
invoke-virtual {p1, v0, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v3
iput-wide v3, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->x1:D
add-int/lit8 v2, v2, 0x1
invoke-virtual {p1, v1, v2}, Ljava/lang/String;->indexOf(II)I
move-result v0
invoke-virtual {p1, v2, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v2
invoke-static {v2}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v2
iput-wide v2, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->y1:D
add-int/lit8 v0, v0, 0x1
invoke-virtual {p1, v1, v0}, Ljava/lang/String;->indexOf(II)I
move-result v1
invoke-virtual {p1, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v2
iput-wide v2, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->x2:D
add-int/lit8 v1, v1, 0x1
const/16 v0, 0x29
invoke-virtual {p1, v0, v1}, Ljava/lang/String;->indexOf(II)I
move-result v0
invoke-virtual {p1, v1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object p1
invoke-static {p1}, Ljava/lang/Double;->parseDouble(Ljava/lang/String;)D
move-result-wide v0
iput-wide v0, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->y2:D
return-void
.end method
.method private getDiffX(D)D
.locals 12
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
sub-double v2, v0, p1
const-wide/high16 v4, 0x4008000000000000L # 3.0
mul-double v6, v2, v4
mul-double v6, v6, v2
iget-wide v8, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->x1:D
mul-double v6, v6, v8
const-wide/high16 v10, 0x4018000000000000L # 6.0
mul-double v2, v2, v10
mul-double v2, v2, p1
iget-wide v10, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->x2:D
sub-double v8, v10, v8
mul-double v8, v8, v2
add-double/2addr v8, v6
mul-double v4, v4, p1
mul-double v4, v4, p1
sub-double/2addr v0, v10
mul-double v0, v0, v4
add-double/2addr v0, v8
return-wide v0
.end method
.method private getDiffY(D)D
.locals 12
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
sub-double v2, v0, p1
const-wide/high16 v4, 0x4008000000000000L # 3.0
mul-double v6, v2, v4
mul-double v6, v6, v2
iget-wide v8, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->y1:D
mul-double v6, v6, v8
const-wide/high16 v10, 0x4018000000000000L # 6.0
mul-double v2, v2, v10
mul-double v2, v2, p1
iget-wide v10, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->y2:D
sub-double v8, v10, v8
mul-double v8, v8, v2
add-double/2addr v8, v6
mul-double v4, v4, p1
mul-double v4, v4, p1
sub-double/2addr v0, v10
mul-double v0, v0, v4
add-double/2addr v0, v8
return-wide v0
.end method
.method private getX(D)D
.locals 6
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
sub-double/2addr v0, p1
const-wide/high16 v2, 0x4008000000000000L # 3.0
mul-double v2, v2, v0
mul-double v0, v0, v2
mul-double v0, v0, p1
mul-double v2, v2, p1
mul-double v2, v2, p1
mul-double v4, p1, p1
mul-double v4, v4, p1
iget-wide p1, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->x1:D
mul-double p1, p1, v0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->x2:D
mul-double v0, v0, v2
add-double/2addr v0, p1
add-double/2addr v0, v4
return-wide v0
.end method
.method private getY(D)D
.locals 6
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
sub-double/2addr v0, p1
const-wide/high16 v2, 0x4008000000000000L # 3.0
mul-double v2, v2, v0
mul-double v0, v0, v2
mul-double v0, v0, p1
mul-double v2, v2, p1
mul-double v2, v2, p1
mul-double v4, p1, p1
mul-double v4, v4, p1
iget-wide p1, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->y1:D
mul-double p1, p1, v0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->y2:D
mul-double v0, v0, v2
add-double/2addr v0, p1
add-double/2addr v0, v4
return-wide v0
.end method
# virtual methods
.method public get(D)D
.locals 9
const-wide/16 v0, 0x0
cmpg-double v2, p1, v0
if-gtz v2, :cond_0
return-wide v0
:cond_0
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
cmpl-double v2, p1, v0
if-ltz v2, :cond_1
return-wide v0
:cond_1
const-wide/high16 v0, 0x3fe0000000000000L # 0.5
move-wide v2, v0
move-wide v4, v2
:goto_0
sget-wide v6, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->error:D
cmpl-double v8, v2, v6
if-lez v8, :cond_3
invoke-direct {p0, v4, v5}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getX(D)D
move-result-wide v6
mul-double v2, v2, v0
cmpg-double v8, v6, p1
if-gez v8, :cond_2
add-double/2addr v4, v2
goto :goto_0
:cond_2
sub-double/2addr v4, v2
goto :goto_0
:cond_3
sub-double v0, v4, v2
invoke-direct {p0, v0, v1}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getX(D)D
move-result-wide v6
add-double/2addr v4, v2
invoke-direct {p0, v4, v5}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getX(D)D
move-result-wide v2
invoke-direct {p0, v0, v1}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getY(D)D
move-result-wide v0
invoke-direct {p0, v4, v5}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getY(D)D
move-result-wide v4
sub-double/2addr v4, v0
sub-double/2addr p1, v6
mul-double p1, p1, v4
sub-double/2addr v2, v6
div-double/2addr p1, v2
add-double/2addr p1, v0
return-wide p1
.end method
.method public getDiff(D)D
.locals 9
const-wide/high16 v0, 0x3fe0000000000000L # 0.5
move-wide v2, v0
move-wide v4, v2
:goto_0
sget-wide v6, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->d_error:D
cmpl-double v8, v2, v6
if-lez v8, :cond_1
invoke-direct {p0, v4, v5}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getX(D)D
move-result-wide v6
mul-double v2, v2, v0
cmpg-double v8, v6, p1
if-gez v8, :cond_0
add-double/2addr v4, v2
goto :goto_0
:cond_0
sub-double/2addr v4, v2
goto :goto_0
:cond_1
sub-double p1, v4, v2
invoke-direct {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getX(D)D
move-result-wide v0
add-double/2addr v4, v2
invoke-direct {p0, v4, v5}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getX(D)D
move-result-wide v2
invoke-direct {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getY(D)D
move-result-wide p1
invoke-direct {p0, v4, v5}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->getY(D)D
move-result-wide v4
sub-double/2addr v4, p1
sub-double/2addr v2, v0
div-double/2addr v4, v2
return-wide v4
.end method
.method public setup(DDDD)V
.locals 0
iput-wide p1, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->x1:D
iput-wide p3, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->y1:D
iput-wide p5, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->x2:D
iput-wide p7, p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;->y2:D
return-void
.end method

View file

@ -0,0 +1,273 @@
.class public Landroidx/constraintlayout/motion/utils/Easing;
.super Ljava/lang/Object;
.source "Easing.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;
}
.end annotation
# static fields
.field public static final ACCELERATE:Ljava/lang/String; = "cubic(0.4, 0.05, 0.8, 0.7)"
.field public static final ACCELERATE_NAME:Ljava/lang/String; = "accelerate"
.field public static final DECELERATE:Ljava/lang/String; = "cubic(0.0, 0.0, 0.2, 0.95)"
.field public static final DECELERATE_NAME:Ljava/lang/String; = "decelerate"
.field public static final LINEAR:Ljava/lang/String; = "cubic(1, 1, 0, 0)"
.field public static final LINEAR_NAME:Ljava/lang/String; = "linear"
.field public static NAMED_EASING:[Ljava/lang/String; = null
.field public static final STANDARD:Ljava/lang/String; = "cubic(0.4, 0.0, 0.2, 1)"
.field public static final STANDARD_NAME:Ljava/lang/String; = "standard"
.field public static sDefault:Landroidx/constraintlayout/motion/utils/Easing;
# instance fields
.field public str:Ljava/lang/String;
# direct methods
.method public static constructor <clinit>()V
.locals 4
new-instance v0, Landroidx/constraintlayout/motion/utils/Easing;
invoke-direct {v0}, Landroidx/constraintlayout/motion/utils/Easing;-><init>()V
sput-object v0, Landroidx/constraintlayout/motion/utils/Easing;->sDefault:Landroidx/constraintlayout/motion/utils/Easing;
const-string v0, "standard"
const-string v1, "accelerate"
const-string v2, "decelerate"
const-string v3, "linear"
filled-new-array {v0, v1, v2, v3}, [Ljava/lang/String;
move-result-object v0
sput-object v0, Landroidx/constraintlayout/motion/utils/Easing;->NAMED_EASING:[Ljava/lang/String;
return-void
.end method
.method public constructor <init>()V
.locals 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const-string v0, "identity"
iput-object v0, p0, Landroidx/constraintlayout/motion/utils/Easing;->str:Ljava/lang/String;
return-void
.end method
.method public static getInterpolator(Ljava/lang/String;)Landroidx/constraintlayout/motion/utils/Easing;
.locals 5
if-nez p0, :cond_0
const/4 p0, 0x0
return-object p0
:cond_0
const-string v0, "cubic"
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_1
new-instance v0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;
invoke-direct {v0, p0}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;-><init>(Ljava/lang/String;)V
return-object v0
:cond_1
const/4 v0, -0x1
invoke-virtual {p0}, Ljava/lang/String;->hashCode()I
move-result v1
const/4 v2, 0x3
const/4 v3, 0x2
const/4 v4, 0x1
sparse-switch v1, :sswitch_data_0
goto :goto_0
:sswitch_0
const-string v1, "standard"
invoke-virtual {p0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_2
const/4 v0, 0x0
goto :goto_0
:sswitch_1
const-string v1, "linear"
invoke-virtual {p0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_2
const/4 v0, 0x3
goto :goto_0
:sswitch_2
const-string v1, "decelerate"
invoke-virtual {p0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_2
const/4 v0, 0x2
goto :goto_0
:sswitch_3
const-string v1, "accelerate"
invoke-virtual {p0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_2
const/4 v0, 0x1
:cond_2
:goto_0
if-eqz v0, :cond_6
if-eq v0, v4, :cond_5
if-eq v0, v3, :cond_4
if-eq v0, v2, :cond_3
const-string p0, "transitionEasing syntax error syntax:transitionEasing=\"cubic(1.0,0.5,0.0,0.6)\" or "
invoke-static {p0}, Lf/e/b/a/a;->E(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object p0
sget-object v0, Landroidx/constraintlayout/motion/utils/Easing;->NAMED_EASING:[Ljava/lang/String;
invoke-static {v0}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
const-string v0, "ConstraintSet"
invoke-static {v0, p0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
sget-object p0, Landroidx/constraintlayout/motion/utils/Easing;->sDefault:Landroidx/constraintlayout/motion/utils/Easing;
return-object p0
:cond_3
new-instance p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;
const-string v0, "cubic(1, 1, 0, 0)"
invoke-direct {p0, v0}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;-><init>(Ljava/lang/String;)V
return-object p0
:cond_4
new-instance p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;
const-string v0, "cubic(0.0, 0.0, 0.2, 0.95)"
invoke-direct {p0, v0}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;-><init>(Ljava/lang/String;)V
return-object p0
:cond_5
new-instance p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;
const-string v0, "cubic(0.4, 0.05, 0.8, 0.7)"
invoke-direct {p0, v0}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;-><init>(Ljava/lang/String;)V
return-object p0
:cond_6
new-instance p0, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;
const-string v0, "cubic(0.4, 0.0, 0.2, 1)"
invoke-direct {p0, v0}, Landroidx/constraintlayout/motion/utils/Easing$CubicEasing;-><init>(Ljava/lang/String;)V
return-object p0
:sswitch_data_0
.sparse-switch
-0x50bb8523 -> :sswitch_3
-0x4b5653c4 -> :sswitch_2
-0x41b970db -> :sswitch_1
0x4e3d1ebd -> :sswitch_0
.end sparse-switch
.end method
# virtual methods
.method public get(D)D
.locals 0
return-wide p1
.end method
.method public getDiff(D)D
.locals 0
const-wide/high16 p1, 0x3ff0000000000000L # 1.0
return-wide p1
.end method
.method public toString()Ljava/lang/String;
.locals 1
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/Easing;->str:Ljava/lang/String;
return-object v0
.end method

View file

@ -0,0 +1,104 @@
.class public Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
.super Ljava/lang/Object;
.source "HyperSpline.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Landroidx/constraintlayout/motion/utils/HyperSpline;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "Cubic"
.end annotation
# static fields
.field public static final HALF:D = 0.5
.field public static final THIRD:D = 0.3333333333333333
# instance fields
.field public mA:D
.field public mB:D
.field public mC:D
.field public mD:D
# direct methods
.method public constructor <init>(DDDD)V
.locals 0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-wide p1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mA:D
iput-wide p3, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mB:D
iput-wide p5, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mC:D
iput-wide p7, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mD:D
return-void
.end method
# virtual methods
.method public eval(D)D
.locals 4
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mD:D
mul-double v0, v0, p1
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mC:D
add-double/2addr v0, v2
mul-double v0, v0, p1
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mB:D
add-double/2addr v0, v2
mul-double v0, v0, p1
iget-wide p1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mA:D
add-double/2addr v0, p1
return-wide v0
.end method
.method public vel(D)D
.locals 6
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mD:D
const-wide v2, 0x3fd5555555555555L # 0.3333333333333333
mul-double v0, v0, v2
mul-double v0, v0, p1
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mC:D
const-wide/high16 v4, 0x3fe0000000000000L # 0.5
mul-double v2, v2, v4
add-double/2addr v2, v0
mul-double v2, v2, p1
iget-wide p1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->mB:D
add-double/2addr v2, p1
return-wide v2
.end method

View file

@ -0,0 +1,784 @@
.class public Landroidx/constraintlayout/motion/utils/HyperSpline;
.super Ljava/lang/Object;
.source "HyperSpline.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
}
.end annotation
# instance fields
.field public mCtl:[[D
.field public mCurve:[[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
.field public mCurveLength:[D
.field public mDimensionality:I
.field public mPoints:I
.field public mTotalLength:D
# direct methods
.method public constructor <init>()V
.locals 0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public constructor <init>([[D)V
.locals 0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
invoke-virtual {p0, p1}, Landroidx/constraintlayout/motion/utils/HyperSpline;->setup([[D)V
return-void
.end method
.method public static calcNaturalCubic(I[D)[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
.locals 22
move/from16 v0, p0
new-array v1, v0, [D
new-array v2, v0, [D
new-array v3, v0, [D
add-int/lit8 v0, v0, -0x1
const-wide/high16 v4, 0x3fe0000000000000L # 0.5
const/4 v6, 0x0
aput-wide v4, v1, v6
const/4 v4, 0x1
const/4 v5, 0x1
:goto_0
const-wide/high16 v7, 0x3ff0000000000000L # 1.0
if-ge v5, v0, :cond_0
const-wide/high16 v9, 0x4010000000000000L # 4.0
add-int/lit8 v11, v5, -0x1
aget-wide v11, v1, v11
sub-double/2addr v9, v11
div-double/2addr v7, v9
aput-wide v7, v1, v5
add-int/lit8 v5, v5, 0x1
goto :goto_0
:cond_0
add-int/lit8 v5, v0, -0x1
aget-wide v9, v1, v5
const-wide/high16 v11, 0x4000000000000000L # 2.0
sub-double v9, v11, v9
div-double/2addr v7, v9
aput-wide v7, v1, v0
aget-wide v7, p1, v4
aget-wide v9, p1, v6
sub-double/2addr v7, v9
const-wide/high16 v9, 0x4008000000000000L # 3.0
mul-double v7, v7, v9
aget-wide v13, v1, v6
mul-double v7, v7, v13
aput-wide v7, v2, v6
:goto_1
if-ge v4, v0, :cond_1
add-int/lit8 v7, v4, 0x1
aget-wide v13, p1, v7
add-int/lit8 v8, v4, -0x1
aget-wide v15, p1, v8
sub-double/2addr v13, v15
mul-double v13, v13, v9
aget-wide v15, v2, v8
sub-double/2addr v13, v15
aget-wide v15, v1, v4
mul-double v13, v13, v15
aput-wide v13, v2, v4
move v4, v7
goto :goto_1
:cond_1
aget-wide v7, p1, v0
aget-wide v13, p1, v5
sub-double/2addr v7, v13
mul-double v7, v7, v9
aget-wide v13, v2, v5
sub-double/2addr v7, v13
aget-wide v13, v1, v0
mul-double v7, v7, v13
aput-wide v7, v2, v0
aget-wide v7, v2, v0
aput-wide v7, v3, v0
:goto_2
if-ltz v5, :cond_2
aget-wide v7, v2, v5
aget-wide v13, v1, v5
add-int/lit8 v4, v5, 0x1
aget-wide v15, v3, v4
mul-double v13, v13, v15
sub-double/2addr v7, v13
aput-wide v7, v3, v5
add-int/lit8 v5, v5, -0x1
goto :goto_2
:cond_2
new-array v1, v0, [Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
:goto_3
if-ge v6, v0, :cond_3
new-instance v2, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
aget-wide v4, p1, v6
double-to-float v4, v4
float-to-double v14, v4
aget-wide v16, v3, v6
add-int/lit8 v4, v6, 0x1
aget-wide v7, p1, v4
aget-wide v18, p1, v6
sub-double v7, v7, v18
mul-double v7, v7, v9
aget-wide v18, v3, v6
mul-double v18, v18, v11
sub-double v7, v7, v18
aget-wide v18, v3, v4
sub-double v18, v7, v18
aget-wide v7, p1, v6
aget-wide v20, p1, v4
sub-double v7, v7, v20
mul-double v7, v7, v11
aget-wide v20, v3, v6
add-double v7, v7, v20
aget-wide v20, v3, v4
add-double v20, v7, v20
move-object v13, v2
invoke-direct/range {v13 .. v21}, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;-><init>(DDDD)V
aput-object v2, v1, v6
move v6, v4
goto :goto_3
:cond_3
return-object v1
.end method
# virtual methods
.method public approxLength([Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;)D
.locals 14
array-length v0, p1
array-length v0, p1
new-array v0, v0, [D
const-wide/16 v1, 0x0
move-wide v3, v1
move-wide v5, v3
:goto_0
const/4 v7, 0x0
const-wide/high16 v8, 0x3ff0000000000000L # 1.0
cmpg-double v10, v3, v8
if-gez v10, :cond_2
move-wide v8, v1
:goto_1
array-length v10, p1
if-ge v7, v10, :cond_0
aget-wide v10, v0, v7
aget-object v12, p1, v7
invoke-virtual {v12, v3, v4}, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->eval(D)D
move-result-wide v12
aput-wide v12, v0, v7
sub-double/2addr v10, v12
mul-double v10, v10, v10
add-double/2addr v8, v10
add-int/lit8 v7, v7, 0x1
goto :goto_1
:cond_0
cmpl-double v7, v3, v1
if-lez v7, :cond_1
invoke-static {v8, v9}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v7
add-double/2addr v5, v7
:cond_1
const-wide v7, 0x3fb999999999999aL # 0.1
add-double/2addr v3, v7
goto :goto_0
:cond_2
:goto_2
array-length v3, p1
if-ge v7, v3, :cond_3
aget-wide v3, v0, v7
aget-object v10, p1, v7
invoke-virtual {v10, v8, v9}, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->eval(D)D
move-result-wide v10
aput-wide v10, v0, v7
sub-double/2addr v3, v10
mul-double v3, v3, v3
add-double/2addr v1, v3
add-int/lit8 v7, v7, 0x1
goto :goto_2
:cond_3
invoke-static {v1, v2}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v0
add-double/2addr v0, v5
return-wide v0
.end method
.method public getPos(DI)D
.locals 5
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mTotalLength:D
mul-double p1, p1, v0
const/4 v0, 0x0
:goto_0
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
array-length v2, v1
add-int/lit8 v2, v2, -0x1
if-ge v0, v2, :cond_0
aget-wide v2, v1, v0
cmpg-double v4, v2, p1
if-gez v4, :cond_0
aget-wide v2, v1, v0
sub-double/2addr p1, v2
add-int/lit8 v0, v0, 0x1
goto :goto_0
:cond_0
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurve:[[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
aget-object p3, v1, p3
aget-object p3, p3, v0
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
aget-wide v0, v1, v0
div-double/2addr p1, v0
invoke-virtual {p3, p1, p2}, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->eval(D)D
move-result-wide p1
return-wide p1
.end method
.method public getPos(D[D)V
.locals 6
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mTotalLength:D
mul-double p1, p1, v0
const/4 v0, 0x0
const/4 v1, 0x0
:goto_0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
array-length v3, v2
add-int/lit8 v3, v3, -0x1
if-ge v1, v3, :cond_0
aget-wide v3, v2, v1
cmpg-double v5, v3, p1
if-gez v5, :cond_0
aget-wide v3, v2, v1
sub-double/2addr p1, v3
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_0
:goto_1
array-length v2, p3
if-ge v0, v2, :cond_1
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurve:[[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
aget-object v2, v2, v0
aget-object v2, v2, v1
iget-object v3, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
aget-wide v4, v3, v1
div-double v3, p1, v4
invoke-virtual {v2, v3, v4}, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->eval(D)D
move-result-wide v2
aput-wide v2, p3, v0
add-int/lit8 v0, v0, 0x1
goto :goto_1
:cond_1
return-void
.end method
.method public getPos(D[F)V
.locals 6
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mTotalLength:D
mul-double p1, p1, v0
const/4 v0, 0x0
const/4 v1, 0x0
:goto_0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
array-length v3, v2
add-int/lit8 v3, v3, -0x1
if-ge v1, v3, :cond_0
aget-wide v3, v2, v1
cmpg-double v5, v3, p1
if-gez v5, :cond_0
aget-wide v3, v2, v1
sub-double/2addr p1, v3
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_0
:goto_1
array-length v2, p3
if-ge v0, v2, :cond_1
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurve:[[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
aget-object v2, v2, v0
aget-object v2, v2, v1
iget-object v3, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
aget-wide v4, v3, v1
div-double v3, p1, v4
invoke-virtual {v2, v3, v4}, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->eval(D)D
move-result-wide v2
double-to-float v2, v2
aput v2, p3, v0
add-int/lit8 v0, v0, 0x1
goto :goto_1
:cond_1
return-void
.end method
.method public getVelocity(D[D)V
.locals 6
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mTotalLength:D
mul-double p1, p1, v0
const/4 v0, 0x0
const/4 v1, 0x0
:goto_0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
array-length v3, v2
add-int/lit8 v3, v3, -0x1
if-ge v1, v3, :cond_0
aget-wide v3, v2, v1
cmpg-double v5, v3, p1
if-gez v5, :cond_0
aget-wide v3, v2, v1
sub-double/2addr p1, v3
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_0
:goto_1
array-length v2, p3
if-ge v0, v2, :cond_1
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurve:[[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
aget-object v2, v2, v0
aget-object v2, v2, v1
iget-object v3, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
aget-wide v4, v3, v1
div-double v3, p1, v4
invoke-virtual {v2, v3, v4}, Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;->vel(D)D
move-result-wide v2
aput-wide v2, p3, v0
add-int/lit8 v0, v0, 0x1
goto :goto_1
:cond_1
return-void
.end method
.method public setup([[D)V
.locals 8
const/4 v0, 0x0
aget-object v1, p1, v0
array-length v1, v1
iput v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mDimensionality:I
array-length v2, p1
iput v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mPoints:I
const/4 v3, 0x2
new-array v3, v3, [I
const/4 v4, 0x1
aput v2, v3, v4
aput v1, v3, v0
const-class v1, D
invoke-static {v1, v3}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
move-result-object v1
check-cast v1, [[D
iput-object v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCtl:[[D
iget v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mDimensionality:I
new-array v1, v1, [[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
iput-object v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurve:[[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
const/4 v1, 0x0
:goto_0
iget v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mDimensionality:I
if-ge v1, v2, :cond_1
const/4 v2, 0x0
:goto_1
iget v3, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mPoints:I
if-ge v2, v3, :cond_0
iget-object v3, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCtl:[[D
aget-object v3, v3, v1
aget-object v5, p1, v2
aget-wide v6, v5, v1
aput-wide v6, v3, v2
add-int/lit8 v2, v2, 0x1
goto :goto_1
:cond_0
add-int/lit8 v1, v1, 0x1
goto :goto_0
:cond_1
const/4 p1, 0x0
:goto_2
iget v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mDimensionality:I
if-ge p1, v1, :cond_2
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurve:[[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCtl:[[D
aget-object v3, v2, p1
array-length v3, v3
aget-object v2, v2, p1
invoke-static {v3, v2}, Landroidx/constraintlayout/motion/utils/HyperSpline;->calcNaturalCubic(I[D)[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
move-result-object v2
aput-object v2, v1, p1
add-int/lit8 p1, p1, 0x1
goto :goto_2
:cond_2
iget p1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mPoints:I
sub-int/2addr p1, v4
new-array p1, p1, [D
iput-object p1, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
const-wide/16 v2, 0x0
iput-wide v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mTotalLength:D
new-array p1, v1, [Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
const/4 v1, 0x0
:goto_3
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
array-length v2, v2
if-ge v1, v2, :cond_4
const/4 v2, 0x0
:goto_4
iget v3, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mDimensionality:I
if-ge v2, v3, :cond_3
iget-object v3, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurve:[[Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;
aget-object v3, v3, v2
aget-object v3, v3, v1
aput-object v3, p1, v2
add-int/lit8 v2, v2, 0x1
goto :goto_4
:cond_3
iget-wide v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mTotalLength:D
iget-object v4, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mCurveLength:[D
invoke-virtual {p0, p1}, Landroidx/constraintlayout/motion/utils/HyperSpline;->approxLength([Landroidx/constraintlayout/motion/utils/HyperSpline$Cubic;)D
move-result-wide v5
aput-wide v5, v4, v1
add-double/2addr v2, v5
iput-wide v2, p0, Landroidx/constraintlayout/motion/utils/HyperSpline;->mTotalLength:D
add-int/lit8 v1, v1, 0x1
goto :goto_3
:cond_4
return-void
.end method

View file

@ -0,0 +1,893 @@
.class public Landroidx/constraintlayout/motion/utils/LinearCurveFit;
.super Landroidx/constraintlayout/motion/utils/CurveFit;
.source "LinearCurveFit.java"
# static fields
.field public static final TAG:Ljava/lang/String; = "LinearCurveFit"
# instance fields
.field public mT:[D
.field public mTotalLength:D
.field public mY:[[D
# direct methods
.method public constructor <init>([D[[D)V
.locals 13
invoke-direct {p0}, Landroidx/constraintlayout/motion/utils/CurveFit;-><init>()V
const-wide/high16 v0, 0x7ff8000000000000L # Double.NaN
iput-wide v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mTotalLength:D
array-length v0, p1
const/4 v0, 0x0
aget-object v1, p2, v0
array-length v1, v1
iput-object p1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
iput-object p2, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
const/4 v2, 0x2
if-le v1, v2, :cond_2
const-wide/16 v1, 0x0
move-wide v4, v1
move-wide v6, v4
const/4 v3, 0x0
:goto_0
array-length v8, p1
if-ge v3, v8, :cond_1
aget-object v8, p2, v3
aget-wide v9, v8, v0
aget-object v8, p2, v3
aget-wide v11, v8, v0
if-lez v3, :cond_0
sub-double v4, v9, v4
sub-double v6, v11, v6
invoke-static {v4, v5, v6, v7}, Ljava/lang/Math;->hypot(DD)D
:cond_0
add-int/lit8 v3, v3, 0x1
move-wide v4, v9
move-wide v6, v11
goto :goto_0
:cond_1
iput-wide v1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mTotalLength:D
:cond_2
return-void
.end method
.method private getLength2D(D)D
.locals 21
move-object/from16 v0, p0
iget-wide v1, v0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mTotalLength:D
invoke-static {v1, v2}, Ljava/lang/Double;->isNaN(D)Z
move-result v1
const-wide/16 v2, 0x0
if-eqz v1, :cond_0
return-wide v2
:cond_0
iget-object v1, v0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
array-length v4, v1
const/4 v5, 0x0
aget-wide v6, v1, v5
cmpg-double v8, p1, v6
if-gtz v8, :cond_1
return-wide v2
:cond_1
const/4 v6, 0x1
sub-int/2addr v4, v6
aget-wide v7, v1, v4
cmpl-double v1, p1, v7
if-ltz v1, :cond_2
iget-wide v1, v0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mTotalLength:D
return-wide v1
:cond_2
move-wide v7, v2
move-wide v9, v7
move-wide v11, v9
const/4 v1, 0x0
:goto_0
if-ge v1, v4, :cond_6
iget-object v13, v0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v14, v13, v1
aget-wide v15, v14, v5
aget-object v13, v13, v1
aget-wide v17, v13, v6
if-lez v1, :cond_3
sub-double v9, v15, v9
sub-double v11, v17, v11
invoke-static {v9, v10, v11, v12}, Ljava/lang/Math;->hypot(DD)D
move-result-wide v9
add-double/2addr v7, v9
:cond_3
iget-object v9, v0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
aget-wide v10, v9, v1
cmpl-double v12, p1, v10
if-nez v12, :cond_4
return-wide v7
:cond_4
add-int/lit8 v10, v1, 0x1
aget-wide v11, v9, v10
cmpg-double v13, p1, v11
if-gez v13, :cond_5
aget-wide v2, v9, v10
aget-wide v11, v9, v1
sub-double/2addr v2, v11
aget-wide v11, v9, v1
sub-double v11, p1, v11
div-double/2addr v11, v2
iget-object v2, v0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v3, v2, v1
aget-wide v13, v3, v5
aget-object v3, v2, v10
aget-wide v4, v3, v5
aget-object v1, v2, v1
aget-wide v19, v1, v6
aget-object v1, v2, v10
aget-wide v2, v1, v6
const-wide/high16 v9, 0x3ff0000000000000L # 1.0
sub-double/2addr v9, v11
mul-double v19, v19, v9
mul-double v2, v2, v11
add-double v2, v2, v19
sub-double v1, v17, v2
mul-double v13, v13, v9
mul-double v4, v4, v11
add-double/2addr v4, v13
sub-double v3, v15, v4
invoke-static {v1, v2, v3, v4}, Ljava/lang/Math;->hypot(DD)D
move-result-wide v1
add-double/2addr v1, v7
return-wide v1
:cond_5
move v1, v10
move-wide v9, v15
move-wide/from16 v11, v17
goto :goto_0
:cond_6
return-wide v2
.end method
# virtual methods
.method public getPos(DI)D
.locals 8
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
array-length v1, v0
const/4 v2, 0x0
aget-wide v3, v0, v2
cmpg-double v5, p1, v3
if-gtz v5, :cond_0
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object p1, p1, v2
aget-wide p2, p1, p3
return-wide p2
:cond_0
add-int/lit8 v1, v1, -0x1
aget-wide v3, v0, v1
cmpl-double v0, p1, v3
if-ltz v0, :cond_1
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object p1, p1, v1
aget-wide p2, p1, p3
return-wide p2
:cond_1
:goto_0
if-ge v2, v1, :cond_4
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
aget-wide v3, v0, v2
cmpl-double v5, p1, v3
if-nez v5, :cond_2
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object p1, p1, v2
aget-wide p2, p1, p3
return-wide p2
:cond_2
add-int/lit8 v3, v2, 0x1
aget-wide v4, v0, v3
cmpg-double v6, p1, v4
if-gez v6, :cond_3
aget-wide v4, v0, v3
aget-wide v6, v0, v2
sub-double/2addr v4, v6
aget-wide v6, v0, v2
sub-double/2addr p1, v6
div-double/2addr p1, v4
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v1, v0, v2
aget-wide v4, v1, p3
aget-object v0, v0, v3
aget-wide v1, v0, p3
const-wide/high16 v6, 0x3ff0000000000000L # 1.0
sub-double/2addr v6, p1
mul-double v6, v6, v4
mul-double v1, v1, p1
add-double/2addr v1, v6
return-wide v1
:cond_3
move v2, v3
goto :goto_0
:cond_4
const-wide/16 p1, 0x0
return-wide p1
.end method
.method public getPos(D[D)V
.locals 12
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
array-length v1, v0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
const/4 v3, 0x0
aget-object v2, v2, v3
array-length v2, v2
aget-wide v4, v0, v3
cmpg-double v6, p1, v4
if-gtz v6, :cond_1
const/4 p1, 0x0
:goto_0
if-ge p1, v2, :cond_0
iget-object p2, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object p2, p2, v3
aget-wide v0, p2, p1
aput-wide v0, p3, p1
add-int/lit8 p1, p1, 0x1
goto :goto_0
:cond_0
return-void
:cond_1
add-int/lit8 v1, v1, -0x1
aget-wide v4, v0, v1
cmpl-double v0, p1, v4
if-ltz v0, :cond_3
:goto_1
if-ge v3, v2, :cond_2
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object p1, p1, v1
aget-wide v4, p1, v3
aput-wide v4, p3, v3
add-int/lit8 v3, v3, 0x1
goto :goto_1
:cond_2
return-void
:cond_3
const/4 v0, 0x0
:goto_2
if-ge v0, v1, :cond_7
iget-object v4, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
aget-wide v5, v4, v0
cmpl-double v4, p1, v5
if-nez v4, :cond_4
const/4 v4, 0x0
:goto_3
if-ge v4, v2, :cond_4
iget-object v5, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v5, v5, v0
aget-wide v6, v5, v4
aput-wide v6, p3, v4
add-int/lit8 v4, v4, 0x1
goto :goto_3
:cond_4
iget-object v4, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
add-int/lit8 v5, v0, 0x1
aget-wide v6, v4, v5
cmpg-double v8, p1, v6
if-gez v8, :cond_6
aget-wide v6, v4, v5
aget-wide v8, v4, v0
sub-double/2addr v6, v8
aget-wide v8, v4, v0
sub-double/2addr p1, v8
div-double/2addr p1, v6
:goto_4
if-ge v3, v2, :cond_5
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v4, v1, v0
aget-wide v6, v4, v3
aget-object v1, v1, v5
aget-wide v8, v1, v3
const-wide/high16 v10, 0x3ff0000000000000L # 1.0
sub-double/2addr v10, p1
mul-double v10, v10, v6
mul-double v8, v8, p1
add-double/2addr v8, v10
aput-wide v8, p3, v3
add-int/lit8 v3, v3, 0x1
goto :goto_4
:cond_5
return-void
:cond_6
move v0, v5
goto :goto_2
:cond_7
return-void
.end method
.method public getPos(D[F)V
.locals 12
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
array-length v1, v0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
const/4 v3, 0x0
aget-object v2, v2, v3
array-length v2, v2
aget-wide v4, v0, v3
cmpg-double v6, p1, v4
if-gtz v6, :cond_1
const/4 p1, 0x0
:goto_0
if-ge p1, v2, :cond_0
iget-object p2, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object p2, p2, v3
aget-wide v0, p2, p1
double-to-float p2, v0
aput p2, p3, p1
add-int/lit8 p1, p1, 0x1
goto :goto_0
:cond_0
return-void
:cond_1
add-int/lit8 v1, v1, -0x1
aget-wide v4, v0, v1
cmpl-double v0, p1, v4
if-ltz v0, :cond_3
:goto_1
if-ge v3, v2, :cond_2
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object p1, p1, v1
aget-wide v4, p1, v3
double-to-float p1, v4
aput p1, p3, v3
add-int/lit8 v3, v3, 0x1
goto :goto_1
:cond_2
return-void
:cond_3
const/4 v0, 0x0
:goto_2
if-ge v0, v1, :cond_7
iget-object v4, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
aget-wide v5, v4, v0
cmpl-double v4, p1, v5
if-nez v4, :cond_4
const/4 v4, 0x0
:goto_3
if-ge v4, v2, :cond_4
iget-object v5, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v5, v5, v0
aget-wide v6, v5, v4
double-to-float v5, v6
aput v5, p3, v4
add-int/lit8 v4, v4, 0x1
goto :goto_3
:cond_4
iget-object v4, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
add-int/lit8 v5, v0, 0x1
aget-wide v6, v4, v5
cmpg-double v8, p1, v6
if-gez v8, :cond_6
aget-wide v6, v4, v5
aget-wide v8, v4, v0
sub-double/2addr v6, v8
aget-wide v8, v4, v0
sub-double/2addr p1, v8
div-double/2addr p1, v6
:goto_4
if-ge v3, v2, :cond_5
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v4, v1, v0
aget-wide v6, v4, v3
aget-object v1, v1, v5
aget-wide v8, v1, v3
const-wide/high16 v10, 0x3ff0000000000000L # 1.0
sub-double/2addr v10, p1
mul-double v10, v10, v6
mul-double v8, v8, p1
add-double/2addr v8, v10
double-to-float v1, v8
aput v1, p3, v3
add-int/lit8 v3, v3, 0x1
goto :goto_4
:cond_5
return-void
:cond_6
move v0, v5
goto :goto_2
:cond_7
return-void
.end method
.method public getSlope(DI)D
.locals 7
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
array-length v1, v0
const/4 v2, 0x0
aget-wide v3, v0, v2
cmpg-double v5, p1, v3
if-gez v5, :cond_0
aget-wide p1, v0, v2
goto :goto_0
:cond_0
add-int/lit8 v3, v1, -0x1
aget-wide v4, v0, v3
cmpl-double v6, p1, v4
if-ltz v6, :cond_1
aget-wide p1, v0, v3
:cond_1
:goto_0
add-int/lit8 v0, v1, -0x1
if-ge v2, v0, :cond_3
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
add-int/lit8 v3, v2, 0x1
aget-wide v4, v0, v3
cmpg-double v6, p1, v4
if-gtz v6, :cond_2
aget-wide p1, v0, v3
aget-wide v4, v0, v2
sub-double/2addr p1, v4
aget-wide v4, v0, v2
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v1, v0, v2
aget-wide v4, v1, p3
aget-object v0, v0, v3
aget-wide v1, v0, p3
sub-double/2addr v1, v4
div-double/2addr v1, p1
return-wide v1
:cond_2
move v2, v3
goto :goto_0
:cond_3
const-wide/16 p1, 0x0
return-wide p1
.end method
.method public getSlope(D[D)V
.locals 10
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
array-length v1, v0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
const/4 v3, 0x0
aget-object v2, v2, v3
array-length v2, v2
aget-wide v4, v0, v3
cmpg-double v6, p1, v4
if-gtz v6, :cond_0
aget-wide p1, v0, v3
goto :goto_0
:cond_0
add-int/lit8 v4, v1, -0x1
aget-wide v5, v0, v4
cmpl-double v7, p1, v5
if-ltz v7, :cond_1
aget-wide p1, v0, v4
:cond_1
:goto_0
const/4 v0, 0x0
:goto_1
add-int/lit8 v4, v1, -0x1
if-ge v0, v4, :cond_3
iget-object v4, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
add-int/lit8 v5, v0, 0x1
aget-wide v6, v4, v5
cmpg-double v8, p1, v6
if-gtz v8, :cond_2
aget-wide p1, v4, v5
aget-wide v6, v4, v0
sub-double/2addr p1, v6
aget-wide v6, v4, v0
:goto_2
if-ge v3, v2, :cond_3
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mY:[[D
aget-object v4, v1, v0
aget-wide v6, v4, v3
aget-object v1, v1, v5
aget-wide v8, v1, v3
sub-double/2addr v8, v6
div-double/2addr v8, p1
aput-wide v8, p3, v3
add-int/lit8 v3, v3, 0x1
goto :goto_2
:cond_2
move v0, v5
goto :goto_1
:cond_3
return-void
.end method
.method public getTimePoints()[D
.locals 1
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/LinearCurveFit;->mT:[D
return-object v0
.end method

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,814 @@
.class public Landroidx/constraintlayout/motion/utils/Oscillator;
.super Ljava/lang/Object;
.source "Oscillator.java"
# static fields
.field public static final BOUNCE:I = 0x6
.field public static final COS_WAVE:I = 0x5
.field public static final REVERSE_SAW_WAVE:I = 0x4
.field public static final SAW_WAVE:I = 0x3
.field public static final SIN_WAVE:I = 0x0
.field public static final SQUARE_WAVE:I = 0x1
.field public static TAG:Ljava/lang/String; = "Oscillator"
.field public static final TRIANGLE_WAVE:I = 0x2
# instance fields
.field public PI2:D
.field public mArea:[D
.field public mNormalized:Z
.field public mPeriod:[F
.field public mPosition:[D
.field public mType:I
# direct methods
.method public constructor <init>()V
.locals 3
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x0
new-array v1, v0, [F
iput-object v1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
new-array v1, v0, [D
iput-object v1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
const-wide v1, 0x401921fb54442d18L # 6.283185307179586
iput-wide v1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->PI2:D
iput-boolean v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mNormalized:Z
return-void
.end method
# virtual methods
.method public addPoint(DF)V
.locals 4
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
array-length v0, v0
add-int/lit8 v0, v0, 0x1
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
invoke-static {v1, p1, p2}, Ljava/util/Arrays;->binarySearch([DD)I
move-result v1
if-gez v1, :cond_0
neg-int v1, v1
add-int/lit8 v1, v1, -0x1
:cond_0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
invoke-static {v2, v0}, Ljava/util/Arrays;->copyOf([DI)[D
move-result-object v2
iput-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
invoke-static {v2, v0}, Ljava/util/Arrays;->copyOf([FI)[F
move-result-object v2
iput-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
new-array v2, v0, [D
iput-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mArea:[D
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
add-int/lit8 v3, v1, 0x1
sub-int/2addr v0, v1
add-int/lit8 v0, v0, -0x1
invoke-static {v2, v1, v2, v3, v0}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
aput-wide p1, v0, v1
iget-object p1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
aput p3, p1, v1
const/4 p1, 0x0
iput-boolean p1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mNormalized:Z
return-void
.end method
.method public getDP(D)D
.locals 10
const-wide/16 v0, 0x0
cmpg-double v2, p1, v0
if-gtz v2, :cond_0
const-wide p1, 0x3ee4f8b588e368f1L # 1.0E-5
goto :goto_0
:cond_0
const-wide/high16 v2, 0x3ff0000000000000L # 1.0
cmpl-double v4, p1, v2
if-ltz v4, :cond_1
const-wide p1, 0x3feffffde7210be9L # 0.999999
:cond_1
:goto_0
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
invoke-static {v2, p1, p2}, Ljava/util/Arrays;->binarySearch([DD)I
move-result v2
if-lez v2, :cond_2
return-wide v0
:cond_2
if-eqz v2, :cond_3
neg-int v0, v2
add-int/lit8 v0, v0, -0x1
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
aget v2, v1, v0
add-int/lit8 v3, v0, -0x1
aget v4, v1, v3
sub-float/2addr v2, v4
float-to-double v4, v2
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
aget-wide v6, v2, v0
aget-wide v8, v2, v3
sub-double/2addr v6, v8
div-double/2addr v4, v6
mul-double p1, p1, v4
aget v0, v1, v3
float-to-double v0, v0
aget-wide v6, v2, v3
mul-double v4, v4, v6
sub-double/2addr v0, v4
add-double/2addr v0, p1
:cond_3
return-wide v0
.end method
.method public getP(D)D
.locals 10
const-wide/high16 v0, 0x3ff0000000000000L # 1.0
const-wide/16 v2, 0x0
cmpg-double v4, p1, v2
if-gez v4, :cond_0
move-wide p1, v2
goto :goto_0
:cond_0
cmpl-double v4, p1, v0
if-lez v4, :cond_1
move-wide p1, v0
:cond_1
:goto_0
iget-object v4, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
invoke-static {v4, p1, p2}, Ljava/util/Arrays;->binarySearch([DD)I
move-result v4
if-lez v4, :cond_2
goto :goto_1
:cond_2
if-eqz v4, :cond_3
neg-int v0, v4
add-int/lit8 v0, v0, -0x1
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
aget v2, v1, v0
add-int/lit8 v3, v0, -0x1
aget v4, v1, v3
sub-float/2addr v2, v4
float-to-double v4, v2
iget-object v2, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
aget-wide v6, v2, v0
aget-wide v8, v2, v3
sub-double/2addr v6, v8
div-double/2addr v4, v6
iget-object v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mArea:[D
aget-wide v6, v0, v3
aget v0, v1, v3
float-to-double v0, v0
aget-wide v8, v2, v3
mul-double v8, v8, v4
sub-double/2addr v0, v8
aget-wide v8, v2, v3
sub-double v8, p1, v8
mul-double v8, v8, v0
add-double/2addr v8, v6
mul-double p1, p1, p1
aget-wide v0, v2, v3
aget-wide v6, v2, v3
mul-double v0, v0, v6
sub-double/2addr p1, v0
mul-double p1, p1, v4
const-wide/high16 v0, 0x4000000000000000L # 2.0
div-double/2addr p1, v0
add-double v0, p1, v8
goto :goto_1
:cond_3
move-wide v0, v2
:goto_1
return-wide v0
.end method
.method public getSlope(D)D
.locals 9
iget v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mType:I
const-wide/high16 v1, 0x4000000000000000L # 2.0
const-wide/high16 v3, 0x4010000000000000L # 4.0
packed-switch v0, :pswitch_data_0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->PI2:D
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getDP(D)D
move-result-wide v2
mul-double v2, v2, v0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->PI2:D
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v0
invoke-static {p1, p2}, Ljava/lang/Math;->cos(D)D
move-result-wide p1
mul-double p1, p1, v2
return-wide p1
:pswitch_0
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getDP(D)D
move-result-wide v5
mul-double v5, v5, v3
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v3
add-double/2addr p1, v1
rem-double/2addr p1, v3
sub-double/2addr p1, v1
mul-double p1, p1, v5
return-wide p1
:pswitch_1
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->PI2:D
neg-double v0, v0
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getDP(D)D
move-result-wide v2
mul-double v2, v2, v0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->PI2:D
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v0
invoke-static {p1, p2}, Ljava/lang/Math;->sin(D)D
move-result-wide p1
mul-double p1, p1, v2
return-wide p1
:pswitch_2
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getDP(D)D
move-result-wide p1
neg-double p1, p1
mul-double p1, p1, v1
return-wide p1
:pswitch_3
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getDP(D)D
move-result-wide p1
mul-double p1, p1, v1
return-wide p1
:pswitch_4
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getDP(D)D
move-result-wide v5
mul-double v5, v5, v3
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v3
const-wide/high16 v7, 0x4008000000000000L # 3.0
add-double/2addr p1, v7
rem-double/2addr p1, v3
sub-double/2addr p1, v1
invoke-static {p1, p2}, Ljava/lang/Math;->signum(D)D
move-result-wide p1
mul-double p1, p1, v5
return-wide p1
:pswitch_5
const-wide/16 p1, 0x0
return-wide p1
:pswitch_data_0
.packed-switch 0x1
:pswitch_5
:pswitch_4
:pswitch_3
:pswitch_2
:pswitch_1
:pswitch_0
.end packed-switch
.end method
.method public getValue(D)D
.locals 7
iget v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mType:I
const-wide/high16 v1, 0x4010000000000000L # 4.0
const-wide/high16 v3, 0x4000000000000000L # 2.0
const-wide/high16 v5, 0x3ff0000000000000L # 1.0
packed-switch v0, :pswitch_data_0
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->PI2:D
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v0
invoke-static {p1, p2}, Ljava/lang/Math;->sin(D)D
move-result-wide p1
return-wide p1
:pswitch_0
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v1
rem-double/2addr p1, v1
sub-double/2addr p1, v3
invoke-static {p1, p2}, Ljava/lang/Math;->abs(D)D
move-result-wide p1
sub-double p1, v5, p1
mul-double p1, p1, p1
:goto_0
sub-double/2addr v5, p1
return-wide v5
:pswitch_1
iget-wide v0, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->PI2:D
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v0
invoke-static {p1, p2}, Ljava/lang/Math;->cos(D)D
move-result-wide p1
return-wide p1
:pswitch_2
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v3
add-double/2addr p1, v5
rem-double/2addr p1, v3
goto :goto_0
:pswitch_3
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v3
add-double/2addr p1, v5
rem-double/2addr p1, v3
sub-double/2addr p1, v5
return-wide p1
:pswitch_4
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
mul-double p1, p1, v1
add-double/2addr p1, v5
rem-double/2addr p1, v1
sub-double/2addr p1, v3
invoke-static {p1, p2}, Ljava/lang/Math;->abs(D)D
move-result-wide p1
goto :goto_0
:pswitch_5
const-wide/high16 v0, 0x3fe0000000000000L # 0.5
invoke-virtual {p0, p1, p2}, Landroidx/constraintlayout/motion/utils/Oscillator;->getP(D)D
move-result-wide p1
rem-double/2addr p1, v5
sub-double/2addr v0, p1
invoke-static {v0, v1}, Ljava/lang/Math;->signum(D)D
move-result-wide p1
return-wide p1
nop
:pswitch_data_0
.packed-switch 0x1
:pswitch_5
:pswitch_4
:pswitch_3
:pswitch_2
:pswitch_1
:pswitch_0
.end packed-switch
.end method
.method public normalize()V
.locals 17
move-object/from16 v0, p0
const/4 v1, 0x0
const-wide/16 v2, 0x0
move-wide v5, v2
const/4 v4, 0x0
:goto_0
iget-object v7, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
array-length v8, v7
if-ge v4, v8, :cond_0
aget v7, v7, v4
float-to-double v7, v7
add-double/2addr v5, v7
add-int/lit8 v4, v4, 0x1
goto :goto_0
:cond_0
const/4 v4, 0x1
move-wide v8, v2
const/4 v7, 0x1
:goto_1
iget-object v10, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
array-length v11, v10
const/high16 v12, 0x40000000 # 2.0f
if-ge v7, v11, :cond_1
add-int/lit8 v11, v7, -0x1
aget v13, v10, v11
aget v10, v10, v7
add-float/2addr v13, v10
div-float/2addr v13, v12
iget-object v10, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
aget-wide v14, v10, v7
aget-wide v11, v10, v11
sub-double/2addr v14, v11
float-to-double v10, v13
mul-double v14, v14, v10
add-double/2addr v8, v14
add-int/lit8 v7, v7, 0x1
goto :goto_1
:cond_1
const/4 v7, 0x0
:goto_2
iget-object v10, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
array-length v11, v10
if-ge v7, v11, :cond_2
aget v11, v10, v7
float-to-double v13, v11
div-double v15, v5, v8
mul-double v13, v13, v15
double-to-float v11, v13
aput v11, v10, v7
add-int/lit8 v7, v7, 0x1
goto :goto_2
:cond_2
iget-object v5, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mArea:[D
aput-wide v2, v5, v1
const/4 v1, 0x1
:goto_3
iget-object v2, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
array-length v3, v2
if-ge v1, v3, :cond_3
add-int/lit8 v3, v1, -0x1
aget v5, v2, v3
aget v2, v2, v1
add-float/2addr v5, v2
div-float/2addr v5, v12
iget-object v2, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
aget-wide v6, v2, v1
aget-wide v8, v2, v3
sub-double/2addr v6, v8
iget-object v2, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mArea:[D
aget-wide v8, v2, v3
float-to-double v10, v5
mul-double v6, v6, v10
add-double/2addr v6, v8
aput-wide v6, v2, v1
add-int/lit8 v1, v1, 0x1
goto :goto_3
:cond_3
iput-boolean v4, v0, Landroidx/constraintlayout/motion/utils/Oscillator;->mNormalized:Z
return-void
.end method
.method public setType(I)V
.locals 0
iput p1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mType:I
return-void
.end method
.method public toString()Ljava/lang/String;
.locals 2
const-string v0, "pos ="
invoke-static {v0}, Lf/e/b/a/a;->E(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPosition:[D
invoke-static {v1}, Ljava/util/Arrays;->toString([D)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, " period="
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/Oscillator;->mPeriod:[F
invoke-static {v1}, Ljava/util/Arrays;->toString([F)Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
return-object v0
.end method

View file

@ -0,0 +1,979 @@
.class public Landroidx/constraintlayout/motion/utils/StopLogic;
.super Landroidx/constraintlayout/motion/widget/MotionInterpolator;
.source "StopLogic.java"
# instance fields
.field public mBackwards:Z
.field public mLastPosition:F
.field public mNumberOfStages:I
.field public mStage1Duration:F
.field public mStage1EndPosition:F
.field public mStage1Velocity:F
.field public mStage2Duration:F
.field public mStage2EndPosition:F
.field public mStage2Velocity:F
.field public mStage3Duration:F
.field public mStage3EndPosition:F
.field public mStage3Velocity:F
.field public mStartPosition:F
.field public mType:Ljava/lang/String;
# direct methods
.method public constructor <init>()V
.locals 1
invoke-direct {p0}, Landroidx/constraintlayout/motion/widget/MotionInterpolator;-><init>()V
const/4 v0, 0x0
iput-boolean v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z
return-void
.end method
.method private calcY(F)F
.locals 5
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
const/high16 v1, 0x40000000 # 2.0f
cmpg-float v2, p1, v0
if-gtz v2, :cond_0
iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
mul-float v3, v2, p1
iget v4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
sub-float/2addr v4, v2
mul-float v4, v4, p1
mul-float v4, v4, p1
mul-float v0, v0, v1
div-float/2addr v4, v0
add-float/2addr v4, v3
return v4
:cond_0
iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
const/4 v3, 0x1
if-ne v2, v3, :cond_1
iget p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
return p1
:cond_1
sub-float/2addr p1, v0
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
cmpg-float v3, p1, v0
if-gez v3, :cond_2
iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
iget v3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
mul-float v4, v3, p1
add-float/2addr v4, v2
iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
sub-float/2addr v2, v3
mul-float v2, v2, p1
mul-float v2, v2, p1
mul-float v0, v0, v1
div-float/2addr v2, v0
add-float/2addr v2, v4
return v2
:cond_2
const/4 v3, 0x2
if-ne v2, v3, :cond_3
iget p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
return p1
:cond_3
sub-float/2addr p1, v0
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F
cmpg-float v2, p1, v0
if-gez v2, :cond_4
iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
iget v3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
mul-float v4, v3, p1
add-float/2addr v4, v2
mul-float v3, v3, p1
mul-float v3, v3, p1
mul-float v0, v0, v1
div-float/2addr v3, v0
sub-float/2addr v4, v3
return v4
:cond_4
iget p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F
return p1
.end method
.method private setup(FFFFF)V
.locals 8
const/4 v0, 0x0
cmpl-float v1, p1, v0
if-nez v1, :cond_0
const p1, 0x38d1b717 # 1.0E-4f
:cond_0
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
div-float v1, p1, p3
mul-float v2, v1, p1
const/high16 v3, 0x40000000 # 2.0f
div-float/2addr v2, v3
const/4 v4, 0x3
const/4 v5, 0x2
cmpg-float v6, p1, v0
if-gez v6, :cond_2
neg-float p5, p1
div-float/2addr p5, p3
mul-float p5, p5, p1
div-float/2addr p5, v3
sub-float p5, p2, p5
mul-float p5, p5, p3
float-to-double v1, p5
invoke-static {v1, v2}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v1
double-to-float p5, v1
cmpg-float v1, p5, p4
if-gez v1, :cond_1
const-string p4, "backward accelerate, decelerate"
iput-object p4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;
iput v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
iput p5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
iput v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
sub-float p4, p5, p1
div-float/2addr p4, p3
iput p4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
div-float p3, p5, p3
iput p3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
add-float/2addr p1, p5
mul-float p1, p1, p4
div-float/2addr p1, v3
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
iput p2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
iput p2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F
return-void
:cond_1
const-string p5, "backward accelerate cruse decelerate"
iput-object p5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;
iput v4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
iput p4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
iput p4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
sub-float p5, p4, p1
div-float/2addr p5, p3
iput p5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
div-float p3, p4, p3
iput p3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F
add-float/2addr p1, p4
mul-float p1, p1, p5
div-float/2addr p1, v3
mul-float p3, p3, p4
div-float/2addr p3, v3
sub-float p5, p2, p1
sub-float/2addr p5, p3
div-float/2addr p5, p4
iput p5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
sub-float p1, p2, p3
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
iput p2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F
return-void
:cond_2
cmpl-float v6, v2, p2
if-ltz v6, :cond_3
const-string p3, "hard stop"
iput-object p3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;
mul-float v3, v3, p2
div-float/2addr v3, p1
const/4 p3, 0x1
iput p3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
iput v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
iput p2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
iput v3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
return-void
:cond_3
sub-float v2, p2, v2
div-float v6, v2, p1
add-float v7, v6, v1
cmpg-float p5, v7, p5
if-gez p5, :cond_4
const-string p3, "cruse decelerate"
iput-object p3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;
iput v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
iput v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
iput v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
iput p2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
iput v6, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
iput v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
return-void
:cond_4
mul-float p5, p3, p2
mul-float v1, p1, p1
div-float/2addr v1, v3
add-float/2addr v1, p5
float-to-double v1, v1
invoke-static {v1, v2}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v1
double-to-float p5, v1
sub-float v1, p5, p1
div-float/2addr v1, p3
iput v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
div-float v2, p5, p3
iput v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
cmpg-float v6, p5, p4
if-gez v6, :cond_5
const-string p3, "accelerate decelerate"
iput-object p3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;
iput v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
iput p5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
iput v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
iput v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
iput v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
add-float/2addr p1, p5
mul-float p1, p1, v1
div-float/2addr p1, v3
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
iput p2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
return-void
:cond_5
const-string p5, "accelerate cruse decelerate"
iput-object p5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;
iput v4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
iput p4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
iput p4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
sub-float p5, p4, p1
div-float/2addr p5, p3
iput p5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
div-float p3, p4, p3
iput p3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F
add-float/2addr p1, p4
mul-float p1, p1, p5
div-float/2addr p1, v3
mul-float p3, p3, p4
div-float/2addr p3, v3
sub-float p5, p2, p1
sub-float/2addr p5, p3
div-float/2addr p5, p4
iput p5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
sub-float p1, p2, p3
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
iput p2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F
return-void
.end method
# virtual methods
.method public config(FFFFFF)V
.locals 6
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStartPosition:F
cmpl-float v1, p1, p2
if-lez v1, :cond_0
const/4 v1, 0x1
goto :goto_0
:cond_0
const/4 v1, 0x0
:goto_0
iput-boolean v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z
if-eqz v1, :cond_1
neg-float v1, p3
sub-float v2, p1, p2
move-object v0, p0
move v3, p5
move v4, p6
move v5, p4
invoke-direct/range {v0 .. v5}, Landroidx/constraintlayout/motion/utils/StopLogic;->setup(FFFFF)V
goto :goto_1
:cond_1
sub-float v2, p2, p1
move-object v0, p0
move v1, p3
move v3, p5
move v4, p6
move v5, p4
invoke-direct/range {v0 .. v5}, Landroidx/constraintlayout/motion/utils/StopLogic;->setup(FFFFF)V
:goto_1
return-void
.end method
.method public debug(Ljava/lang/String;Ljava/lang/String;F)V
.locals 6
const-string v0, " ===== "
invoke-static {p2, v0}, Lf/e/b/a/a;->J(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget-object v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-boolean v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z
if-eqz v1, :cond_0
const-string v1, "backwards"
goto :goto_0
:cond_0
const-string v1, "forward "
:goto_0
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, " time = "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
const-string v1, " stages "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, " dur "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
const-string v2, " vel "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
const-string v3, " pos "
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
const/4 v4, 0x1
if-le v0, v4, :cond_1
invoke-static {p2, v1}, Lf/e/b/a/a;->J(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
:cond_1
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
const/4 v5, 0x2
if-le v0, v5, :cond_2
invoke-static {p2, v1}, Lf/e/b/a/a;->J(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
:cond_2
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
cmpg-float v1, p3, v0
if-gtz v1, :cond_3
new-instance p3, Ljava/lang/StringBuilder;
invoke-direct {p3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p2, "stage 0"
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p1, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
return-void
:cond_3
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
if-ne v1, v4, :cond_4
new-instance p3, Ljava/lang/StringBuilder;
invoke-direct {p3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p2, "end stage 0"
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p1, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
return-void
:cond_4
sub-float/2addr p3, v0
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
cmpg-float v2, p3, v0
if-gez v2, :cond_5
new-instance p3, Ljava/lang/StringBuilder;
invoke-direct {p3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p2, " stage 1"
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p1, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
return-void
:cond_5
if-ne v1, v5, :cond_6
new-instance p3, Ljava/lang/StringBuilder;
invoke-direct {p3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p2, "end stage 1"
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p1, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
return-void
:cond_6
sub-float/2addr p3, v0
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F
cmpg-float p3, p3, v0
if-gez p3, :cond_7
new-instance p3, Ljava/lang/StringBuilder;
invoke-direct {p3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p2, " stage 2"
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p1, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
return-void
:cond_7
new-instance p3, Ljava/lang/StringBuilder;
invoke-direct {p3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p2, " end stage 2"
invoke-virtual {p3, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-static {p1, p2}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
return-void
.end method
.method public getInterpolation(F)F
.locals 1
invoke-direct {p0, p1}, Landroidx/constraintlayout/motion/utils/StopLogic;->calcY(F)F
move-result v0
iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mLastPosition:F
iget-boolean p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z
if-eqz p1, :cond_0
iget p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStartPosition:F
sub-float/2addr p1, v0
goto :goto_0
:cond_0
iget p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStartPosition:F
add-float/2addr p1, v0
:goto_0
return p1
.end method
.method public getVelocity()F
.locals 1
iget-boolean v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z
if-eqz v0, :cond_0
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mLastPosition:F
invoke-virtual {p0, v0}, Landroidx/constraintlayout/motion/utils/StopLogic;->getVelocity(F)F
move-result v0
neg-float v0, v0
goto :goto_0
:cond_0
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mLastPosition:F
invoke-virtual {p0, v0}, Landroidx/constraintlayout/motion/utils/StopLogic;->getVelocity(F)F
move-result v0
:goto_0
return v0
.end method
.method public getVelocity(F)F
.locals 3
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F
cmpg-float v1, p1, v0
if-gtz v1, :cond_0
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F
iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
:goto_0
sub-float/2addr v2, v1
mul-float v2, v2, p1
div-float/2addr v2, v0
add-float/2addr v2, v1
return v2
:cond_0
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I
const/4 v2, 0x1
if-ne v1, v2, :cond_1
const/4 p1, 0x0
return p1
:cond_1
sub-float/2addr p1, v0
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F
cmpg-float v2, p1, v0
if-gez v2, :cond_2
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F
iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
goto :goto_0
:cond_2
const/4 v2, 0x2
if-ne v1, v2, :cond_3
iget p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F
return p1
:cond_3
sub-float/2addr p1, v0
iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F
cmpg-float v1, p1, v0
if-gez v1, :cond_4
iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F
mul-float p1, p1, v1
div-float/2addr p1, v0
sub-float/2addr v1, p1
return v1
:cond_4
iget p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F
return p1
.end method

View file

@ -0,0 +1,328 @@
.class public Landroidx/constraintlayout/motion/utils/VelocityMatrix;
.super Ljava/lang/Object;
.source "VelocityMatrix.java"
# static fields
.field public static TAG:Ljava/lang/String; = "VelocityMatrix"
# instance fields
.field public mDRotate:F
.field public mDScaleX:F
.field public mDScaleY:F
.field public mDTranslateX:F
.field public mDTranslateY:F
.field public mRotate:F
# direct methods
.method public constructor <init>()V
.locals 0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public applyTransform(FFII[F)V
.locals 16
move-object/from16 v0, p0
move/from16 v1, p3
const/4 v2, 0x0
aget v3, p5, v2
const/4 v4, 0x1
aget v5, p5, v4
const/high16 v6, 0x3f000000 # 0.5f
sub-float v7, p1, v6
const/high16 v8, 0x40000000 # 2.0f
mul-float v7, v7, v8
sub-float v6, p2, v6
mul-float v6, v6, v8
iget v8, v0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDTranslateX:F
add-float/2addr v3, v8
iget v8, v0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDTranslateY:F
add-float/2addr v5, v8
iget v8, v0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDScaleX:F
mul-float v8, v8, v7
add-float/2addr v8, v3
iget v3, v0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDScaleY:F
mul-float v3, v3, v6
add-float/2addr v3, v5
iget v5, v0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mRotate:F
float-to-double v9, v5
invoke-static {v9, v10}, Ljava/lang/Math;->toRadians(D)D
move-result-wide v9
double-to-float v5, v9
iget v9, v0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDRotate:F
float-to-double v9, v9
invoke-static {v9, v10}, Ljava/lang/Math;->toRadians(D)D
move-result-wide v9
double-to-float v9, v9
neg-int v10, v1
int-to-float v10, v10
mul-float v10, v10, v7
float-to-double v10, v10
float-to-double v12, v5
invoke-static {v12, v13}, Ljava/lang/Math;->sin(D)D
move-result-wide v14
mul-double v14, v14, v10
move/from16 v5, p4
int-to-float v5, v5
mul-float v5, v5, v6
float-to-double v5, v5
invoke-static {v12, v13}, Ljava/lang/Math;->cos(D)D
move-result-wide v10
mul-double v10, v10, v5
sub-double/2addr v14, v10
double-to-float v10, v14
mul-float v10, v10, v9
add-float/2addr v10, v8
int-to-float v1, v1
mul-float v1, v1, v7
float-to-double v7, v1
invoke-static {v12, v13}, Ljava/lang/Math;->cos(D)D
move-result-wide v14
mul-double v14, v14, v7
invoke-static {v12, v13}, Ljava/lang/Math;->sin(D)D
move-result-wide v7
mul-double v7, v7, v5
sub-double/2addr v14, v7
double-to-float v1, v14
mul-float v9, v9, v1
add-float/2addr v9, v3
aput v10, p5, v2
aput v9, p5, v4
return-void
.end method
.method public clear()V
.locals 1
const/4 v0, 0x0
iput v0, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDRotate:F
iput v0, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDTranslateY:F
iput v0, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDTranslateX:F
iput v0, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDScaleY:F
iput v0, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDScaleX:F
return-void
.end method
.method public setRotationVelocity(Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;F)V
.locals 0
if-eqz p1, :cond_0
invoke-virtual {p1, p2}, Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDRotate:F
:cond_0
return-void
.end method
.method public setRotationVelocity(Landroidx/constraintlayout/motion/widget/SplineSet;F)V
.locals 1
if-eqz p1, :cond_0
invoke-virtual {p1, p2}, Landroidx/constraintlayout/motion/widget/SplineSet;->getSlope(F)F
move-result v0
iput v0, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDRotate:F
invoke-virtual {p1, p2}, Landroidx/constraintlayout/motion/widget/SplineSet;->get(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mRotate:F
:cond_0
return-void
.end method
.method public setScaleVelocity(Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;F)V
.locals 0
if-nez p1, :cond_0
if-nez p2, :cond_0
return-void
:cond_0
if-nez p1, :cond_1
invoke-virtual {p1, p3}, Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDScaleX:F
:cond_1
if-nez p2, :cond_2
invoke-virtual {p2, p3}, Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDScaleY:F
:cond_2
return-void
.end method
.method public setScaleVelocity(Landroidx/constraintlayout/motion/widget/SplineSet;Landroidx/constraintlayout/motion/widget/SplineSet;F)V
.locals 0
if-eqz p1, :cond_0
invoke-virtual {p1, p3}, Landroidx/constraintlayout/motion/widget/SplineSet;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDScaleX:F
:cond_0
if-eqz p2, :cond_1
invoke-virtual {p2, p3}, Landroidx/constraintlayout/motion/widget/SplineSet;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDScaleY:F
:cond_1
return-void
.end method
.method public setTranslationVelocity(Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;F)V
.locals 0
if-eqz p1, :cond_0
invoke-virtual {p1, p3}, Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDTranslateX:F
:cond_0
if-eqz p2, :cond_1
invoke-virtual {p2, p3}, Landroidx/constraintlayout/motion/widget/KeyCycleOscillator;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDTranslateY:F
:cond_1
return-void
.end method
.method public setTranslationVelocity(Landroidx/constraintlayout/motion/widget/SplineSet;Landroidx/constraintlayout/motion/widget/SplineSet;F)V
.locals 0
if-eqz p1, :cond_0
invoke-virtual {p1, p3}, Landroidx/constraintlayout/motion/widget/SplineSet;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDTranslateX:F
:cond_0
if-eqz p2, :cond_1
invoke-virtual {p2, p3}, Landroidx/constraintlayout/motion/widget/SplineSet;->getSlope(F)F
move-result p1
iput p1, p0, Landroidx/constraintlayout/motion/utils/VelocityMatrix;->mDTranslateY:F
:cond_1
return-void
.end method