diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-29 14:17:20 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-06-02 16:32:17 +0000 |
| commit | 7fce9b0e1c98d322a4fa1c01113e42178ec0fbaa (patch) | |
| tree | 2c49470a26a902878d2a1b6af0e51c94650b4e4e /android/src/main | |
| parent | 8587db2b45354918f8b04817407944bc3dc1ab38 (diff) | |
| download | mullvadvpn-7fce9b0e1c98d322a4fa1c01113e42178ec0fbaa.tar.xz mullvadvpn-7fce9b0e1c98d322a4fa1c01113e42178ec0fbaa.zip | |
Create `LinearInterpolation` helper class
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/util/LinearInterpolation.kt | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/LinearInterpolation.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/LinearInterpolation.kt new file mode 100644 index 0000000000..ea0f21ad49 --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/LinearInterpolation.kt @@ -0,0 +1,46 @@ +package net.mullvad.mullvadvpn.util + +import kotlin.properties.Delegates.observable +import kotlin.reflect.KProperty + +class LinearInterpolation { + private val observer = { property: KProperty<*>, oldValue: Float, newValue: Float -> + if (!updated && oldValue != newValue) { + updated = true + } + } + + private val realStart + get() = start - reference + + private val realEnd + get() = end - reference + + var reference by observable(0.0f, observer) + var start by observable(0.0f, observer) + var end by observable(0.0f, observer) + + var updated = true + get() { + if (field == true) { + field = false + return true + } else { + return false + } + } + + fun interpolate(progress: Float): Float { + return progress * (realEnd - realStart) + realStart + } + + fun progress(interpolation: Float): Float { + val length = realEnd - realStart + + if (length == 0.0f) { + return 0.0f + } + + return (interpolation - realStart) / length + } +} |
