11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifndef SkDisplayTypes_DEFINED
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkDisplayTypes_DEFINED
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayable.h"
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkMemberInfo.h"
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkTypedArray.h"
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkOpArray; // compiled script experiment
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayDepend : public SkDisplayable {
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool canContainDependents() const;
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void addDependent(SkDisplayable* displayable) {
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        if (fDependents.find(displayable) < 0)
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project            *fDependents.append() = displayable;
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    }
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void dirty();
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkTDDisplayableArray fDependents;
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    typedef SkDisplayable INHERITED;
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayBoolean : public SkDisplayDepend {
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    DECLARE_DISPLAY_MEMBER_INFO(Boolean);
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayBoolean();
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DUMP_ENABLED
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void dump(SkAnimateMaker* );
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkBool value;
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript;
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript_Box;
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript_Unbox;
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    typedef SkDisplayDepend INHERITED;
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayInt : public SkDisplayDepend {
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    DECLARE_DISPLAY_MEMBER_INFO(Int);
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayInt();
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DUMP_ENABLED
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void dump(SkAnimateMaker* );
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    int32_t value;
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript;
550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript_Box;
560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript_Unbox;
570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    typedef SkDisplayDepend INHERITED;
580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayFloat : public SkDisplayDepend {
610910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    DECLARE_DISPLAY_MEMBER_INFO(Float);
620910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayFloat();
630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#ifdef SK_DUMP_ENABLED
640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void dump(SkAnimateMaker* );
650910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif
660910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkScalar value;
680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript;
690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript_Box;
700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript_Unbox;
710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    typedef SkDisplayDepend INHERITED;
720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayString : public SkDisplayDepend {
750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    DECLARE_DISPLAY_MEMBER_INFO(String);
760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayString();
770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayString(SkString& );
780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void executeFunction(SkDisplayable* , int index,
790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        SkTDArray<SkScriptValue>& parameters, SkDisplayTypes type,
800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project        SkScriptValue* );
810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual const SkFunctionParamType* getFunctionsParameters();
820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool getProperty(int index, SkScriptValue* ) const;
830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkString value;
840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    static const SkFunctionParamType fFunctionParameters[];
860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkDisplayArray : public SkDisplayDepend {
890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    DECLARE_DISPLAY_MEMBER_INFO(Array);
900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayArray();
910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayArray(SkTypedArray& );
920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkDisplayArray(SkOpArray& ); // compiled script experiment
930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual ~SkDisplayArray();
940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual bool getProperty(int index, SkScriptValue* ) const;
950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkTypedArray values;
970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimator;
980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript;
990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript2;
1000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkAnimatorScript_Unbox;
1010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkDisplayable;
1020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend struct SkMemberInfo;
1030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    friend class SkScriptEngine;
1040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
1050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkDisplayTypes_DEFINED
1070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
108