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