blob: d51e46773a30b6488292cd9f5efc4ea591fe49a5 [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001/* libs/graphics/animator/SkDisplayApply.h
2**
3** Copyright 2006, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9** http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17
18#ifndef SkDisplayApply_DEFINED
19#define SkDisplayApply_DEFINED
20
21#include "SkAnimateBase.h"
22#include "SkDrawable.h"
23#include "SkIntArray.h"
24
25class SkActive;
26
27class SkApply : public SkDrawable {
28 DECLARE_MEMBER_INFO(Apply);
29public:
30
31 SkApply();
32 virtual ~SkApply();
33
34 enum Transition {
35 kTransition_normal,
36 kTransition_reverse
37 };
38
39 enum Mode {
40 kMode_create,
41 kMode_immediate,
42 //kMode_once
43 };
44 void activate(SkAnimateMaker& );
45 void append(SkApply* apply);
46 void appendActive(SkActive* );
47 void applyValues(int animatorIndex, SkOperand* values, int count,
48 SkDisplayTypes , SkMSec time);
49 virtual bool contains(SkDisplayable*);
50// void createActive(SkAnimateMaker& );
51 virtual SkDisplayable* deepCopy(SkAnimateMaker* );
52 void disable();
53 virtual bool draw(SkAnimateMaker& );
54#ifdef SK_DUMP_ENABLED
55 virtual void dump(SkAnimateMaker* );
56#endif
57 virtual bool enable(SkAnimateMaker& );
58 void enableCreate(SkAnimateMaker& );
59 void enableDynamic(SkAnimateMaker& );
60 void endSave(int index);
61 Mode getMode() { return mode; }
62 virtual bool getProperty(int index, SkScriptValue* value) const;
63 SkDrawable* getScope() { return scope; }
64 void getStep(SkScriptValue* );
65 SkDrawable* getTarget(SkAnimateBase* );
66 bool hasDelayedAnimator() const;
67 virtual bool hasEnable() const;
68 bool inactivate(SkAnimateMaker& maker);
69 virtual void initialize();
70 bool interpolate(SkAnimateMaker& , SkMSec time);
71 virtual void onEndElement(SkAnimateMaker& );
72 virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
73 void refresh(SkAnimateMaker& );
74 void reset();
75 virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* );
76 bool resolveField(SkAnimateMaker& , SkDisplayable* parent, SkString* str);
77 void save(int index);
78 void setEmbedded() { fEmbedded = true; }
79 virtual bool setProperty(int index, SkScriptValue& );
80 virtual void setSteps(int _steps);
81// virtual void setTime(SkMSec time);
82#ifdef SK_DEBUG
83 virtual void validate();
84#endif
85private:
86 SkMSec begin;
87 SkBool dontDraw;
88 SkString dynamicScope;
89 SkMSec interval;
90 Mode mode;
91#if 0
92 SkBool pickup;
93#endif
94 SkBool restore;
95 SkDrawable* scope;
96 int32_t steps;
97 Transition transition;
98 SkActive* fActive;
99 SkTDAnimateArray fAnimators;
100// SkDrawable* fCurrentScope;
101 SkMSec fLastTime; // used only to return script property time
102 SkTDDrawableArray fScopes;
103 SkBool fAppended : 1;
104 SkBool fContainsScope : 1;
105 SkBool fDeleteScope : 1;
106 SkBool fEmbedded : 1;
107 SkBool fEnabled : 1;
108 SkBool fEnabling : 1; // set if calling interpolate from enable
109 friend class SkActive;
110 friend class SkDisplayList;
111 typedef SkDrawable INHERITED;
112};
113
114#endif // SkDisplayApply_DEFINED
115
116