1f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
2f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger/*
3f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger * Copyright 2006 The Android Open Source Project
4f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger *
5f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
6f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger * found in the LICENSE file.
7f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger */
8f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
9f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
10f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#ifndef SkDisplayApply_DEFINED
11f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#define SkDisplayApply_DEFINED
12f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
13f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#include "SkAnimateBase.h"
14f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#include "SkDrawable.h"
15f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#include "SkIntArray.h"
16f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
17f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenbergerclass SkActive;
18f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
19f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenbergerclass SkApply : public SkDrawable {
20f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    DECLARE_MEMBER_INFO(Apply);
21f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenbergerpublic:
22f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
23f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkApply();
24f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual ~SkApply();
25f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
26f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    enum Transition {
27f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger        kTransition_normal,
28f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger        kTransition_reverse
29f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    };
30f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
31f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    enum Mode {
32f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger        kMode_create,
33f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger        kMode_immediate,
34f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger        //kMode_once
35f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    };
36f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void activate(SkAnimateMaker& );
37f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void append(SkApply* apply);
38f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void appendActive(SkActive* );
39f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void applyValues(int animatorIndex, SkOperand* values, int count,
40f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger        SkDisplayTypes , SkMSec time);
41f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual bool contains(SkDisplayable*);
42f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger//  void createActive(SkAnimateMaker& );
43f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual SkDisplayable* deepCopy(SkAnimateMaker* );
44f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void disable();
45f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual bool draw(SkAnimateMaker& );
46f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#ifdef SK_DUMP_ENABLED
47f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual void dump(SkAnimateMaker* );
48f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#endif
49f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual bool enable(SkAnimateMaker& );
50f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void enableCreate(SkAnimateMaker& );
51f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void enableDynamic(SkAnimateMaker& );
52f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void endSave(int index);
53f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    Mode getMode() { return mode; }
54f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual bool getProperty(int index, SkScriptValue* value) const;
55f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkDrawable* getScope() { return scope; }
56f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void getStep(SkScriptValue* );
57f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkDrawable* getTarget(SkAnimateBase* );
58f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    bool hasDelayedAnimator() const;
59f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual bool hasEnable() const;
60f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    bool inactivate(SkAnimateMaker& maker);
61f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual void initialize();
62f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    bool interpolate(SkAnimateMaker& , SkMSec time);
63f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual void onEndElement(SkAnimateMaker& );
64f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
65f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void refresh(SkAnimateMaker& );
66f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void reset();
67f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* );
68f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    bool resolveField(SkAnimateMaker& , SkDisplayable* parent, SkString* str);
69f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void save(int index);
70f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    void setEmbedded() { fEmbedded = true; }
71f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual bool setProperty(int index, SkScriptValue& );
72f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual void setSteps(int _steps);
73f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger//  virtual void setTime(SkMSec time);
74f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#ifdef SK_DEBUG
75f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    virtual void validate();
76f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#endif
77f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenbergerprivate:
78f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkMSec begin;
79f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool dontDraw;
80f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkString dynamicScope;
81f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkMSec interval;
82f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    Mode mode;
83f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#if 0
84f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool pickup;
85f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#endif
86f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool restore;
87f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkDrawable* scope;
88f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    int32_t steps;
89f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    Transition transition;
90f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkActive* fActive;
91f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkTDAnimateArray fAnimators;
92f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger//  SkDrawable* fCurrentScope;
93f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkMSec fLastTime;   // used only to return script property time
94f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkTDDrawableArray fScopes;
95f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool fAppended : 1;
96f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool fContainsScope : 1;
97f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool fDeleteScope : 1;
98f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool fEmbedded : 1;
99f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool fEnabled : 1;
100f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    SkBool fEnabling : 1; // set if calling interpolate from enable
101f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    friend class SkActive;
102f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    friend class SkDisplayList;
103f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger    typedef SkDrawable INHERITED;
104f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger};
105f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
106f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#endif // SkDisplayApply_DEFINED
107f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
108f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger
109