michael@0: michael@0: /* michael@0: * Copyright 2011 Google Inc. 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: #ifndef SkAnimatorScript2_DEFINED michael@0: #define SkAnimatorScript2_DEFINED michael@0: michael@0: #include "SkDisplayable.h" michael@0: #include "SkScript2.h" michael@0: #include "SkTypedArray.h" michael@0: michael@0: class SkAnimateMaker; michael@0: struct SkMemberInfo; michael@0: michael@0: #ifndef SkAnimatorScript_DEFINED michael@0: struct SkDisplayEnumMap { michael@0: SkDisplayTypes fType; michael@0: const char* fValues; michael@0: }; michael@0: #endif michael@0: michael@0: class SkAnimatorScript2 : public SkScriptEngine2 { michael@0: public: michael@0: SkAnimatorScript2(SkAnimateMaker& , SkDisplayable* working, SkDisplayTypes type); michael@0: ~SkAnimatorScript2(); michael@0: bool evalMemberCommon(const SkMemberInfo* info, michael@0: SkDisplayable* displayable, SkOperand2* value); michael@0: SkAnimateMaker& getMaker() { return fMaker; } michael@0: SkDisplayable* getWorking() { return fWorking; } michael@0: static bool MapEnums(const char* ptr, const char* match, size_t len, int* value); michael@0: static const SkDisplayEnumMap& GetEnumValues(SkDisplayTypes type); michael@0: static SkDisplayTypes ToDisplayType(SkOperand2::OpType type); michael@0: static SkOperand2::OpType ToOpType(SkDisplayTypes type); michael@0: private: michael@0: SkAnimateMaker& fMaker; michael@0: SkDisplayable* fWorking; michael@0: friend class SkDump; michael@0: friend struct SkScriptNAnswer; michael@0: // illegal michael@0: SkAnimatorScript2& operator=(const SkAnimatorScript2&); michael@0: #ifdef SK_DEBUG michael@0: public: michael@0: static void UnitTest(); michael@0: #endif michael@0: }; michael@0: michael@0: #endif // SkAnimatorScript2_DEFINED