Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: Source/platform/PlatformWheelEvent.h

Issue 26510003: Moving all the PlatformEvent subclasses from core/platform to platform (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2004, 2005, 2006, 2009 Apple Inc. All rights reserved.
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 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. 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 APPLE COMPUTER, INC. ``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 PlatformWheelEvent_h
27 #define PlatformWheelEvent_h
28
29 #include "platform/PlatformEvent.h"
30 #include "platform/geometry/IntPoint.h"
31
32 namespace WebCore {
33
34 class FloatPoint;
35 class FloatSize;
36
37 // Wheel events come in two flavors:
38 // The ScrollByPixelWheelEvent is a fine-grained event that specifies the precis e number of pixels to scroll. It is sent directly by MacBook touchpads on OS X,
39 // and synthesized in other cases where platforms generate line-by-line scrollin g events.
40 // The ScrollByPageWheelEvent indicates that the wheel event should scroll an en tire page. In this case WebCore's built in paging behavior is used to page
41 // up and down (you get the same behavior as if the user was clicking in a scrol lbar track to page up or page down).
42 enum PlatformWheelEventGranularity {
43 ScrollByPageWheelEvent,
44 ScrollByPixelWheelEvent,
45 };
46
47 #if OS(MACOSX)
48 enum PlatformWheelEventPhase {
49 PlatformWheelEventPhaseNone = 0,
50 PlatformWheelEventPhaseBegan = 1 << 0,
51 PlatformWheelEventPhaseStationary = 1 << 1,
52 PlatformWheelEventPhaseChanged = 1 << 2,
53 PlatformWheelEventPhaseEnded = 1 << 3,
54 PlatformWheelEventPhaseCancelled = 1 << 4,
55 PlatformWheelEventPhaseMayBegin = 1 << 5,
56 };
57 #endif
58
59 class PlatformWheelEvent : public PlatformEvent {
60 public:
61 PlatformWheelEvent()
62 : PlatformEvent(PlatformEvent::Wheel)
63 , m_deltaX(0)
64 , m_deltaY(0)
65 , m_wheelTicksX(0)
66 , m_wheelTicksY(0)
67 , m_granularity(ScrollByPixelWheelEvent)
68 , m_directionInvertedFromDevice(false)
69 , m_hasPreciseScrollingDeltas(false)
70 #if OS(MACOSX)
71 , m_phase(PlatformWheelEventPhaseNone)
72 , m_momentumPhase(PlatformWheelEventPhaseNone)
73 , m_scrollCount(0)
74 , m_unacceleratedScrollingDeltaX(0)
75 , m_unacceleratedScrollingDeltaY(0)
76 #endif
77 {
78 }
79
80 PlatformWheelEvent(IntPoint position, IntPoint globalPosition, float deltaX, float deltaY, float wheelTicksX, float wheelTicksY, PlatformWheelEventGranulari ty granularity, bool shiftKey, bool ctrlKey, bool altKey, bool metaKey)
81 : PlatformEvent(PlatformEvent::Wheel, shiftKey, ctrlKey, altKey, metaKey , 0)
82 , m_position(position)
83 , m_globalPosition(globalPosition)
84 , m_deltaX(deltaX)
85 , m_deltaY(deltaY)
86 , m_wheelTicksX(wheelTicksX)
87 , m_wheelTicksY(wheelTicksY)
88 , m_granularity(granularity)
89 , m_directionInvertedFromDevice(false)
90 , m_hasPreciseScrollingDeltas(false)
91 #if OS(MACOSX)
92 , m_phase(PlatformWheelEventPhaseNone)
93 , m_momentumPhase(PlatformWheelEventPhaseNone)
94 , m_scrollCount(0)
95 , m_unacceleratedScrollingDeltaX(0)
96 , m_unacceleratedScrollingDeltaY(0)
97 #endif
98 {
99 }
100
101 PlatformWheelEvent copyTurningVerticalTicksIntoHorizontalTicks() const
102 {
103 PlatformWheelEvent copy = *this;
104
105 copy.m_deltaX = copy.m_deltaY;
106 copy.m_deltaY = 0;
107 copy.m_wheelTicksX = copy.m_wheelTicksY;
108 copy.m_wheelTicksY = 0;
109
110 return copy;
111 }
112
113 const IntPoint& position() const { return m_position; } // PlatformWindow co ordinates.
114 const IntPoint& globalPosition() const { return m_globalPosition; } // Scree n coordinates.
115
116 float deltaX() const { return m_deltaX; }
117 float deltaY() const { return m_deltaY; }
118
119 float wheelTicksX() const { return m_wheelTicksX; }
120 float wheelTicksY() const { return m_wheelTicksY; }
121
122 PlatformWheelEventGranularity granularity() const { return m_granularity; }
123
124 bool directionInvertedFromDevice() const { return m_directionInvertedFromDev ice; }
125
126 bool hasPreciseScrollingDeltas() const { return m_hasPreciseScrollingDeltas; }
127 void setHasPreciseScrollingDeltas(bool b) { m_hasPreciseScrollingDeltas = b; }
128 #if OS(MACOSX)
129 PlatformWheelEventPhase phase() const { return m_phase; }
130 PlatformWheelEventPhase momentumPhase() const { return m_momentumPhase; }
131 unsigned scrollCount() const { return m_scrollCount; }
132 float unacceleratedScrollingDeltaX() const { return m_unacceleratedScrolling DeltaX; }
133 float unacceleratedScrollingDeltaY() const { return m_unacceleratedScrolling DeltaY; }
134 bool useLatchedEventNode() const { return m_momentumPhase == PlatformWheelEv entPhaseBegan || m_momentumPhase == PlatformWheelEventPhaseChanged; }
135 #else
136 bool useLatchedEventNode() const { return false; }
137 #endif
138
139 protected:
140 IntPoint m_position;
141 IntPoint m_globalPosition;
142 float m_deltaX;
143 float m_deltaY;
144 float m_wheelTicksX;
145 float m_wheelTicksY;
146 PlatformWheelEventGranularity m_granularity;
147 bool m_directionInvertedFromDevice;
148 bool m_hasPreciseScrollingDeltas;
149 #if OS(MACOSX)
150 PlatformWheelEventPhase m_phase;
151 PlatformWheelEventPhase m_momentumPhase;
152 unsigned m_scrollCount;
153 float m_unacceleratedScrollingDeltaX;
154 float m_unacceleratedScrollingDeltaY;
155 #endif
156 };
157
158 } // namespace WebCore
159
160 #endif // PlatformWheelEvent_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698