11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkAnimateBase_DEFINED 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkAnimateBase_DEFINED 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayable.h" 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkMath.h" 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkMemberInfo.h" 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkTypedArray.h" 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkApply; 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDrawable; 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkAnimateBase : public SkDisplayable { 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic: 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project DECLARE_MEMBER_INFO(AnimateBase); 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkAnimateBase(); 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual ~SkAnimateBase(); 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual int components(); 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void dirty(); 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DUMP_ENABLED 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void dump(SkAnimateMaker* ); 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int entries() { return fValues.count() / components(); } 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool hasExecute() const; 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool isDynamic() const { return SkToBool(fDynamic); } 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual SkDisplayable* getParent() const; 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool getProperty(int index, SkScriptValue* value) const; 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkMSec getStart() const { return fStart; } 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkOperand* getValues() { return fValues.begin(); } 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDisplayTypes getValuesType() { return fValues.getType(); } 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void onEndElement(SkAnimateMaker& ); 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void packARGB(SkScalar [], int count, SkTDOperandArray* ); 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual void refresh(SkAnimateMaker& ); 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setChanged(bool changed) { fChanged = changed; } 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setHasEndEvent() { fHasEndEvent = true; } 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool setParent(SkDisplayable* ); 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool setProperty(int index, SkScriptValue& value); 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project void setTarget(SkAnimateMaker& ); 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project virtual bool targetNeedsInitialization() const; 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected: 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkMSec begin; 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkTDScalarArray blend; 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkMSec dur; 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project // !!! make field part of a union with fFieldInfo, or fValues, something known later? 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString field; // temporary; once target is known, this is reset 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString formula; 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString from; 570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString lval; 580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkScalar repeat; 590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString target; // temporary; once target is known, this is reset 600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkString to; 610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkApply* fApply; 620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project const SkMemberInfo* fFieldInfo; 630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project int fFieldOffset; 640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkMSec fStart; // corrected time when this apply was enabled 650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkDrawable* fTarget; 660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkTypedArray fValues; 670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fChanged : 1; // true when value referenced by script has changed 680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fDelayed : 1; // enabled, but undrawn pending delay 690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fDynamic : 1; 700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fHasEndEvent : 1; 710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fHasValues : 1; // set if 'values' passed instead of 'to' 720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fMirror : 1; 730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fReset : 1; 740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fResetPending : 1; 750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project unsigned fTargetIsScope : 1; 760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate: 770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project typedef SkDisplayable INHERITED; 780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project friend class SkActive; 790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project friend class SkApply; 800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project friend class SkDisplayList; 810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkAnimateBase_DEFINED 84