1f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 2f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger/* 3f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger * Copyright 2006 The Android Open Source Project 4f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger * 5f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 6f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger * found in the LICENSE file. 7f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger */ 8f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 9f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 10f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#ifndef SkDisplayApply_DEFINED 11f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#define SkDisplayApply_DEFINED 12f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 13f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#include "SkAnimateBase.h" 14f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#include "SkDrawable.h" 15f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#include "SkIntArray.h" 16f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 17f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenbergerclass SkActive; 18f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 19f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenbergerclass SkApply : public SkDrawable { 20f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger DECLARE_MEMBER_INFO(Apply); 21f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenbergerpublic: 22f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 23f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkApply(); 24f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual ~SkApply(); 25f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 26f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger enum Transition { 27f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger kTransition_normal, 28f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger kTransition_reverse 29f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger }; 30f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 31f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger enum Mode { 32f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger kMode_create, 33f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger kMode_immediate, 34f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger //kMode_once 35f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger }; 36f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void activate(SkAnimateMaker& ); 37f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void append(SkApply* apply); 38f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void appendActive(SkActive* ); 39f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void applyValues(int animatorIndex, SkOperand* values, int count, 40f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkDisplayTypes , SkMSec time); 41f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual bool contains(SkDisplayable*); 42f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger// void createActive(SkAnimateMaker& ); 43f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual SkDisplayable* deepCopy(SkAnimateMaker* ); 44f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void disable(); 45f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual bool draw(SkAnimateMaker& ); 46f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#ifdef SK_DUMP_ENABLED 47f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual void dump(SkAnimateMaker* ); 48f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#endif 49f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual bool enable(SkAnimateMaker& ); 50f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void enableCreate(SkAnimateMaker& ); 51f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void enableDynamic(SkAnimateMaker& ); 52f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void endSave(int index); 53f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger Mode getMode() { return mode; } 54f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual bool getProperty(int index, SkScriptValue* value) const; 55f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkDrawable* getScope() { return scope; } 56f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void getStep(SkScriptValue* ); 57f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkDrawable* getTarget(SkAnimateBase* ); 58f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger bool hasDelayedAnimator() const; 59f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual bool hasEnable() const; 60f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger bool inactivate(SkAnimateMaker& maker); 61f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual void initialize(); 62f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger bool interpolate(SkAnimateMaker& , SkMSec time); 63f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual void onEndElement(SkAnimateMaker& ); 64f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual const SkMemberInfo* preferredChild(SkDisplayTypes type); 65f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void refresh(SkAnimateMaker& ); 66f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void reset(); 67f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ); 68f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger bool resolveField(SkAnimateMaker& , SkDisplayable* parent, SkString* str); 69f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void save(int index); 70f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger void setEmbedded() { fEmbedded = true; } 71f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual bool setProperty(int index, SkScriptValue& ); 72f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual void setSteps(int _steps); 73f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger// virtual void setTime(SkMSec time); 74f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#ifdef SK_DEBUG 75f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger virtual void validate(); 76f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#endif 77f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenbergerprivate: 78f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkMSec begin; 79f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool dontDraw; 80f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkString dynamicScope; 81f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkMSec interval; 82f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger Mode mode; 83f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#if 0 84f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool pickup; 85f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#endif 86f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool restore; 87f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkDrawable* scope; 88f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger int32_t steps; 89f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger Transition transition; 90f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkActive* fActive; 91f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkTDAnimateArray fAnimators; 92f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger// SkDrawable* fCurrentScope; 93f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkMSec fLastTime; // used only to return script property time 94f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkTDDrawableArray fScopes; 95f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool fAppended : 1; 96f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool fContainsScope : 1; 97f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool fDeleteScope : 1; 98f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool fEmbedded : 1; 99f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool fEnabled : 1; 100f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger SkBool fEnabling : 1; // set if calling interpolate from enable 101f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger friend class SkActive; 102f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger friend class SkDisplayList; 103f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger typedef SkDrawable INHERITED; 104f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger}; 105f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 106f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger#endif // SkDisplayApply_DEFINED 107f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 108f8cacf6b11e35785df8efb613b0c3592d535f603Derek Sollenberger 109