15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef PlatformEvent_h 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define PlatformEvent_h 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore { 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class PlatformEvent { 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) enum Type { 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NoType = 0, 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // PlatformKeyboardEvent 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) KeyDown, 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) KeyUp, 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RawKeyDown, 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Char, 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // PlatformMouseEvent 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) MouseMoved, 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) MousePressed, 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) MouseReleased, 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) MouseScroll, 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // PlatformWheelEvent 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Wheel, 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // PlatformGestureEvent 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureScrollBegin, 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureScrollEnd, 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureScrollUpdate, 55926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) GestureScrollUpdateWithoutPropagation, 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureTap, 5753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) GestureTapUnconfirmed, 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureTapDown, 591e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) GestureShowPress, 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureTapDownCancel, 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureTwoFingerTap, 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureLongPress, 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GestureLongTap, 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GesturePinchBegin, 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GesturePinchEnd, 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GesturePinchUpdate, 67e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) GestureFlingStart, 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // PlatformTouchEvent 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TouchStart, 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TouchMove, 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TouchEnd, 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TouchCancel, 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) enum Modifiers { 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) AltKey = 1 << 0, 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CtrlKey = 1 << 1, 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) MetaKey = 1 << 2, 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ShiftKey = 1 << 3, 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Type type() const { return static_cast<Type>(m_type); } 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool shiftKey() const { return m_modifiers & ShiftKey; } 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool ctrlKey() const { return m_modifiers & CtrlKey; } 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool altKey() const { return m_modifiers & AltKey; } 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool metaKey() const { return m_modifiers & MetaKey; } 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned modifiers() const { return m_modifiers; } 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double timestamp() const { return m_timestamp; } 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)protected: 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PlatformEvent() 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_type(NoType) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_modifiers(0) 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_timestamp(0) 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) explicit PlatformEvent(Type type) 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_type(type) 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_modifiers(0) 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_timestamp(0) 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PlatformEvent(Type type, Modifiers modifiers, double timestamp) 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_type(type) 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_modifiers(modifiers) 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_timestamp(timestamp) 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PlatformEvent(Type type, bool shiftKey, bool ctrlKey, bool altKey, bool metaKey, double timestamp) 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_type(type) 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_modifiers(0) 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_timestamp(timestamp) 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (shiftKey) 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_modifiers |= ShiftKey; 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (ctrlKey) 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_modifiers |= CtrlKey; 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (altKey) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_modifiers |= AltKey; 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (metaKey) 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_modifiers |= MetaKey; 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Explicit protected destructor so that people don't accidentally 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // delete a PlatformEvent. 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ~PlatformEvent() 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned m_type; 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned m_modifiers; 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) double m_timestamp; 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // PlatformEvent_h 145