public final class com.android.internal.graphics.ColorUtils
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.android.internal.graphics.ColorUtils
super_class: java.lang.Object
{
private static final double XYZ_WHITE_REFERENCE_X;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 95.047
private static final double XYZ_WHITE_REFERENCE_Y;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 100.0
private static final double XYZ_WHITE_REFERENCE_Z;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 108.883
private static final double XYZ_EPSILON;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0.008856
private static final double XYZ_KAPPA;
descriptor: D
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 903.3
private static final int MIN_ALPHA_SEARCH_MAX_ITERATIONS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 10
private static final int MIN_ALPHA_SEARCH_PRECISION;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final java.lang.ThreadLocal<double[]> TEMP_ARRAY;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<[D>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: .line 41
new java.lang.ThreadLocal
dup
invokespecial java.lang.ThreadLocal.<init>:()V
putstatic com.android.internal.graphics.ColorUtils.TEMP_ARRAY:Ljava/lang/ThreadLocal;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // com.android.internal.graphics.ColorUtils this
0: .line 43
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // com.android.internal.graphics.ColorUtils this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/android/internal/graphics/ColorUtils;
public static int compositeColors(int, int);
descriptor: (II)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=8, args_size=2
start local 0 // int foreground
start local 1 // int background
0: .line 49
iload 1 /* background */
invokestatic android.graphics.Color.alpha:(I)I
istore 2 /* bgAlpha */
start local 2 // int bgAlpha
1: .line 50
iload 0 /* foreground */
invokestatic android.graphics.Color.alpha:(I)I
istore 3 /* fgAlpha */
start local 3 // int fgAlpha
2: .line 51
iload 3 /* fgAlpha */
iload 2 /* bgAlpha */
invokestatic com.android.internal.graphics.ColorUtils.compositeAlpha:(II)I
istore 4 /* a */
start local 4 // int a
3: .line 53
iload 0 /* foreground */
invokestatic android.graphics.Color.red:(I)I
iload 3 /* fgAlpha */
4: .line 54
iload 1 /* background */
invokestatic android.graphics.Color.red:(I)I
iload 2 /* bgAlpha */
iload 4 /* a */
5: .line 53
invokestatic com.android.internal.graphics.ColorUtils.compositeComponent:(IIIII)I
istore 5 /* r */
start local 5 // int r
6: .line 55
iload 0 /* foreground */
invokestatic android.graphics.Color.green:(I)I
iload 3 /* fgAlpha */
7: .line 56
iload 1 /* background */
invokestatic android.graphics.Color.green:(I)I
iload 2 /* bgAlpha */
iload 4 /* a */
8: .line 55
invokestatic com.android.internal.graphics.ColorUtils.compositeComponent:(IIIII)I
istore 6 /* g */
start local 6 // int g
9: .line 57
iload 0 /* foreground */
invokestatic android.graphics.Color.blue:(I)I
iload 3 /* fgAlpha */
10: .line 58
iload 1 /* background */
invokestatic android.graphics.Color.blue:(I)I
iload 2 /* bgAlpha */
iload 4 /* a */
11: .line 57
invokestatic com.android.internal.graphics.ColorUtils.compositeComponent:(IIIII)I
istore 7 /* b */
start local 7 // int b
12: .line 60
iload 4 /* a */
iload 5 /* r */
iload 6 /* g */
iload 7 /* b */
invokestatic android.graphics.Color.argb:(IIII)I
ireturn
end local 7 // int b
end local 6 // int g
end local 5 // int r
end local 4 // int a
end local 3 // int fgAlpha
end local 2 // int bgAlpha
end local 1 // int background
end local 0 // int foreground
LocalVariableTable:
Start End Slot Name Signature
0 13 0 foreground I
0 13 1 background I
1 13 2 bgAlpha I
2 13 3 fgAlpha I
3 13 4 a I
6 13 5 r I
9 13 6 g I
12 13 7 b I
MethodParameters:
Name Flags
foreground
background
private static int compositeAlpha(int, int);
descriptor: (II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 // int foregroundAlpha
start local 1 // int backgroundAlpha
0: .line 64
sipush 255
sipush 255
iload 1 /* backgroundAlpha */
isub
sipush 255
iload 0 /* foregroundAlpha */
isub
imul
sipush 255
idiv
isub
ireturn
end local 1 // int backgroundAlpha
end local 0 // int foregroundAlpha
LocalVariableTable:
Start End Slot Name Signature
0 1 0 foregroundAlpha I
0 1 1 backgroundAlpha I
MethodParameters:
Name Flags
foregroundAlpha
backgroundAlpha
private static int compositeComponent(int, int, int, int, int);
descriptor: (IIIII)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=5, args_size=5
start local 0 // int fgC
start local 1 // int fgA
start local 2 // int bgC
start local 3 // int bgA
start local 4 // int a
0: .line 68
iload 4 /* a */
ifne 1
iconst_0
ireturn
1: .line 69
StackMap locals:
StackMap stack:
sipush 255
iload 0 /* fgC */
imul
iload 1 /* fgA */
imul
iload 2 /* bgC */
iload 3 /* bgA */
imul
sipush 255
iload 1 /* fgA */
isub
imul
iadd
iload 4 /* a */
sipush 255
imul
idiv
ireturn
end local 4 // int a
end local 3 // int bgA
end local 2 // int bgC
end local 1 // int fgA
end local 0 // int fgC
LocalVariableTable:
Start End Slot Name Signature
0 2 0 fgC I
0 2 1 fgA I
0 2 2 bgC I
0 2 3 bgA I
0 2 4 a I
MethodParameters:
Name Flags
fgC
fgA
bgC
bgA
a
public static double calculateLuminance(int);
descriptor: (I)D
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 // int color
0: .line 78
invokestatic com.android.internal.graphics.ColorUtils.getTempDouble3Array:()[D
astore 1 /* result */
start local 1 // double[] result
1: .line 79
iload 0 /* color */
aload 1 /* result */
invokestatic com.android.internal.graphics.ColorUtils.colorToXYZ:(I[D)V
2: .line 81
aload 1 /* result */
iconst_1
daload
ldc 100.0
ddiv
dreturn
end local 1 // double[] result
end local 0 // int color
LocalVariableTable:
Start End Slot Name Signature
0 3 0 color I
1 3 1 result [D
MethodParameters:
Name Flags
color
public static double calculateContrast(int, int);
descriptor: (II)D
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=6, args_size=2
start local 0 // int foreground
start local 1 // int background
0: .line 92
iload 1 /* background */
invokestatic android.graphics.Color.alpha:(I)I
sipush 255
if_icmpeq 4
1: .line 93
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "background can not be translucent: #"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: .line 94
iload 1 /* background */
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: .line 93
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: .line 96
StackMap locals:
StackMap stack:
iload 0 /* foreground */
invokestatic android.graphics.Color.alpha:(I)I
sipush 255
if_icmpge 6
5: .line 98
iload 0 /* foreground */
iload 1 /* background */
invokestatic com.android.internal.graphics.ColorUtils.compositeColors:(II)I
istore 0 /* foreground */
6: .line 101
StackMap locals:
StackMap stack:
iload 0 /* foreground */
invokestatic com.android.internal.graphics.ColorUtils.calculateLuminance:(I)D
ldc 0.05
dadd
dstore 2 /* luminance1 */
start local 2 // double luminance1
7: .line 102
iload 1 /* background */
invokestatic com.android.internal.graphics.ColorUtils.calculateLuminance:(I)D
ldc 0.05
dadd
dstore 4 /* luminance2 */
start local 4 // double luminance2
8: .line 105
dload 2 /* luminance1 */
dload 4 /* luminance2 */
invokestatic java.lang.Math.max:(DD)D
dload 2 /* luminance1 */
dload 4 /* luminance2 */
invokestatic java.lang.Math.min:(DD)D
ddiv
dreturn
end local 4 // double luminance2
end local 2 // double luminance1
end local 1 // int background
end local 0 // int foreground
LocalVariableTable:
Start End Slot Name Signature
0 9 0 foreground I
0 9 1 background I
7 9 2 luminance1 D
8 9 4 luminance2 D
MethodParameters:
Name Flags
foreground
background
public static int calculateMinimumBackgroundAlpha(int, int, float);
descriptor: (IIF)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=4, args_size=3
start local 0 // int foreground
start local 1 // int background
start local 2 // float minContrastRatio
0: .line 122
iload 1 /* background */
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
istore 1 /* background */
1: .line 123
iload 0 /* foreground */
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
istore 3 /* leastContrastyColor */
start local 3 // int leastContrastyColor
2: .line 124
iload 0 /* foreground */
iload 1 /* background */
fload 2 /* minContrastRatio */
iload 3 /* leastContrastyColor */
invokedynamic calculateContrast(I)Lcom/android/internal/graphics/ColorUtils$ContrastCalculator;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(III)D
com/android/internal/graphics/ColorUtils.lambda$0(IIII)D (6)
(III)D
invokestatic com.android.internal.graphics.ColorUtils.binaryAlphaSearch:(IIFLcom/android/internal/graphics/ColorUtils$ContrastCalculator;)I
ireturn
end local 3 // int leastContrastyColor
end local 2 // float minContrastRatio
end local 1 // int background
end local 0 // int foreground
LocalVariableTable:
Start End Slot Name Signature
0 3 0 foreground I
0 3 1 background I
0 3 2 minContrastRatio F
2 3 3 leastContrastyColor I
MethodParameters:
Name Flags
foreground
background
minContrastRatio
public static int calculateMinimumAlpha(int, int, float);
descriptor: (IIF)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=6, args_size=3
start local 0 // int foreground
start local 1 // int background
start local 2 // float minContrastRatio
0: .line 145
iload 1 /* background */
invokestatic android.graphics.Color.alpha:(I)I
sipush 255
if_icmpeq 4
1: .line 146
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "background can not be translucent: #"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: .line 147
iload 1 /* background */
invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: .line 146
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: .line 150
StackMap locals:
StackMap stack:
invokedynamic calculateContrast()Lcom/android/internal/graphics/ColorUtils$ContrastCalculator;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(III)D
com/android/internal/graphics/ColorUtils.lambda$1(III)D (6)
(III)D
astore 3 /* contrastCalculator */
start local 3 // com.android.internal.graphics.ColorUtils$ContrastCalculator contrastCalculator
5: .line 156
aload 3 /* contrastCalculator */
iload 0 /* foreground */
iload 1 /* background */
sipush 255
invokeinterface com.android.internal.graphics.ColorUtils$ContrastCalculator.calculateContrast:(III)D
dstore 4 /* testRatio */
start local 4 // double testRatio
6: .line 157
dload 4 /* testRatio */
fload 2 /* minContrastRatio */
f2d
dcmpg
ifge 8
7: .line 159
iconst_m1
ireturn
8: .line 161
StackMap locals: com.android.internal.graphics.ColorUtils$ContrastCalculator double
StackMap stack:
iload 0 /* foreground */
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
istore 0 /* foreground */
9: .line 162
iload 0 /* foreground */
iload 1 /* background */
fload 2 /* minContrastRatio */
aload 3 /* contrastCalculator */
invokestatic com.android.internal.graphics.ColorUtils.binaryAlphaSearch:(IIFLcom/android/internal/graphics/ColorUtils$ContrastCalculator;)I
ireturn
end local 4 // double testRatio
end local 3 // com.android.internal.graphics.ColorUtils$ContrastCalculator contrastCalculator
end local 2 // float minContrastRatio
end local 1 // int background
end local 0 // int foreground
LocalVariableTable:
Start End Slot Name Signature
0 10 0 foreground I
0 10 1 background I
0 10 2 minContrastRatio F
5 10 3 contrastCalculator Lcom/android/internal/graphics/ColorUtils$ContrastCalculator;
6 10 4 testRatio D
MethodParameters:
Name Flags
foreground
background
minContrastRatio
private static int binaryAlphaSearch(int, int, float, com.android.internal.graphics.ColorUtils$ContrastCalculator);
descriptor: (IIFLcom/android/internal/graphics/ColorUtils$ContrastCalculator;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=10, args_size=4
start local 0 // int foreground
start local 1 // int background
start local 2 // float minContrastRatio
start local 3 // com.android.internal.graphics.ColorUtils$ContrastCalculator calculator
0: .line 178
iconst_0
istore 4 /* numIterations */
start local 4 // int numIterations
1: .line 179
iconst_0
istore 5 /* minAlpha */
start local 5 // int minAlpha
2: .line 180
sipush 255
istore 6 /* maxAlpha */
start local 6 // int maxAlpha
3: .line 182
goto 13
4: .line 184
StackMap locals: int int int
StackMap stack:
iload 5 /* minAlpha */
iload 6 /* maxAlpha */
iadd
iconst_2
idiv
istore 7 /* testAlpha */
start local 7 // int testAlpha
5: .line 186
aload 3 /* calculator */
iload 0 /* foreground */
iload 1 /* background */
6: .line 187
iload 7 /* testAlpha */
7: .line 186
invokeinterface com.android.internal.graphics.ColorUtils$ContrastCalculator.calculateContrast:(III)D
dstore 8 /* testRatio */
start local 8 // double testRatio
8: .line 188
dload 8 /* testRatio */
fload 2 /* minContrastRatio */
f2d
dcmpg
ifge 11
9: .line 189
iload 7 /* testAlpha */
istore 5 /* minAlpha */
10: .line 190
goto 12
11: .line 191
StackMap locals: int double
StackMap stack:
iload 7 /* testAlpha */
istore 6 /* maxAlpha */
12: .line 194
StackMap locals:
StackMap stack:
iinc 4 /* numIterations */ 1
end local 8 // double testRatio
end local 7 // int testAlpha
13: .line 182
StackMap locals:
StackMap stack:
iload 4 /* numIterations */
bipush 10
if_icmpgt 16
14: .line 183
iload 6 /* maxAlpha */
iload 5 /* minAlpha */
isub
iconst_1
15: .line 182
if_icmpgt 4
16: .line 198
StackMap locals:
StackMap stack:
iload 6 /* maxAlpha */
ireturn
end local 6 // int maxAlpha
end local 5 // int minAlpha
end local 4 // int numIterations
end local 3 // com.android.internal.graphics.ColorUtils$ContrastCalculator calculator
end local 2 // float minContrastRatio
end local 1 // int background
end local 0 // int foreground
LocalVariableTable:
Start End Slot Name Signature
0 17 0 foreground I
0 17 1 background I
0 17 2 minContrastRatio F
0 17 3 calculator Lcom/android/internal/graphics/ColorUtils$ContrastCalculator;
1 17 4 numIterations I
2 17 5 minAlpha I
3 17 6 maxAlpha I
5 13 7 testAlpha I
8 13 8 testRatio D
MethodParameters:
Name Flags
foreground
background
minContrastRatio
calculator
public static void RGBToHSL(int, int, int, float[]);
descriptor: (III[F)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=13, args_size=4
start local 0 // int r
start local 1 // int g
start local 2 // int b
start local 3 // float[] outHsl
0: .line 217
iload 0 /* r */
i2f
ldc 255.0
fdiv
fstore 4 /* rf */
start local 4 // float rf
1: .line 218
iload 1 /* g */
i2f
ldc 255.0
fdiv
fstore 5 /* gf */
start local 5 // float gf
2: .line 219
iload 2 /* b */
i2f
ldc 255.0
fdiv
fstore 6 /* bf */
start local 6 // float bf
3: .line 221
fload 4 /* rf */
fload 5 /* gf */
fload 6 /* bf */
invokestatic java.lang.Math.max:(FF)F
invokestatic java.lang.Math.max:(FF)F
fstore 7 /* max */
start local 7 // float max
4: .line 222
fload 4 /* rf */
fload 5 /* gf */
fload 6 /* bf */
invokestatic java.lang.Math.min:(FF)F
invokestatic java.lang.Math.min:(FF)F
fstore 8 /* min */
start local 8 // float min
5: .line 223
fload 7 /* max */
fload 8 /* min */
fsub
fstore 9 /* deltaMaxMin */
start local 9 // float deltaMaxMin
6: .line 226
fload 7 /* max */
fload 8 /* min */
fadd
fconst_2
fdiv
fstore 12 /* l */
start local 12 // float l
7: .line 228
fload 7 /* max */
fload 8 /* min */
fcmpl
ifne 11
8: .line 230
fconst_0
dup
fstore 11 /* s */
start local 11 // float s
9: fstore 10 /* h */
start local 10 // float h
10: .line 231
goto 19
end local 11 // float s
end local 10 // float h
11: .line 232
StackMap locals: int int int float[] float float float float float float top top float
StackMap stack:
fload 7 /* max */
fload 4 /* rf */
fcmpl
ifne 14
12: .line 233
fload 5 /* gf */
fload 6 /* bf */
fsub
fload 9 /* deltaMaxMin */
fdiv
ldc 6.0
frem
fstore 10 /* h */
start local 10 // float h
13: .line 234
goto 18
end local 10 // float h
StackMap locals:
StackMap stack:
14: fload 7 /* max */
fload 5 /* gf */
fcmpl
ifne 17
15: .line 235
fload 6 /* bf */
fload 4 /* rf */
fsub
fload 9 /* deltaMaxMin */
fdiv
fconst_2
fadd
fstore 10 /* h */
start local 10 // float h
16: .line 236
goto 18
end local 10 // float h
17: .line 237
StackMap locals:
StackMap stack:
fload 4 /* rf */
fload 5 /* gf */
fsub
fload 9 /* deltaMaxMin */
fdiv
ldc 4.0
fadd
fstore 10 /* h */
start local 10 // float h
18: .line 240
StackMap locals: int int int float[] float float float float float float float top float
StackMap stack:
fload 9 /* deltaMaxMin */
fconst_1
fconst_2
fload 12 /* l */
fmul
fconst_1
fsub
invokestatic java.lang.Math.abs:(F)F
fsub
fdiv
fstore 11 /* s */
start local 11 // float s
19: .line 243
StackMap locals: int int int float[] float float float float float float float float float
StackMap stack:
fload 10 /* h */
ldc 60.0
fmul
ldc 360.0
frem
fstore 10 /* h */
20: .line 244
fload 10 /* h */
fconst_0
fcmpg
ifge 22
21: .line 245
fload 10 /* h */
ldc 360.0
fadd
fstore 10 /* h */
22: .line 248
StackMap locals:
StackMap stack:
aload 3 /* outHsl */
iconst_0
fload 10 /* h */
fconst_0
ldc 360.0
invokestatic com.android.internal.graphics.ColorUtils.constrain:(FFF)F
fastore
23: .line 249
aload 3 /* outHsl */
iconst_1
fload 11 /* s */
fconst_0
fconst_1
invokestatic com.android.internal.graphics.ColorUtils.constrain:(FFF)F
fastore
24: .line 250
aload 3 /* outHsl */
iconst_2
fload 12 /* l */
fconst_0
fconst_1
invokestatic com.android.internal.graphics.ColorUtils.constrain:(FFF)F
fastore
25: .line 251
return
end local 12 // float l
end local 11 // float s
end local 10 // float h
end local 9 // float deltaMaxMin
end local 8 // float min
end local 7 // float max
end local 6 // float bf
end local 5 // float gf
end local 4 // float rf
end local 3 // float[] outHsl
end local 2 // int b
end local 1 // int g
end local 0 // int r
LocalVariableTable:
Start End Slot Name Signature
0 26 0 r I
0 26 1 g I
0 26 2 b I
0 26 3 outHsl [F
1 26 4 rf F
2 26 5 gf F
3 26 6 bf F
4 26 7 max F
5 26 8 min F
6 26 9 deltaMaxMin F
10 11 10 h F
13 14 10 h F
16 17 10 h F
18 26 10 h F
9 11 11 s F
19 26 11 s F
7 26 12 l F
MethodParameters:
Name Flags
r
g
b
outHsl
public static void colorToHSL(int, float[]);
descriptor: (I[F)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 // int color
start local 1 // float[] outHsl
0: .line 265
iload 0 /* color */
invokestatic android.graphics.Color.red:(I)I
iload 0 /* color */
invokestatic android.graphics.Color.green:(I)I
iload 0 /* color */
invokestatic android.graphics.Color.blue:(I)I
aload 1 /* outHsl */
invokestatic com.android.internal.graphics.ColorUtils.RGBToHSL:(III[F)V
1: .line 266
return
end local 1 // float[] outHsl
end local 0 // int color
LocalVariableTable:
Start End Slot Name Signature
0 2 0 color I
0 2 1 outHsl [F
MethodParameters:
Name Flags
color
outHsl
public static int HSLToColor(float[]);
descriptor: ([F)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=11, args_size=1
start local 0 // float[] hsl
0: .line 282
aload 0 /* hsl */
iconst_0
faload
fstore 1 /* h */
start local 1 // float h
1: .line 283
aload 0 /* hsl */
iconst_1
faload
fstore 2 /* s */
start local 2 // float s
2: .line 284
aload 0 /* hsl */
iconst_2
faload
fstore 3 /* l */
start local 3 // float l
3: .line 286
fconst_1
fconst_2
fload 3 /* l */
fmul
fconst_1
fsub
invokestatic java.lang.Math.abs:(F)F
fsub
fload 2 /* s */
fmul
fstore 4 /* c */
start local 4 // float c
4: .line 287
fload 3 /* l */
ldc 0.5
fload 4 /* c */
fmul
fsub
fstore 5 /* m */
start local 5 // float m
5: .line 288
fload 4 /* c */
fconst_1
fload 1 /* h */
ldc 60.0
fdiv
fconst_2
frem
fconst_1
fsub
invokestatic java.lang.Math.abs:(F)F
fsub
fmul
fstore 6 /* x */
start local 6 // float x
6: .line 290
fload 1 /* h */
f2i
bipush 60
idiv
istore 7 /* hueSegment */
start local 7 // int hueSegment
7: .line 292
iconst_0
istore 8 /* r */
start local 8 // int r
8: iconst_0
istore 9 /* g */
start local 9 // int g
9: iconst_0
istore 10 /* b */
start local 10 // int b
10: .line 294
iload 7 /* hueSegment */
tableswitch { // 0 - 6
0: 11
1: 15
2: 19
3: 23
4: 27
5: 31
6: 31
default: 34
}
11: .line 296
StackMap locals: float[] float float float float float float int int int int
StackMap stack:
ldc 255.0
fload 4 /* c */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 8 /* r */
12: .line 297
ldc 255.0
fload 6 /* x */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 9 /* g */
13: .line 298
ldc 255.0
fload 5 /* m */
fmul
invokestatic java.lang.Math.round:(F)I
istore 10 /* b */
14: .line 299
goto 34
15: .line 301
StackMap locals:
StackMap stack:
ldc 255.0
fload 6 /* x */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 8 /* r */
16: .line 302
ldc 255.0
fload 4 /* c */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 9 /* g */
17: .line 303
ldc 255.0
fload 5 /* m */
fmul
invokestatic java.lang.Math.round:(F)I
istore 10 /* b */
18: .line 304
goto 34
19: .line 306
StackMap locals:
StackMap stack:
ldc 255.0
fload 5 /* m */
fmul
invokestatic java.lang.Math.round:(F)I
istore 8 /* r */
20: .line 307
ldc 255.0
fload 4 /* c */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 9 /* g */
21: .line 308
ldc 255.0
fload 6 /* x */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 10 /* b */
22: .line 309
goto 34
23: .line 311
StackMap locals:
StackMap stack:
ldc 255.0
fload 5 /* m */
fmul
invokestatic java.lang.Math.round:(F)I
istore 8 /* r */
24: .line 312
ldc 255.0
fload 6 /* x */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 9 /* g */
25: .line 313
ldc 255.0
fload 4 /* c */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 10 /* b */
26: .line 314
goto 34
27: .line 316
StackMap locals:
StackMap stack:
ldc 255.0
fload 6 /* x */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 8 /* r */
28: .line 317
ldc 255.0
fload 5 /* m */
fmul
invokestatic java.lang.Math.round:(F)I
istore 9 /* g */
29: .line 318
ldc 255.0
fload 4 /* c */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 10 /* b */
30: .line 319
goto 34
31: .line 322
StackMap locals:
StackMap stack:
ldc 255.0
fload 4 /* c */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 8 /* r */
32: .line 323
ldc 255.0
fload 5 /* m */
fmul
invokestatic java.lang.Math.round:(F)I
istore 9 /* g */
33: .line 324
ldc 255.0
fload 6 /* x */
fload 5 /* m */
fadd
fmul
invokestatic java.lang.Math.round:(F)I
istore 10 /* b */
34: .line 328
StackMap locals:
StackMap stack:
iload 8 /* r */
iconst_0
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
istore 8 /* r */
35: .line 329
iload 9 /* g */
iconst_0
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
istore 9 /* g */
36: .line 330
iload 10 /* b */
iconst_0
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
istore 10 /* b */
37: .line 332
iload 8 /* r */
iload 9 /* g */
iload 10 /* b */
invokestatic android.graphics.Color.rgb:(III)I
ireturn
end local 10 // int b
end local 9 // int g
end local 8 // int r
end local 7 // int hueSegment
end local 6 // float x
end local 5 // float m
end local 4 // float c
end local 3 // float l
end local 2 // float s
end local 1 // float h
end local 0 // float[] hsl
LocalVariableTable:
Start End Slot Name Signature
0 38 0 hsl [F
1 38 1 h F
2 38 2 s F
3 38 3 l F
4 38 4 c F
5 38 5 m F
6 38 6 x F
7 38 7 hueSegment I
8 38 8 r I
9 38 9 g I
10 38 10 b I
MethodParameters:
Name Flags
hsl
public static int setAlphaComponent(int, int);
descriptor: (II)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=2
start local 0 // int color
start local 1 // int alpha
0: .line 341
iload 1 /* alpha */
iflt 1
iload 1 /* alpha */
sipush 255
if_icmple 2
1: .line 342
StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "alpha must be between 0 and 255."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 344
StackMap locals:
StackMap stack:
iload 0 /* color */
ldc 16777215
iand
iload 1 /* alpha */
bipush 24
ishl
ior
ireturn
end local 1 // int alpha
end local 0 // int color
LocalVariableTable:
Start End Slot Name Signature
0 3 0 color I
0 3 1 alpha I
MethodParameters:
Name Flags
color
alpha
public static void colorToLAB(int, double[]);
descriptor: (I[D)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 // int color
start local 1 // double[] outLab
0: .line 354
iload 0 /* color */
invokestatic android.graphics.Color.red:(I)I
iload 0 /* color */
invokestatic android.graphics.Color.green:(I)I
iload 0 /* color */
invokestatic android.graphics.Color.blue:(I)I
aload 1 /* outLab */
invokestatic com.android.internal.graphics.ColorUtils.RGBToLAB:(III[D)V
1: .line 355
return
end local 1 // double[] outLab
end local 0 // int color
LocalVariableTable:
Start End Slot Name Signature
0 2 0 color I
0 2 1 outLab [D
MethodParameters:
Name Flags
color
outLab
public static void RGBToLAB(int, int, int, double[]);
descriptor: (III[D)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=4, args_size=4
start local 0 // int r
start local 1 // int g
start local 2 // int b
start local 3 // double[] outLab
0: .line 375
iload 0 /* r */
iload 1 /* g */
iload 2 /* b */
aload 3 /* outLab */
invokestatic com.android.internal.graphics.ColorUtils.RGBToXYZ:(III[D)V
1: .line 377
aload 3 /* outLab */
iconst_0
daload
aload 3 /* outLab */
iconst_1
daload
aload 3 /* outLab */
iconst_2
daload
aload 3 /* outLab */
invokestatic com.android.internal.graphics.ColorUtils.XYZToLAB:(DDD[D)V
2: .line 379
return
end local 3 // double[] outLab
end local 2 // int b
end local 1 // int g
end local 0 // int r
LocalVariableTable:
Start End Slot Name Signature
0 3 0 r I
0 3 1 g I
0 3 2 b I
0 3 3 outLab [D
MethodParameters:
Name Flags
r
g
b
outLab
public static void colorToXYZ(int, double[]);
descriptor: (I[D)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 // int color
start local 1 // double[] outXyz
0: .line 397
iload 0 /* color */
invokestatic android.graphics.Color.red:(I)I
iload 0 /* color */
invokestatic android.graphics.Color.green:(I)I
iload 0 /* color */
invokestatic android.graphics.Color.blue:(I)I
aload 1 /* outXyz */
invokestatic com.android.internal.graphics.ColorUtils.RGBToXYZ:(III[D)V
1: .line 398
return
end local 1 // double[] outXyz
end local 0 // int color
LocalVariableTable:
Start End Slot Name Signature
0 2 0 color I
0 2 1 outXyz [D
MethodParameters:
Name Flags
color
outXyz
public static void RGBToXYZ(int, int, int, double[]);
descriptor: (III[D)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=10, locals=10, args_size=4
start local 0 // int r
start local 1 // int g
start local 2 // int b
start local 3 // double[] outXyz
0: .line 420
aload 3 /* outXyz */
arraylength
iconst_3
if_icmpeq 2
1: .line 421
new java.lang.IllegalArgumentException
dup
ldc "outXyz must have a length of 3."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 424
StackMap locals:
StackMap stack:
iload 0 /* r */
i2d
ldc 255.0
ddiv
dstore 4 /* sr */
start local 4 // double sr
3: .line 425
dload 4 /* sr */
ldc 0.04045
dcmpg
ifge 4
dload 4 /* sr */
ldc 12.92
ddiv
goto 5
StackMap locals: double
StackMap stack:
4: dload 4 /* sr */
ldc 0.055
dadd
ldc 1.055
ddiv
ldc 2.4
invokestatic java.lang.Math.pow:(DD)D
StackMap locals:
StackMap stack: double
5: dstore 4 /* sr */
6: .line 426
iload 1 /* g */
i2d
ldc 255.0
ddiv
dstore 6 /* sg */
start local 6 // double sg
7: .line 427
dload 6 /* sg */
ldc 0.04045
dcmpg
ifge 8
dload 6 /* sg */
ldc 12.92
ddiv
goto 9
StackMap locals: double
StackMap stack:
8: dload 6 /* sg */
ldc 0.055
dadd
ldc 1.055
ddiv
ldc 2.4
invokestatic java.lang.Math.pow:(DD)D
StackMap locals:
StackMap stack: double
9: dstore 6 /* sg */
10: .line 428
iload 2 /* b */
i2d
ldc 255.0
ddiv
dstore 8 /* sb */
start local 8 // double sb
11: .line 429
dload 8 /* sb */
ldc 0.04045
dcmpg
ifge 12
dload 8 /* sb */
ldc 12.92
ddiv
goto 13
StackMap locals: double
StackMap stack:
12: dload 8 /* sb */
ldc 0.055
dadd
ldc 1.055
ddiv
ldc 2.4
invokestatic java.lang.Math.pow:(DD)D
StackMap locals:
StackMap stack: double
13: dstore 8 /* sb */
14: .line 431
aload 3 /* outXyz */
iconst_0
ldc 100.0
dload 4 /* sr */
ldc 0.4124
dmul
dload 6 /* sg */
ldc 0.3576
dmul
dadd
dload 8 /* sb */
ldc 0.1805
dmul
dadd
dmul
dastore
15: .line 432
aload 3 /* outXyz */
iconst_1
ldc 100.0
dload 4 /* sr */
ldc 0.2126
dmul
dload 6 /* sg */
ldc 0.7152
dmul
dadd
dload 8 /* sb */
ldc 0.0722
dmul
dadd
dmul
dastore
16: .line 433
aload 3 /* outXyz */
iconst_2
ldc 100.0
dload 4 /* sr */
ldc 0.0193
dmul
dload 6 /* sg */
ldc 0.1192
dmul
dadd
dload 8 /* sb */
ldc 0.9505
dmul
dadd
dmul
dastore
17: .line 434
return
end local 8 // double sb
end local 6 // double sg
end local 4 // double sr
end local 3 // double[] outXyz
end local 2 // int b
end local 1 // int g
end local 0 // int r
LocalVariableTable:
Start End Slot Name Signature
0 18 0 r I
0 18 1 g I
0 18 2 b I
0 18 3 outXyz [D
3 18 4 sr D
7 18 6 sg D
11 18 8 sb D
MethodParameters:
Name Flags
r
g
b
outXyz
public static void XYZToLAB(double, double, double, double[]);
descriptor: (DDD[D)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=8, locals=7, args_size=4
start local 0 // double x
start local 2 // double y
start local 4 // double z
start local 6 // double[] outLab
0: .line 457
aload 6 /* outLab */
arraylength
iconst_3
if_icmpeq 2
1: .line 458
new java.lang.IllegalArgumentException
dup
ldc "outLab must have a length of 3."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 460
StackMap locals:
StackMap stack:
dload 0 /* x */
ldc 95.047
ddiv
invokestatic com.android.internal.graphics.ColorUtils.pivotXyzComponent:(D)D
dstore 0 /* x */
3: .line 461
dload 2 /* y */
ldc 100.0
ddiv
invokestatic com.android.internal.graphics.ColorUtils.pivotXyzComponent:(D)D
dstore 2 /* y */
4: .line 462
dload 4 /* z */
ldc 108.883
ddiv
invokestatic com.android.internal.graphics.ColorUtils.pivotXyzComponent:(D)D
dstore 4 /* z */
5: .line 463
aload 6 /* outLab */
iconst_0
dconst_0
ldc 116.0
dload 2 /* y */
dmul
ldc 16.0
dsub
invokestatic java.lang.Math.max:(DD)D
dastore
6: .line 464
aload 6 /* outLab */
iconst_1
ldc 500.0
dload 0 /* x */
dload 2 /* y */
dsub
dmul
dastore
7: .line 465
aload 6 /* outLab */
iconst_2
ldc 200.0
dload 2 /* y */
dload 4 /* z */
dsub
dmul
dastore
8: .line 466
return
end local 6 // double[] outLab
end local 4 // double z
end local 2 // double y
end local 0 // double x
LocalVariableTable:
Start End Slot Name Signature
0 9 0 x D
0 9 2 y D
0 9 4 z D
0 9 6 outLab [D
MethodParameters:
Name Flags
x
y
z
outLab
public static void LABToXYZ(double, double, double, double[]);
descriptor: (DDD[D)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=21, args_size=4
start local 0 // double l
start local 2 // double a
start local 4 // double b
start local 6 // double[] outXyz
0: .line 489
dload 0 /* l */
ldc 16.0
dadd
ldc 116.0
ddiv
dstore 7 /* fy */
start local 7 // double fy
1: .line 490
dload 2 /* a */
ldc 500.0
ddiv
dload 7 /* fy */
dadd
dstore 9 /* fx */
start local 9 // double fx
2: .line 491
dload 7 /* fy */
dload 4 /* b */
ldc 200.0
ddiv
dsub
dstore 11 /* fz */
start local 11 // double fz
3: .line 493
dload 9 /* fx */
ldc 3.0
invokestatic java.lang.Math.pow:(DD)D
dstore 13 /* tmp */
start local 13 // double tmp
4: .line 494
dload 13 /* tmp */
ldc 0.008856
dcmpl
ifle 5
dload 13 /* tmp */
goto 6
StackMap locals: double double double double[] double double double double
StackMap stack:
5: ldc 116.0
dload 9 /* fx */
dmul
ldc 16.0
dsub
ldc 903.3
ddiv
StackMap locals:
StackMap stack: double
6: dstore 15 /* xr */
start local 15 // double xr
7: .line 495
dload 0 /* l */
ldc 7.9996247999999985
dcmpl
ifle 8
dload 7 /* fy */
ldc 3.0
invokestatic java.lang.Math.pow:(DD)D
goto 9
StackMap locals: double
StackMap stack:
8: dload 0 /* l */
ldc 903.3
ddiv
StackMap locals:
StackMap stack: double
9: dstore 17 /* yr */
start local 17 // double yr
10: .line 497
dload 11 /* fz */
ldc 3.0
invokestatic java.lang.Math.pow:(DD)D
dstore 13 /* tmp */
11: .line 498
dload 13 /* tmp */
ldc 0.008856
dcmpl
ifle 12
dload 13 /* tmp */
goto 13
StackMap locals: double
StackMap stack:
12: ldc 116.0
dload 11 /* fz */
dmul
ldc 16.0
dsub
ldc 903.3
ddiv
StackMap locals:
StackMap stack: double
13: dstore 19 /* zr */
start local 19 // double zr
14: .line 500
aload 6 /* outXyz */
iconst_0
dload 15 /* xr */
ldc 95.047
dmul
dastore
15: .line 501
aload 6 /* outXyz */
iconst_1
dload 17 /* yr */
ldc 100.0
dmul
dastore
16: .line 502
aload 6 /* outXyz */
iconst_2
dload 19 /* zr */
ldc 108.883
dmul
dastore
17: .line 503
return
end local 19 // double zr
end local 17 // double yr
end local 15 // double xr
end local 13 // double tmp
end local 11 // double fz
end local 9 // double fx
end local 7 // double fy
end local 6 // double[] outXyz
end local 4 // double b
end local 2 // double a
end local 0 // double l
LocalVariableTable:
Start End Slot Name Signature
0 18 0 l D
0 18 2 a D
0 18 4 b D
0 18 6 outXyz [D
1 18 7 fy D
2 18 9 fx D
3 18 11 fz D
4 18 13 tmp D
7 18 15 xr D
10 18 17 yr D
14 18 19 zr D
MethodParameters:
Name Flags
l final
a final
b final
outXyz
public static int XYZToColor(double, double, double);
descriptor: (DDD)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=12, args_size=3
start local 0 // double x
start local 2 // double y
start local 4 // double z
0: .line 520
dload 0 /* x */
ldc 3.2406
dmul
dload 2 /* y */
ldc -1.5372
dmul
dadd
dload 4 /* z */
ldc -0.4986
dmul
dadd
ldc 100.0
ddiv
dstore 6 /* r */
start local 6 // double r
1: .line 521
dload 0 /* x */
ldc -0.9689
dmul
dload 2 /* y */
ldc 1.8758
dmul
dadd
dload 4 /* z */
ldc 0.0415
dmul
dadd
ldc 100.0
ddiv
dstore 8 /* g */
start local 8 // double g
2: .line 522
dload 0 /* x */
ldc 0.0557
dmul
dload 2 /* y */
ldc -0.204
dmul
dadd
dload 4 /* z */
ldc 1.057
dmul
dadd
ldc 100.0
ddiv
dstore 10 /* b */
start local 10 // double b
3: .line 524
dload 6 /* r */
ldc 0.0031308
dcmpl
ifle 4
ldc 1.055
dload 6 /* r */
ldc 0.4166666666666667
invokestatic java.lang.Math.pow:(DD)D
dmul
ldc 0.055
dsub
goto 5
StackMap locals: double double double
StackMap stack:
4: ldc 12.92
dload 6 /* r */
dmul
StackMap locals:
StackMap stack: double
5: dstore 6 /* r */
6: .line 525
dload 8 /* g */
ldc 0.0031308
dcmpl
ifle 7
ldc 1.055
dload 8 /* g */
ldc 0.4166666666666667
invokestatic java.lang.Math.pow:(DD)D
dmul
ldc 0.055
dsub
goto 8
StackMap locals:
StackMap stack:
7: ldc 12.92
dload 8 /* g */
dmul
StackMap locals:
StackMap stack: double
8: dstore 8 /* g */
9: .line 526
dload 10 /* b */
ldc 0.0031308
dcmpl
ifle 10
ldc 1.055
dload 10 /* b */
ldc 0.4166666666666667
invokestatic java.lang.Math.pow:(DD)D
dmul
ldc 0.055
dsub
goto 11
StackMap locals:
StackMap stack:
10: ldc 12.92
dload 10 /* b */
dmul
StackMap locals:
StackMap stack: double
11: dstore 10 /* b */
12: .line 529
dload 6 /* r */
ldc 255.0
dmul
invokestatic java.lang.Math.round:(D)J
l2i
iconst_0
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
13: .line 530
dload 8 /* g */
ldc 255.0
dmul
invokestatic java.lang.Math.round:(D)J
l2i
iconst_0
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
14: .line 531
dload 10 /* b */
ldc 255.0
dmul
invokestatic java.lang.Math.round:(D)J
l2i
iconst_0
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.constrain:(III)I
15: .line 528
invokestatic android.graphics.Color.rgb:(III)I
ireturn
end local 10 // double b
end local 8 // double g
end local 6 // double r
end local 4 // double z
end local 2 // double y
end local 0 // double x
LocalVariableTable:
Start End Slot Name Signature
0 16 0 x D
0 16 2 y D
0 16 4 z D
1 16 6 r D
2 16 8 g D
3 16 10 b D
MethodParameters:
Name Flags
x
y
z
public static int LABToColor(double, double, double);
descriptor: (DDD)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=7, locals=7, args_size=3
start local 0 // double l
start local 2 // double a
start local 4 // double b
0: .line 546
invokestatic com.android.internal.graphics.ColorUtils.getTempDouble3Array:()[D
astore 6 /* result */
start local 6 // double[] result
1: .line 547
dload 0 /* l */
dload 2 /* a */
dload 4 /* b */
aload 6 /* result */
invokestatic com.android.internal.graphics.ColorUtils.LABToXYZ:(DDD[D)V
2: .line 548
aload 6 /* result */
iconst_0
daload
aload 6 /* result */
iconst_1
daload
aload 6 /* result */
iconst_2
daload
invokestatic com.android.internal.graphics.ColorUtils.XYZToColor:(DDD)I
ireturn
end local 6 // double[] result
end local 4 // double b
end local 2 // double a
end local 0 // double l
LocalVariableTable:
Start End Slot Name Signature
0 3 0 l D
0 3 2 a D
0 3 4 b D
1 3 6 result [D
MethodParameters:
Name Flags
l final
a final
b final
public static double distanceEuclidean(double[], double[]);
descriptor: ([D[D)D
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=2, args_size=2
start local 0 // double[] labX
start local 1 // double[] labY
0: .line 555
aload 0 /* labX */
iconst_0
daload
aload 1 /* labY */
iconst_0
daload
dsub
ldc 2.0
invokestatic java.lang.Math.pow:(DD)D
1: .line 556
aload 0 /* labX */
iconst_1
daload
aload 1 /* labY */
iconst_1
daload
dsub
ldc 2.0
invokestatic java.lang.Math.pow:(DD)D
2: .line 555
dadd
3: .line 557
aload 0 /* labX */
iconst_2
daload
aload 1 /* labY */
iconst_2
daload
dsub
ldc 2.0
invokestatic java.lang.Math.pow:(DD)D
4: .line 555
dadd
invokestatic java.lang.Math.sqrt:(D)D
dreturn
end local 1 // double[] labY
end local 0 // double[] labX
LocalVariableTable:
Start End Slot Name Signature
0 5 0 labX [D
0 5 1 labY [D
MethodParameters:
Name Flags
labX
labY
private static float constrain(float, float, float);
descriptor: (FFF)F
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=3
start local 0 // float amount
start local 1 // float low
start local 2 // float high
0: .line 561
fload 0 /* amount */
fload 1 /* low */
fcmpg
ifge 1
fload 1 /* low */
goto 3
StackMap locals:
StackMap stack:
1: fload 0 /* amount */
fload 2 /* high */
fcmpl
ifle 2
fload 2 /* high */
goto 3
StackMap locals:
StackMap stack:
2: fload 0 /* amount */
StackMap locals:
StackMap stack: float
3: freturn
end local 2 // float high
end local 1 // float low
end local 0 // float amount
LocalVariableTable:
Start End Slot Name Signature
0 4 0 amount F
0 4 1 low F
0 4 2 high F
MethodParameters:
Name Flags
amount
low
high
private static int constrain(int, int, int);
descriptor: (III)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=3
start local 0 // int amount
start local 1 // int low
start local 2 // int high
0: .line 565
iload 0 /* amount */
iload 1 /* low */
if_icmpge 1
iload 1 /* low */
goto 3
StackMap locals:
StackMap stack:
1: iload 0 /* amount */
iload 2 /* high */
if_icmple 2
iload 2 /* high */
goto 3
StackMap locals:
StackMap stack:
2: iload 0 /* amount */
StackMap locals:
StackMap stack: int
3: ireturn
end local 2 // int high
end local 1 // int low
end local 0 // int amount
LocalVariableTable:
Start End Slot Name Signature
0 4 0 amount I
0 4 1 low I
0 4 2 high I
MethodParameters:
Name Flags
amount
low
high
private static double pivotXyzComponent(double);
descriptor: (D)D
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 // double component
0: .line 569
dload 0 /* component */
ldc 0.008856
dcmpl
ifle 2
1: .line 570
dload 0 /* component */
ldc 0.3333333333333333
invokestatic java.lang.Math.pow:(DD)D
goto 3
2: .line 571
StackMap locals:
StackMap stack:
ldc 903.3
dload 0 /* component */
dmul
ldc 16.0
dadd
ldc 116.0
ddiv
3: .line 569
StackMap locals:
StackMap stack: double
dreturn
end local 0 // double component
LocalVariableTable:
Start End Slot Name Signature
0 4 0 component D
MethodParameters:
Name Flags
component
public static int blendARGB(int, int, float);
descriptor: (IIF)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=8, args_size=3
start local 0 // int color1
start local 1 // int color2
start local 2 // float ratio
0: .line 587
fconst_1
fload 2 /* ratio */
fsub
fstore 3 /* inverseRatio */
start local 3 // float inverseRatio
1: .line 588
iload 0 /* color1 */
invokestatic android.graphics.Color.alpha:(I)I
i2f
fload 3 /* inverseRatio */
fmul
iload 1 /* color2 */
invokestatic android.graphics.Color.alpha:(I)I
i2f
fload 2 /* ratio */
fmul
fadd
fstore 4 /* a */
start local 4 // float a
2: .line 589
iload 0 /* color1 */
invokestatic android.graphics.Color.red:(I)I
i2f
fload 3 /* inverseRatio */
fmul
iload 1 /* color2 */
invokestatic android.graphics.Color.red:(I)I
i2f
fload 2 /* ratio */
fmul
fadd
fstore 5 /* r */
start local 5 // float r
3: .line 590
iload 0 /* color1 */
invokestatic android.graphics.Color.green:(I)I
i2f
fload 3 /* inverseRatio */
fmul
iload 1 /* color2 */
invokestatic android.graphics.Color.green:(I)I
i2f
fload 2 /* ratio */
fmul
fadd
fstore 6 /* g */
start local 6 // float g
4: .line 591
iload 0 /* color1 */
invokestatic android.graphics.Color.blue:(I)I
i2f
fload 3 /* inverseRatio */
fmul
iload 1 /* color2 */
invokestatic android.graphics.Color.blue:(I)I
i2f
fload 2 /* ratio */
fmul
fadd
fstore 7 /* b */
start local 7 // float b
5: .line 592
fload 4 /* a */
f2i
fload 5 /* r */
f2i
fload 6 /* g */
f2i
fload 7 /* b */
f2i
invokestatic android.graphics.Color.argb:(IIII)I
ireturn
end local 7 // float b
end local 6 // float g
end local 5 // float r
end local 4 // float a
end local 3 // float inverseRatio
end local 2 // float ratio
end local 1 // int color2
end local 0 // int color1
LocalVariableTable:
Start End Slot Name Signature
0 6 0 color1 I
0 6 1 color2 I
0 6 2 ratio F
1 6 3 inverseRatio F
2 6 4 a F
3 6 5 r F
4 6 6 g F
5 6 7 b F
MethodParameters:
Name Flags
color1
color2
ratio
public static void blendHSL(float[], float[], float, float[]);
descriptor: ([F[FF[F)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=5, args_size=4
start local 0 // float[] hsl1
start local 1 // float[] hsl2
start local 2 // float ratio
start local 3 // float[] outResult
0: .line 609
aload 3 /* outResult */
arraylength
iconst_3
if_icmpeq 2
1: .line 610
new java.lang.IllegalArgumentException
dup
ldc "result must have a length of 3."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 612
StackMap locals:
StackMap stack:
fconst_1
fload 2 /* ratio */
fsub
fstore 4 /* inverseRatio */
start local 4 // float inverseRatio
3: .line 614
aload 3 /* outResult */
iconst_0
aload 0 /* hsl1 */
iconst_0
faload
aload 1 /* hsl2 */
iconst_0
faload
fload 2 /* ratio */
invokestatic com.android.internal.graphics.ColorUtils.circularInterpolate:(FFF)F
fastore
4: .line 615
aload 3 /* outResult */
iconst_1
aload 0 /* hsl1 */
iconst_1
faload
fload 4 /* inverseRatio */
fmul
aload 1 /* hsl2 */
iconst_1
faload
fload 2 /* ratio */
fmul
fadd
fastore
5: .line 616
aload 3 /* outResult */
iconst_2
aload 0 /* hsl1 */
iconst_2
faload
fload 4 /* inverseRatio */
fmul
aload 1 /* hsl2 */
iconst_2
faload
fload 2 /* ratio */
fmul
fadd
fastore
6: .line 617
return
end local 4 // float inverseRatio
end local 3 // float[] outResult
end local 2 // float ratio
end local 1 // float[] hsl2
end local 0 // float[] hsl1
LocalVariableTable:
Start End Slot Name Signature
0 7 0 hsl1 [F
0 7 1 hsl2 [F
0 7 2 ratio F
0 7 3 outResult [F
3 7 4 inverseRatio F
MethodParameters:
Name Flags
hsl1
hsl2
ratio
outResult
public static void blendLAB(double[], double[], double, double[]);
descriptor: ([D[DD[D)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=8, locals=7, args_size=4
start local 0 // double[] lab1
start local 1 // double[] lab2
start local 2 // double ratio
start local 4 // double[] outResult
0: .line 632
aload 4 /* outResult */
arraylength
iconst_3
if_icmpeq 2
1: .line 633
new java.lang.IllegalArgumentException
dup
ldc "outResult must have a length of 3."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 635
StackMap locals:
StackMap stack:
dconst_1
dload 2 /* ratio */
dsub
dstore 5 /* inverseRatio */
start local 5 // double inverseRatio
3: .line 636
aload 4 /* outResult */
iconst_0
aload 0 /* lab1 */
iconst_0
daload
dload 5 /* inverseRatio */
dmul
aload 1 /* lab2 */
iconst_0
daload
dload 2 /* ratio */
dmul
dadd
dastore
4: .line 637
aload 4 /* outResult */
iconst_1
aload 0 /* lab1 */
iconst_1
daload
dload 5 /* inverseRatio */
dmul
aload 1 /* lab2 */
iconst_1
daload
dload 2 /* ratio */
dmul
dadd
dastore
5: .line 638
aload 4 /* outResult */
iconst_2
aload 0 /* lab1 */
iconst_2
daload
dload 5 /* inverseRatio */
dmul
aload 1 /* lab2 */
iconst_2
daload
dload 2 /* ratio */
dmul
dadd
dastore
6: .line 639
return
end local 5 // double inverseRatio
end local 4 // double[] outResult
end local 2 // double ratio
end local 1 // double[] lab2
end local 0 // double[] lab1
LocalVariableTable:
Start End Slot Name Signature
0 7 0 lab1 [D
0 7 1 lab2 [D
0 7 2 ratio D
0 7 4 outResult [D
3 7 5 inverseRatio D
MethodParameters:
Name Flags
lab1
lab2
ratio
outResult
static float circularInterpolate(float, float, float);
descriptor: (FFF)F
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 // float a
start local 1 // float b
start local 2 // float f
0: .line 642
fload 1 /* b */
fload 0 /* a */
fsub
invokestatic java.lang.Math.abs:(F)F
ldc 180.0
fcmpl
ifle 5
1: .line 643
fload 1 /* b */
fload 0 /* a */
fcmpl
ifle 4
2: .line 644
fload 0 /* a */
ldc 360.0
fadd
fstore 0 /* a */
3: .line 645
goto 5
4: .line 646
StackMap locals:
StackMap stack:
fload 1 /* b */
ldc 360.0
fadd
fstore 1 /* b */
5: .line 649
StackMap locals:
StackMap stack:
fload 0 /* a */
fload 1 /* b */
fload 0 /* a */
fsub
fload 2 /* f */
fmul
fadd
ldc 360.0
frem
freturn
end local 2 // float f
end local 1 // float b
end local 0 // float a
LocalVariableTable:
Start End Slot Name Signature
0 6 0 a F
0 6 1 b F
0 6 2 f F
MethodParameters:
Name Flags
a
b
f
private static double[] getTempDouble3Array();
descriptor: ()[D
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=0
0: .line 653
getstatic com.android.internal.graphics.ColorUtils.TEMP_ARRAY:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast double[]
astore 0 /* result */
start local 0 // double[] result
1: .line 654
aload 0 /* result */
ifnonnull 4
2: .line 655
iconst_3
newarray 7
astore 0 /* result */
3: .line 656
getstatic com.android.internal.graphics.ColorUtils.TEMP_ARRAY:Ljava/lang/ThreadLocal;
aload 0 /* result */
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
4: .line 658
StackMap locals: double[]
StackMap stack:
aload 0 /* result */
areturn
end local 0 // double[] result
LocalVariableTable:
Start End Slot Name Signature
1 5 0 result [D
private static double lambda$0(int, int, int, int);
descriptor: (IIII)D
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=4, locals=5, args_size=4
start local 1 // int fg
start local 2 // int bg
start local 3 // int alpha
0: .line 125
iload 0
iload 2 /* bg */
iload 3 /* alpha */
i2f
ldc 255.0
fdiv
invokestatic com.android.internal.graphics.ColorUtils.blendARGB:(IIF)I
istore 4 /* testBackground */
start local 4 // int testBackground
1: .line 128
iload 4 /* testBackground */
sipush 255
invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
istore 4 /* testBackground */
2: .line 129
iload 1 /* fg */
iload 4 /* testBackground */
invokestatic com.android.internal.graphics.ColorUtils.calculateContrast:(II)D
dreturn
end local 4 // int testBackground
end local 3 // int alpha
end local 2 // int bg
end local 1 // int fg
LocalVariableTable:
Start End Slot Name Signature
0 3 1 fg I
0 3 2 bg I
0 3 3 alpha I
1 3 4 testBackground I
private static double lambda$1(int, int, int);
descriptor: (III)D
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=4, args_size=3
start local 0 // int fg
start local 1 // int bg
start local 2 // int alpha
0: .line 151
iload 0 /* fg */
iload 2 /* alpha */
invokestatic com.android.internal.graphics.ColorUtils.setAlphaComponent:(II)I
istore 3 /* testForeground */
start local 3 // int testForeground
1: .line 152
iload 3 /* testForeground */
iload 1 /* bg */
invokestatic com.android.internal.graphics.ColorUtils.calculateContrast:(II)D
dreturn
end local 3 // int testForeground
end local 2 // int alpha
end local 1 // int bg
end local 0 // int fg
LocalVariableTable:
Start End Slot Name Signature
0 2 0 fg I
0 2 1 bg I
0 2 2 alpha I
1 2 3 testForeground I
}
SourceFile: "ColorUtils.java"
NestMembers:
com.android.internal.graphics.ColorUtils$ContrastCalculator
InnerClasses:
private abstract ContrastCalculator = com.android.internal.graphics.ColorUtils$ContrastCalculator of com.android.internal.graphics.ColorUtils
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles