a.smali

.class public final Landroidx/palette/graphics/a;
.super Ljava/lang/Object;
.source "SourceFile"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Landroidx/palette/graphics/a$b;
    }
.end annotation


# static fields
.field public static final f:Landroidx/palette/graphics/a$a;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Comparator<",
            "Landroidx/palette/graphics/a$b;",
            ">;"
        }
    .end annotation
.end field


# instance fields
.field public final a:[I

.field public final b:[I

.field public final c:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List<",
            "Landroidx/palette/graphics/b$c;",
            ">;"
        }
    .end annotation
.end field

.field public final d:[Landroidx/palette/graphics/b$b;

.field public final e:[F


# direct methods
.method public static constructor <clinit>()V
    .registers 1

    new-instance v0, Landroidx/palette/graphics/a$a;

    invoke-direct {v0}, Landroidx/palette/graphics/a$a;-><init>()V

    sput-object v0, Landroidx/palette/graphics/a;->f:Landroidx/palette/graphics/a$a;

    return-void
.end method

.method public constructor <init>([II[Landroidx/palette/graphics/b$b;)V
    .registers 21

    move-object/from16 v0, p0

    move-object/from16 v1, p1

    move/from16 v2, p2

    .line 1
    invoke-direct/range {p0 .. p0}, Ljava/lang/Object;-><init>()V

    const/4 v3, 0x3

    new-array v3, v3, [F

    .line 2
    iput-object v3, v0, Landroidx/palette/graphics/a;->e:[F

    move-object/from16 v3, p3

    .line 3
    iput-object v3, v0, Landroidx/palette/graphics/a;->d:[Landroidx/palette/graphics/b$b;

    const v3, 0x8000

    new-array v4, v3, [I

    .line 4
    iput-object v4, v0, Landroidx/palette/graphics/a;->b:[I

    const/4 v5, 0x0

    const/4 v6, 0x0

    .line 5
    :goto_1b
    array-length v7, v1

    const/16 v8, 0x8

    const/4 v9, 0x5

    const/4 v10, 0x1

    if-ge v6, v7, :cond_4c

    .line 6
    aget v7, v1, v6

    .line 7
    invoke-static {v7}, Landroid/graphics/Color;->red(I)I

    move-result v11

    invoke-static {v11, v8, v9}, Landroidx/palette/graphics/a;->c(III)I

    move-result v11

    .line 8
    invoke-static {v7}, Landroid/graphics/Color;->green(I)I

    move-result v12

    invoke-static {v12, v8, v9}, Landroidx/palette/graphics/a;->c(III)I

    move-result v12

    .line 9
    invoke-static {v7}, Landroid/graphics/Color;->blue(I)I

    move-result v7

    invoke-static {v7, v8, v9}, Landroidx/palette/graphics/a;->c(III)I

    move-result v7

    shl-int/lit8 v8, v11, 0xa

    shl-int/lit8 v9, v12, 0x5

    or-int/2addr v8, v9

    or-int/2addr v7, v8

    .line 10
    aput v7, v1, v6

    .line 11
    aget v8, v4, v7

    add-int/2addr v8, v10

    aput v8, v4, v7

    add-int/lit8 v6, v6, 0x1

    goto :goto_1b

    :cond_4c
    const/4 v1, 0x0

    const/4 v6, 0x0

    :goto_4e
    if-ge v1, v3, :cond_7e

    .line 12
    aget v7, v4, v1

    if-lez v7, :cond_75

    .line 13
    invoke-static {v1}, Landroidx/palette/graphics/a;->a(I)I

    move-result v7

    .line 14
    iget-object v11, v0, Landroidx/palette/graphics/a;->e:[F

    sget-object v12, Landroidx/core/graphics/e;->a:Ljava/lang/ThreadLocal;

    .line 15
    invoke-static {v7}, Landroid/graphics/Color;->red(I)I

    move-result v12

    invoke-static {v7}, Landroid/graphics/Color;->green(I)I

    move-result v13

    invoke-static {v7}, Landroid/graphics/Color;->blue(I)I

    move-result v14

    invoke-static {v12, v13, v14, v11}, Landroidx/core/graphics/e;->b(III[F)V

    .line 16
    iget-object v11, v0, Landroidx/palette/graphics/a;->e:[F

    invoke-virtual {v0, v7, v11}, Landroidx/palette/graphics/a;->d(I[F)Z

    move-result v7

    if-eqz v7, :cond_75

    .line 17
    aput v5, v4, v1

    .line 18
    :cond_75
    aget v7, v4, v1

    if-lez v7, :cond_7b

    add-int/lit8 v6, v6, 0x1

    :cond_7b
    add-int/lit8 v1, v1, 0x1

    goto :goto_4e

    .line 19
    :cond_7e
    new-array v1, v6, [I

    iput-object v1, v0, Landroidx/palette/graphics/a;->a:[I

    const/4 v7, 0x0

    const/4 v11, 0x0

    :goto_84
    if-ge v7, v3, :cond_92

    .line 20
    aget v12, v4, v7

    if-lez v12, :cond_8f

    add-int/lit8 v12, v11, 0x1

    .line 21
    aput v7, v1, v11

    move v11, v12

    :cond_8f
    add-int/lit8 v7, v7, 0x1

    goto :goto_84

    :cond_92
    if-gt v6, v2, :cond_b2

    .line 22
    new-instance v2, Ljava/util/ArrayList;

    invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V

    iput-object v2, v0, Landroidx/palette/graphics/a;->c:Ljava/util/ArrayList;

    :goto_9b
    if-ge v5, v6, :cond_1da

    .line 23
    aget v2, v1, v5

    .line 24
    iget-object v3, v0, Landroidx/palette/graphics/a;->c:Ljava/util/ArrayList;

    new-instance v7, Landroidx/palette/graphics/b$c;

    invoke-static {v2}, Landroidx/palette/graphics/a;->a(I)I

    move-result v8

    aget v2, v4, v2

    invoke-direct {v7, v8, v2}, Landroidx/palette/graphics/b$c;-><init>(II)V

    invoke-virtual {v3, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    add-int/lit8 v5, v5, 0x1

    goto :goto_9b

    .line 25
    :cond_b2
    new-instance v1, Ljava/util/PriorityQueue;

    sget-object v3, Landroidx/palette/graphics/a;->f:Landroidx/palette/graphics/a$a;

    invoke-direct {v1, v2, v3}, Ljava/util/PriorityQueue;-><init>(ILjava/util/Comparator;)V

    .line 26
    new-instance v3, Landroidx/palette/graphics/a$b;

    iget-object v4, v0, Landroidx/palette/graphics/a;->a:[I

    array-length v4, v4

    sub-int/2addr v4, v10

    invoke-direct {v3, v0, v5, v4}, Landroidx/palette/graphics/a$b;-><init>(Landroidx/palette/graphics/a;II)V

    invoke-virtual {v1, v3}, Ljava/util/PriorityQueue;->offer(Ljava/lang/Object;)Z

    .line 27
    :goto_c5
    invoke-virtual {v1}, Ljava/util/PriorityQueue;->size()I

    move-result v3

    if-ge v3, v2, :cond_15a

    .line 28
    invoke-virtual {v1}, Ljava/util/PriorityQueue;->poll()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Landroidx/palette/graphics/a$b;

    if-eqz v3, :cond_15a

    .line 29
    iget v4, v3, Landroidx/palette/graphics/a$b;->b:I

    add-int/lit8 v6, v4, 0x1

    iget v7, v3, Landroidx/palette/graphics/a$b;->a:I

    sub-int/2addr v6, v7

    if-le v6, v10, :cond_de

    const/4 v11, 0x1

    goto :goto_df

    :cond_de
    const/4 v11, 0x0

    :goto_df
    if-eqz v11, :cond_15a

    if-le v6, v10, :cond_e5

    const/4 v6, 0x1

    goto :goto_e6

    :cond_e5
    const/4 v6, 0x0

    :goto_e6
    if-eqz v6, :cond_152

    .line 30
    iget v6, v3, Landroidx/palette/graphics/a$b;->e:I

    iget v11, v3, Landroidx/palette/graphics/a$b;->d:I

    sub-int/2addr v6, v11

    .line 31
    iget v11, v3, Landroidx/palette/graphics/a$b;->g:I

    iget v12, v3, Landroidx/palette/graphics/a$b;->f:I

    sub-int/2addr v11, v12

    .line 32
    iget v12, v3, Landroidx/palette/graphics/a$b;->i:I

    iget v13, v3, Landroidx/palette/graphics/a$b;->h:I

    sub-int/2addr v12, v13

    if-lt v6, v11, :cond_fd

    if-lt v6, v12, :cond_fd

    const/4 v6, -0x3

    goto :goto_104

    :cond_fd
    if-lt v11, v6, :cond_103

    if-lt v11, v12, :cond_103

    const/4 v6, -0x2

    goto :goto_104

    :cond_103
    const/4 v6, -0x1

    .line 33
    :goto_104
    iget-object v11, v3, Landroidx/palette/graphics/a$b;->j:Landroidx/palette/graphics/a;

    iget-object v12, v11, Landroidx/palette/graphics/a;->a:[I

    .line 34
    iget-object v11, v11, Landroidx/palette/graphics/a;->b:[I

    .line 35
    invoke-static {v12, v6, v7, v4}, Landroidx/palette/graphics/a;->b([IIII)V

    .line 36
    iget v4, v3, Landroidx/palette/graphics/a$b;->a:I

    iget v7, v3, Landroidx/palette/graphics/a$b;->b:I

    add-int/2addr v7, v10

    invoke-static {v12, v4, v7}, Ljava/util/Arrays;->sort([III)V

    .line 37
    iget v4, v3, Landroidx/palette/graphics/a$b;->a:I

    iget v7, v3, Landroidx/palette/graphics/a$b;->b:I

    invoke-static {v12, v6, v4, v7}, Landroidx/palette/graphics/a;->b([IIII)V

    .line 38
    iget v4, v3, Landroidx/palette/graphics/a$b;->c:I

    div-int/lit8 v4, v4, 0x2

    .line 39
    iget v6, v3, Landroidx/palette/graphics/a$b;->a:I

    const/4 v7, 0x0

    :goto_123
    iget v13, v3, Landroidx/palette/graphics/a$b;->b:I

    if-gt v6, v13, :cond_138

    .line 40
    aget v14, v12, v6

    aget v14, v11, v14

    add-int/2addr v7, v14

    if-lt v7, v4, :cond_135

    add-int/lit8 v13, v13, -0x1

    .line 41
    invoke-static {v13, v6}, Ljava/lang/Math;->min(II)I

    move-result v4

    goto :goto_13a

    :cond_135
    add-int/lit8 v6, v6, 0x1

    goto :goto_123

    .line 42
    :cond_138
    iget v4, v3, Landroidx/palette/graphics/a$b;->a:I

    .line 43
    :goto_13a
    new-instance v6, Landroidx/palette/graphics/a$b;

    iget-object v7, v3, Landroidx/palette/graphics/a$b;->j:Landroidx/palette/graphics/a;

    add-int/lit8 v11, v4, 0x1

    iget v12, v3, Landroidx/palette/graphics/a$b;->b:I

    invoke-direct {v6, v7, v11, v12}, Landroidx/palette/graphics/a$b;-><init>(Landroidx/palette/graphics/a;II)V

    .line 44
    iput v4, v3, Landroidx/palette/graphics/a$b;->b:I

    .line 45
    invoke-virtual {v3}, Landroidx/palette/graphics/a$b;->a()V

    .line 46
    invoke-virtual {v1, v6}, Ljava/util/PriorityQueue;->offer(Ljava/lang/Object;)Z

    .line 47
    invoke-virtual {v1, v3}, Ljava/util/PriorityQueue;->offer(Ljava/lang/Object;)Z

    goto/16 :goto_c5

    .line 48
    :cond_152
    new-instance v1, Ljava/lang/IllegalStateException;

    const-string v2, "Can not split a box with only 1 color"

    invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v1

    .line 49
    :cond_15a
    new-instance v2, Ljava/util/ArrayList;

    invoke-virtual {v1}, Ljava/util/PriorityQueue;->size()I

    move-result v3

    invoke-direct {v2, v3}, Ljava/util/ArrayList;-><init>(I)V

    .line 50
    invoke-virtual {v1}, Ljava/util/PriorityQueue;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_167
    :goto_167
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v3

    if-eqz v3, :cond_1d8

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Landroidx/palette/graphics/a$b;

    .line 51
    iget-object v4, v3, Landroidx/palette/graphics/a$b;->j:Landroidx/palette/graphics/a;

    iget-object v6, v4, Landroidx/palette/graphics/a;->a:[I

    .line 52
    iget-object v4, v4, Landroidx/palette/graphics/a;->b:[I

    .line 53
    iget v7, v3, Landroidx/palette/graphics/a$b;->a:I

    const/4 v10, 0x0

    const/4 v11, 0x0

    const/4 v12, 0x0

    const/4 v13, 0x0

    :goto_17f
    iget v14, v3, Landroidx/palette/graphics/a$b;->b:I

    if-gt v7, v14, :cond_1a0

    .line 54
    aget v14, v6, v7

    .line 55
    aget v15, v4, v14

    add-int/2addr v11, v15

    shr-int/lit8 v16, v14, 0xa

    and-int/lit8 v16, v16, 0x1f

    mul-int v16, v16, v15

    add-int v10, v16, v10

    shr-int/lit8 v16, v14, 0x5

    and-int/lit8 v16, v16, 0x1f

    mul-int v16, v16, v15

    add-int v12, v16, v12

    and-int/lit8 v14, v14, 0x1f

    mul-int v15, v15, v14

    add-int/2addr v13, v15

    add-int/lit8 v7, v7, 0x1

    goto :goto_17f

    :cond_1a0
    int-to-float v3, v10

    int-to-float v4, v11

    div-float/2addr v3, v4

    .line 56
    invoke-static {v3}, Ljava/lang/Math;->round(F)I

    move-result v3

    int-to-float v6, v12

    div-float/2addr v6, v4

    .line 57
    invoke-static {v6}, Ljava/lang/Math;->round(F)I

    move-result v6

    int-to-float v7, v13

    div-float/2addr v7, v4

    .line 58
    invoke-static {v7}, Ljava/lang/Math;->round(F)I

    move-result v4

    .line 59
    new-instance v7, Landroidx/palette/graphics/b$c;

    .line 60
    invoke-static {v3, v9, v8}, Landroidx/palette/graphics/a;->c(III)I

    move-result v3

    .line 61
    invoke-static {v6, v9, v8}, Landroidx/palette/graphics/a;->c(III)I

    move-result v6

    .line 62
    invoke-static {v4, v9, v8}, Landroidx/palette/graphics/a;->c(III)I

    move-result v4

    .line 63
    invoke-static {v3, v6, v4}, Landroid/graphics/Color;->rgb(III)I

    move-result v3

    .line 64
    invoke-direct {v7, v3, v11}, Landroidx/palette/graphics/b$c;-><init>(II)V

    .line 65
    iget v3, v7, Landroidx/palette/graphics/b$c;->d:I

    .line 66
    invoke-virtual {v7}, Landroidx/palette/graphics/b$c;->b()[F

    move-result-object v4

    invoke-virtual {v0, v3, v4}, Landroidx/palette/graphics/a;->d(I[F)Z

    move-result v3

    if-nez v3, :cond_167

    .line 67
    invoke-virtual {v2, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    goto :goto_167

    .line 68
    :cond_1d8
    iput-object v2, v0, Landroidx/palette/graphics/a;->c:Ljava/util/ArrayList;

    :cond_1da
    return-void
.end method

.method public static a(I)I
    .registers 5

    shr-int/lit8 v0, p0, 0xa

    and-int/lit8 v0, v0, 0x1f

    shr-int/lit8 v1, p0, 0x5

    and-int/lit8 v1, v1, 0x1f

    and-int/lit8 p0, p0, 0x1f

    const/16 v2, 0x8

    const/4 v3, 0x5

    .line 1
    invoke-static {v0, v3, v2}, Landroidx/palette/graphics/a;->c(III)I

    move-result v0

    .line 2
    invoke-static {v1, v3, v2}, Landroidx/palette/graphics/a;->c(III)I

    move-result v1

    .line 3
    invoke-static {p0, v3, v2}, Landroidx/palette/graphics/a;->c(III)I

    move-result p0

    .line 4
    invoke-static {v0, v1, p0}, Landroid/graphics/Color;->rgb(III)I

    move-result p0

    return p0
.end method

.method public static b([IIII)V
    .registers 6

    const/4 v0, -0x2

    if-eq p1, v0, :cond_20

    const/4 v0, -0x1

    if-eq p1, v0, :cond_7

    goto :goto_39

    :cond_7
    :goto_7
    if-gt p2, p3, :cond_39

    .line 1
    aget p1, p0, p2

    and-int/lit8 v0, p1, 0x1f

    shl-int/lit8 v0, v0, 0xa

    shr-int/lit8 v1, p1, 0x5

    and-int/lit8 v1, v1, 0x1f

    shl-int/lit8 v1, v1, 0x5

    or-int/2addr v0, v1

    shr-int/lit8 p1, p1, 0xa

    and-int/lit8 p1, p1, 0x1f

    or-int/2addr p1, v0

    .line 2
    aput p1, p0, p2

    add-int/lit8 p2, p2, 0x1

    goto :goto_7

    :cond_20
    :goto_20
    if-gt p2, p3, :cond_39

    .line 3
    aget p1, p0, p2

    shr-int/lit8 v0, p1, 0x5

    and-int/lit8 v0, v0, 0x1f

    shl-int/lit8 v0, v0, 0xa

    shr-int/lit8 v1, p1, 0xa

    and-int/lit8 v1, v1, 0x1f

    shl-int/lit8 v1, v1, 0x5

    or-int/2addr v0, v1

    and-int/lit8 p1, p1, 0x1f

    or-int/2addr p1, v0

    .line 4
    aput p1, p0, p2

    add-int/lit8 p2, p2, 0x1

    goto :goto_20

    :cond_39
    :goto_39
    return-void
.end method

.method public static c(III)I
    .registers 3

    if-le p2, p1, :cond_6

    sub-int p1, p2, p1

    shl-int/2addr p0, p1

    goto :goto_8

    :cond_6
    sub-int/2addr p1, p2

    shr-int/2addr p0, p1

    :goto_8
    const/4 p1, 0x1

    shl-int p2, p1, p2

    sub-int/2addr p2, p1

    and-int/2addr p0, p2

    return p0
.end method


# virtual methods
.method public final d(I[F)Z
    .registers 6

    .line 1
    iget-object p1, p0, Landroidx/palette/graphics/a;->d:[Landroidx/palette/graphics/b$b;

    const/4 v0, 0x0

    if-eqz p1, :cond_1b

    array-length v1, p1

    if-lez v1, :cond_1b

    .line 2
    array-length p1, p1

    const/4 v1, 0x0

    :goto_a
    if-ge v1, p1, :cond_1b

    .line 3
    iget-object v2, p0, Landroidx/palette/graphics/a;->d:[Landroidx/palette/graphics/b$b;

    aget-object v2, v2, v1

    invoke-interface {v2, p2}, Landroidx/palette/graphics/b$b;->a([F)Z

    move-result v2

    if-nez v2, :cond_18

    const/4 p1, 0x1

    return p1

    :cond_18
    add-int/lit8 v1, v1, 0x1

    goto :goto_a

    :cond_1b
    return v0
.end method