1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkDisplayApply_DEFINED
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkDisplayApply_DEFINED
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkAnimateBase.h"
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDrawable.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkIntArray.h"
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkActive;
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkApply : public SkDrawable {
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    DECLARE_MEMBER_INFO(Apply);
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic:
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkApply();
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual ~SkApply();
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    enum Transition {
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kTransition_normal,
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kTransition_reverse
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    };
30d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    enum Mode {
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kMode_create,
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        kMode_immediate,
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        //kMode_once
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    };
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void activate(SkAnimateMaker& );
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void append(SkApply* apply);
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void appendActive(SkActive* );
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void applyValues(int animatorIndex, SkOperand* values, int count,
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkDisplayTypes , SkMSec time);
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool contains(SkDisplayable*);
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//  void createActive(SkAnimateMaker& );
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual SkDisplayable* deepCopy(SkAnimateMaker* );
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void disable();
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool draw(SkAnimateMaker& );
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DUMP_ENABLED
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void dump(SkAnimateMaker* );
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool enable(SkAnimateMaker& );
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void enableCreate(SkAnimateMaker& );
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void enableDynamic(SkAnimateMaker& );
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void endSave(int index);
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    Mode getMode() { return mode; }
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool getProperty(int index, SkScriptValue* value) const;
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDrawable* getScope() { return scope; }
568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void getStep(SkScriptValue* );
578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDrawable* getTarget(SkAnimateBase* );
588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    bool hasDelayedAnimator() const;
598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool hasEnable() const;
608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    bool inactivate(SkAnimateMaker& maker);
61d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com    virtual void initialize();
628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    bool interpolate(SkAnimateMaker& , SkMSec time);
638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void onEndElement(SkAnimateMaker& );
648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual const SkMemberInfo* preferredChild(SkDisplayTypes type);
658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void refresh(SkAnimateMaker& );
668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void reset();
678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool resolveIDs(SkAnimateMaker& maker, SkDisplayable* original, SkApply* );
688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    bool resolveField(SkAnimateMaker& , SkDisplayable* parent, SkString* str);
698a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void save(int index);
708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    void setEmbedded() { fEmbedded = true; }
718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual bool setProperty(int index, SkScriptValue& );
728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void setSteps(int _steps);
738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//  virtual void setTime(SkMSec time);
748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_DEBUG
758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual void validate();
768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate:
788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkMSec begin;
798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool dontDraw;
808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkString dynamicScope;
818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkMSec interval;
828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    Mode mode;
838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if 0
848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool pickup;
858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool restore;
878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDrawable* scope;
888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    int32_t steps;
898a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    Transition transition;
908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkActive* fActive;
918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkTDAnimateArray fAnimators;
928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//  SkDrawable* fCurrentScope;
938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkMSec fLastTime;   // used only to return script property time
948a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkTDDrawableArray fScopes;
958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool fAppended : 1;
968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool fContainsScope : 1;
978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool fDeleteScope : 1;
988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool fEmbedded : 1;
998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool fEnabled : 1;
1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkBool fEnabling : 1; // set if calling interpolate from enable
1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    friend class SkActive;
1028a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    friend class SkDisplayList;
1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    typedef SkDrawable INHERITED;
1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif // SkDisplayApply_DEFINED
107