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