Move Point to Offset (#9277)

* Manually fix every use of Point.x and Point.y

Some of these were moved to dx/dy, but not all.

* Manually convert uses of the old gradient API

* Remove old reference to Point.

* Mechanical changes

I applied the following at the root of the Flutter repository:

git ls-files -z | xargs -0 sed -i 's/\bPoint[.]origin\b/Offset.zero/g'
git ls-files -z | xargs -0 sed -i 's/\bPoint[.]lerp\b/Offset.lerp/g'
git ls-files -z | xargs -0 sed -i 's/\bnew Point\b/new Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bconst Point\b/const Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bstatic Point /static Offset /g'
git ls-files -z | xargs -0 sed -i 's/\bfinal Point /final Offset /g'
git ls-files -z | xargs -0 sed -i 's/^\( *\)Point /\1Offset /g'
git ls-files -z | xargs -0 sed -i 's/ui[.]Point\b/ui.Offset/g'
git ls-files -z | xargs -0 sed -i 's/(Point\b/(Offset/g'
git ls-files -z | xargs -0 sed -i 's/\([[{,]\) Point\b/\1 Offset/g'
git ls-files -z | xargs -0 sed -i 's/@required Point\b/@required Offset/g'
git ls-files -z | xargs -0 sed -i 's/<Point>/<Offset>/g'
git ls-files -z | xargs -0 sed -i 's/[.]toOffset()//g'
git ls-files -z | xargs -0 sed -i 's/[.]toPoint()//g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point, /show /g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point;/show Offset;/g'

* Mechanical changes - dartdocs

I applied the following at the root of the Flutter repository:

git ls-files -z | xargs -0 sed -i 's/\ba \[Point\]/an [Offset]/g'
git ls-files -z | xargs -0 sed -i 's/\[Point\]/[Offset]/g'

* Further improvements and a test

* Fix minor errors from rebasing...

* Roll engine
diff --git a/dev/manual_tests/drag_and_drop.dart b/dev/manual_tests/drag_and_drop.dart
index 496e5f4..8bb9950 100644
--- a/dev/manual_tests/drag_and_drop.dart
+++ b/dev/manual_tests/drag_and_drop.dart
@@ -163,7 +163,7 @@
       ..style = PaintingStyle.stroke
       ..strokeWidth = radius / 10.0;
     final Path path = new Path();
-    final Rect box = Point.origin & size;
+    final Rect box = Offset.zero & size;
     for (double theta = 0.0; theta < math.PI * 2.0; theta += deltaTheta)
       path.addArc(box, theta + startOffset, segmentArc);
     canvas.drawPath(path, paint);
diff --git a/dev/manual_tests/material_arc.dart b/dev/manual_tests/material_arc.dart
index 9e815b5..65d915a 100644
--- a/dev/manual_tests/material_arc.dart
+++ b/dev/manual_tests/material_arc.dart
@@ -54,7 +54,7 @@
   final MaterialPointArcTween arc;
   Animation<double> _repaint;
 
-  void drawPoint(Canvas canvas, Point point, Color color) {
+  void drawPoint(Canvas canvas, Offset point, Color color) {
     final Paint paint = new Paint()
       ..color = color.withOpacity(0.25)
       ..style = PaintingStyle.fill;
@@ -93,7 +93,7 @@
   }
 
   @override
-  bool hitTest(Point position) {
+  bool hitTest(Offset position) {
     return (arc.begin - position).distanceSquared < _kTargetSlop
         || (arc.end - position).distanceSquared < _kTargetSlop;
   }
@@ -117,8 +117,8 @@
   CurvedAnimation _animation;
   _DragTarget _dragTarget;
   Size _screenSize;
-  Point _begin;
-  Point _end;
+  Offset _begin;
+  Offset _end;
 
   @override
   void initState() {
@@ -132,7 +132,7 @@
     super.dispose();
   }
 
-  Drag _handleOnStart(Point position) {
+  Drag _handleOnStart(Offset position) {
     // TODO(hansmuller): allow the user to drag both points at the same time.
     if (_dragTarget != null)
       return new _IgnoreDrag();
@@ -181,8 +181,8 @@
     final Size screenSize = MediaQuery.of(context).size;
     if (_screenSize == null || _screenSize != screenSize) {
       _screenSize = screenSize;
-      _begin = new Point(screenSize.width * 0.5, screenSize.height * 0.2);
-      _end = new Point(screenSize.width * 0.1, screenSize.height * 0.4);
+      _begin = new Offset(screenSize.width * 0.5, screenSize.height * 0.2);
+      _end = new Offset(screenSize.width * 0.1, screenSize.height * 0.4);
     }
 
     final MaterialPointArcTween arc = new MaterialPointArcTween(begin: _begin, end: _end);
@@ -229,7 +229,7 @@
   final MaterialRectArcTween arc;
   Animation<double> _repaint;
 
-  void drawPoint(Canvas canvas, Point p, Color color) {
+  void drawPoint(Canvas canvas, Offset p, Color color) {
     final Paint paint = new Paint()
       ..color = color.withOpacity(0.25)
       ..style = PaintingStyle.fill;
@@ -258,7 +258,7 @@
   }
 
   @override
-  bool hitTest(Point position) {
+  bool hitTest(Offset position) {
     return (arc.begin.center - position).distanceSquared < _kTargetSlop
         || (arc.end.center - position).distanceSquared < _kTargetSlop;
   }
@@ -297,7 +297,7 @@
     super.dispose();
   }
 
-  Drag _handleOnStart(Point position) {
+  Drag _handleOnStart(Offset position) {
     // TODO(hansmuller): allow the user to drag both points at the same time.
     if (_dragTarget != null)
       return new _IgnoreDrag();
diff --git a/dev/manual_tests/overlay_geometry.dart b/dev/manual_tests/overlay_geometry.dart
index 2b9b194..174a92b 100644
--- a/dev/manual_tests/overlay_geometry.dart
+++ b/dev/manual_tests/overlay_geometry.dart
@@ -33,19 +33,19 @@
   void paint(Canvas canvas, _) {
     final Paint paint = new Paint()..color = const Color(0x8000FF00);
     final double r = size / 2.0;
-    canvas.drawCircle(new Point(r, r), r, paint);
+    canvas.drawCircle(new Offset(r, r), r, paint);
 
     paint
       ..color = const Color(0xFFFFFFFF)
       ..style = PaintingStyle.stroke
       ..strokeWidth = 1.0;
     if (type == MarkerType.topLeft) {
-      canvas.drawLine(new Point(r, r), new Point(r + r - 1.0, r), paint);
-      canvas.drawLine(new Point(r, r), new Point(r, r + r - 1.0), paint);
+      canvas.drawLine(new Offset(r, r), new Offset(r + r - 1.0, r), paint);
+      canvas.drawLine(new Offset(r, r), new Offset(r, r + r - 1.0), paint);
     }
     if (type == MarkerType.bottomRight) {
-      canvas.drawLine(new Point(r, r), new Point(1.0, r), paint);
-      canvas.drawLine(new Point(r, r), new Point(r, 1.0), paint);
+      canvas.drawLine(new Offset(r, r), new Offset(1.0, r), paint);
+      canvas.drawLine(new Offset(r, r), new Offset(r, 1.0), paint);
     }
   }
 
@@ -64,15 +64,15 @@
     this.size: 40.0,
   }) : super(key: key);
 
-  final Point position;
+  final Offset position;
   final double size;
   final MarkerType type;
 
   @override
   Widget build(BuildContext context) {
     return new Positioned(
-      left: position.x - size / 2.0,
-      top: position.y - size / 2.0,
+      left: position.dx - size / 2.0,
+      top: position.dy - size / 2.0,
       width: size,
       height: size,
       child: new IgnorePointer(
@@ -92,7 +92,7 @@
   OverlayGeometryAppState createState() => new OverlayGeometryAppState();
 }
 
-typedef void CardTapCallback(GlobalKey targetKey, Point globalPosition);
+typedef void CardTapCallback(GlobalKey targetKey, Offset globalPosition);
 
 class CardBuilder extends SliverChildDelegate {
   CardBuilder({ this.cardModels, this.onTapUp });
@@ -134,7 +134,7 @@
 
 class OverlayGeometryAppState extends State<OverlayGeometryApp> {
   List<CardModel> cardModels;
-  Map<MarkerType, Point> markers = <MarkerType, Point>{};
+  Map<MarkerType, Offset> markers = <MarkerType, Offset>{};
   double markersScrollOffset = 0.0;
 
   @override
@@ -157,21 +157,21 @@
         final double dy = markersScrollOffset - notification.metrics.extentBefore;
         markersScrollOffset = notification.metrics.extentBefore;
         for (MarkerType type in markers.keys) {
-          final Point oldPosition = markers[type];
-          markers[type] = new Point(oldPosition.x, oldPosition.y + dy);
+          final Offset oldPosition = markers[type];
+          markers[type] = oldPosition.translate(0.0, dy);
         }
       });
     }
     return false;
   }
 
-  void handleTapUp(GlobalKey target, Point globalPosition) {
+  void handleTapUp(GlobalKey target, Offset globalPosition) {
     setState(() {
       markers[MarkerType.touch] = globalPosition;
       final RenderBox box = target.currentContext.findRenderObject();
-      markers[MarkerType.topLeft] = box.localToGlobal(const Point(0.0, 0.0));
+      markers[MarkerType.topLeft] = box.localToGlobal(const Offset(0.0, 0.0));
       final Size size = box.size;
-      markers[MarkerType.bottomRight] = box.localToGlobal(new Point(size.width, size.height));
+      markers[MarkerType.bottomRight] = box.localToGlobal(new Offset(size.width, size.height));
       final ScrollableState scrollable = Scrollable.of(target.currentContext);
       markersScrollOffset = scrollable.position.pixels;
     });