1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.surfaceeffects
18 
19 import android.graphics.RenderEffect
20 
21 /**
22  * A callback with a [RenderEffect] object that contains shader info, which is triggered every frame
23  * while animation is playing. Note that the [RenderEffect] instance is different each time to
24  * update shader uniforms.
25  *
26  * The usage of this callback is as follows:
27  * <pre>{@code
28  *     private val xEffectDrawingCallback = RenderEffectDrawCallback() {
29  *         val myOtherRenderEffect = createOtherRenderEffect()
30  *         val chainEffect = RenderEffect.createChainEffect(renderEffect, myOtherRenderEffect)
31  *         myView.setRenderEffect(chainEffect)
32  *     }
33  *
34  *     private val xEffect = XEffect(config, xEffectDrawingCallback)
35  * }</pre>
36  */
37 interface RenderEffectDrawCallback {
onDrawnull38     fun onDraw(renderEffect: RenderEffect)
39 }
40