1/*
2 * Copyright (C) 2011, Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 * ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE
17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
23 * DAMAGE.
24 */
25
26#ifndef Gamepad_h
27#define Gamepad_h
28
29#include "bindings/v8/ScriptWrappable.h"
30#include "wtf/RefCounted.h"
31#include "wtf/Vector.h"
32#include "wtf/text/WTFString.h"
33
34namespace WebCore {
35
36class Gamepad: public RefCounted<Gamepad>, public ScriptWrappable {
37public:
38    static PassRefPtr<Gamepad> create()
39    {
40        return adoptRef(new Gamepad);
41    }
42    ~Gamepad();
43
44    typedef Vector<float> FloatVector;
45
46    const String& id() const { return m_id; }
47    void id(const String& id) { m_id = id; }
48
49    unsigned index() const { return m_index; }
50    void index(unsigned val) { m_index = val; }
51
52    unsigned long long timestamp() const { return m_timestamp; }
53    void timestamp(unsigned long long val) { m_timestamp = val; }
54
55    const FloatVector& axes() const { return m_axes; }
56    void axes(unsigned count, float* data);
57
58    const FloatVector& buttons() const { return m_buttons; }
59    void buttons(unsigned count, float* data);
60
61private:
62    Gamepad();
63    String m_id;
64    unsigned m_index;
65    unsigned long long m_timestamp;
66    FloatVector m_axes;
67    FloatVector m_buttons;
68};
69
70} // namespace WebCore
71
72#endif // Gamepad_h
73