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