180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/*
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2011 Google Inc.
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file.
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkAnimatorScript2_DEFINED
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SkAnimatorScript2_DEFINED
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkDisplayable.h"
1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkScript2.h"
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkTypedArray.h"
1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkAnimateMaker;
1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustruct SkMemberInfo;
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkAnimatorScript_DEFINED
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustruct SkDisplayEnumMap {
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDisplayTypes fType;
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    const char* fValues;
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkAnimatorScript2 : public SkScriptEngine2 {
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic:
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkAnimatorScript2(SkAnimateMaker& , SkDisplayable* working, SkDisplayTypes type);
2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    ~SkAnimatorScript2();
2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    bool evalMemberCommon(const SkMemberInfo* info,
3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru        SkDisplayable* displayable, SkOperand2* value);
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkAnimateMaker& getMaker() { return fMaker; }
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDisplayable* getWorking() { return fWorking; }
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    static bool MapEnums(const char* ptr, const char* match, size_t len, int* value);
3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    static const SkDisplayEnumMap& GetEnumValues(SkDisplayTypes type);
3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    static SkDisplayTypes ToDisplayType(SkOperand2::OpType type);
3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    static SkOperand2::OpType ToOpType(SkDisplayTypes type);
3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate:
3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkAnimateMaker& fMaker;
3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDisplayable* fWorking;
4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    friend class SkDump;
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    friend struct SkScriptNAnswer;
4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    // illegal
4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkAnimatorScript2& operator=(const SkAnimatorScript2&);
4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_DEBUG
4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic:
4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    static void UnitTest();
4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif // SkAnimatorScript2_DEFINED
51