
/*
 * Copyright 2011 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#ifndef SkAnimatorScript2_DEFINED
#define SkAnimatorScript2_DEFINED

#include "SkDisplayable.h"
#include "SkScript2.h"
#include "SkTypedArray.h"

class SkAnimateMaker;
struct SkMemberInfo;

#ifndef SkAnimatorScript_DEFINED
struct SkDisplayEnumMap {
	SkDisplayTypes fType;
	const char* fValues;
};
#endif

class SkAnimatorScript2 : public SkScriptEngine2 {
public:
	SkAnimatorScript2(SkAnimateMaker& , SkDisplayable* working, SkDisplayTypes type);
	~SkAnimatorScript2();
	bool evalMemberCommon(const SkMemberInfo* info, 
		SkDisplayable* displayable, SkOperand2* value);
	SkAnimateMaker& getMaker() { return fMaker; }
	SkDisplayable* getWorking() { return fWorking; }
	static bool MapEnums(const char* ptr, const char* match, size_t len, int* value);
	static const SkDisplayEnumMap& GetEnumValues(SkDisplayTypes type); 
	static SkDisplayTypes ToDisplayType(SkOperand2::OpType type);
	static SkOperand2::OpType ToOpType(SkDisplayTypes type);
private:
	SkAnimateMaker& fMaker;
	SkDisplayable* fWorking;
	friend class SkDump;
	friend struct SkScriptNAnswer;
	// illegal
	SkAnimatorScript2& operator=(const SkAnimatorScript2&);
#ifdef SK_DEBUG
public:
	static void UnitTest();
#endif
};

#endif // SkAnimatorScript2_DEFINED
