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
44cad810f21b803229eb11403f9209855525a25d57Steve Block#if PLATFORM(EFL)
45cad810f21b803229eb11403f9209855525a25d57Steve Blocktypedef struct _Eina_List Eina_List;
46cad810f21b803229eb11403f9209855525a25d57Steve Block#endif
47cad810f21b803229eb11403f9209855525a25d57Steve Block
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
50f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdochenum TouchEventType {
51f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchStart
52f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    , TouchMove
53f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    , TouchEnd
54f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    , TouchCancel
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)
6581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        , m_timestamp(0)
66f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    {}
67f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#if PLATFORM(QT)
68f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    PlatformTouchEvent(QTouchEvent*);
69f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#elif PLATFORM(ANDROID)
705aaefcaef41a898511a92306a8f66a11c0cca1d0Huahui Wu    PlatformTouchEvent(const Vector<int>&, const Vector<IntPoint>&, TouchEventType, const Vector<PlatformTouchPoint::State>&, int metaState);
7191f41286e33b387859e4841711f3054bcf75c748John Reck    bool hitTouchHandler() { return m_hitTouchHandler; }
7291f41286e33b387859e4841711f3054bcf75c748John Reck    void setHitTouchHandler() { m_hitTouchHandler = true; }
73bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen#elif PLATFORM(BREWMP)
74bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    PlatformTouchEvent(AEEEvent, uint16 wParam, uint32 dwParam);
75cad810f21b803229eb11403f9209855525a25d57Steve Block#elif PLATFORM(EFL)
76cad810f21b803229eb11403f9209855525a25d57Steve Block    PlatformTouchEvent(Eina_List*, const IntPoint, TouchEventType, int metaState);
77f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch#endif
78f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
79f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchEventType type() const { return m_type; }
80f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    const Vector<PlatformTouchPoint>& touchPoints() const { return m_touchPoints; }
81f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
82f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool ctrlKey() const { return m_ctrlKey; }
83f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool altKey() const { return m_altKey; }
84f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool shiftKey() const { return m_shiftKey; }
85f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool metaKey() const { return m_metaKey; }
86f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
8781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    // Time in seconds.
8881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    double timestamp() const { return m_timestamp; }
8981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
90dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockprotected:
91f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    TouchEventType m_type;
92f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    Vector<PlatformTouchPoint> m_touchPoints;
93f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool m_ctrlKey;
94f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool m_altKey;
95f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool m_shiftKey;
96f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch    bool m_metaKey;
9781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    double m_timestamp;
9891f41286e33b387859e4841711f3054bcf75c748John Reck#if PLATFORM(ANDROID)
9991f41286e33b387859e4841711f3054bcf75c748John Reck    bool m_hitTouchHandler;
10091f41286e33b387859e4841711f3054bcf75c748John Reck#endif
101f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch};
102f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch
103f5306da72ab6bb63f7ae07371e687f72a75c2fb2Ben Murdoch}
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(TOUCH_EVENTS)
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // PlatformTouchEvent_h
108