Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76a5c86d authored by Chet Haase's avatar Chet Haase Committed by Android (Google) Code Review
Browse files

Merge "Fix lockscreen wave animation artifacts" into klp-dev

parents d6239b92 167a3232
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -76,7 +76,7 @@ public class GlowPadView extends View {
    }
    }


    // Tuneable parameters for animation
    // Tuneable parameters for animation
    private static final int WAVE_ANIMATION_DURATION = 1350;
    private static final int WAVE_ANIMATION_DURATION = 1000;
    private static final int RETURN_TO_HOME_DELAY = 1200;
    private static final int RETURN_TO_HOME_DELAY = 1200;
    private static final int RETURN_TO_HOME_DURATION = 200;
    private static final int RETURN_TO_HOME_DURATION = 200;
    private static final int HIDE_ANIMATION_DELAY = 200;
    private static final int HIDE_ANIMATION_DELAY = 200;
+5 −6
Original line number Original line Diff line number Diff line
@@ -45,8 +45,8 @@ public class PointCloud {


    public class WaveManager {
    public class WaveManager {
        private float radius = 50;
        private float radius = 50;
        private float width = 200.0f; // TODO: Make configurable
        private float alpha = 0.0f;
        private float alpha = 0.0f;

        public void setRadius(float r) {
        public void setRadius(float r) {
            radius = r;
            radius = r;
        }
        }
@@ -186,13 +186,12 @@ public class PointCloud {


        // Compute contribution from Wave
        // Compute contribution from Wave
        float radius = hypot(point.x, point.y);
        float radius = hypot(point.x, point.y);
        float distanceToWaveRing = (radius - waveManager.radius);
        float waveAlpha = 0.0f;
        float waveAlpha = 0.0f;
        if (distanceToWaveRing < waveManager.width * 0.5f && distanceToWaveRing < 0.0f) {
        if (radius < waveManager.radius * 2) {
            float cosf = FloatMath.cos(PI * 0.25f * distanceToWaveRing / waveManager.width);
            float distanceToWaveRing = (radius - waveManager.radius);
            waveAlpha = waveManager.alpha * max(0.0f, (float) Math.pow(cosf, 20.0f));
            float cosf = FloatMath.cos(PI * 0.5f * distanceToWaveRing / waveManager.radius);
            waveAlpha = waveManager.alpha * max(0.0f, (float) Math.pow(cosf, 6.0f));
        }
        }

        return (int) (max(glowAlpha, waveAlpha) * 255);
        return (int) (max(glowAlpha, waveAlpha) * 255);
    }
    }