1685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com
2685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com/*
3685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Copyright 2011 Google Inc.
4685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com *
5685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * found in the LICENSE file.
7685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com */
8bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifndef SkAnimatorScript2_DEFINED
9bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#define SkAnimatorScript2_DEFINED
10bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
11bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkDisplayable.h"
12bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkScript2.h"
13bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkTypedArray.h"
14bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
15bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comclass SkAnimateMaker;
16bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comstruct SkMemberInfo;
17bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
18bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifndef SkAnimatorScript_DEFINED
19bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comstruct SkDisplayEnumMap {
20dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    SkDisplayTypes fType;
21dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    const char* fValues;
22bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com};
23bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif
24bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
25bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comclass SkAnimatorScript2 : public SkScriptEngine2 {
26bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.compublic:
27dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    SkAnimatorScript2(SkAnimateMaker& , SkDisplayable* working, SkDisplayTypes type);
28dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    ~SkAnimatorScript2();
29dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    bool evalMemberCommon(const SkMemberInfo* info,
30dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com        SkDisplayable* displayable, SkOperand2* value);
31dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    SkAnimateMaker& getMaker() { return fMaker; }
32dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    SkDisplayable* getWorking() { return fWorking; }
33dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    static bool MapEnums(const char* ptr, const char* match, size_t len, int* value);
34dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    static const SkDisplayEnumMap& GetEnumValues(SkDisplayTypes type);
35dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    static SkDisplayTypes ToDisplayType(SkOperand2::OpType type);
36dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    static SkOperand2::OpType ToOpType(SkDisplayTypes type);
37bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comprivate:
38dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    SkAnimateMaker& fMaker;
39dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    SkDisplayable* fWorking;
40dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    friend class SkDump;
41dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    friend struct SkScriptNAnswer;
42dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    // illegal
43dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    SkAnimatorScript2& operator=(const SkAnimatorScript2&);
44bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifdef SK_DEBUG
45bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.compublic:
46dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com    static void UnitTest();
47bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif
48bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com};
49bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
50bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif // SkAnimatorScript2_DEFINED
51