TreeInfo.h revision 52244fff29042926e21fa897ef5ab11148e35299
1/*
2 * Copyright (C) 2014 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#ifndef TREEINFO_H
17#define TREEINFO_H
18
19#include <utils/Timers.h>
20
21namespace android {
22namespace uirenderer {
23
24class BaseAnimator;
25class AnimationListener;
26
27class AnimationHook {
28public:
29    virtual void callOnFinished(BaseAnimator* animator, AnimationListener* listener) = 0;
30protected:
31    ~AnimationHook() {}
32};
33
34struct TreeInfo {
35    // The defaults here should be safe for everyone but DrawFrameTask to use as-is.
36    TreeInfo()
37            : hasFunctors(false)
38            , prepareTextures(false)
39            , performStagingPush(true)
40            , frameTimeMs(0)
41            , evaluateAnimations(false)
42            , hasAnimations(false)
43            , animationHook(0)
44    {}
45
46    bool hasFunctors;
47    bool prepareTextures;
48    bool performStagingPush;
49
50    // Animations
51    nsecs_t frameTimeMs;
52    bool evaluateAnimations;
53    // This is only updated if evaluateAnimations is true
54    bool hasAnimations;
55    AnimationHook* animationHook;
56
57    // TODO: Damage calculations
58};
59
60} /* namespace uirenderer */
61} /* namespace android */
62
63#endif /* TREEINFO_H */
64