WallpaperParallaxEffect.smali
.class public Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;
.super Ljava/lang/Object;
.source "WallpaperParallaxEffect.java"
# interfaces
.implements Landroid/hardware/SensorEventListener;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect$Callback;
}
.end annotation
# instance fields
.field private accelerometer:Landroid/hardware/Sensor;
.field private bufferOffset:I
.field private callback:Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect$Callback;
.field private enabled:Z
.field private pitchBuffer:[F
.field private rollBuffer:[F
.field private sensorManager:Landroid/hardware/SensorManager;
.field private wm:Landroid/view/WindowManager;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Landroid/content/Context;)V
.registers 4
.param p1, "context" # Landroid/content/Context;
.line 31
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 23
const/4 v0, 0x3
new-array v1, v0, [F
iput-object v1, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->rollBuffer:[F
new-array v0, v0, [F
iput-object v0, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->pitchBuffer:[F
.line 32
const-string v0, "window"
invoke-virtual {p1, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/view/WindowManager;
iput-object v0, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->wm:Landroid/view/WindowManager;
.line 33
const-string v0, "sensor"
invoke-virtual {p1, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/hardware/SensorManager;
iput-object v0, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->sensorManager:Landroid/hardware/SensorManager;
.line 34
const/4 v1, 0x1
invoke-virtual {v0, v1}, Landroid/hardware/SensorManager;->getDefaultSensor(I)Landroid/hardware/Sensor;
move-result-object v0
iput-object v0, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->accelerometer:Landroid/hardware/Sensor;
.line 35
return-void
.end method
# virtual methods
.method public getScale(II)F
.registers 7
.param p1, "boundsWidth" # I
.param p2, "boundsHeight" # I
.line 63
const/high16 v0, 0x41800000 # 16.0f
invoke-static {v0}, Lim/tpelyyftgw/messenger/AndroidUtilities;->dp(F)I
move-result v0
.line 64
.local v0, "offset":I
int-to-float v1, p1
mul-int/lit8 v2, v0, 0x2
int-to-float v2, v2
add-float/2addr v1, v2
int-to-float v2, p1
div-float/2addr v1, v2
int-to-float v2, p2
mul-int/lit8 v3, v0, 0x2
int-to-float v3, v3
add-float/2addr v2, v3
int-to-float v3, p2
div-float/2addr v2, v3
invoke-static {v1, v2}, Ljava/lang/Math;->max(FF)F
move-result v1
return v1
.end method
.method public onAccuracyChanged(Landroid/hardware/Sensor;I)V
.registers 3
.param p1, "sensor" # Landroid/hardware/Sensor;
.param p2, "accuracy" # I
.line 123
return-void
.end method
.method public onSensorChanged(Landroid/hardware/SensorEvent;)V
.registers 20
.param p1, "event" # Landroid/hardware/SensorEvent;
.line 69
move-object/from16 v0, p0
move-object/from16 v1, p1
iget-object v2, v0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->wm:Landroid/view/WindowManager;
invoke-interface {v2}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display;
move-result-object v2
invoke-virtual {v2}, Landroid/view/Display;->getRotation()I
move-result v2
.line 71
.local v2, "rotation":I
iget-object v3, v1, Landroid/hardware/SensorEvent;->values:[F
const/4 v4, 0x0
aget v3, v3, v4
const v4, 0x411ce80a
div-float/2addr v3, v4
.line 72
.local v3, "x":F
iget-object v5, v1, Landroid/hardware/SensorEvent;->values:[F
const/4 v6, 0x1
aget v5, v5, v6
div-float/2addr v5, v4
.line 73
.local v5, "y":F
iget-object v7, v1, Landroid/hardware/SensorEvent;->values:[F
const/4 v8, 0x2
aget v7, v7, v8
div-float/2addr v7, v4
.line 76
.local v7, "z":F
float-to-double v9, v3
mul-float v4, v5, v5
mul-float v11, v7, v7
add-float/2addr v4, v11
float-to-double v11, v4
invoke-static {v11, v12}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v11
invoke-static {v9, v10, v11, v12}, Ljava/lang/Math;->atan2(DD)D
move-result-wide v9
const-wide v11, 0x400921fb54442d18L # Math.PI
div-double/2addr v9, v11
const-wide/high16 v13, 0x4000000000000000L # 2.0
mul-double v9, v9, v13
double-to-float v4, v9
.line 77
.local v4, "pitch":F
float-to-double v9, v5
mul-float v15, v3, v3
mul-float v16, v7, v7
add-float v15, v15, v16
move/from16 v17, v7
.end local v7 # "z":F
.local v17, "z":F
float-to-double v6, v15
invoke-static {v6, v7}, Ljava/lang/Math;->sqrt(D)D
move-result-wide v6
invoke-static {v9, v10, v6, v7}, Ljava/lang/Math;->atan2(DD)D
move-result-wide v6
div-double/2addr v6, v11
mul-double v6, v6, v13
double-to-float v6, v6
.line 79
.local v6, "roll":F
const/4 v7, 0x1
if-eq v2, v7, :cond_63
if-eq v2, v8, :cond_60
const/4 v7, 0x3
if-eq v2, v7, :cond_5c
goto :goto_67
.line 93
:cond_5c
neg-float v7, v4
.line 94
.local v7, "tmp":F
move v4, v6
.line 95
move v6, v7
.line 96
goto :goto_67
.line 89
.end local v7 # "tmp":F
:cond_60
neg-float v6, v6
.line 90
neg-float v4, v4
.line 91
goto :goto_67
.line 83
:cond_63
move v7, v4
.line 84
.restart local v7 # "tmp":F
move v4, v6
.line 85
move v6, v7
.line 86
nop
.line 99
.end local v7 # "tmp":F
:goto_67
iget-object v7, v0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->rollBuffer:[F
iget v8, v0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->bufferOffset:I
aput v6, v7, v8
.line 100
iget-object v9, v0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->pitchBuffer:[F
aput v4, v9, v8
.line 101
const/4 v9, 0x1
add-int/2addr v8, v9
array-length v7, v7
rem-int/2addr v8, v7
iput v8, v0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->bufferOffset:I
.line 102
const/4 v7, 0x0
move v4, v7
move v6, v7
.line 103
const/4 v7, 0x0
.local v7, "i":I
:goto_7b
iget-object v8, v0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->rollBuffer:[F
array-length v9, v8
if-ge v7, v9, :cond_8b
.line 104
aget v8, v8, v7
add-float/2addr v6, v8
.line 105
iget-object v8, v0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->pitchBuffer:[F
aget v8, v8, v7
add-float/2addr v4, v8
.line 103
add-int/lit8 v7, v7, 0x1
goto :goto_7b
.line 107
.end local v7 # "i":I
:cond_8b
array-length v7, v8
int-to-float v7, v7
div-float/2addr v6, v7
.line 108
array-length v7, v8
int-to-float v7, v7
div-float/2addr v4, v7
.line 109
const/high16 v7, 0x3f800000 # 1.0f
cmpl-float v7, v6, v7
if-lez v7, :cond_9c
.line 110
const/high16 v7, 0x40000000 # 2.0f
sub-float v6, v7, v6
goto :goto_a6
.line 111
:cond_9c
const/high16 v7, -0x40800000 # -1.0f
cmpg-float v7, v6, v7
if-gez v7, :cond_a6
.line 112
const/high16 v7, -0x40000000 # -2.0f
sub-float v6, v7, v6
.line 114
:cond_a6
:goto_a6
const/high16 v7, 0x41800000 # 16.0f
invoke-static {v7}, Lim/tpelyyftgw/messenger/AndroidUtilities;->dpf2(F)F
move-result v8
mul-float v8, v8, v4
invoke-static {v8}, Ljava/lang/Math;->round(F)I
move-result v8
.line 115
.local v8, "offsetX":I
invoke-static {v7}, Lim/tpelyyftgw/messenger/AndroidUtilities;->dpf2(F)F
move-result v7
mul-float v7, v7, v6
invoke-static {v7}, Ljava/lang/Math;->round(F)I
move-result v7
.line 116
.local v7, "offsetY":I
iget-object v9, v0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->callback:Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect$Callback;
if-eqz v9, :cond_c3
.line 117
invoke-interface {v9, v8, v7}, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect$Callback;->onOffsetsChanged(II)V
.line 118
:cond_c3
return-void
.end method
.method public setCallback(Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect$Callback;)V
.registers 2
.param p1, "callback" # Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect$Callback;
.line 51
iput-object p1, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->callback:Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect$Callback;
.line 52
return-void
.end method
.method public setEnabled(Z)V
.registers 5
.param p1, "enabled" # Z
.line 38
iget-boolean v0, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->enabled:Z
if-eq v0, p1, :cond_19
.line 39
iput-boolean p1, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->enabled:Z
.line 40
iget-object v0, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->accelerometer:Landroid/hardware/Sensor;
if-nez v0, :cond_b
.line 41
return-void
.line 42
:cond_b
if-eqz p1, :cond_14
.line 43
iget-object v1, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->sensorManager:Landroid/hardware/SensorManager;
const/4 v2, 0x1
invoke-virtual {v1, p0, v0, v2}, Landroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;I)Z
goto :goto_19
.line 45
:cond_14
iget-object v0, p0, Lim/tpelyyftgw/ui/components/WallpaperParallaxEffect;->sensorManager:Landroid/hardware/SensorManager;
invoke-virtual {v0, p0}, Landroid/hardware/SensorManager;->unregisterListener(Landroid/hardware/SensorEventListener;)V
.line 48
:cond_19
:goto_19
return-void
.end method