Spectrum.smali

.class public Lcom/facebook/spectrum/Spectrum;
.super Ljava/lang/Object;
.source "Spectrum.java"

# interfaces
.implements Lcom/facebook/spectrum/ISpectrum;


# instance fields
.field public final mSpectrumHybrid:Lcom/facebook/spectrum/SpectrumHybrid;

.field public final mSpectrumLogger:Lcom/facebook/spectrum/logging/SpectrumLogger;


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

    return-void
.end method

.method public constructor <init>(Lcom/facebook/spectrum/logging/SpectrumLogger;Lcom/facebook/spectrum/Configuration;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)V
    .registers 5

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

    new-instance v0, Lcom/facebook/spectrum/SpectrumHybrid;

    invoke-direct {v0, p2, p3}, Lcom/facebook/spectrum/SpectrumHybrid;-><init>(Lcom/facebook/spectrum/Configuration;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)V

    iput-object v0, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumHybrid:Lcom/facebook/spectrum/SpectrumHybrid;

    invoke-static {p1}, Lcom/facebook/spectrum/utils/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object p1

    check-cast p1, Lcom/facebook/spectrum/logging/SpectrumLogger;

    iput-object p1, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumLogger:Lcom/facebook/spectrum/logging/SpectrumLogger;

    return-void
.end method

.method private internalExecute(Lcom/facebook/spectrum/SpectrumTask;Lcom/facebook/spectrum/options/Options;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 5
    .annotation build Landroid/annotation/SuppressLint;
        value = {
            "CatchGeneralException"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    invoke-static {p1}, Lcom/facebook/spectrum/utils/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;

    iget-object v0, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumLogger:Lcom/facebook/spectrum/logging/SpectrumLogger;

    invoke-interface {v0, p2, p3}, Lcom/facebook/spectrum/logging/SpectrumLogger;->onStart(Lcom/facebook/spectrum/options/Options;Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object p2

    :try_start_9
    iget-object p3, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumHybrid:Lcom/facebook/spectrum/SpectrumHybrid;

    invoke-interface {p1, p3}, Lcom/facebook/spectrum/SpectrumTask;->execute(Lcom/facebook/spectrum/SpectrumHybrid;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1
    :try_end_f
    .catch Lcom/facebook/spectrum/SpectrumException; {:try_start_9 .. :try_end_f} :catch_23
    .catch Ljava/lang/Exception; {:try_start_9 .. :try_end_f} :catch_17
    .catchall {:try_start_9 .. :try_end_f} :catchall_15

    iget-object p3, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumLogger:Lcom/facebook/spectrum/logging/SpectrumLogger;

    invoke-interface {p3, p2, p1}, Lcom/facebook/spectrum/logging/SpectrumLogger;->onFinish(Ljava/lang/Object;Lcom/facebook/spectrum/SpectrumResult;)V

    return-object p1

    :catchall_15
    move-exception p1

    goto :goto_2a

    :catch_17
    move-exception p1

    :try_start_18
    iget-object p3, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumLogger:Lcom/facebook/spectrum/logging/SpectrumLogger;

    invoke-interface {p3, p2, p1}, Lcom/facebook/spectrum/logging/SpectrumLogger;->onError(Ljava/lang/Object;Ljava/lang/Exception;)V

    new-instance p3, Lcom/facebook/spectrum/SpectrumException;

    invoke-direct {p3, p1}, Lcom/facebook/spectrum/SpectrumException;-><init>(Ljava/lang/Exception;)V

    throw p3

    :catch_23
    move-exception p1

    iget-object p3, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumLogger:Lcom/facebook/spectrum/logging/SpectrumLogger;

    invoke-interface {p3, p2, p1}, Lcom/facebook/spectrum/logging/SpectrumLogger;->onError(Ljava/lang/Object;Ljava/lang/Exception;)V

    throw p1
    :try_end_2a
    .catchall {:try_start_18 .. :try_end_2a} :catchall_15

    :goto_2a
    iget-object p3, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumLogger:Lcom/facebook/spectrum/logging/SpectrumLogger;

    const/4 v0, 0x0

    invoke-interface {p3, p2, v0}, Lcom/facebook/spectrum/logging/SpectrumLogger;->onFinish(Ljava/lang/Object;Lcom/facebook/spectrum/SpectrumResult;)V

    throw p1
.end method

.method public static varargs make(Lcom/facebook/spectrum/logging/SpectrumLogger;Lcom/facebook/spectrum/Configuration;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)Lcom/facebook/spectrum/Spectrum;
    .registers 4

    new-instance v0, Lcom/facebook/spectrum/Spectrum;

    invoke-direct {v0, p0, p1, p2}, Lcom/facebook/spectrum/Spectrum;-><init>(Lcom/facebook/spectrum/logging/SpectrumLogger;Lcom/facebook/spectrum/Configuration;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)V

    return-object v0
.end method

.method public static make(Lcom/facebook/spectrum/logging/SpectrumLogger;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)Lcom/facebook/spectrum/Spectrum;
    .registers 4

    new-instance v0, Lcom/facebook/spectrum/Spectrum;

    invoke-static {}, Lcom/facebook/spectrum/Configuration;->makeEmpty()Lcom/facebook/spectrum/Configuration;

    move-result-object v1

    invoke-direct {v0, p0, v1, p1}, Lcom/facebook/spectrum/Spectrum;-><init>(Lcom/facebook/spectrum/logging/SpectrumLogger;Lcom/facebook/spectrum/Configuration;[Lcom/facebook/spectrum/plugins/SpectrumPlugin;)V

    return-object v0
.end method


# virtual methods
.method public decode(Lcom/facebook/spectrum/EncodedImageSource;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/DecodeOptions;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    new-instance v0, Lcom/facebook/spectrum/SpectrumTask$Decode;

    invoke-direct {v0, p1, p2, p3}, Lcom/facebook/spectrum/SpectrumTask$Decode;-><init>(Lcom/facebook/spectrum/EncodedImageSource;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/DecodeOptions;)V

    invoke-direct {p0, v0, p3, p4}, Lcom/facebook/spectrum/Spectrum;->internalExecute(Lcom/facebook/spectrum/SpectrumTask;Lcom/facebook/spectrum/options/Options;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1

    return-object p1
.end method

.method public encode(Landroid/graphics/Bitmap;Lcom/facebook/spectrum/EncodedImageSink;Lcom/facebook/spectrum/options/EncodeOptions;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    new-instance v0, Lcom/facebook/spectrum/SpectrumTask$Encode;

    invoke-direct {v0, p1, p2, p3}, Lcom/facebook/spectrum/SpectrumTask$Encode;-><init>(Landroid/graphics/Bitmap;Lcom/facebook/spectrum/EncodedImageSink;Lcom/facebook/spectrum/options/EncodeOptions;)V

    invoke-direct {p0, v0, p3, p4}, Lcom/facebook/spectrum/Spectrum;->internalExecute(Lcom/facebook/spectrum/SpectrumTask;Lcom/facebook/spectrum/options/Options;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1

    return-object p1
.end method

.method public isAvailable()Z
    .registers 2

    iget-object v0, p0, Lcom/facebook/spectrum/Spectrum;->mSpectrumHybrid:Lcom/facebook/spectrum/SpectrumHybrid;

    invoke-virtual {v0}, Lcom/facebook/spectrum/SpectrumHybrid;->isAvailable()Z

    move-result v0

    return v0
.end method

.method public isImageFormatSupported(Lcom/facebook/spectrum/image/ImageFormat;)Z
    .registers 3

    sget-object v0, Lcom/facebook/spectrum/image/ImageFormat;->BITMAP:Lcom/facebook/spectrum/image/ImageFormat;

    invoke-virtual {v0, p1}, Lcom/facebook/spectrum/image/ImageFormat;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_23

    sget-object v0, Lcom/facebook/spectrum/image/EncodedImageFormat;->JPEG:Lcom/facebook/spectrum/image/EncodedImageFormat;

    invoke-virtual {v0, p1}, Lcom/facebook/spectrum/image/ImageFormat;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_23

    sget-object v0, Lcom/facebook/spectrum/image/EncodedImageFormat;->PNG:Lcom/facebook/spectrum/image/EncodedImageFormat;

    invoke-virtual {v0, p1}, Lcom/facebook/spectrum/image/ImageFormat;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_23

    sget-object v0, Lcom/facebook/spectrum/image/EncodedImageFormat;->WEBP:Lcom/facebook/spectrum/image/EncodedImageFormat;

    invoke-virtual {v0, p1}, Lcom/facebook/spectrum/image/ImageFormat;->equals(Ljava/lang/Object;)Z

    move-result p1

    if-eqz p1, :cond_21

    goto :goto_23

    :cond_21
    const/4 p1, 0x0

    return p1

    :cond_23
    :goto_23
    const/4 p1, 0x1

    return p1
.end method

.method public transcode(Lcom/facebook/spectrum/EncodedImageSource;Lcom/facebook/spectrum/EncodedImageSink;Lcom/facebook/spectrum/options/TranscodeOptions;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    new-instance v0, Lcom/facebook/spectrum/SpectrumTask$Transcode;

    invoke-direct {v0, p1, p2, p3}, Lcom/facebook/spectrum/SpectrumTask$Transcode;-><init>(Lcom/facebook/spectrum/EncodedImageSource;Lcom/facebook/spectrum/EncodedImageSink;Lcom/facebook/spectrum/options/TranscodeOptions;)V

    invoke-direct {p0, v0, p3, p4}, Lcom/facebook/spectrum/Spectrum;->internalExecute(Lcom/facebook/spectrum/SpectrumTask;Lcom/facebook/spectrum/options/Options;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1

    return-object p1
.end method

.method public transform(Landroid/graphics/Bitmap;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/TransformOptions;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;
    .registers 6
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/facebook/spectrum/SpectrumException;
        }
    .end annotation

    new-instance v0, Lcom/facebook/spectrum/SpectrumTask$Transform;

    invoke-direct {v0, p1, p2, p3}, Lcom/facebook/spectrum/SpectrumTask$Transform;-><init>(Landroid/graphics/Bitmap;Lcom/facebook/spectrum/BitmapTarget;Lcom/facebook/spectrum/options/TransformOptions;)V

    invoke-direct {p0, v0, p3, p4}, Lcom/facebook/spectrum/Spectrum;->internalExecute(Lcom/facebook/spectrum/SpectrumTask;Lcom/facebook/spectrum/options/Options;Ljava/lang/Object;)Lcom/facebook/spectrum/SpectrumResult;

    move-result-object p1

    return-object p1
.end method