Commit 9f74a178 authored by Kris Giesing's avatar Kris Giesing

Address comments

parent 0c229008
import 'dart:ui' as ui;
/// Dart-layer version of ui.Event
/// Base class for input events.
class InputEvent {
InputEvent({ this.type }) : timeStamp = 0.0;
const InputEvent({ this.type, this.timeStamp: 0.0 });
factory InputEvent.fromSkyEvent(ui.Event event) {
factory InputEvent.fromUiEvent(ui.Event event) {
if (event is ui.PointerEvent)
return new PointerInputEvent.fromUiEvent(event);
// Default event
InputEvent result = new InputEvent();
result.type = event.type;
result.timeStamp = event.timeStamp;
return new InputEvent(
type: event.type,
timeStamp: event.timeStamp
);
}
String type;
double timeStamp;
final String type;
final double timeStamp;
}
/// Dart-layer version of ui.PointerInputEvent
/// Input event
class PointerInputEvent extends InputEvent {
// Map actual input pointer value to a unique value
......@@ -27,8 +29,9 @@ class PointerInputEvent extends InputEvent {
static Map<int, int> _pointerMap = new Map<int, int>();
static int _pointerCount = 0;
PointerInputEvent({
const PointerInputEvent({
String type,
double timeStamp: 0.0,
this.pointer,
this.kind,
this.x,
......@@ -51,64 +54,63 @@ class PointerInputEvent extends InputEvent {
this.radiusMax,
this.orientation,
this.tilt
}) : super(type: type);
PointerInputEvent.fromUiEvent(ui.PointerEvent event) {
type = event.type;
timeStamp = event.timeStamp;
if (type == 'pointerdown') {
pointer = _pointerCount;
_pointerMap[event.pointer] = _pointerCount;
_pointerCount++;
} else {
pointer = _pointerMap[event.pointer];
}
kind = event.kind;
x = event.x;
y = event.y;
dx = event.dx;
dy = event.dy;
buttons = event.buttons;
down = event.down;
primary = event.primary;
obscured = event.obscured;
pressure = event.pressure;
pressureMin = event.pressureMin;
pressureMax = event.pressureMax;
distance = event.distance;
distanceMin = event.distanceMin;
distanceMax = event.distanceMax;
radiusMajor = event.radiusMajor;
radiusMinor = event.radiusMinor;
radiusMin = event.radiusMin;
radiusMax = event.radiusMax;
orientation = event.orientation;
tilt = event.tilt;
}) : super(type: type, timeStamp: timeStamp);
factory PointerInputEvent.fromUiEvent(ui.PointerEvent event) {
PointerInputEvent result = new PointerInputEvent(
type: event.type,
timeStamp: event.timeStamp,
pointer: (event.type == 'pointerDown') ? _pointerCount : _pointerMap[event.pointer],
kind: event.kind,
x: event.x,
y: event.y,
dx: event.dx,
dy: event.dy,
buttons: event.buttons,
down: event.down,
primary: event.primary,
obscured: event.obscured,
pressure: event.pressure,
pressureMin: event.pressureMin,
pressureMax: event.pressureMax,
distance: event.distance,
distanceMin: event.distanceMin,
distanceMax: event.distanceMax,
radiusMajor: event.radiusMajor,
radiusMinor: event.radiusMinor,
radiusMin: event.radiusMin,
radiusMax: event.radiusMax,
orientation: event.orientation,
tilt: event.tilt
);
if (event.type == 'pointerdown') {
_pointerMap[event.pointer] = _pointerCount;
_pointerCount++;
}
return result;
}
int pointer;
String kind;
double x;
double y;
double dx;
double dy;
int buttons;
bool down;
bool primary;
bool obscured;
double pressure;
double pressureMin;
double pressureMax;
double distance;
double distanceMin;
double distanceMax;
double radiusMajor;
double radiusMinor;
double radiusMin;
double radiusMax;
double orientation;
double tilt;
final int pointer;
final String kind;
final double x;
final double y;
final double dx;
final double dy;
final int buttons;
final bool down;
final bool primary;
final bool obscured;
final double pressure;
final double pressureMin;
final double pressureMax;
final double distance;
final double distanceMin;
final double distanceMax;
final double radiusMajor;
final double radiusMinor;
final double radiusMin;
final double radiusMax;
final double orientation;
final double tilt;
}
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/src/gestures/events.dart';
import 'events.dart';
/// A callback that receives a [PointerInputEvent]
typedef void PointerRoute(PointerInputEvent event);
......
......@@ -95,7 +95,7 @@ class FlutterBinding extends HitTestTarget {
bool removeEventListener(EventListener listener) => _eventListeners.remove(listener);
void _handleEvent(ui.Event event) {
InputEvent ourEvent = new InputEvent.fromSkyEvent(event);
InputEvent ourEvent = new InputEvent.fromUiEvent(event);
if (ourEvent is PointerInputEvent) {
_handlePointerInputEvent(ourEvent);
} else {
......
......@@ -36,7 +36,7 @@ void main() {
TestPointer pointer1 = new TestPointer(1);
PointerInputEvent down = pointer1.down(new ui.Point(10.0, 10.0));
PointerInputEvent down = pointer1.down(new Point(10.0, 10.0));
scale.addPointer(down);
tap.addPointer(down);
......@@ -55,7 +55,7 @@ void main() {
expect(didEndScale, isFalse);
expect(didTap, isFalse);
router.route(pointer1.move(new ui.Point(20.0, 30.0)));
router.route(pointer1.move(new Point(20.0, 30.0)));
expect(didStartScale, isTrue);
didStartScale = false;
expect(updatedFocalPoint, new ui.Point(20.0, 30.0));
......@@ -67,7 +67,7 @@ void main() {
// Two-finger scaling
TestPointer pointer2 = new TestPointer(2);
PointerInputEvent down2 = pointer2.down(new ui.Point(10.0, 20.0));
PointerInputEvent down2 = pointer2.down(new Point(10.0, 20.0));
scale.addPointer(down2);
tap.addPointer(down2);
GestureArena.instance.close(2);
......@@ -80,7 +80,7 @@ void main() {
expect(didStartScale, isFalse);
// Zoom in
router.route(pointer2.move(new ui.Point(0.0, 10.0)));
router.route(pointer2.move(new Point(0.0, 10.0)));
expect(didStartScale, isTrue);
didStartScale = false;
expect(updatedFocalPoint, new ui.Point(10.0, 20.0));
......@@ -91,7 +91,7 @@ void main() {
expect(didTap, isFalse);
// Zoom out
router.route(pointer2.move(new ui.Point(15.0, 25.0)));
router.route(pointer2.move(new Point(15.0, 25.0)));
expect(updatedFocalPoint, new ui.Point(17.5, 27.5));
updatedFocalPoint = null;
expect(updatedScale, 0.5);
......@@ -100,7 +100,7 @@ void main() {
// Three-finger scaling
TestPointer pointer3 = new TestPointer(3);
PointerInputEvent down3 = pointer3.down(new ui.Point(25.0, 35.0));
PointerInputEvent down3 = pointer3.down(new Point(25.0, 35.0));
scale.addPointer(down3);
tap.addPointer(down3);
GestureArena.instance.close(3);
......@@ -113,7 +113,7 @@ void main() {
expect(didStartScale, isFalse);
// Zoom in
router.route(pointer3.move(new ui.Point(55.0, 65.0)));
router.route(pointer3.move(new Point(55.0, 65.0)));
expect(didStartScale, isTrue);
didStartScale = false;
expect(updatedFocalPoint, new ui.Point(30.0, 40.0));
......@@ -124,9 +124,9 @@ void main() {
expect(didTap, isFalse);
// Return to original positions but with different fingers
router.route(pointer1.move(new ui.Point(25.0, 35.0)));
router.route(pointer2.move(new ui.Point(20.0, 30.0)));
router.route(pointer3.move(new ui.Point(15.0, 25.0)));
router.route(pointer1.move(new Point(25.0, 35.0)));
router.route(pointer2.move(new Point(20.0, 30.0)));
router.route(pointer3.move(new Point(15.0, 25.0)));
expect(didStartScale, isFalse);
expect(updatedFocalPoint, new ui.Point(20.0, 30.0));
updatedFocalPoint = null;
......@@ -144,7 +144,7 @@ void main() {
expect(didTap, isFalse);
// Continue scaling with two fingers
router.route(pointer3.move(new ui.Point(10.0, 20.0)));
router.route(pointer3.move(new Point(10.0, 20.0)));
expect(didStartScale, isTrue);
didStartScale = false;
expect(updatedFocalPoint, new ui.Point(15.0, 25.0));
......@@ -161,7 +161,7 @@ void main() {
expect(didTap, isFalse);
// Continue panning with one finger
router.route(pointer3.move(new ui.Point(0.0, 0.0)));
router.route(pointer3.move(new Point(0.0, 0.0)));
expect(didStartScale, isTrue);
didStartScale = false;
expect(updatedFocalPoint, new ui.Point(0.0, 0.0));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment