TreeInfo.h revision f9be77940e365036fecd8cc0e491e8545c34e79b
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        : frameTimeMs(0)
38        , animationHook(NULL)
39        , prepareTextures(false)
40        , performStagingPush(true)
41        , evaluateAnimations(false)
42    {}
43
44    nsecs_t frameTimeMs;
45    AnimationHook* animationHook;
46    bool prepareTextures;
47    bool performStagingPush;
48    bool evaluateAnimations;
49
50    struct Out {
51        Out()
52            : hasFunctors(false)
53            , hasAnimations(false)
54            , requiresUiRedraw(false)
55        {}
56        bool hasFunctors;
57        // This is only updated if evaluateAnimations is true
58        bool hasAnimations;
59        // This is set to true if there is an animation that RenderThread cannot
60        // animate itself, such as if hasFunctors is true
61        // This is only set if hasAnimations is true
62        bool requiresUiRedraw;
63    } out;
64
65    // TODO: Damage calculations
66};
67
68} /* namespace uirenderer */
69} /* namespace android */
70
71#endif /* TREEINFO_H */
72