18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2001 Peter Kelly (pmk@post.com) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2003, 2004, 2005, 2006 Apple Computer, Inc. 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef MouseRelatedEvent_h 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define MouseRelatedEvent_h 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "IntPoint.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "UIEventWithKeyState.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Internal only: Helper class for what's common between mouse and wheel events. 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class MouseRelatedEvent : public UIEventWithKeyState { 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // Note that these values are adjusted to counter the effects of zoom, so that values 368f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // exposed via DOM APIs are invariant under zooming. 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int screenX() const { return m_screenX; } 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int screenY() const { return m_screenY; } 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int clientX() const { return m_clientX; } 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int clientY() const { return m_clientY; } 412bde8e466a4451c7319e3a072d118917957d6554Steve Block int layerX(); 422bde8e466a4451c7319e3a072d118917957d6554Steve Block int layerY(); 432bde8e466a4451c7319e3a072d118917957d6554Steve Block int offsetX(); 442bde8e466a4451c7319e3a072d118917957d6554Steve Block int offsetY(); 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool isSimulated() const { return m_isSimulated; } 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int pageX() const; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int pageY() const; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int x() const; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int y() const; 508f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 518f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // Page point in "absolute" coordinates (i.e. post-zoomed, page-relative coords, 528f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian // usable with RenderObject::absoluteToLocal). 538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian IntPoint absoluteLocation() const { return m_absoluteLocation; } 548f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian void setAbsoluteLocation(const IntPoint& p) { m_absoluteLocation = p; } 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project protected: 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MouseRelatedEvent(); 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MouseRelatedEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView>, 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int detail, int screenX, int screenY, int pageX, int pageY, 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool isSimulated = false); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void initCoordinates(); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void initCoordinates(int clientX, int clientY); 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void receivedTarget(); 658f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian 668f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian void computePageLocation(); 672bde8e466a4451c7319e3a072d118917957d6554Steve Block void computeRelativePosition(); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Expose these so MouseEvent::initMouseEvent can set them. 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_screenX; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_screenY; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_clientX; 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_clientY; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project private: 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_pageX; 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_pageY; 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_layerX; 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_layerY; 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_offsetX; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_offsetY; 828f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian IntPoint m_absoluteLocation; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_isSimulated; 842bde8e466a4451c7319e3a072d118917957d6554Steve Block bool m_hasCachedRelativePosition; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // MouseRelatedEvent_h 90