1/* 2 * Copyright 2008, The Android Open Source Project 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * * Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * * 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 THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#ifndef Touch_h 27#define Touch_h 28 29#if ENABLE(TOUCH_EVENTS) 30 31#include "EventTarget.h" 32#include "LayoutPoint.h" 33#include <wtf/PassRefPtr.h> 34#include <wtf/RefCounted.h> 35#include <wtf/RefPtr.h> 36 37namespace WebCore { 38 39class Frame; 40 41class Touch : public RefCounted<Touch> { 42public: 43 static PassRefPtr<Touch> create(Frame* frame, EventTarget* target, 44 unsigned identifier, int screenX, int screenY, int pageX, int pageY, 45 int radiusX, int radiusY, float rotationAngle, float force) 46 { 47 return adoptRef(new Touch(frame, target, identifier, screenX, 48 screenY, pageX, pageY, radiusX, radiusY, rotationAngle, force)); 49 } 50 51 EventTarget* target() const { return m_target.get(); } 52 unsigned identifier() const { return m_identifier; } 53 int clientX() const { return m_clientX; } 54 int clientY() const { return m_clientY; } 55 int screenX() const { return m_screenX; } 56 int screenY() const { return m_screenY; } 57 int pageX() const { return m_pageX; } 58 int pageY() const { return m_pageY; } 59 int webkitRadiusX() const { return m_radiusX; } 60 int webkitRadiusY() const { return m_radiusY; } 61 float webkitRotationAngle() const { return m_rotationAngle; } 62 float webkitForce() const { return m_force; } 63 const LayoutPoint& absoluteLocation() const { return m_absoluteLocation; } 64 PassRefPtr<Touch> cloneWithNewTarget(EventTarget*) const; 65 66private: 67 Touch(Frame* frame, EventTarget* target, unsigned identifier, 68 int screenX, int screenY, int pageX, int pageY, 69 int radiusX, int radiusY, float rotationAngle, float force); 70 71 Touch(EventTarget*, unsigned identifier, int clientX, int clientY, 72 int screenX, int screenY, int pageX, int pageY, 73 int radiusX, int radiusY, float rotationAngle, float force, LayoutPoint absoluteLocation); 74 75 RefPtr<EventTarget> m_target; 76 unsigned m_identifier; 77 int m_clientX; 78 int m_clientY; 79 int m_screenX; 80 int m_screenY; 81 int m_pageX; 82 int m_pageY; 83 int m_radiusX; 84 int m_radiusY; 85 float m_rotationAngle; 86 float m_force; 87 LayoutPoint m_absoluteLocation; 88}; 89 90} // namespace WebCore 91 92#endif // ENABLE(TOUCH_EVENTS) 93 94#endif /* Touch_h */ 95