| |
| /* |
| * 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 "SkADrawable.h" |
| #include "SkIntArray.h" |
| |
| class SkActive; |
| |
| class SkApply : public SkADrawable { |
| 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); |
| bool contains(SkDisplayable*) override; |
| // void createActive(SkAnimateMaker& ); |
| SkDisplayable* deepCopy(SkAnimateMaker* ) override; |
| void disable(); |
| bool draw(SkAnimateMaker& ) override; |
| #ifdef SK_DUMP_ENABLED |
| void dump(SkAnimateMaker* ) override; |
| #endif |
| bool enable(SkAnimateMaker& ) override; |
| void enableCreate(SkAnimateMaker& ); |
| void enableDynamic(SkAnimateMaker& ); |
| void endSave(int index); |
| Mode getMode() { return mode; } |
| bool getProperty(int index, SkScriptValue* value) const override; |
| SkADrawable* getScope() { return scope; } |
| void getStep(SkScriptValue* ); |
| SkADrawable* getTarget(SkAnimateBase* ); |
| bool hasDelayedAnimator() const; |
| bool hasEnable() const override; |
| bool inactivate(SkAnimateMaker& maker); |
| void initialize() override; |
| bool interpolate(SkAnimateMaker& , SkMSec time); |
| void onEndElement(SkAnimateMaker& ) override; |
| const SkMemberInfo* preferredChild(SkDisplayTypes type) override; |
| void refresh(SkAnimateMaker& ); |
| void reset(); |
| bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* ) override; |
| bool resolveField(SkAnimateMaker& , SkDisplayable* parent, SkString* str); |
| void save(int index); |
| void setEmbedded() { fEmbedded = true; } |
| bool setProperty(int index, SkScriptValue& ) override; |
| void setSteps(int _steps) override; |
| // virtual void setTime(SkMSec time); |
| #ifdef SK_DEBUG |
| void validate() override; |
| #endif |
| private: |
| SkMSec begin; |
| SkBool dontDraw; |
| SkString dynamicScope; |
| SkMSec interval; |
| Mode mode; |
| #if 0 |
| SkBool pickup; |
| #endif |
| SkBool restore; |
| SkADrawable* scope; |
| int32_t steps; |
| Transition transition; |
| SkActive* fActive; |
| SkTDAnimateArray fAnimators; |
| // SkADrawable* 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 SkADrawable INHERITED; |
| }; |
| |
| #endif // SkDisplayApply_DEFINED |