public class com.android.internal.graphics.palette.VariationalKMeansQuantizer implements com.android.internal.graphics.palette.Quantizer
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.android.internal.graphics.palette.VariationalKMeansQuantizer
super_class: java.lang.Object
{
private static final java.lang.String TAG;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "KMeansQuantizer"
private static final boolean DEBUG;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private final float mMinClusterSqDistance;
descriptor: F
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int mInitializations;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.android.internal.ml.clustering.KMeans mKMeans;
descriptor: Lcom/android/internal/ml/clustering/KMeans;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.List<com.android.internal.graphics.palette.Palette$Swatch> mQuantizedColors;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Lcom/android/internal/graphics/palette/Palette$Swatch;>;
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc 0.25
invokespecial com.android.internal.graphics.palette.VariationalKMeansQuantizer.<init>:(F)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/android/internal/graphics/palette/VariationalKMeansQuantizer;
public void <init>(float);
descriptor: (F)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
fload 1
iconst_1
invokespecial com.android.internal.graphics.palette.VariationalKMeansQuantizer.<init>:(FI)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/android/internal/graphics/palette/VariationalKMeansQuantizer;
0 2 1 minClusterDistance F
MethodParameters:
Name Flags
minClusterDistance
public void <init>(float, int);
descriptor: (FI)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new com.android.internal.ml.clustering.KMeans
dup
new java.util.Random
dup
lconst_0
invokespecial java.util.Random.<init>:(J)V
bipush 30
fconst_0
invokespecial com.android.internal.ml.clustering.KMeans.<init>:(Ljava/util/Random;IF)V
putfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mKMeans:Lcom/android/internal/ml/clustering/KMeans;
2: aload 0
fload 1
fload 1
fmul
putfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mMinClusterSqDistance:F
3: aload 0
iload 2
putfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mInitializations:I
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/android/internal/graphics/palette/VariationalKMeansQuantizer;
0 5 1 minClusterDistance F
0 5 2 initializations I
MethodParameters:
Name Flags
minClusterDistance
initializations
public void quantize(int[], int, com.android.internal.graphics.palette.Palette$Filter[]);
descriptor: ([II[Lcom/android/internal/graphics/palette/Palette$Filter;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=15, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_3
newarray 6
dup
iconst_0
fconst_0
fastore
dup
iconst_1
fconst_0
fastore
dup
iconst_2
fconst_0
fastore
astore 4
start local 4 1: aload 1
arraylength
iconst_3
multianewarray [[F 2
astore 5
start local 5 2: iconst_0
istore 6
start local 6 3: goto 9
4: StackMap locals: float[] float[][] int
StackMap stack:
aload 1
iload 6
iaload
aload 4
invokestatic com.android.internal.graphics.ColorUtils.colorToHSL:(I[F)V
5: aload 5
iload 6
aaload
iconst_0
aload 4
iconst_0
faload
ldc 360.0
fdiv
fastore
6: aload 5
iload 6
aaload
iconst_1
aload 4
iconst_1
faload
fastore
7: aload 5
iload 6
aaload
iconst_2
aload 4
iconst_2
faload
fastore
8: iinc 6 1
StackMap locals:
StackMap stack:
9: iload 6
aload 1
arraylength
if_icmplt 4
end local 6 10: aload 0
iload 2
aload 5
invokevirtual com.android.internal.graphics.palette.VariationalKMeansQuantizer.getOptimalKMeans:(I[[F)Ljava/util/List;
astore 6
start local 6 11: iconst_0
istore 7
start local 7 12: goto 32
13: StackMap locals: com.android.internal.graphics.palette.VariationalKMeansQuantizer int[] int com.android.internal.graphics.palette.Palette$Filter[] float[] float[][] java.util.List int
StackMap stack:
aload 6
iload 7
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast com.android.internal.ml.clustering.KMeans$Mean
astore 8
start local 8 14: aload 8
invokevirtual com.android.internal.ml.clustering.KMeans$Mean.getCentroid:()[F
astore 9
start local 9 15: iload 7
iconst_1
iadd
istore 10
start local 10 16: goto 30
17: StackMap locals: com.android.internal.ml.clustering.KMeans$Mean float[] int
StackMap stack:
aload 6
iload 10
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast com.android.internal.ml.clustering.KMeans$Mean
astore 11
start local 11 18: aload 11
invokevirtual com.android.internal.ml.clustering.KMeans$Mean.getCentroid:()[F
astore 12
start local 12 19: aload 9
aload 12
invokestatic com.android.internal.ml.clustering.KMeans.sqDistance:([F[F)F
fstore 13
start local 13 20: fload 13
aload 0
getfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mMinClusterSqDistance:F
fcmpg
ifge 29
21: aload 6
aload 11
invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
pop
22: aload 8
invokevirtual com.android.internal.ml.clustering.KMeans$Mean.getItems:()Ljava/util/List;
aload 11
invokevirtual com.android.internal.ml.clustering.KMeans$Mean.getItems:()Ljava/util/List;
invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
pop
23: iconst_0
istore 14
start local 14 24: goto 27
25: StackMap locals: com.android.internal.graphics.palette.VariationalKMeansQuantizer int[] int com.android.internal.graphics.palette.Palette$Filter[] float[] float[][] java.util.List int com.android.internal.ml.clustering.KMeans$Mean float[] int com.android.internal.ml.clustering.KMeans$Mean float[] float int
StackMap stack:
aload 9
iload 14
dup2
faload
f2d
aload 12
iload 14
faload
aload 9
iload 14
faload
fsub
f2d
ldc 2.0
ddiv
dadd
d2f
fastore
26: iinc 14 1
StackMap locals:
StackMap stack:
27: iload 14
aload 9
arraylength
if_icmplt 25
end local 14 28: iinc 10 -1
end local 13 end local 12 end local 11 29: StackMap locals: com.android.internal.graphics.palette.VariationalKMeansQuantizer int[] int com.android.internal.graphics.palette.Palette$Filter[] float[] float[][] java.util.List int com.android.internal.ml.clustering.KMeans$Mean float[] int
StackMap stack:
iinc 10 1
StackMap locals:
StackMap stack:
30: iload 10
aload 6
invokeinterface java.util.List.size:()I
if_icmplt 17
end local 10 end local 9 end local 8 31: iinc 7 1
StackMap locals:
StackMap stack:
32: iload 7
aload 6
invokeinterface java.util.List.size:()I
if_icmplt 13
end local 7 33: aload 0
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
putfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mQuantizedColors:Ljava/util/List;
34: aload 6
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 45
StackMap locals: com.android.internal.graphics.palette.VariationalKMeansQuantizer int[] int com.android.internal.graphics.palette.Palette$Filter[] float[] float[][] java.util.List top java.util.Iterator
StackMap stack:
35: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.android.internal.ml.clustering.KMeans$Mean
astore 7
start local 7 36: aload 7
invokevirtual com.android.internal.ml.clustering.KMeans$Mean.getItems:()Ljava/util/List;
invokeinterface java.util.List.size:()I
ifne 38
37: goto 45
38: StackMap locals: com.android.internal.graphics.palette.VariationalKMeansQuantizer int[] int com.android.internal.graphics.palette.Palette$Filter[] float[] float[][] java.util.List com.android.internal.ml.clustering.KMeans$Mean java.util.Iterator
StackMap stack:
aload 7
invokevirtual com.android.internal.ml.clustering.KMeans$Mean.getCentroid:()[F
astore 9
start local 9 39: aload 0
getfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mQuantizedColors:Ljava/util/List;
new com.android.internal.graphics.palette.Palette$Swatch
dup
iconst_3
newarray 6
dup
iconst_0
40: aload 9
iconst_0
faload
ldc 360.0
fmul
fastore
dup
iconst_1
41: aload 9
iconst_1
faload
fastore
dup
iconst_2
42: aload 9
iconst_2
faload
fastore
43: aload 7
invokevirtual com.android.internal.ml.clustering.KMeans$Mean.getItems:()Ljava/util/List;
invokeinterface java.util.List.size:()I
invokespecial com.android.internal.graphics.palette.Palette$Swatch.<init>:([FI)V
44: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 9 end local 7 45: StackMap locals: com.android.internal.graphics.palette.VariationalKMeansQuantizer int[] int com.android.internal.graphics.palette.Palette$Filter[] float[] float[][] java.util.List top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 35
46: return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 47 0 this Lcom/android/internal/graphics/palette/VariationalKMeansQuantizer;
0 47 1 pixels [I
0 47 2 maxColors I
0 47 3 filters [Lcom/android/internal/graphics/palette/Palette$Filter;
1 47 4 hsl [F
2 47 5 hslPixels [[F
3 10 6 i I
11 47 6 optimalMeans Ljava/util/List<Lcom/android/internal/ml/clustering/KMeans$Mean;>;
12 33 7 i I
14 31 8 current Lcom/android/internal/ml/clustering/KMeans$Mean;
15 31 9 currentCentroid [F
16 31 10 j I
18 29 11 compareTo Lcom/android/internal/ml/clustering/KMeans$Mean;
19 29 12 compareToCentroid [F
20 29 13 sqDistance F
24 28 14 k I
36 45 7 mean Lcom/android/internal/ml/clustering/KMeans$Mean;
39 45 9 centroid [F
MethodParameters:
Name Flags
pixels
maxColors
filters
private java.util.List<com.android.internal.ml.clustering.KMeans$Mean> getOptimalKMeans(int, float[][]);
descriptor: (I[[F)Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: ldc -1.7976931348623157E308
dstore 4
start local 4 2: aload 0
getfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mInitializations:I
istore 6
start local 6 3: goto 10
4: StackMap locals: java.util.List double int
StackMap stack:
aload 0
getfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mKMeans:Lcom/android/internal/ml/clustering/KMeans;
iload 1
aload 2
invokevirtual com.android.internal.ml.clustering.KMeans.predict:(I[[F)Ljava/util/List;
astore 7
start local 7 5: aload 7
invokestatic com.android.internal.ml.clustering.KMeans.score:(Ljava/util/List;)D
dstore 8
start local 8 6: aload 3
ifnull 7
dload 8
dload 4
dcmpl
ifle 9
7: StackMap locals: java.util.List double
StackMap stack:
dload 8
dstore 4
8: aload 7
astore 3
9: StackMap locals:
StackMap stack:
iinc 6 -1
end local 8 end local 7 10: StackMap locals:
StackMap stack:
iload 6
ifgt 4
11: aload 3
areturn
end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/android/internal/graphics/palette/VariationalKMeansQuantizer;
0 12 1 k I
0 12 2 inputData [[F
1 12 3 optimal Ljava/util/List<Lcom/android/internal/ml/clustering/KMeans$Mean;>;
2 12 4 optimalScore D
3 12 6 runs I
5 10 7 means Ljava/util/List<Lcom/android/internal/ml/clustering/KMeans$Mean;>;
6 10 8 score D
Signature: (I[[F)Ljava/util/List<Lcom/android/internal/ml/clustering/KMeans$Mean;>;
MethodParameters:
Name Flags
k
inputData
public java.util.List<com.android.internal.graphics.palette.Palette$Swatch> getQuantizedColors();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.android.internal.graphics.palette.VariationalKMeansQuantizer.mQuantizedColors:Ljava/util/List;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/android/internal/graphics/palette/VariationalKMeansQuantizer;
Signature: ()Ljava/util/List<Lcom/android/internal/graphics/palette/Palette$Swatch;>;
}
SourceFile: "VariationalKMeansQuantizer.java"
InnerClasses:
public abstract Filter = com.android.internal.graphics.palette.Palette$Filter of com.android.internal.graphics.palette.Palette
public final Swatch = com.android.internal.graphics.palette.Palette$Swatch of com.android.internal.graphics.palette.Palette
public Mean = com.android.internal.ml.clustering.KMeans$Mean of com.android.internal.ml.clustering.KMeans