15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2006 Apple Computer, Inc. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful, 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB. If not, write to 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA. 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)*/ 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef HitTestRequest_h 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define HitTestRequest_h 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HitTestRequest { 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) enum RequestType { 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ReadOnly = 1 << 1, 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Active = 1 << 2, 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Move = 1 << 3, 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Release = 1 << 4, 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) IgnoreClipping = 1 << 5, 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGClipContent = 1 << 6, 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TouchEvent = 1 << 7, 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci AllowChildFrameContent = 1 << 8, 397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ChildFrameHitTest = 1 << 9, 407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci IgnorePointerEventsNone = 1 << 10, 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) typedef unsigned HitTestRequestType; 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) HitTestRequest(HitTestRequestType requestType) 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) : m_requestType(requestType) 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool readOnly() const { return m_requestType & ReadOnly; } 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool active() const { return m_requestType & Active; } 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool move() const { return m_requestType & Move; } 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool release() const { return m_requestType & Release; } 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool ignoreClipping() const { return m_requestType & IgnoreClipping; } 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool svgClipContent() const { return m_requestType & SVGClipContent; } 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool touchEvent() const { return m_requestType & TouchEvent; } 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool mouseEvent() const { return !touchEvent(); } 58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool allowsChildFrameContent() const { return m_requestType & AllowChildFrameContent; } 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool isChildFrameHitTest() const { return m_requestType & ChildFrameHitTest; } 6053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) bool ignorePointerEventsNone() const { return m_requestType & IgnorePointerEventsNone; } 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Convenience functions 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool touchMove() const { return move() && touchEvent(); } 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool touchRelease() const { return release() && touchEvent(); } 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) HitTestRequestType type() const { return m_requestType; } 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) HitTestRequestType m_requestType; 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // HitTestRequest_h 75