1 package com.android.systemui.surfaceeffects.ripple
2 
3 import android.graphics.Color
4 
5 /**
6  * A struct that holds the ripple animation configurations.
7  *
8  * <p>This configuration is designed to play a SINGLE animation. Do not reuse or modify the
9  * configuration parameters to play different animations, unless the value has to change within the
10  * single animation (e.g. Change color or opacity during the animation). Note that this data class
11  * is pulled out to make the [RippleAnimation] constructor succinct.
12  */
13 data class RippleAnimationConfig(
14     val rippleShape: RippleShader.RippleShape = RippleShader.RippleShape.CIRCLE,
15     val duration: Long = 0L,
16     val centerX: Float = 0f,
17     val centerY: Float = 0f,
18     val maxWidth: Float = 0f,
19     val maxHeight: Float = 0f,
20     val pixelDensity: Float = 1f,
21     var color: Int = Color.WHITE,
22     val opacity: Int = RippleShader.RIPPLE_DEFAULT_ALPHA,
23     val sparkleStrength: Float = RippleShader.RIPPLE_SPARKLE_STRENGTH,
24     // Null means it uses default fade parameter values.
25     val baseRingFadeParams: RippleShader.FadeParams? = null,
26     val sparkleRingFadeParams: RippleShader.FadeParams? = null,
27     val centerFillFadeParams: RippleShader.FadeParams? = null,
28     val shouldDistort: Boolean = true
29 )
30