public class android.transition.ArcMotion extends android.transition.PathMotion
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: android.transition.ArcMotion
super_class: android.transition.PathMotion
{
private static final float DEFAULT_MIN_ANGLE_DEGREES;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0.0
private static final float DEFAULT_MAX_ANGLE_DEGREES;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 70.0
private static final float DEFAULT_MAX_TANGENT;
descriptor: F
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private float mMinimumHorizontalAngle;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private float mMinimumVerticalAngle;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private float mMaximumAngle;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private float mMinimumHorizontalTangent;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private float mMinimumVerticalTangent;
descriptor: F
flags: (0x0002) ACC_PRIVATE
private float mMaximumTangent;
descriptor: F
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: .line 52
ldc 35.0
invokestatic java.lang.Math.toRadians:(D)D
invokestatic java.lang.Math.tan:(D)D
d2f
1: .line 51
putstatic android.transition.ArcMotion.DEFAULT_MAX_TANGENT:F
2: .line 52
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 // android.transition.ArcMotion this
0: .line 61
aload 0 /* this */
invokespecial android.transition.PathMotion.<init>:()V
1: .line 54
aload 0 /* this */
fconst_0
putfield android.transition.ArcMotion.mMinimumHorizontalAngle:F
2: .line 55
aload 0 /* this */
fconst_0
putfield android.transition.ArcMotion.mMinimumVerticalAngle:F
3: .line 56
aload 0 /* this */
ldc 70.0
putfield android.transition.ArcMotion.mMaximumAngle:F
4: .line 57
aload 0 /* this */
fconst_0
putfield android.transition.ArcMotion.mMinimumHorizontalTangent:F
5: .line 58
aload 0 /* this */
fconst_0
putfield android.transition.ArcMotion.mMinimumVerticalTangent:F
6: .line 59
aload 0 /* this */
getstatic android.transition.ArcMotion.DEFAULT_MAX_TANGENT:F
putfield android.transition.ArcMotion.mMaximumTangent:F
7: .line 61
return
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Landroid/transition/ArcMotion;
public void <init>(android.content.Context, android.util.AttributeSet);
descriptor: (Landroid/content/Context;Landroid/util/AttributeSet;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 // android.transition.ArcMotion this
0: .line 23
new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tThe import com.android.internal.R cannot be resolved\n\tR cannot be resolved to a variable\n\tR cannot be resolved to a variable\n\tR cannot be resolved to a variable\n\tR cannot be resolved to a variable\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/transition/ArcMotion;
MethodParameters:
Name Flags
context
attrs
public void setMinimumHorizontalAngle(float);
descriptor: (F)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // android.transition.ArcMotion this
start local 1 // float angleInDegrees
0: .line 91
aload 0 /* this */
fload 1 /* angleInDegrees */
putfield android.transition.ArcMotion.mMinimumHorizontalAngle:F
1: .line 92
aload 0 /* this */
fload 1 /* angleInDegrees */
invokestatic android.transition.ArcMotion.toTangent:(F)F
putfield android.transition.ArcMotion.mMinimumHorizontalTangent:F
2: .line 93
return
end local 1 // float angleInDegrees
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Landroid/transition/ArcMotion;
0 3 1 angleInDegrees F
MethodParameters:
Name Flags
angleInDegrees
public float getMinimumHorizontalAngle();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // android.transition.ArcMotion this
0: .line 107
aload 0 /* this */
getfield android.transition.ArcMotion.mMinimumHorizontalAngle:F
freturn
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/transition/ArcMotion;
public void setMinimumVerticalAngle(float);
descriptor: (F)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // android.transition.ArcMotion this
start local 1 // float angleInDegrees
0: .line 123
aload 0 /* this */
fload 1 /* angleInDegrees */
putfield android.transition.ArcMotion.mMinimumVerticalAngle:F
1: .line 124
aload 0 /* this */
fload 1 /* angleInDegrees */
invokestatic android.transition.ArcMotion.toTangent:(F)F
putfield android.transition.ArcMotion.mMinimumVerticalTangent:F
2: .line 125
return
end local 1 // float angleInDegrees
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Landroid/transition/ArcMotion;
0 3 1 angleInDegrees F
MethodParameters:
Name Flags
angleInDegrees
public float getMinimumVerticalAngle();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // android.transition.ArcMotion this
0: .line 140
aload 0 /* this */
getfield android.transition.ArcMotion.mMinimumVerticalAngle:F
freturn
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/transition/ArcMotion;
public void setMaximumAngle(float);
descriptor: (F)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 // android.transition.ArcMotion this
start local 1 // float angleInDegrees
0: .line 154
aload 0 /* this */
fload 1 /* angleInDegrees */
putfield android.transition.ArcMotion.mMaximumAngle:F
1: .line 155
aload 0 /* this */
fload 1 /* angleInDegrees */
invokestatic android.transition.ArcMotion.toTangent:(F)F
putfield android.transition.ArcMotion.mMaximumTangent:F
2: .line 156
return
end local 1 // float angleInDegrees
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Landroid/transition/ArcMotion;
0 3 1 angleInDegrees F
MethodParameters:
Name Flags
angleInDegrees
public float getMaximumAngle();
descriptor: ()F
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // android.transition.ArcMotion this
0: .line 169
aload 0 /* this */
getfield android.transition.ArcMotion.mMaximumAngle:F
freturn
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/transition/ArcMotion;
private static float toTangent(float);
descriptor: (F)F
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 // float arcInDegrees
0: .line 173
fload 0 /* arcInDegrees */
fconst_0
fcmpg
iflt 1
fload 0 /* arcInDegrees */
ldc 90.0
fcmpl
ifle 2
1: .line 174
StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Arc must be between 0 and 90 degrees"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 176
StackMap locals:
StackMap stack:
fload 0 /* arcInDegrees */
fconst_2
fdiv
f2d
invokestatic java.lang.Math.toRadians:(D)D
invokestatic java.lang.Math.tan:(D)D
d2f
freturn
end local 0 // float arcInDegrees
LocalVariableTable:
Start End Slot Name Signature
0 3 0 arcInDegrees F
MethodParameters:
Name Flags
arcInDegrees
public android.graphics.Path getPath(float, float, float, float);
descriptor: (FFFF)Landroid/graphics/Path;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=25, args_size=5
start local 0 // android.transition.ArcMotion this
start local 1 // float startX
start local 2 // float startY
start local 3 // float endX
start local 4 // float endY
0: .line 197
new android.graphics.Path
dup
invokespecial android.graphics.Path.<init>:()V
astore 5 /* path */
start local 5 // android.graphics.Path path
1: .line 198
aload 5 /* path */
fload 1 /* startX */
fload 2 /* startY */
invokevirtual android.graphics.Path.moveTo:(FF)V
2: .line 202
fload 3 /* endX */
fload 1 /* startX */
fsub
fstore 8 /* deltaX */
start local 8 // float deltaX
3: .line 203
fload 4 /* endY */
fload 2 /* startY */
fsub
fstore 9 /* deltaY */
start local 9 // float deltaY
4: .line 206
fload 8 /* deltaX */
fload 8 /* deltaX */
fmul
fload 9 /* deltaY */
fload 9 /* deltaY */
fmul
fadd
fstore 10 /* h2 */
start local 10 // float h2
5: .line 209
fload 1 /* startX */
fload 3 /* endX */
fadd
fconst_2
fdiv
fstore 11 /* dx */
start local 11 // float dx
6: .line 210
fload 2 /* startY */
fload 4 /* endY */
fadd
fconst_2
fdiv
fstore 12 /* dy */
start local 12 // float dy
7: .line 213
fload 10 /* h2 */
ldc 0.25
fmul
fstore 13 /* midDist2 */
start local 13 // float midDist2
8: .line 215
fconst_0
fstore 14 /* minimumArcDist2 */
start local 14 // float minimumArcDist2
9: .line 217
fload 2 /* startY */
fload 4 /* endY */
fcmpl
ifle 10
iconst_1
goto 11
StackMap locals: android.transition.ArcMotion float float float float android.graphics.Path top top float float float float float float float
StackMap stack:
10: iconst_0
StackMap locals:
StackMap stack: int
11: istore 15 /* isMovingUpwards */
start local 15 // boolean isMovingUpwards
12: .line 219
fload 9 /* deltaY */
fconst_0
fcmpl
ifne 16
13: .line 220
fload 11 /* dx */
fstore 6 /* ex */
start local 6 // float ex
14: .line 221
fload 12 /* dy */
fload 8 /* deltaX */
invokestatic java.lang.Math.abs:(F)F
ldc 0.5
fmul
aload 0 /* this */
getfield android.transition.ArcMotion.mMinimumHorizontalTangent:F
fmul
fadd
fstore 7 /* ey */
start local 7 // float ey
15: .line 222
goto 42
end local 7 // float ey
end local 6 // float ex
StackMap locals: int
StackMap stack:
16: fload 8 /* deltaX */
fconst_0
fcmpl
ifne 20
17: .line 223
fload 11 /* dx */
fload 9 /* deltaY */
invokestatic java.lang.Math.abs:(F)F
ldc 0.5
fmul
aload 0 /* this */
getfield android.transition.ArcMotion.mMinimumVerticalTangent:F
fmul
fadd
fstore 6 /* ex */
start local 6 // float ex
18: .line 224
fload 12 /* dy */
fstore 7 /* ey */
start local 7 // float ey
19: .line 225
goto 42
end local 7 // float ey
end local 6 // float ex
StackMap locals:
StackMap stack:
20: fload 8 /* deltaX */
invokestatic java.lang.Math.abs:(F)F
fload 9 /* deltaY */
invokestatic java.lang.Math.abs:(F)F
fcmpg
ifge 32
21: .line 231
fload 10 /* h2 */
fconst_2
fload 9 /* deltaY */
fmul
fdiv
invokestatic java.lang.Math.abs:(F)F
fstore 16 /* eDistY */
start local 16 // float eDistY
22: .line 232
iload 15 /* isMovingUpwards */
ifeq 26
23: .line 233
fload 4 /* endY */
fload 16 /* eDistY */
fadd
fstore 7 /* ey */
start local 7 // float ey
24: .line 234
fload 3 /* endX */
fstore 6 /* ex */
start local 6 // float ex
25: .line 235
goto 28
end local 7 // float ey
end local 6 // float ex
26: .line 236
StackMap locals: float
StackMap stack:
fload 2 /* startY */
fload 16 /* eDistY */
fadd
fstore 7 /* ey */
start local 7 // float ey
27: .line 237
fload 1 /* startX */
fstore 6 /* ex */
start local 6 // float ex
28: .line 240
StackMap locals: android.transition.ArcMotion float float float float android.graphics.Path float float float float float float float float float int float
StackMap stack:
fload 13 /* midDist2 */
aload 0 /* this */
getfield android.transition.ArcMotion.mMinimumVerticalTangent:F
fmul
29: .line 241
aload 0 /* this */
getfield android.transition.ArcMotion.mMinimumVerticalTangent:F
30: .line 240
fmul
fstore 14 /* minimumArcDist2 */
end local 16 // float eDistY
31: .line 242
goto 42
end local 7 // float ey
end local 6 // float ex
32: .line 244
StackMap locals: android.transition.ArcMotion float float float float android.graphics.Path top top float float float float float float float int
StackMap stack:
fload 10 /* h2 */
fconst_2
fload 8 /* deltaX */
fmul
fdiv
fstore 16 /* eDistX */
start local 16 // float eDistX
33: .line 245
iload 15 /* isMovingUpwards */
ifeq 37
34: .line 246
fload 1 /* startX */
fload 16 /* eDistX */
fadd
fstore 6 /* ex */
start local 6 // float ex
35: .line 247
fload 2 /* startY */
fstore 7 /* ey */
start local 7 // float ey
36: .line 248
goto 39
end local 7 // float ey
end local 6 // float ex
37: .line 249
StackMap locals: float
StackMap stack:
fload 3 /* endX */
fload 16 /* eDistX */
fsub
fstore 6 /* ex */
start local 6 // float ex
38: .line 250
fload 4 /* endY */
fstore 7 /* ey */
start local 7 // float ey
39: .line 253
StackMap locals: android.transition.ArcMotion float float float float android.graphics.Path float float float float float float float float float int float
StackMap stack:
fload 13 /* midDist2 */
aload 0 /* this */
getfield android.transition.ArcMotion.mMinimumHorizontalTangent:F
fmul
40: .line 254
aload 0 /* this */
getfield android.transition.ArcMotion.mMinimumHorizontalTangent:F
41: .line 253
fmul
fstore 14 /* minimumArcDist2 */
end local 16 // float eDistX
42: .line 256
StackMap locals:
StackMap stack:
fload 11 /* dx */
fload 6 /* ex */
fsub
fstore 16 /* arcDistX */
start local 16 // float arcDistX
43: .line 257
fload 12 /* dy */
fload 7 /* ey */
fsub
fstore 17 /* arcDistY */
start local 17 // float arcDistY
44: .line 258
fload 16 /* arcDistX */
fload 16 /* arcDistX */
fmul
fload 17 /* arcDistY */
fload 17 /* arcDistY */
fmul
fadd
fstore 18 /* arcDist2 */
start local 18 // float arcDist2
45: .line 260
fload 13 /* midDist2 */
aload 0 /* this */
getfield android.transition.ArcMotion.mMaximumTangent:F
fmul
aload 0 /* this */
getfield android.transition.ArcMotion.mMaximumTangent:F
fmul
fstore 19 /* maximumArcDist2 */
start local 19 // float maximumArcDist2
46: .line 262
fconst_0
fstore 20 /* newArcDistance2 */
start local 20 // float newArcDistance2
47: .line 263
fload 18 /* arcDist2 */
fconst_0
fcmpl
ifeq 50
fload 18 /* arcDist2 */
fload 14 /* minimumArcDist2 */
fcmpg
ifge 50
48: .line 264
fload 14 /* minimumArcDist2 */
fstore 20 /* newArcDistance2 */
49: .line 265
goto 52
StackMap locals: android.transition.ArcMotion float float float float android.graphics.Path float float float float float float float float float int float float float float float
StackMap stack:
50: fload 18 /* arcDist2 */
fload 19 /* maximumArcDist2 */
fcmpl
ifle 52
51: .line 266
fload 19 /* maximumArcDist2 */
fstore 20 /* newArcDistance2 */
52: .line 268
StackMap locals:
StackMap stack:
fload 20 /* newArcDistance2 */
fconst_0
fcmpl
ifeq 57
53: .line 269
fload 20 /* newArcDistance2 */
fload 18 /* arcDist2 */
fdiv
fstore 21 /* ratio2 */
start local 21 // float ratio2
54: .line 270
fload 21 /* ratio2 */
f2d
invokestatic java.lang.Math.sqrt:(D)D
d2f
fstore 22 /* ratio */
start local 22 // float ratio
55: .line 271
fload 11 /* dx */
fload 22 /* ratio */
fload 6 /* ex */
fload 11 /* dx */
fsub
fmul
fadd
fstore 6 /* ex */
56: .line 272
fload 12 /* dy */
fload 22 /* ratio */
fload 7 /* ey */
fload 12 /* dy */
fsub
fmul
fadd
fstore 7 /* ey */
end local 22 // float ratio
end local 21 // float ratio2
57: .line 274
StackMap locals:
StackMap stack:
fload 1 /* startX */
fload 6 /* ex */
fadd
fconst_2
fdiv
fstore 21 /* control1X */
start local 21 // float control1X
58: .line 275
fload 2 /* startY */
fload 7 /* ey */
fadd
fconst_2
fdiv
fstore 22 /* control1Y */
start local 22 // float control1Y
59: .line 276
fload 6 /* ex */
fload 3 /* endX */
fadd
fconst_2
fdiv
fstore 23 /* control2X */
start local 23 // float control2X
60: .line 277
fload 7 /* ey */
fload 4 /* endY */
fadd
fconst_2
fdiv
fstore 24 /* control2Y */
start local 24 // float control2Y
61: .line 278
aload 5 /* path */
fload 21 /* control1X */
fload 22 /* control1Y */
fload 23 /* control2X */
fload 24 /* control2Y */
fload 3 /* endX */
fload 4 /* endY */
invokevirtual android.graphics.Path.cubicTo:(FFFFFF)V
62: .line 279
aload 5 /* path */
areturn
end local 24 // float control2Y
end local 23 // float control2X
end local 22 // float control1Y
end local 21 // float control1X
end local 20 // float newArcDistance2
end local 19 // float maximumArcDist2
end local 18 // float arcDist2
end local 17 // float arcDistY
end local 16 // float arcDistX
end local 15 // boolean isMovingUpwards
end local 14 // float minimumArcDist2
end local 13 // float midDist2
end local 12 // float dy
end local 11 // float dx
end local 10 // float h2
end local 9 // float deltaY
end local 8 // float deltaX
end local 7 // float ey
end local 6 // float ex
end local 5 // android.graphics.Path path
end local 4 // float endY
end local 3 // float endX
end local 2 // float startY
end local 1 // float startX
end local 0 // android.transition.ArcMotion this
LocalVariableTable:
Start End Slot Name Signature
0 63 0 this Landroid/transition/ArcMotion;
0 63 1 startX F
0 63 2 startY F
0 63 3 endX F
0 63 4 endY F
1 63 5 path Landroid/graphics/Path;
14 16 6 ex F
18 20 6 ex F
25 26 6 ex F
28 32 6 ex F
35 37 6 ex F
38 63 6 ex F
15 16 7 ey F
19 20 7 ey F
24 26 7 ey F
27 32 7 ey F
36 37 7 ey F
39 63 7 ey F
3 63 8 deltaX F
4 63 9 deltaY F
5 63 10 h2 F
6 63 11 dx F
7 63 12 dy F
8 63 13 midDist2 F
9 63 14 minimumArcDist2 F
12 63 15 isMovingUpwards Z
22 31 16 eDistY F
33 42 16 eDistX F
43 63 16 arcDistX F
44 63 17 arcDistY F
45 63 18 arcDist2 F
46 63 19 maximumArcDist2 F
47 63 20 newArcDistance2 F
54 57 21 ratio2 F
55 57 22 ratio F
58 63 21 control1X F
59 63 22 control1Y F
60 63 23 control2X F
61 63 24 control2Y F
MethodParameters:
Name Flags
startX
startY
endX
endY
}
SourceFile: "ArcMotion.java"