/* * Copyright 2006 The Android Open Source Project * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkDisplayApply_DEFINED #define SkDisplayApply_DEFINED #include "SkAnimateBase.h" #include "SkDrawable.h" #include "SkIntArray.h" class SkActive; class SkApply : public SkDrawable { DECLARE_MEMBER_INFO(Apply); public: SkApply(); virtual ~SkApply(); enum Transition { kTransition_normal, kTransition_reverse }; enum Mode { kMode_create, kMode_immediate, //kMode_once }; void activate(SkAnimateMaker& ); void append(SkApply* apply); void appendActive(SkActive* ); void applyValues(int animatorIndex, SkOperand* values, int count, SkDisplayTypes , SkMSec time); virtual bool contains(SkDisplayable*); // void createActive(SkAnimateMaker& ); virtual SkDisplayable* deepCopy(SkAnimateMaker* ); void disable(); virtual bool draw(SkAnimateMaker& ); #ifdef SK_DUMP_ENABLED virtual void dump(SkAnimateMaker* ); #endif virtual bool enable(SkAnimateMaker& ); void enableCreate(SkAnimateMaker& ); void enableDynamic(SkAnimateMaker& ); void endSave(int index); Mode getMode() { return mode; } virtual bool getProperty(int index, SkScriptValue* value) const; SkDrawable* getScope() { return scope; } void getStep(SkScriptValue* ); SkDrawable* getTarget(SkAnimateBase* ); bool hasDelayedAnimator() const; virtual bool hasEnable() const; bool inactivate(SkAnimateMaker& maker); virtual void initialize(); bool interpolate(SkAnimateMaker& , SkMSec time); virtual void onEndElement(SkAnimateMaker& ); virtual const SkMemberInfo* preferredChild(SkDisplayTypes type); void refresh(SkAnimateMaker& ); void reset(); virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ); bool resolveField(SkAnimateMaker& , SkDisplayable* parent, SkString* str); void save(int index); void setEmbedded() { fEmbedded = true; } virtual bool setProperty(int index, SkScriptValue& ); virtual void setSteps(int _steps); // virtual void setTime(SkMSec time); #ifdef SK_DEBUG virtual void validate(); #endif private: SkMSec begin; SkBool dontDraw; SkString dynamicScope; SkMSec interval; Mode mode; #if 0 SkBool pickup; #endif SkBool restore; SkDrawable* scope; int32_t steps; Transition transition; SkActive* fActive; SkTDAnimateArray fAnimators; // SkDrawable* fCurrentScope; SkMSec fLastTime; // used only to return script property time SkTDDrawableArray fScopes; SkBool fAppended : 1; SkBool fContainsScope : 1; SkBool fDeleteScope : 1; SkBool fEmbedded : 1; SkBool fEnabled : 1; SkBool fEnabling : 1; // set if calling interpolate from enable friend class SkActive; friend class SkDisplayList; typedef SkDrawable INHERITED; }; #endif // SkDisplayApply_DEFINED