blob: 018b894da55333f5eb8d431494b6da9ee854faf5 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
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
reed@android.com8a1c16f2008-12-17 15:59:43 +00009
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
108