@@ -56,7 +56,7 @@ public override string ToString() {
56
56
return $ "_PointerState(pointer: { this . pointer } , down: { this . down } , lastPosition: { this . lastPosition } )";
57
57
}
58
58
59
- public int _synthesiseDownButtons ( int buttons , PointerDeviceKind kind ) {
59
+ internal static int _synthesiseDownButtons ( int buttons , PointerDeviceKind kind ) {
60
60
switch ( kind ) {
61
61
case PointerDeviceKind . touch :
62
62
return buttons ;
@@ -83,10 +83,36 @@ static _PointerState _ensureStateForPointer(PointerData datum, Offset position)
83
83
public static IEnumerable < PointerEvent > expand ( IEnumerable < PointerData > data , float devicePixelRatio ) {
84
84
foreach ( PointerData datum in data ) {
85
85
var position = new Offset ( datum . physicalX , datum . physicalY ) / devicePixelRatio ;
86
+ var radiusMinor = _toLogicalPixels ( datum . radiusMinor , devicePixelRatio ) ;
87
+ var radiusMajor = _toLogicalPixels ( datum . radiusMajor , devicePixelRatio ) ;
88
+ var radiusMin = _toLogicalPixels ( datum . radiusMin , devicePixelRatio ) ;
89
+ var radiusMax = _toLogicalPixels ( datum . radiusMax , devicePixelRatio ) ;
86
90
var timeStamp = datum . timeStamp ;
87
91
var kind = datum . kind ;
88
92
89
93
switch ( datum . change ) {
94
+ case PointerChange . add : {
95
+ D . assert ( ! _pointers . ContainsKey ( datum . device ) ) ;
96
+ _PointerState state = _ensureStateForPointer ( datum , position ) ;
97
+ D . assert ( state . lastPosition == position ) ;
98
+ yield return new PointerAddedEvent (
99
+ timeStamp : timeStamp ,
100
+ kind : kind ,
101
+ device : datum . device ,
102
+ position : position ,
103
+ obscured : datum . obscured ,
104
+ pressureMin : datum . pressureMin ,
105
+ pressureMax : datum . pressureMax ,
106
+ distance : datum . distance ,
107
+ distanceMax : datum . distanceMax ,
108
+ radiusMin : radiusMin ,
109
+ radiusMax : radiusMax ,
110
+ orientation : datum . orientation ,
111
+ tilt : datum . tilt
112
+ ) ;
113
+ break ;
114
+ }
115
+
90
116
case PointerChange . down : {
91
117
_PointerState state = _ensureStateForPointer ( datum , position ) ;
92
118
if ( state . down ) {
@@ -156,13 +182,13 @@ public static IEnumerable<PointerEvent> expand(IEnumerable<PointerData> data, fl
156
182
state . lastPosition = position ;
157
183
}
158
184
185
+ Offset scrollDelta = new Offset ( _scrollData . scrollX , _scrollData . scrollY ) / devicePixelRatio ;
159
186
yield return new PointerScrollEvent (
160
187
timeStamp : timeStamp ,
161
- pointer : state . pointer ,
162
188
kind : kind ,
163
189
device : _scrollData . device ,
164
190
position : position ,
165
- delta : new Offset ( _scrollData . scrollX , _scrollData . scrollY ) / devicePixelRatio
191
+ scrollDelta : scrollDelta
166
192
) ;
167
193
break ;
168
194
}
@@ -240,5 +266,9 @@ public static IEnumerable<PointerEvent> expand(IEnumerable<PointerData> data, fl
240
266
}
241
267
}
242
268
}
269
+
270
+ static float _toLogicalPixels ( float physicalPixels , float devicePixelRatio ) {
271
+ return physicalPixels / devicePixelRatio ;
272
+ }
243
273
}
244
274
}
0 commit comments