PlatformTouchEvent.h revision 5aaefcaef41a898511a92306a8f66a11c0cca1d0
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
3f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
4f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    This library is free software; you can redistribute it and/or
5f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    modify it under the terms of the GNU Library General Public
6f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    License as published by the Free Software Foundation; either
7f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    version 2 of the License, or (at your option) any later version.
8f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
9f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    This library is distributed in the hope that it will be useful,
10f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    but WITHOUT ANY WARRANTY; without even the implied warranty of
11f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    Library General Public License for more details.
13f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
14f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    You should have received a copy of the GNU Library General Public License
15f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    along with this library; see the file COPYING.LIB.  If not, write to
16f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    Boston, MA 02110-1301, USA.
18f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch*/
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PlatformTouchEvent_h
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PlatformTouchEvent_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
23f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#include "PlatformTouchPoint.h"
24f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#include <wtf/Vector.h>
25f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
26f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if ENABLE(TOUCH_EVENTS)
27f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
28f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if PLATFORM(QT)
29f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben MurdochQT_BEGIN_NAMESPACE
30f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochclass QTouchEvent;
31f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben MurdochQT_END_NAMESPACE
32f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
34f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if PLATFORM(ANDROID)
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "IntPoint.h"
36f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
38bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#if PLATFORM(BREWMP)
39bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsentypedef unsigned short    uint16;
40bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsentypedef unsigned long int uint32;
41bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#define AEEEvent uint16
42bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#endif
43bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
46f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochenum TouchEventType {
47f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchStart
48f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    , TouchMove
49f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    , TouchEnd
50f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    , TouchCancel
51f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if PLATFORM(ANDROID)
52f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    , TouchLongPress
53f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    , TouchDoubleTap
54f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif
55f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch};
56f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
57f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochclass PlatformTouchEvent {
58f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochpublic:
59f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    PlatformTouchEvent()
60f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch        : m_type(TouchStart)
61f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch        , m_ctrlKey(false)
62f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch        , m_altKey(false)
63f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch        , m_shiftKey(false)
64f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch        , m_metaKey(false)
65f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    {}
66f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if PLATFORM(QT)
67f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    PlatformTouchEvent(QTouchEvent*);
68f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#elif PLATFORM(ANDROID)
694ac825dd95a2c0a351748f85f8fcae2d7968c94dHuahui Wu    // Changes in next line is in ANDROID but waiting to upstream to WebKit. TODO: upstream it.
705aaefcaef41a898511a92306a8f66a11c0cca1d0Huahui Wu    PlatformTouchEvent(const Vector<int>&, const Vector<IntPoint>&, TouchEventType, const Vector<PlatformTouchPoint::State>&, int metaState);
71bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#elif PLATFORM(BREWMP)
72bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    PlatformTouchEvent(AEEEvent, uint16 wParam, uint32 dwParam);
73f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif
74f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
75f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchEventType type() const { return m_type; }
76f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    const Vector<PlatformTouchPoint>& touchPoints() const { return m_touchPoints; }
77f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
78f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool ctrlKey() const { return m_ctrlKey; }
79f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool altKey() const { return m_altKey; }
80f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool shiftKey() const { return m_shiftKey; }
81f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool metaKey() const { return m_metaKey; }
82f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockprotected:
84f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchEventType m_type;
85f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    Vector<PlatformTouchPoint> m_touchPoints;
86f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool m_ctrlKey;
87f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool m_altKey;
88f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool m_shiftKey;
89f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool m_metaKey;
90f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch};
91f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
92f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch}
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(TOUCH_EVENTS)
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // PlatformTouchEvent_h
97