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 SkAnimateBase_DEFINED 11 #define SkAnimateBase_DEFINED 12 13 #include "SkDisplayable.h" 14 #include "SkMath.h" 15 #include "SkMemberInfo.h" 16 #include "SkTypedArray.h" 17 18 class SkApply; 19 class SkDrawable; 20 21 class SkAnimateBase : public SkDisplayable { 22 public: 23 DECLARE_MEMBER_INFO(AnimateBase); 24 SkAnimateBase(); 25 virtual ~SkAnimateBase(); 26 virtual int components(); 27 virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 28 virtual void dirty(); 29 #ifdef SK_DUMP_ENABLED 30 virtual void dump(SkAnimateMaker* ); 31 #endif 32 int entries() { return fValues.count() / components(); } 33 virtual bool hasExecute() const; 34 bool isDynamic() const { return SkToBool(fDynamic); } 35 virtual SkDisplayable* getParent() const; 36 virtual bool getProperty(int index, SkScriptValue* value) const; 37 SkMSec getStart() const { return fStart; } 38 SkOperand* getValues() { return fValues.begin(); } 39 SkDisplayTypes getValuesType() { return fValues.getType(); } 40 virtual void onEndElement(SkAnimateMaker& ); 41 void packARGB(SkScalar [], int count, SkTDOperandArray* ); 42 virtual void refresh(SkAnimateMaker& ); 43 void setChanged(bool changed) { fChanged = changed; } 44 void setHasEndEvent() { fHasEndEvent = true; } 45 virtual bool setParent(SkDisplayable* ); 46 virtual bool setProperty(int index, SkScriptValue& value); 47 void setTarget(SkAnimateMaker& ); 48 virtual bool targetNeedsInitialization() const; 49 protected: 50 SkMSec begin; 51 SkTDScalarArray blend; 52 SkMSec dur; 53 // !!! make field part of a union with fFieldInfo, or fValues, something known later? 54 SkString field; // temporary; once target is known, this is reset 55 SkString formula; 56 SkString from; 57 SkString lval; 58 SkScalar repeat; 59 SkString target; // temporary; once target is known, this is reset 60 SkString to; 61 SkApply* fApply; 62 const SkMemberInfo* fFieldInfo; 63 int fFieldOffset; 64 SkMSec fStart; // corrected time when this apply was enabled 65 SkDrawable* fTarget; 66 SkTypedArray fValues; 67 unsigned fChanged : 1; // true when value referenced by script has changed 68 unsigned fDelayed : 1; // enabled, but undrawn pending delay 69 unsigned fDynamic : 1; 70 unsigned fHasEndEvent : 1; 71 unsigned fHasValues : 1; // set if 'values' passed instead of 'to' 72 unsigned fMirror : 1; 73 unsigned fReset : 1; 74 unsigned fResetPending : 1; 75 unsigned fTargetIsScope : 1; 76 private: 77 typedef SkDisplayable INHERITED; 78 friend class SkActive; 79 friend class SkApply; 80 friend class SkDisplayList; 81 }; 82 83 #endif // SkAnimateBase_DEFINED 84