AspectRatioFrameLayout.smali

.class public Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;
.super Landroid/widget/FrameLayout;
.source "AspectRatioFrameLayout.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;,
        Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$ResizeMode;,
        Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioListener;
    }
.end annotation


# static fields
.field private static final MAX_ASPECT_RATIO_DEFORMATION_FRACTION:F = 0.01f

.field public static final RESIZE_MODE_FILL:I

.field public static final RESIZE_MODE_FIT:I

.field public static final RESIZE_MODE_FIXED_HEIGHT:I

.field public static final RESIZE_MODE_FIXED_WIDTH:I

.field public static final RESIZE_MODE_ZOOM:I


# instance fields
.field private aspectRatioListener:Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioListener;

.field private final aspectRatioUpdateDispatcher:Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;

.field private drawingReady:Z

.field private matrix:Landroid/graphics/Matrix;

.field private resizeMode:I

.field private rotation:I

.field private videoAspectRatio:F


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

    const v0, 0x156c

    invoke-static {v0}, Lnp/NPFog;->d(I)I

    move-result v0

    sput v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->RESIZE_MODE_FILL:I

    const v0, 0x156f

    invoke-static {v0}, Lnp/NPFog;->d(I)I

    move-result v0

    sput v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->RESIZE_MODE_FIT:I

    const v0, 0x156d

    invoke-static {v0}, Lnp/NPFog;->d(I)I

    move-result v0

    sput v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->RESIZE_MODE_FIXED_HEIGHT:I

    const v0, 0x156e

    invoke-static {v0}, Lnp/NPFog;->d(I)I

    move-result v0

    sput v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->RESIZE_MODE_FIXED_WIDTH:I

    const v0, 0x156b

    invoke-static {v0}, Lnp/NPFog;->d(I)I

    move-result v0

    sput v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->RESIZE_MODE_ZOOM:I

    return-void
.end method

.method public constructor <init>(Landroid/content/Context;)V
    .registers 4
    .param p1, "context"    # Landroid/content/Context;

    .line 110
    invoke-direct {p0, p1}, Landroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V

    .line 107
    new-instance v0, Landroid/graphics/Matrix;

    invoke-direct {v0}, Landroid/graphics/Matrix;-><init>()V

    iput-object v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->matrix:Landroid/graphics/Matrix;

    .line 111
    const/4 v0, 0x0

    iput v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->resizeMode:I

    .line 112
    new-instance v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;

    const/4 v1, 0x0

    invoke-direct {v0, p0, v1}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;-><init>(Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$1;)V

    iput-object v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->aspectRatioUpdateDispatcher:Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;

    .line 113
    return-void
.end method

.method static synthetic access$100(Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;)Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioListener;
    .registers 2
    .param p0, "x0"    # Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;

    .line 31
    iget-object v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->aspectRatioListener:Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioListener;

    return-object v0
.end method


# virtual methods
.method public getAspectRatio()F
    .registers 2

    .line 162
    iget v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    return v0
.end method

.method public getResizeMode()I
    .registers 2

    .line 139
    iget v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->resizeMode:I

    return v0
.end method

.method public getVideoRotation()I
    .registers 2

    .line 166
    iget v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->rotation:I

    return v0
.end method

.method public isDrawingReady()Z
    .registers 2

    .line 170
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->drawingReady:Z

    return v0
.end method

.method protected onMeasure(II)V
    .registers 18
    .param p1, "widthMeasureSpec"    # I
    .param p2, "heightMeasureSpec"    # I

    .line 175
    move-object v0, p0

    invoke-super/range {p0 .. p2}, Landroid/widget/FrameLayout;->onMeasure(II)V

    .line 176
    iget v1, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    const/4 v2, 0x0

    cmpg-float v1, v1, v2

    if-gtz v1, :cond_c

    .line 178
    return-void

    .line 181
    :cond_c
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->getMeasuredWidth()I

    move-result v1

    .line 182
    .local v1, "width":I
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->getMeasuredHeight()I

    move-result v3

    .line 183
    .local v3, "height":I
    int-to-float v4, v1

    int-to-float v5, v3

    div-float/2addr v4, v5

    .line 184
    .local v4, "viewAspectRatio":F
    iget v5, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    div-float/2addr v5, v4

    const/high16 v6, 0x3f800000    # 1.0f

    sub-float/2addr v5, v6

    .line 185
    .local v5, "aspectDeformation":F
    invoke-static {v5}, Ljava/lang/Math;->abs(F)F

    move-result v7

    const v8, 0x3c23d70a    # 0.01f

    cmpg-float v7, v7, v8

    if-gtz v7, :cond_31

    .line 187
    iget-object v2, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->aspectRatioUpdateDispatcher:Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;

    iget v6, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    const/4 v7, 0x0

    invoke-virtual {v2, v6, v4, v7}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;->scheduleUpdate(FFZ)V

    .line 188
    return-void

    .line 191
    :cond_31
    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->resizeMode:I

    const/4 v8, 0x2

    const/4 v9, 0x1

    if-eqz v7, :cond_71

    if-eq v7, v9, :cond_6b

    if-eq v7, v8, :cond_64

    const/4 v10, 0x3

    if-eq v7, v10, :cond_53

    const/4 v10, 0x4

    if-eq v7, v10, :cond_42

    goto :goto_82

    .line 199
    :cond_42
    cmpl-float v2, v5, v2

    if-lez v2, :cond_4d

    .line 200
    int-to-float v2, v3

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    mul-float v2, v2, v7

    float-to-int v1, v2

    goto :goto_82

    .line 202
    :cond_4d
    int-to-float v2, v1

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    div-float/2addr v2, v7

    float-to-int v3, v2

    .line 204
    goto :goto_82

    .line 213
    :cond_53
    cmpg-float v2, v5, v2

    if-gtz v2, :cond_5d

    .line 214
    int-to-float v2, v1

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    div-float/2addr v2, v7

    float-to-int v3, v2

    goto :goto_82

    .line 216
    :cond_5d
    int-to-float v2, v3

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    mul-float v2, v2, v7

    float-to-int v1, v2

    goto :goto_82

    .line 196
    :cond_64
    int-to-float v2, v3

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    mul-float v2, v2, v7

    float-to-int v1, v2

    .line 197
    goto :goto_82

    .line 193
    :cond_6b
    int-to-float v2, v1

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    div-float/2addr v2, v7

    float-to-int v3, v2

    .line 194
    goto :goto_82

    .line 206
    :cond_71
    cmpl-float v2, v5, v2

    if-lez v2, :cond_7b

    .line 207
    int-to-float v2, v1

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    div-float/2addr v2, v7

    float-to-int v3, v2

    goto :goto_82

    .line 209
    :cond_7b
    int-to-float v2, v3

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    mul-float v2, v2, v7

    float-to-int v1, v2

    .line 211
    nop

    .line 222
    :goto_82
    iget-object v2, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->aspectRatioUpdateDispatcher:Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;

    iget v7, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    invoke-virtual {v2, v7, v4, v9}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioUpdateDispatcher;->scheduleUpdate(FFZ)V

    .line 223
    const/high16 v2, 0x40000000    # 2.0f

    invoke-static {v1, v2}, Landroid/view/View$MeasureSpec;->makeMeasureSpec(II)I

    move-result v7

    invoke-static {v3, v2}, Landroid/view/View$MeasureSpec;->makeMeasureSpec(II)I

    move-result v2

    invoke-super {p0, v7, v2}, Landroid/widget/FrameLayout;->onMeasure(II)V

    .line 225
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->getChildCount()I

    move-result v2

    .line 226
    .local v2, "count":I
    const/4 v7, 0x0

    .local v7, "a":I
    :goto_9b
    if-ge v7, v2, :cond_e7

    .line 227
    invoke-virtual {p0, v7}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->getChildAt(I)Landroid/view/View;

    move-result-object v9

    .line 228
    .local v9, "child":Landroid/view/View;
    instance-of v10, v9, Landroid/view/TextureView;

    if-eqz v10, :cond_e4

    .line 229
    iget-object v10, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->matrix:Landroid/graphics/Matrix;

    invoke-virtual {v10}, Landroid/graphics/Matrix;->reset()V

    .line 230
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->getWidth()I

    move-result v10

    div-int/2addr v10, v8

    .line 231
    .local v10, "px":I
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->getHeight()I

    move-result v11

    div-int/2addr v11, v8

    .line 232
    .local v11, "py":I
    iget-object v8, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->matrix:Landroid/graphics/Matrix;

    iget v12, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->rotation:I

    int-to-float v12, v12

    int-to-float v13, v10

    int-to-float v14, v11

    invoke-virtual {v8, v12, v13, v14}, Landroid/graphics/Matrix;->postRotate(FFF)Z

    .line 233
    iget v8, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->rotation:I

    const/16 v12, 0x5a

    if-eq v8, v12, :cond_c8

    const/16 v12, 0x10e

    if-ne v8, v12, :cond_db

    .line 234
    :cond_c8
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->getHeight()I

    move-result v8

    int-to-float v8, v8

    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->getWidth()I

    move-result v12

    int-to-float v12, v12

    div-float/2addr v8, v12

    .line 235
    .local v8, "ratio":F
    iget-object v12, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->matrix:Landroid/graphics/Matrix;

    div-float/2addr v6, v8

    int-to-float v13, v10

    int-to-float v14, v11

    invoke-virtual {v12, v6, v8, v13, v14}, Landroid/graphics/Matrix;->postScale(FFFF)Z

    .line 237
    .end local v8    # "ratio":F
    :cond_db
    move-object v6, v9

    check-cast v6, Landroid/view/TextureView;

    iget-object v8, v0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->matrix:Landroid/graphics/Matrix;

    invoke-virtual {v6, v8}, Landroid/view/TextureView;->setTransform(Landroid/graphics/Matrix;)V

    .line 238
    goto :goto_e7

    .line 226
    .end local v9    # "child":Landroid/view/View;
    .end local v10    # "px":I
    .end local v11    # "py":I
    :cond_e4
    add-int/lit8 v7, v7, 0x1

    goto :goto_9b

    .line 241
    .end local v7    # "a":I
    :cond_e7
    :goto_e7
    return-void
.end method

.method public setAspectRatio(FI)V
    .registers 4
    .param p1, "widthHeightRatio"    # F
    .param p2, "rotation"    # I

    .line 121
    iget v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    cmpl-float v0, v0, p1

    if-eqz v0, :cond_d

    .line 122
    iput p1, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->videoAspectRatio:F

    .line 123
    iput p2, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->rotation:I

    .line 124
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->requestLayout()V

    .line 126
    :cond_d
    return-void
.end method

.method public setAspectRatioListener(Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioListener;)V
    .registers 2
    .param p1, "listener"    # Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioListener;

    .line 134
    iput-object p1, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->aspectRatioListener:Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout$AspectRatioListener;

    .line 135
    return-void
.end method

.method public setDrawingReady(Z)V
    .registers 3
    .param p1, "value"    # Z

    .line 155
    iget-boolean v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->drawingReady:Z

    if-ne v0, p1, :cond_5

    .line 156
    return-void

    .line 158
    :cond_5
    iput-boolean p1, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->drawingReady:Z

    .line 159
    return-void
.end method

.method public setResizeMode(I)V
    .registers 3
    .param p1, "resizeMode"    # I

    .line 148
    iget v0, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->resizeMode:I

    if-eq v0, p1, :cond_9

    .line 149
    iput p1, p0, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->resizeMode:I

    .line 150
    invoke-virtual {p0}, Lcom/google/android/exoplayer2/ui/AspectRatioFrameLayout;->requestLayout()V

    .line 152
    :cond_9
    return-void
.end method