| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright (C) 2001 Peter Kelly (pmk@post.com) | |
| 3 * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) | |
| 4 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | |
| 5 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2010 Apple Inc. All rights reserv
ed. | |
| 6 * Copyright (C) 2013 Samsung Electronics. All rights reserved. | |
| 7 * | |
| 8 * This library is free software; you can redistribute it and/or | |
| 9 * modify it under the terms of the GNU Library General Public | |
| 10 * License as published by the Free Software Foundation; either | |
| 11 * version 2 of the License, or (at your option) any later version. | |
| 12 * | |
| 13 * This library is distributed in the hope that it will be useful, | |
| 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 16 * Library General Public License for more details. | |
| 17 * | |
| 18 * You should have received a copy of the GNU Library General Public License | |
| 19 * along with this library; see the file COPYING.LIB. If not, write to | |
| 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
| 21 * Boston, MA 02110-1301, USA. | |
| 22 * | |
| 23 */ | |
| 24 | |
| 25 #ifndef SKY_ENGINE_CORE_EVENTS_WHEELEVENT_H_ | |
| 26 #define SKY_ENGINE_CORE_EVENTS_WHEELEVENT_H_ | |
| 27 | |
| 28 #include "sky/engine/core/events/EventDispatchMediator.h" | |
| 29 #include "sky/engine/core/events/MouseEvent.h" | |
| 30 #include "sky/engine/platform/geometry/FloatPoint.h" | |
| 31 | |
| 32 namespace blink { | |
| 33 | |
| 34 class PlatformWheelEvent; | |
| 35 | |
| 36 struct WheelEventInit : public MouseEventInit { | |
| 37 WheelEventInit(); | |
| 38 | |
| 39 double deltaX; | |
| 40 double deltaY; | |
| 41 double deltaZ; | |
| 42 int wheelDeltaX; // Deprecated. | |
| 43 int wheelDeltaY; // Deprecated. | |
| 44 unsigned deltaMode; | |
| 45 }; | |
| 46 | |
| 47 class WheelEvent final : public MouseEvent { | |
| 48 DEFINE_WRAPPERTYPEINFO(); | |
| 49 public: | |
| 50 enum { TickMultiplier = 120 }; | |
| 51 | |
| 52 enum DeltaMode { | |
| 53 DOM_DELTA_PIXEL = 0, | |
| 54 DOM_DELTA_LINE, | |
| 55 DOM_DELTA_PAGE | |
| 56 }; | |
| 57 | |
| 58 static PassRefPtr<WheelEvent> create() | |
| 59 { | |
| 60 return adoptRef(new WheelEvent); | |
| 61 } | |
| 62 | |
| 63 static PassRefPtr<WheelEvent> create(const AtomicString& type, const WheelEv
entInit& initializer) | |
| 64 { | |
| 65 return adoptRef(new WheelEvent(type, initializer)); | |
| 66 } | |
| 67 | |
| 68 static PassRefPtr<WheelEvent> create(const FloatPoint& wheelTicks, | |
| 69 const FloatPoint& rawDelta, unsigned deltaMode, PassRefPtr<AbstractView>
view, | |
| 70 const IntPoint& screenLocation, const IntPoint& pageLocation, | |
| 71 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey) | |
| 72 { | |
| 73 return adoptRef(new WheelEvent(wheelTicks, rawDelta, deltaMode, view, | |
| 74 screenLocation, pageLocation, ctrlKey, altKey, shiftKey, metaKey)); | |
| 75 } | |
| 76 | |
| 77 double deltaX() const { return m_deltaX; } // Positive when scrolling right. | |
| 78 double deltaY() const { return m_deltaY; } // Positive when scrolling down. | |
| 79 double deltaZ() const { return m_deltaZ; } | |
| 80 int wheelDelta() const { return wheelDeltaY() ? wheelDeltaY() : wheelDeltaX(
); } // Deprecated. | |
| 81 int wheelDeltaX() const { return m_wheelDelta.x(); } // Deprecated, negative
when scrolling right. | |
| 82 int wheelDeltaY() const { return m_wheelDelta.y(); } // Deprecated, negative
when scrolling down. | |
| 83 unsigned deltaMode() const { return m_deltaMode; } | |
| 84 float ticksX() const { return static_cast<float>(m_wheelDelta.x()) / TickMul
tiplier; } | |
| 85 float ticksY() const { return static_cast<float>(m_wheelDelta.y()) / TickMul
tiplier; } | |
| 86 | |
| 87 virtual const AtomicString& interfaceName() const override; | |
| 88 virtual bool isMouseEvent() const override; | |
| 89 virtual bool isWheelEvent() const override; | |
| 90 | |
| 91 private: | |
| 92 WheelEvent(); | |
| 93 WheelEvent(const AtomicString&, const WheelEventInit&); | |
| 94 WheelEvent(const FloatPoint& wheelTicks, const FloatPoint& rawDelta, | |
| 95 unsigned, PassRefPtr<AbstractView>, const IntPoint& screenLocation, cons
t IntPoint& pageLocation, | |
| 96 bool ctrlKey, bool altKey, bool shiftKey, bool metaKey); | |
| 97 | |
| 98 IntPoint m_wheelDelta; | |
| 99 double m_deltaX; | |
| 100 double m_deltaY; | |
| 101 double m_deltaZ; | |
| 102 unsigned m_deltaMode; | |
| 103 }; | |
| 104 | |
| 105 DEFINE_EVENT_TYPE_CASTS(WheelEvent); | |
| 106 | |
| 107 class WheelEventDispatchMediator final : public EventDispatchMediator { | |
| 108 public: | |
| 109 static PassRefPtr<WheelEventDispatchMediator> create(const PlatformWheelEven
t&, PassRefPtr<AbstractView>); | |
| 110 private: | |
| 111 WheelEventDispatchMediator(const PlatformWheelEvent&, PassRefPtr<AbstractVie
w>); | |
| 112 WheelEvent* event() const; | |
| 113 virtual bool dispatchEvent(EventDispatcher*) const override; | |
| 114 }; | |
| 115 | |
| 116 } // namespace blink | |
| 117 | |
| 118 #endif // SKY_ENGINE_CORE_EVENTS_WHEELEVENT_H_ | |
| OLD | NEW |