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 17 class SkActive; 18 19 class SkApply : public SkDrawable { 20 DECLARE_MEMBER_INFO(Apply); 21 public: 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 77 private: 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