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